Merge branch 'release-1.0.2'
diff --git a/apps/pom.xml b/apps/pom.xml
index 7e211a2..b130de6 100644
--- a/apps/pom.xml
+++ b/apps/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>com.datatorrent</groupId>
     <artifactId>malhar-all</artifactId>
-    <version>1.0.2-SNAPSHOT</version>
+    <version>1.0.2</version>
   </parent>
 
   <artifactId>malhar-apps</artifactId>
@@ -20,12 +20,6 @@
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>dt-engine</artifactId>
-      <version>${dt.framework.version}</version>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
       <artifactId>malhar-library</artifactId>
       <version>${project.version}</version>
       <type>jar</type>
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index 95c4d3d..292bf53 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>com.datatorrent</groupId>
     <artifactId>malhar-all</artifactId>
-    <version>1.0.2-SNAPSHOT</version>
+    <version>1.0.2</version>
   </parent>
 
   <artifactId>malhar-benchmark</artifactId>
@@ -20,12 +20,6 @@
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>dt-engine</artifactId>
-      <version>${dt.framework.version}</version>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
       <artifactId>malhar-library</artifactId>
       <version>${project.version}</version>
       <type>jar</type>
diff --git a/benchmark/src/main/java/com/datatorrent/benchmark/UniqueValueCountBenchmarkApplication.java b/benchmark/src/main/java/com/datatorrent/benchmark/UniqueValueCountBenchmarkApplication.java
index 2212b84..c341073 100644
--- a/benchmark/src/main/java/com/datatorrent/benchmark/UniqueValueCountBenchmarkApplication.java
+++ b/benchmark/src/main/java/com/datatorrent/benchmark/UniqueValueCountBenchmarkApplication.java
@@ -31,6 +31,8 @@
  * PartitionableUniqueCount operator initially partitioned into three partitions to
  * test unifier functionality, and output of the operator is sent to verifier to verify
  * that it generates correct result.
+ *
+ * @since 1.0.2
  */
 @ApplicationAnnotation(name="UniqueCountBenchmark")
 public class UniqueValueCountBenchmarkApplication implements StreamingApplication
diff --git a/contrib/pom.xml b/contrib/pom.xml
index 0486bea..dd31d90 100644
--- a/contrib/pom.xml
+++ b/contrib/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>com.datatorrent</groupId>
     <artifactId>malhar-all</artifactId>
-    <version>1.0.2-SNAPSHOT</version>
+    <version>1.0.2</version>
   </parent>
 
   <artifactId>malhar-contrib</artifactId>
@@ -53,38 +53,6 @@
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>dt-engine</artifactId>
-      <version>${dt.framework.version}</version>
-      <scope>runtime</scope>
-      <exclusions>
-        <exclusion>
-          <artifactId>jackson-core-asl</artifactId>
-          <groupId>org.codehaus.jackson</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>jackson-jaxrs</artifactId>
-          <groupId>org.codehaus.jackson</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>jackson-mapper-asl</artifactId>
-          <groupId>org.codehaus.jackson</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>jackson-xc</artifactId>
-          <groupId>org.codehaus.jackson</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>jetty</artifactId>
-          <groupId>org.mortbay.jetty</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>jetty-util</artifactId>
-          <groupId>org.mortbay.jetty</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
       <artifactId>malhar-library</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
@@ -212,8 +180,8 @@
     </dependency>
     <dependency>
       <groupId>org.apache.hbase</groupId>
-      <artifactId>hbase</artifactId>
-      <version>0.94.5</version>
+      <artifactId>hbase-client</artifactId>
+      <version>0.98.2-hadoop2</version>
       <type>jar</type>
       <optional>true</optional>
       <exclusions>
@@ -252,6 +220,48 @@
       </exclusions>
     </dependency>
     <dependency>
+      <groupId>org.apache.hbase</groupId>
+      <artifactId>hbase-server</artifactId>
+      <version>0.98.2-hadoop2</version>
+      <type>jar</type>
+      <optional>true</optional>
+      <exclusions>
+        <exclusion>
+          <groupId>org.slf4j</groupId>
+          <artifactId>slf4j-log4j12</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.apache.zookeeper</groupId>
+          <artifactId>zookeeper</artifactId>
+        </exclusion>
+        <exclusion>
+          <artifactId>jackson-core-asl</artifactId>
+          <groupId>org.codehaus.jackson</groupId>
+        </exclusion>
+        <exclusion>
+          <artifactId>jackson-jaxrs</artifactId>
+          <groupId>org.codehaus.jackson</groupId>
+        </exclusion>
+        <exclusion>
+          <artifactId>jackson-mapper-asl</artifactId>
+          <groupId>org.codehaus.jackson</groupId>
+        </exclusion>
+        <exclusion>
+          <artifactId>jackson-xc</artifactId>
+          <groupId>org.codehaus.jackson</groupId>
+        </exclusion>
+        <!-- Needed for running local server for tests -->
+        <!--exclusion>
+          <artifactId>jetty</artifactId>
+          <groupId>org.mortbay.jetty</groupId>
+        </exclusion>
+        <exclusion>
+          <artifactId>jetty-util</artifactId>
+          <groupId>org.mortbay.jetty</groupId>
+        </exclusion-->
+      </exclusions>
+    </dependency>
+    <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-compress</artifactId>
       <version>1.5</version>
@@ -333,7 +343,7 @@
       <optional>true</optional>
     </dependency>
     <dependency>
-      <!-- required by twitter -->
+      <!-- required by twitter  -->
       <groupId>org.twitter4j</groupId>
       <artifactId>twitter4j-stream</artifactId>
       <version>2.2.6</version>
@@ -350,5 +360,11 @@
       <version>2.0.2</version>
       <optional>true</optional>
     </dependency>
+    <dependency>
+      <groupId>net.sf.supercsv</groupId>
+      <artifactId>super-csv</artifactId>
+      <version>2.2.0</version>
+      <optional>true</optional>
+    </dependency>
   </dependencies>
 </project>
diff --git a/contrib/src/main/java/com/datatorrent/contrib/cassandra/AbstractCassandraInputOperator.java b/contrib/src/main/java/com/datatorrent/contrib/cassandra/AbstractCassandraInputOperator.java
index 45085bf..3876446 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/cassandra/AbstractCassandraInputOperator.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/cassandra/AbstractCassandraInputOperator.java
@@ -34,6 +34,8 @@
  * <p>
  * This is an abstract class. Sub-classes need to implement {@link #queryToRetrieveData()} and {@link #getTuple(Row)}.
  * </p>
+ *
+ * @since 1.0.2
  */
 @ShipContainingJars(classes = {com.datastax.driver.core.Cluster.class})
 
diff --git a/contrib/src/main/java/com/datatorrent/contrib/cassandra/AbstractCassandraTransactionableOutputOperator.java b/contrib/src/main/java/com/datatorrent/contrib/cassandra/AbstractCassandraTransactionableOutputOperator.java
index 4951d6d..3851424 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/cassandra/AbstractCassandraTransactionableOutputOperator.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/cassandra/AbstractCassandraTransactionableOutputOperator.java
@@ -41,6 +41,7 @@
  * </p>
  *
  * @param <T>type of tuple</T>
+ * @since 1.0.2
  */
 @ShipContainingJars(classes = {com.datastax.driver.core.Cluster.class, com.codahale.metrics.Metric.class})
 public abstract class AbstractCassandraTransactionableOutputOperator<T> extends AbstractBatchTransactionableStoreOutputOperator<T, CassandraTransactionalStore> {
diff --git a/contrib/src/main/java/com/datatorrent/contrib/cassandra/AbstractCassandraTransactionableOutputOperatorPS.java b/contrib/src/main/java/com/datatorrent/contrib/cassandra/AbstractCassandraTransactionableOutputOperatorPS.java
index b6e4872..4989709 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/cassandra/AbstractCassandraTransactionableOutputOperatorPS.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/cassandra/AbstractCassandraTransactionableOutputOperatorPS.java
@@ -44,9 +44,9 @@
  * </p>
  *
  * @param <T>type of tuple</T>
+ * @since 1.0.2
  */
 @ShipContainingJars(classes = {com.datastax.driver.core.Cluster.class, com.codahale.metrics.Metric.class})
-
 public abstract class AbstractCassandraTransactionableOutputOperatorPS<T> extends AbstractCassandraTransactionableOutputOperator<T>{
 
 	private transient PreparedStatement updateCommand;
@@ -58,7 +58,7 @@
 	 */
 	@Nonnull
 	protected abstract PreparedStatement getUpdateCommand();
-	 
+
 	@Override
 	public void setup(Context.OperatorContext context)
 	{
diff --git a/contrib/src/main/java/com/datatorrent/contrib/cassandra/CassandraStore.java b/contrib/src/main/java/com/datatorrent/contrib/cassandra/CassandraStore.java
index c1a9440..428d721 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/cassandra/CassandraStore.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/cassandra/CassandraStore.java
@@ -30,6 +30,7 @@
 /**
  * A {@link Connectable} that uses cassandra to connect to stores.
  *
+ * @since 1.0.2
  */
 @ShipContainingJars(classes = {com.datastax.driver.core.Cluster.class})
 public class CassandraStore implements Connectable
diff --git a/contrib/src/main/java/com/datatorrent/contrib/cassandra/CassandraTransactionalStore.java b/contrib/src/main/java/com/datatorrent/contrib/cassandra/CassandraTransactionalStore.java
index f06ff00..371d3d6 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/cassandra/CassandraTransactionalStore.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/cassandra/CassandraTransactionalStore.java
@@ -26,6 +26,7 @@
 /**
  * <p>CassandraTransactionalStore class which inherits CassandraStore class and provides transaction support to the operators.</p>
  *
+ * @since 1.0.2
  */
 @ShipContainingJars(classes = {com.datastax.driver.core.Cluster.class})
 public class CassandraTransactionalStore extends CassandraStore implements TransactionableStore {
diff --git a/contrib/src/main/java/com/datatorrent/contrib/hbase/AbstractHBaseNonTransactionalAppendOutputOperator.java b/contrib/src/main/java/com/datatorrent/contrib/hbase/AbstractHBaseNonTransactionalAppendOutputOperator.java
new file mode 100644
index 0000000..efebeee
--- /dev/null
+++ b/contrib/src/main/java/com/datatorrent/contrib/hbase/AbstractHBaseNonTransactionalAppendOutputOperator.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.datatorrent.contrib.hbase;
+
+import com.datatorrent.api.annotation.ShipContainingJars;
+import com.datatorrent.common.util.DTThrowable;
+import com.datatorrent.lib.db.AbstractStoreOutputOperator;
+import org.apache.hadoop.hbase.client.Append;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+
+/**
+ * Operator for storing tuples in HBase columns.<br>
+ * 
+ * <br>
+ * This class provides a HBase output operator that can be used to store tuples
+ * in columns in a HBase table. It should be extended by the end-operator
+ * developer. The extending class should implement operationAppend method and
+ * provide a HBase Append metric object that specifies where and what to store
+ * for the tuple in the table.<br>
+ * 
+ * <br>
+ * This class offers non-transactional append where the columns are append as
+ * the tuples come in without waiting for the end window
+ * 
+ * @param <T>
+ *            The tuple type
+ * @since 1.0.2
+ */
+@ShipContainingJars(classes = { org.apache.hadoop.hbase.client.HTable.class,
+		org.apache.hadoop.hbase.util.BloomFilterFactory.class,
+		com.google.protobuf.AbstractMessageLite.class,
+		org.apache.hadoop.hbase.BaseConfigurable.class,
+		org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.class,
+		org.apache.hadoop.hbase.ipc.BadAuthException.class,
+		org.cloudera.htrace.HTraceConfiguration.class })
+public abstract class AbstractHBaseNonTransactionalAppendOutputOperator<T>
+		extends AbstractStoreOutputOperator<T, HBaseStore> {
+	private static final transient Logger logger = LoggerFactory
+			.getLogger(AbstractHBaseNonTransactionalAppendOutputOperator.class);
+
+	public AbstractHBaseNonTransactionalAppendOutputOperator() {
+		store = new HBaseStore();
+	}
+
+	@Override
+	public void processTuple(T tuple) {
+		Append append = operationAppend(tuple);
+		try {
+			store.getTable().append(append);
+		} catch (IOException e) {
+			logger.error("Could not append tuple", e);
+			DTThrowable.rethrow(e);
+		}
+
+	}
+
+	/**
+	 * Return the HBase Append metric to store the tuple. The implementor should
+	 * return a HBase Append metric that specifies where and what to store for
+	 * the tuple in the table.
+	 * 
+	 * @param t
+	 *            The tuple
+	 * @return The HBase Append metric
+	 */
+	public abstract Append operationAppend(T t);
+}
diff --git a/contrib/src/main/java/com/datatorrent/contrib/hbase/AbstractHBaseNonTransactionalPutOutputOperator.java b/contrib/src/main/java/com/datatorrent/contrib/hbase/AbstractHBaseNonTransactionalPutOutputOperator.java
new file mode 100644
index 0000000..758cc56
--- /dev/null
+++ b/contrib/src/main/java/com/datatorrent/contrib/hbase/AbstractHBaseNonTransactionalPutOutputOperator.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.datatorrent.contrib.hbase;
+
+import com.datatorrent.api.annotation.ShipContainingJars;
+import com.datatorrent.common.util.DTThrowable;
+import com.datatorrent.lib.db.AbstractStoreOutputOperator;
+import org.apache.hadoop.hbase.client.HTable;
+import org.apache.hadoop.hbase.client.Put;
+import org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.InterruptedIOException;
+
+/**
+ * Operator for storing tuples in HBase rows.<br>
+ * 
+ * <br>
+ * This class provides a HBase output operator that can be used to store tuples
+ * in rows in a HBase table. It should be extended by the end-operator
+ * developer. The extending class should implement operationPut method and
+ * provide a HBase Put metric object that specifies where and what to store for
+ * the tuple in the table.<br>
+ * 
+ * <br>
+ * This class offers non-transactional put where tuples are put as they come in
+ * 
+ * @param <T>
+ *            The tuple type
+ * @since 1.0.2
+ */
+@ShipContainingJars(classes = { org.apache.hadoop.hbase.client.HTable.class,
+		org.apache.hadoop.hbase.util.BloomFilterFactory.class,
+		com.google.protobuf.AbstractMessageLite.class,
+		org.apache.hadoop.hbase.BaseConfigurable.class,
+		org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.class,
+		org.apache.hadoop.hbase.ipc.BadAuthException.class,
+		org.cloudera.htrace.HTraceConfiguration.class })
+public abstract class AbstractHBaseNonTransactionalPutOutputOperator<T> extends
+		AbstractStoreOutputOperator<T, HBaseStore> {
+	private static final transient Logger logger = LoggerFactory
+			.getLogger(AbstractHBaseNonTransactionalPutOutputOperator.class);
+
+	public AbstractHBaseNonTransactionalPutOutputOperator() {
+		store = new HBaseStore();
+	}
+
+	@Override
+	public void processTuple(T tuple) {
+		HTable table = store.getTable();
+		Put put = operationPut(tuple);
+		try {
+			table.put(put);
+		} catch (RetriesExhaustedWithDetailsException e) {
+			logger.error("Could not output tuple", e);
+			DTThrowable.rethrow(e);
+		} catch (InterruptedIOException e) {
+			logger.error("Could not output tuple", e);
+			DTThrowable.rethrow(e);
+		}
+
+	}
+
+	public abstract Put operationPut(T t);
+
+}
diff --git a/contrib/src/main/java/com/datatorrent/contrib/hbase/AbstractHBaseTransactionalAppendOutputOperator.java b/contrib/src/main/java/com/datatorrent/contrib/hbase/AbstractHBaseTransactionalAppendOutputOperator.java
new file mode 100644
index 0000000..0729d8e
--- /dev/null
+++ b/contrib/src/main/java/com/datatorrent/contrib/hbase/AbstractHBaseTransactionalAppendOutputOperator.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.datatorrent.contrib.hbase;
+
+import com.datatorrent.api.annotation.ShipContainingJars;
+import com.datatorrent.common.util.DTThrowable;
+import com.datatorrent.lib.db.AbstractAggregateTransactionableStoreOutputOperator;
+import org.apache.hadoop.hbase.client.Append;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Operator for storing tuples in HBase columns.<br>
+ * 
+ * <br>
+ * This class provides a HBase output operator that can be used to store tuples
+ * in columns in a HBase table. It should be extended by the end-operator
+ * developer. The extending class should implement operationAppend method and
+ * provide a HBase Append metric object that specifies where and what to store
+ * for the tuple in the table.<br>
+ * 
+ * <br>
+ * This class provides batch append where tuples are collected till the end
+ * window and they are appended on end window
+ * 
+ * Note that since HBase doesn't support transactions this store cannot
+ * guarantee each tuple is written only once to HBase in case the operator is
+ * restarted from an earlier checkpoint. It only tries to minimize the number of
+ * duplicates limiting it to the tuples that were processed in the window when
+ * the operator shutdown.
+ * 
+ * @param <T>
+ *            The tuple type
+ * @since 1.0.2
+ */
+@ShipContainingJars(classes = { org.apache.hadoop.hbase.client.HTable.class,
+		org.apache.hadoop.hbase.util.BloomFilterFactory.class,
+		com.google.protobuf.AbstractMessageLite.class,
+		org.apache.hadoop.hbase.BaseConfigurable.class,
+		org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.class,
+		org.apache.hadoop.hbase.ipc.BadAuthException.class,
+		org.cloudera.htrace.HTraceConfiguration.class })
+public abstract class AbstractHBaseTransactionalAppendOutputOperator<T>
+		extends
+		AbstractAggregateTransactionableStoreOutputOperator<T, HBaseTransactionalStore> {
+	private static final transient Logger logger = LoggerFactory
+			.getLogger(AbstractHBaseTransactionalAppendOutputOperator.class);
+	private transient List<T> tuples;
+
+	public AbstractHBaseTransactionalAppendOutputOperator() {
+		store = new HBaseTransactionalStore();
+		tuples = new ArrayList<T>();
+	}
+
+	@Override
+	public void storeAggregate() {
+
+		Iterator<T> it = tuples.iterator();
+		while (it.hasNext()) {
+			T t = it.next();
+			try {
+				Append append = operationAppend(t);
+				store.getTable().append(append);
+			} catch (IOException e) {
+				logger.error("Could not append tuple", e);
+				DTThrowable.rethrow(e);
+			}
+			it.remove();
+		}
+	}
+
+	/**
+	 * Return the HBase Append metric to store the tuple. The implementor should
+	 * return a HBase Append metric that specifies where and what to store for
+	 * the tuple in the table.
+	 * 
+	 * @param t
+	 *            The tuple
+	 * @return The HBase Append metric
+	 */
+	public abstract Append operationAppend(T t);
+
+	@Override
+	public void processTuple(T tuple) {
+		tuples.add(tuple);
+	}
+
+}
diff --git a/contrib/src/main/java/com/datatorrent/contrib/hbase/AbstractHBaseTransactionalPutOutputOperator.java b/contrib/src/main/java/com/datatorrent/contrib/hbase/AbstractHBaseTransactionalPutOutputOperator.java
new file mode 100644
index 0000000..fcf7b44
--- /dev/null
+++ b/contrib/src/main/java/com/datatorrent/contrib/hbase/AbstractHBaseTransactionalPutOutputOperator.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.datatorrent.contrib.hbase;
+
+import com.datatorrent.api.annotation.ShipContainingJars;
+import com.datatorrent.common.util.DTThrowable;
+import com.datatorrent.lib.db.AbstractAggregateTransactionableStoreOutputOperator;
+import org.apache.hadoop.hbase.client.HTable;
+import org.apache.hadoop.hbase.client.Put;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Operator for storing tuples in HBase rows.<br>
+ * 
+ * <br>
+ * This class provides a HBase output operator that can be used to store tuples
+ * in rows in a HBase table. It should be extended by the end-operator
+ * developer. The extending class should implement operationPut method and
+ * provide a HBase Put metric object that specifies where and what to store for
+ * the tuple in the table.<br>
+ * 
+ * <br>
+ * This class provides a batch put where tuples are collected till the end
+ * window and they are put on end window
+ * 
+ * Note that since HBase doesn't support transactions this store cannot
+ * guarantee each tuple is written only once to HBase in case the operator is
+ * restarted from an earlier checkpoint. It only tries to minimize the number of
+ * duplicates limiting it to the tuples that were processed in the window when
+ * the operator shutdown.
+ * 
+ * @param <T>
+ *            The tuple type
+ * @since 1.0.2
+ */
+@ShipContainingJars(classes = { org.apache.hadoop.hbase.client.HTable.class,
+		org.apache.hadoop.hbase.util.BloomFilterFactory.class,
+		com.google.protobuf.AbstractMessageLite.class,
+		org.apache.hadoop.hbase.BaseConfigurable.class,
+		org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.class,
+		org.apache.hadoop.hbase.ipc.BadAuthException.class,
+		org.cloudera.htrace.HTraceConfiguration.class })
+public abstract class AbstractHBaseTransactionalPutOutputOperator<T>
+		extends
+		AbstractAggregateTransactionableStoreOutputOperator<T, HBaseTransactionalStore> {
+	private static final transient Logger logger = LoggerFactory
+			.getLogger(AbstractHBaseTransactionalPutOutputOperator.class);
+	private transient List<T> tuples;
+
+	public AbstractHBaseTransactionalPutOutputOperator() {
+		store = new HBaseTransactionalStore();
+		tuples = new ArrayList<T>();
+	}
+
+	@Override
+	public void storeAggregate() {
+
+		Iterator<T> it = tuples.iterator();
+		while (it.hasNext()) {
+			T t = it.next();
+			try {
+				HTable table = store.getTable();
+				Put put = operationPut(t);
+				table.put(put);
+			} catch (IOException e) {
+				logger.error("Could not output tuple", e);
+				DTThrowable.rethrow(e);
+			}
+			it.remove();
+		}
+	}
+
+	public abstract Put operationPut(T t) throws IOException;
+
+	@Override
+	public void processTuple(T tuple) {
+		tuples.add(tuple);
+	}
+
+}
diff --git a/contrib/src/main/java/com/datatorrent/contrib/hbase/HBaseNameValueCsvPutOperator.java b/contrib/src/main/java/com/datatorrent/contrib/hbase/HBaseNameValueCsvPutOperator.java
new file mode 100644
index 0000000..1ed1eb4
--- /dev/null
+++ b/contrib/src/main/java/com/datatorrent/contrib/hbase/HBaseNameValueCsvPutOperator.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.datatorrent.contrib.hbase;
+
+import com.datatorrent.api.Context.OperatorContext;
+import com.datatorrent.common.util.DTThrowable;
+import com.datatorrent.lib.util.ReusableStringReader;
+import org.apache.hadoop.hbase.client.Put;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.supercsv.io.CsvListReader;
+import org.supercsv.io.ICsvListReader;
+import org.supercsv.prefs.CsvPreference;
+
+import javax.validation.constraints.NotNull;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * accepts a string of key value pairs containing the data to be inserted.These
+ * are mapped to corresponding rows,columnfamilies and columns using a property
+ * file and inserted into hbase Eg: input string will be of the form
+ * name=xyz,st=patrickhenry,ct=fremont,sa=california the properties will contain
+ * properties of form
+ * name=row,sa=address.street,ct=address.city,sa=address.state with the above
+ * the mapping a row xyz is created. the value patrickhenry is inserted into
+ * columnfamily address and column street of row xyz. other values are inserted
+ * similarly.
+ *
+ * @since 1.0.2
+ */
+public class HBaseNameValueCsvPutOperator extends HBasePutOperator<String> {
+
+	private class ColDef {
+		String colFam;
+		String colName;
+	}
+
+	private static final transient Logger logger = LoggerFactory.getLogger(HBaseNameValueCsvPutOperator.class);
+	@NotNull
+	private String mapping;
+	private transient String rowKey;
+	private transient Map<String, ColDef> colMap = new HashMap<String, ColDef>();
+	private transient Map<String, String> linemap = new HashMap<String, String>();
+	private transient ICsvListReader lineListReader = null;
+	private transient ReusableStringReader lineSr=new ReusableStringReader();
+	private transient ArrayList<String> csvLineList = new ArrayList<String>();
+	
+	public void setMapping(String mapping) {
+		this.mapping = mapping;
+	}
+
+	@Override
+	public Put operationPut(String t) {
+		return parseLine(t);
+	}
+
+	public void parseMapping() {
+		ICsvListReader listReader = null;
+		StringReader sr=null;
+		ArrayList<String> csvList = new ArrayList<String>();
+		try {
+			sr=new StringReader(mapping);
+			listReader = new CsvListReader(sr,CsvPreference.STANDARD_PREFERENCE);
+			csvList = (ArrayList<String>) listReader.read();
+		} catch (IOException e) {
+			logger.error("Cannot read the mapping string", e);
+			DTThrowable.rethrow(e);
+		} finally {
+			try {
+				sr.close();
+				listReader.close();
+			} catch (IOException e) {
+				logger.error("Error closing Csv reader", e);
+				DTThrowable.rethrow(e);
+			}
+		}
+		for (String pair : csvList) {
+			ColDef c = new ColDef();
+			if (pair.indexOf('.') != -1) {
+				c.colName = pair.substring(pair.indexOf('.') + 1);
+				c.colFam = pair.substring(pair.indexOf('=') + 1,pair.indexOf('.'));
+				colMap.put(pair.substring(0, pair.indexOf('=')), c);
+			} else {
+				rowKey = pair.substring(0, pair.indexOf('='));
+			}
+		}
+	}
+
+	public Put parseLine(String s) {
+		Put put = null;
+		try {
+			lineSr.open(s);
+			csvLineList = (ArrayList<String>) lineListReader.read();
+		} catch (IOException e) {
+			logger.error("Cannot read the property string", e);
+			DTThrowable.rethrow(e);
+		} 
+		for (String pair : csvLineList) {
+			String key = pair.substring(0, pair.indexOf('='));
+			String value = pair.substring(pair.indexOf('=') + 1);
+
+			if (key.equals(rowKey)) {
+				put = new Put(value.getBytes());
+				for (Map.Entry<String, String> entry : linemap.entrySet()) {
+					ColDef c = colMap.get(entry.getKey());
+					put.add(c.colFam.getBytes(), c.colName.getBytes(), entry.getValue().getBytes());
+				}
+			} else {
+				if (put != null) {
+					ColDef c = colMap.get(key);
+					put.add(c.colFam.getBytes(), c.colName.getBytes(),value.getBytes());
+				} else {
+					linemap.put(key, value);
+				}
+			}
+		}
+		csvLineList.clear();
+		linemap.clear();
+		return put;
+	}
+
+	@Override
+	public void setup(OperatorContext context) {
+		super.setup(context);
+		parseMapping();
+		lineListReader = new CsvListReader(lineSr,CsvPreference.STANDARD_PREFERENCE);
+	}
+
+	@Override
+	public HBaseStatePersistenceStrategy getPersistenceStrategy() {
+		return new HBaseRowStatePersistence();
+	}
+	
+	@Override
+	public void teardown() {
+		super.teardown();
+		try {
+			lineSr.close();
+			lineListReader.close();
+		} catch (IOException e) {
+			logger.error("Cannot close the readers", e);
+			DTThrowable.rethrow(e);
+		}
+	}
+
+}
diff --git a/contrib/src/main/java/com/datatorrent/contrib/hbase/HBaseStore.java b/contrib/src/main/java/com/datatorrent/contrib/hbase/HBaseStore.java
new file mode 100644
index 0000000..adca58f
--- /dev/null
+++ b/contrib/src/main/java/com/datatorrent/contrib/hbase/HBaseStore.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.datatorrent.contrib.hbase;
+
+import com.datatorrent.lib.db.Connectable;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hbase.HBaseConfiguration;
+import org.apache.hadoop.hbase.client.HTable;
+
+import java.io.IOException;
+/**
+ * A {@link Connectable} that uses hbase to connect to stores.
+ *
+ * @since 1.0.2
+ */
+public class HBaseStore implements Connectable {
+
+	private String zookeeperQuorum;
+	private int zookeeperClientPort;
+	protected String tableName;
+
+	protected transient HTable table;
+
+	/**
+	 * Get the zookeeper quorum location.
+	 * 
+	 * @return The zookeeper quorum location
+	 */
+	public String getZookeeperQuorum() {
+		return zookeeperQuorum;
+	}
+
+	/**
+	 * Set the zookeeper quorum location.
+	 * 
+	 * @param zookeeperQuorum
+	 *            The zookeeper quorum location
+	 */
+	public void setZookeeperQuorum(String zookeeperQuorum) {
+		this.zookeeperQuorum = zookeeperQuorum;
+	}
+
+	/**
+	 * Get the zookeeper client port.
+	 * 
+	 * @return The zookeeper client port
+	 */
+	public int getZookeeperClientPort() {
+		return zookeeperClientPort;
+	}
+
+	/**
+	 * Set the zookeeper client port.
+	 * 
+	 * @param zookeeperClientPort
+	 *            The zookeeper client port
+	 */
+	public void setZookeeperClientPort(int zookeeperClientPort) {
+		this.zookeeperClientPort = zookeeperClientPort;
+	}
+
+	/**
+	 * Get the HBase table name.
+	 * 
+	 * @return The HBase table name
+	 */
+	public String getTableName() {
+		return tableName;
+	}
+
+	/**
+	 * Set the HBase table name.
+	 * 
+	 * @param tableName
+	 *            The HBase table name
+	 */
+	public void setTableName(String tableName) {
+		this.tableName = tableName;
+	}
+
+	/**
+	 * Get the HBase table .
+	 * 
+	 * @return The HBase table
+	 */
+	public HTable getTable() {
+		return table;
+	}
+
+	/**
+	 * Set the HBase table.
+	 * 
+	 * @param table
+	 *            The HBase table
+	 */
+	public void setTable(HTable table) {
+		this.table = table;
+	}
+
+	/**
+	 * Get the configuration.
+	 * 
+	 * @return The configuration
+	 */
+	public Configuration getConfiguration() {
+		return configuration;
+	}
+
+	/**
+	 * Set the configuration.
+	 * 
+	 * @param configuration
+	 *            The configuration
+	 */
+	public void setConfiguration(Configuration configuration) {
+		this.configuration = configuration;
+	}
+
+	protected transient Configuration configuration;
+
+	@Override
+	public void connect() throws IOException {
+		configuration = HBaseConfiguration.create();
+		configuration.set("hbase.zookeeper.quorum", zookeeperQuorum);
+		configuration.set("hbase.zookeeper.property.clientPort", ""
+				+ zookeeperClientPort);
+		table = new HTable(configuration, tableName);
+
+	}
+
+	@Override
+	public void disconnect() throws IOException {
+		// not applicable for hbase
+
+	}
+
+	@Override
+	public boolean connected() {
+		// not applicable to hbase
+		return false;
+	}
+
+}
diff --git a/contrib/src/main/java/com/datatorrent/contrib/hbase/HBaseTransactionalStore.java b/contrib/src/main/java/com/datatorrent/contrib/hbase/HBaseTransactionalStore.java
new file mode 100644
index 0000000..ad5915d
--- /dev/null
+++ b/contrib/src/main/java/com/datatorrent/contrib/hbase/HBaseTransactionalStore.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.datatorrent.contrib.hbase;
+
+import com.datatorrent.common.util.DTThrowable;
+import com.datatorrent.lib.db.TransactionableStore;
+import org.apache.hadoop.hbase.HColumnDescriptor;
+import org.apache.hadoop.hbase.HTableDescriptor;
+import org.apache.hadoop.hbase.KeyValue;
+import org.apache.hadoop.hbase.client.*;
+import org.apache.hadoop.hbase.util.Bytes;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.io.InterruptedIOException;
+/**
+ * <p>HBaseTransactionalStore class.</p>
+ * Note that since HBase doesn't support transactions this store cannot guarantee each tuple is written only once to
+ * HBase in case the operator is restarted from an earlier checkpoint. It only tries to minimize the number of
+ * duplicates limiting it to the tuples that were processed in the window when the operator shutdown.
+ *
+ * @since 1.0.2
+ */
+public class HBaseTransactionalStore extends HBaseStore implements
+		TransactionableStore {
+	private static final transient Logger logger = LoggerFactory
+			.getLogger(HBaseTransactionalStore.class);
+	private static final String DEFAULT_ROW_NAME = "HBaseOperator_row";
+	private static final String DEFAULT_COLUMN_FAMILY_NAME = "HBaseOutputOperator_cf";
+	private static final String DEFAULT_LAST_WINDOW_PREFIX_COLUMN_NAME = "last_window";
+	private transient String rowName;
+	private transient String columnFamilyName;
+
+	private transient byte[] rowBytes;
+	private transient byte[] columnFamilyBytes;
+
+	private transient String lastWindowColumnName;
+	private transient byte[] lastWindowColumnBytes;
+
+	public HBaseTransactionalStore() {
+		rowName = DEFAULT_ROW_NAME;
+		columnFamilyName = DEFAULT_COLUMN_FAMILY_NAME;
+		lastWindowColumnName = DEFAULT_LAST_WINDOW_PREFIX_COLUMN_NAME;
+		constructKeys();
+	}
+
+	private void constructKeys() {
+		rowBytes = Bytes.toBytes(rowName);
+		columnFamilyBytes = Bytes.toBytes(columnFamilyName);
+	}
+
+	/**
+	 * Get the row name in the table.
+	 * 
+	 * @return The row name
+	 */
+	public String getRowName() {
+		return rowName;
+	}
+
+	/**
+	 * Set the row name in the table.
+	 * 
+	 * @param rowName
+	 *            The row name
+	 */
+	public void setRowName(String rowName) {
+		this.rowName = rowName;
+		constructKeys();
+	}
+
+	/**
+	 * Get the column family name in the table.
+	 * 
+	 * @return The column family name
+	 */
+	public String getColumnFamilyName() {
+		return columnFamilyName;
+	}
+
+	/**
+	 * Set the column family name in the table.
+	 * 
+	 * @param columnFamilyName
+	 *            The column family name
+	 */
+	public void setColumnFamilyName(String columnFamilyName) {
+		this.columnFamilyName = columnFamilyName;
+		constructKeys();
+	}
+
+	@Override
+	public void connect() throws IOException {
+		super.connect();
+		HTableDescriptor tdesc = table.getTableDescriptor();
+		if (!tdesc.hasFamily(columnFamilyBytes)) {
+			HBaseAdmin admin = new HBaseAdmin(table.getConfiguration());
+			admin.disableTable(table.getTableName());
+			try {
+				HColumnDescriptor cdesc = new HColumnDescriptor(
+						columnFamilyBytes);
+				admin.addColumn(table.getTableName(), cdesc);
+			} finally {
+				admin.enableTable(table.getTableName());
+				admin.close();
+			}
+		}
+	}
+
+	@Override
+	public void beginTransaction() {
+		// HBase does support transactions so this method left empty
+
+	}
+
+	@Override
+	public void commitTransaction() {
+		// HBase does support transactions so this method left empty
+
+	}
+
+	@Override
+	public void rollbackTransaction() {
+		// HBase does support transactions so this method left empty
+
+	}
+
+	@Override
+	public boolean isInTransaction() {
+		// HBase does support transactions so this method left empty
+		return false;
+	}
+
+	@Override
+	public long getCommittedWindowId(String appId, int operatorId) {
+
+		byte[] value = null;
+		try {
+			String columnKey = appId + "_" + operatorId + "_"
+					+ lastWindowColumnName;
+			lastWindowColumnBytes = Bytes.toBytes(columnKey);
+			Get get = new Get(rowBytes);
+			get.addColumn(columnFamilyBytes, lastWindowColumnBytes);
+			Result result = null;
+			result = table.get(get);
+
+			for (KeyValue kv : result.raw()) {
+				if (kv.matchingQualifier(lastWindowColumnBytes)) {
+					value = kv.getValue();
+					break;
+				}
+			}
+		} catch (IOException ex) {
+			logger.error("Could not load window id ", ex);
+			DTThrowable.rethrow(ex);
+		}
+		if (value != null) {
+			long longval = Bytes.toLong(value);
+			return longval;
+		} else
+			return -1;
+
+	}
+
+	@Override
+	public void storeCommittedWindowId(String appId, int operatorId,
+			long windowId) {
+		byte[] WindowIdBytes = Bytes.toBytes(windowId);
+		String columnKey = appId + "_" + operatorId + "_"
+				+ lastWindowColumnName;
+		lastWindowColumnBytes = Bytes.toBytes(columnKey);
+		Put put = new Put(rowBytes);
+		put.add(columnFamilyBytes, lastWindowColumnBytes, WindowIdBytes);
+		try {
+			table.put(put);
+		} catch (RetriesExhaustedWithDetailsException e) {
+			logger.error("Could not store window id ", e);
+			DTThrowable.rethrow(e);
+		} catch (InterruptedIOException e) {
+			logger.error("Could not store window id ", e);
+			DTThrowable.rethrow(e);
+		}
+
+	}
+
+	@Override
+	public void removeCommittedWindowId(String appId, int operatorId) {
+		// Not applicable to hbase
+	}
+
+}
diff --git a/contrib/src/main/java/com/datatorrent/contrib/twitter/TwitterSampleInput.java b/contrib/src/main/java/com/datatorrent/contrib/twitter/TwitterSampleInput.java
index d84bcba..beae76e 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/twitter/TwitterSampleInput.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/twitter/TwitterSampleInput.java
@@ -17,15 +17,15 @@
 
 import java.util.concurrent.ArrayBlockingQueue;
 
-import twitter4j.*;
-import twitter4j.conf.ConfigurationBuilder;
-
 import javax.validation.constraints.Min;
 import javax.validation.constraints.NotNull;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import twitter4j.*;
+import twitter4j.conf.ConfigurationBuilder;
+
 import com.datatorrent.api.ActivationListener;
 import com.datatorrent.api.Context.OperatorContext;
 import com.datatorrent.api.DefaultOutputPort;
@@ -51,10 +51,10 @@
   public final transient DefaultOutputPort<Status> status = new DefaultOutputPort<Status>();
   public final transient DefaultOutputPort<String> text = new DefaultOutputPort<String>();
   public final transient DefaultOutputPort<String> url = new DefaultOutputPort<String>();
+  public final transient DefaultOutputPort<String> hashtag = new DefaultOutputPort<String>();
 
   /* the following 3 ports are not implemented so far */
   public final transient DefaultOutputPort<?> userMention = null;
-  public final transient DefaultOutputPort<?> hashtag = null;
   public final transient DefaultOutputPort<?> media = null;
   /**
    * Enable debugging.
@@ -70,9 +70,9 @@
   /**
    * The state which we would like to save for this operator.
    */
-  private int multiplier = 1;
+  private int feedMultiplier = 1;
   @Min(0)
-  private int multiplierVariance = 0;
+  private int feedMultiplierVariance = 0;
 
   /* Following twitter access credentials should be set before using this operator. */
   @NotNull
@@ -91,16 +91,16 @@
   {
     operatorThread = Thread.currentThread();
 
-    if (multiplier != 1) {
-      logger.info("Load set to be {}% of the entire twitter feed", multiplier);
+    if (feedMultiplier != 1) {
+      logger.info("Load set to be {}% of the entire twitter feed", feedMultiplier);
     }
 
     ConfigurationBuilder cb = new ConfigurationBuilder();
     cb.setDebugEnabled(debug).
-      setOAuthConsumerKey(consumerKey).
-      setOAuthConsumerSecret(consumerSecret).
-      setOAuthAccessToken(accessToken).
-      setOAuthAccessTokenSecret(accessTokenSecret);
+            setOAuthConsumerKey(consumerKey).
+            setOAuthConsumerSecret(consumerSecret).
+            setOAuthAccessToken(accessToken).
+            setOAuthAccessTokenSecret(accessTokenSecret);
 
     ts = new TwitterStreamFactory(cb.build()).getInstance();
   }
@@ -114,19 +114,19 @@
   @Override
   public void onStatus(Status status)
   {
-    int randomMultiplier = multiplier;
+    int randomMultiplier = feedMultiplier;
 
-    if (multiplierVariance > 0) {
-      int min = multiplier - multiplierVariance;
+    if (feedMultiplierVariance > 0) {
+      int min = feedMultiplier - feedMultiplierVariance;
       if (min < 0) {
         min = 0;
       }
 
-      int max = multiplier + multiplierVariance;
-      randomMultiplier = min + (int) (Math.random() * ((max - min) + 1));
+      int max = feedMultiplier + feedMultiplierVariance;
+      randomMultiplier = min + (int)(Math.random() * ((max - min) + 1));
     }
     try {
-      for (int i = randomMultiplier; i-- > 0; ) {
+      for (int i = randomMultiplier; i-- > 0;) {
         statuses.put(status);
         count++;
       }
@@ -186,10 +186,10 @@
   {
     ConfigurationBuilder cb = new ConfigurationBuilder();
     cb.setDebugEnabled(debug).
-      setOAuthConsumerKey(consumerKey).
-      setOAuthConsumerSecret(consumerSecret).
-      setOAuthAccessToken(accessToken).
-      setOAuthAccessTokenSecret(accessTokenSecret);
+            setOAuthConsumerKey(consumerKey).
+            setOAuthConsumerSecret(consumerSecret).
+            setOAuthAccessToken(accessToken).
+            setOAuthAccessTokenSecret(accessTokenSecret);
 
     ts = new TwitterStreamFactory(cb.build()).getInstance();
     ts.addListener(TwitterSampleInput.this);
@@ -220,18 +220,28 @@
 
   public void setFeedMultiplier(int multiplier)
   {
-    this.multiplier = multiplier;
+    this.feedMultiplier = multiplier;
+  }
+
+  public int getFeedMultiplier()
+  {
+    return this.feedMultiplier;
   }
 
   public void setFeedMultiplierVariance(int multiplierVariance)
   {
-    this.multiplierVariance = multiplierVariance;
+    this.feedMultiplierVariance = multiplierVariance;
+  }
+
+  public int getFeedMultiplierVariance()
+  {
+    return this.feedMultiplierVariance;
   }
 
   @Override
   public void emitTuples()
   {
-    for (int size = statuses.size(); size-- > 0; ) {
+    for (int size = statuses.size(); size-- > 0;) {
       Status s = statuses.poll();
       if (status.isConnected()) {
         status.emit(s);
@@ -249,7 +259,15 @@
           }
         }
       }
-      // do the same thing for all the other output ports.
+
+      if (hashtag.isConnected()) {
+        HashtagEntity[] hashtagEntities = s.getHashtagEntities();
+        if (hashtagEntities != null) {
+          for (HashtagEntity he : hashtagEntities) {
+            hashtag.emit(he.getText());
+          }
+        }
+      }
     }
   }
 
@@ -309,8 +327,8 @@
   {
     int hash = 7;
     hash = 11 * hash + (this.debug ? 1 : 0);
-    hash = 11 * hash + this.multiplier;
-    hash = 11 * hash + this.multiplierVariance;
+    hash = 11 * hash + this.feedMultiplier;
+    hash = 11 * hash + this.feedMultiplierVariance;
     hash = 11 * hash + (this.consumerKey != null ? this.consumerKey.hashCode() : 0);
     hash = 11 * hash + (this.consumerSecret != null ? this.consumerSecret.hashCode() : 0);
     hash = 11 * hash + (this.accessToken != null ? this.accessToken.hashCode() : 0);
@@ -332,10 +350,10 @@
     if (this.debug != other.debug) {
       return false;
     }
-    if (this.multiplier != other.multiplier) {
+    if (this.feedMultiplier != other.feedMultiplier) {
       return false;
     }
-    if (this.multiplierVariance != other.multiplierVariance) {
+    if (this.feedMultiplierVariance != other.feedMultiplierVariance) {
       return false;
     }
     if ((this.consumerKey == null) ? (other.consumerKey != null) : !this.consumerKey.equals(other.consumerKey)) {
@@ -356,7 +374,7 @@
   @Override
   public String toString()
   {
-    return "TwitterSampleInput{debug=" + debug + ", multiplier=" + multiplier + ", multiplierVariance=" + multiplierVariance + ", consumerKey=" + consumerKey + ", consumerSecret=" + consumerSecret + ", accessToken=" + accessToken + ", accessTokenSecret=" + accessTokenSecret + '}';
+    return "TwitterSampleInput{debug=" + debug + ", feedMultiplier=" + feedMultiplier + ", feedMultiplierVariance=" + feedMultiplierVariance + ", consumerKey=" + consumerKey + ", consumerSecret=" + consumerSecret + ", accessToken=" + accessToken + ", accessTokenSecret=" + accessTokenSecret + '}';
   }
 
   private static final Logger logger = LoggerFactory.getLogger(TwitterSampleInput.class);
diff --git a/contrib/src/test/java/com/datatorrent/contrib/hbase/HBaseNameValueCsvPutOperatorTest.java b/contrib/src/test/java/com/datatorrent/contrib/hbase/HBaseNameValueCsvPutOperatorTest.java
new file mode 100644
index 0000000..92bab15
--- /dev/null
+++ b/contrib/src/test/java/com/datatorrent/contrib/hbase/HBaseNameValueCsvPutOperatorTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.datatorrent.contrib.hbase;
+
+import java.io.IOException;
+
+import junit.framework.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.datatorrent.api.AttributeMap;
+import com.datatorrent.api.AttributeMap.Attribute;
+import com.datatorrent.api.Context.OperatorContext;
+
+public class HBaseNameValueCsvPutOperatorTest {
+	private static final Logger logger = LoggerFactory
+			.getLogger(HBaseNameValueCsvPutOperatorTest.class);
+
+	@Test
+	public void testPut() throws Exception {
+		try {
+      HBaseTestHelper.startLocalCluster();
+			HBaseTestHelper.clearHBase();
+			HBaseNameValueCsvPutOperator propPutOperator = new HBaseNameValueCsvPutOperator();
+
+			propPutOperator.setTableName("table1");
+			propPutOperator.setZookeeperQuorum("127.0.0.1");
+			propPutOperator.setZookeeperClientPort(2181);
+			String s = "name=milind,st=patrick,ct=fremont,sa=cali";
+			String s1 = "st=tasman,ct=sancla,name=milinda,sa=cali";
+			propPutOperator.setMapping("name=row,st=colfam0.street,ct=colfam0.city,sa=colfam0.state");
+			propPutOperator.setup(new OperatorContext() {
+
+				@Override
+				public <T> T getValue(Attribute<T> key) {
+					return null;
+				}
+
+				@Override
+				public AttributeMap getAttributes() {
+					return null;
+				}
+
+				@Override
+				public int getId() {
+					// TODO Auto-generated method stub
+					return 0;
+				}
+
+				@Override
+				public void setCounters(Object counters) {
+					// TODO Auto-generated method stub
+					
+				}
+			});
+			propPutOperator.beginWindow(0);
+			propPutOperator.inputPort.process(s);
+			propPutOperator.inputPort.process(s1);
+			propPutOperator.endWindow();
+			HBaseTuple tuple;
+
+			tuple = HBaseTestHelper
+					.getHBaseTuple("milind", "colfam0", "street");
+
+			Assert.assertNotNull("Tuple", tuple);
+			Assert.assertEquals("Tuple row", tuple.getRow(), "milind");
+			Assert.assertEquals("Tuple column family", tuple.getColFamily(),
+					"colfam0");
+			Assert.assertEquals("Tuple column name", tuple.getColName(),
+					"street");
+			Assert.assertEquals("Tuple column value", tuple.getColValue(),
+					"patrick");
+		} catch (IOException e) {
+
+			logger.error(e.getMessage());
+		}
+	}
+	
+}
diff --git a/contrib/src/test/java/com/datatorrent/contrib/hbase/HBaseTestHelper.java b/contrib/src/test/java/com/datatorrent/contrib/hbase/HBaseTestHelper.java
index f33cb9e..9bdfe48 100644
--- a/contrib/src/test/java/com/datatorrent/contrib/hbase/HBaseTestHelper.java
+++ b/contrib/src/test/java/com/datatorrent/contrib/hbase/HBaseTestHelper.java
@@ -17,24 +17,26 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.math.BigDecimal;
 import java.net.InetSocketAddress;
 import java.util.List;
+
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.EmptyWatcher;
 import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.KeyValue;
 import org.apache.hadoop.hbase.LocalHBaseCluster;
-import org.apache.hadoop.hbase.client.*;
+import org.apache.hadoop.hbase.client.Get;
+import org.apache.hadoop.hbase.client.HBaseAdmin;
+import org.apache.hadoop.hbase.client.HTable;
+import org.apache.hadoop.hbase.client.Put;
+import org.apache.hadoop.hbase.client.Result;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.zookeeper.ZooKeeper;
-import org.apache.zookeeper.server.NIOServerCnxn;
 import org.apache.zookeeper.server.NIOServerCnxnFactory;
-//import org.apache.zookeeper.server.NIOServerCnxnFactory;
 import org.apache.zookeeper.server.ZooKeeperServer;
 
+//import org.apache.hadoop.hbase.EmptyWatcher;
+
 /**
  *
  */
@@ -59,7 +61,7 @@
     ZooKeeperServer zooKeeper = new ZooKeeperServer(zooFile, zooFile, 2000);
 
     NIOServerCnxnFactory serverFactory = new NIOServerCnxnFactory();
-    serverFactory.configure(new InetSocketAddress(2182),10);
+    serverFactory.configure(new InetSocketAddress(2181),10);
     serverFactory.startup(zooKeeper);
   }
 
@@ -148,3 +150,4 @@
   }
 
 }
+
diff --git a/contrib/src/test/java/com/datatorrent/contrib/hbase/HBaseTransactionalAppendOperatorTest.java b/contrib/src/test/java/com/datatorrent/contrib/hbase/HBaseTransactionalAppendOperatorTest.java
new file mode 100644
index 0000000..7f6ffbb
--- /dev/null
+++ b/contrib/src/test/java/com/datatorrent/contrib/hbase/HBaseTransactionalAppendOperatorTest.java
@@ -0,0 +1,99 @@
+
+/*
+ * Copyright (c) 2013 DataTorrent, Inc. ALL Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.datatorrent.contrib.hbase;
+
+import com.datatorrent.api.DAG;
+import com.datatorrent.api.LocalMode;
+import junit.framework.Assert;
+import org.apache.hadoop.hbase.client.Append;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Test for transactional append operator
+ */
+public class HBaseTransactionalAppendOperatorTest {
+	private static final Logger logger = LoggerFactory
+			.getLogger(HBaseTransactionalAppendOperatorTest.class);
+
+	public HBaseTransactionalAppendOperatorTest() {
+	}
+
+	@Test
+	public void testAppend() {
+		try {
+      HBaseTestHelper.startLocalCluster();
+			HBaseTestHelper.clearHBase();
+			LocalMode lma = LocalMode.newInstance();
+			DAG dag = lma.getDAG();
+
+			dag.setAttribute(DAG.APPLICATION_NAME, "HBaseAppendOperatorTest");
+			HBaseColTupleGenerator ctg = dag.addOperator("coltuplegenerator",
+					HBaseColTupleGenerator.class);
+			TestHBaseAppendOperator thop = dag.addOperator("testhbaseput",
+					TestHBaseAppendOperator.class);
+			dag.addStream("ss", ctg.outputPort, thop.input);
+
+			thop.getStore().setTableName("table1");
+			thop.getStore().setZookeeperQuorum("127.0.0.1");
+			thop.getStore().setZookeeperClientPort(2181);
+
+			final LocalMode.Controller lc = lma.getController();
+			lc.setHeartbeatMonitoringEnabled(false);
+			lc.run(30000);
+
+			
+			HBaseTuple tuple = HBaseTestHelper.getHBaseTuple("row0", "colfam0",
+					"col-0");
+			Assert.assertNotNull("Tuple", tuple);
+			Assert.assertEquals("Tuple row", tuple.getRow(), "row0");
+			Assert.assertEquals("Tuple column family", tuple.getColFamily(),
+					"colfam0");
+			Assert.assertEquals("Tuple column name", tuple.getColName(),
+					"col-0");
+			Assert.assertEquals("Tuple column value", tuple.getColValue(),
+					"val-0-0");
+			tuple = HBaseTestHelper.getHBaseTuple("row0", "colfam0", "col-499");
+			Assert.assertNotNull("Tuple", tuple);
+			Assert.assertEquals("Tuple row", tuple.getRow(), "row0");
+			Assert.assertEquals("Tuple column family", tuple.getColFamily(),
+					"colfam0");
+			Assert.assertEquals("Tuple column name", tuple.getColName(),
+					"col-499");
+			Assert.assertEquals("Tuple column value", tuple.getColValue(),
+					"val-0-499");
+		} catch (Exception ex) {
+			logger.error(ex.getMessage());
+			assert false;
+		}
+	}
+
+	@SuppressWarnings("serial")
+	public static class TestHBaseAppendOperator extends
+			AbstractHBaseTransactionalAppendOutputOperator<HBaseTuple> {
+
+		@Override
+		public Append operationAppend(HBaseTuple t) {
+			Append append = new Append(t.getRow().getBytes());
+			append.add(t.getColFamily().getBytes(), t.getColName().getBytes(),
+					t.getColValue().getBytes());
+			return append;
+		}
+
+	}
+}
diff --git a/contrib/src/test/java/com/datatorrent/contrib/hbase/HBaseTransactionalPutOperatorTest.java b/contrib/src/test/java/com/datatorrent/contrib/hbase/HBaseTransactionalPutOperatorTest.java
new file mode 100644
index 0000000..6b5d5e0
--- /dev/null
+++ b/contrib/src/test/java/com/datatorrent/contrib/hbase/HBaseTransactionalPutOperatorTest.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2013 DataTorrent, Inc. ALL Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.datatorrent.contrib.hbase;
+
+import com.datatorrent.api.DAG;
+import com.datatorrent.api.LocalMode;
+import junit.framework.Assert;
+import org.apache.hadoop.hbase.client.Put;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+
+/**
+ *
+ */
+public class HBaseTransactionalPutOperatorTest {
+	private static final Logger logger = LoggerFactory
+			.getLogger(HBaseTransactionalPutOperatorTest.class);
+
+	public HBaseTransactionalPutOperatorTest() {
+	}
+
+	@Test
+	public void testPut() {
+		try {
+      HBaseTestHelper.startLocalCluster();
+			HBaseTestHelper.clearHBase();
+			LocalMode lma = LocalMode.newInstance();
+			DAG dag = lma.getDAG();
+
+			dag.setAttribute(DAG.APPLICATION_NAME, "HBasePutOperatorTest");
+			HBaseRowTupleGenerator rtg = dag.addOperator("tuplegenerator",
+					HBaseRowTupleGenerator.class);
+			TestHBasePutOperator thop = dag.addOperator("testhbaseput",
+					TestHBasePutOperator.class);
+			dag.addStream("ss", rtg.outputPort, thop.input);
+
+			thop.getStore().setTableName("table1");
+			thop.getStore().setZookeeperQuorum("127.0.0.1");
+			thop.getStore().setZookeeperClientPort(2181);
+
+			LocalMode.Controller lc = lma.getController();
+			lc.setHeartbeatMonitoringEnabled(false);
+			lc.run(30000);
+
+			HBaseTuple tuple = HBaseTestHelper.getHBaseTuple("row0", "colfam0",
+					"col-0");
+			Assert.assertNotNull("Tuple", tuple);
+			Assert.assertEquals("Tuple row", tuple.getRow(), "row0");
+			Assert.assertEquals("Tuple column family", tuple.getColFamily(),
+					"colfam0");
+			Assert.assertEquals("Tuple column name", tuple.getColName(),
+					"col-0");
+			Assert.assertEquals("Tuple column value", tuple.getColValue(),
+					"val-0-0");
+			tuple = HBaseTestHelper.getHBaseTuple("row499", "colfam0", "col-0");
+			Assert.assertNotNull("Tuple", tuple);
+			Assert.assertEquals("Tuple row", tuple.getRow(), "row499");
+			Assert.assertEquals("Tuple column family", tuple.getColFamily(),
+					"colfam0");
+			Assert.assertEquals("Tuple column name", tuple.getColName(),
+					"col-0");
+			Assert.assertEquals("Tuple column value", tuple.getColValue(),
+					"val-499-0");
+		} catch (Exception ex) {
+			ex.printStackTrace();
+			logger.error(ex.getMessage());
+			assert false;
+		}
+	}
+
+	@SuppressWarnings("serial")
+	public static class TestHBasePutOperator extends
+			AbstractHBaseTransactionalPutOutputOperator<HBaseTuple> {
+
+		@Override
+		public Put operationPut(HBaseTuple t) throws IOException {
+			Put put = new Put(t.getRow().getBytes());
+			put.add(t.getColFamily().getBytes(), t.getColName().getBytes(), t
+					.getColValue().getBytes());
+			return put;
+		}
+
+	}
+}
diff --git a/demos/pom.xml b/demos/pom.xml
index 22e7aae..7c8e466 100644
--- a/demos/pom.xml
+++ b/demos/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>com.datatorrent</groupId>
     <artifactId>malhar-all</artifactId>
-    <version>1.0.2-SNAPSHOT</version>
+    <version>1.0.2</version>
   </parent>
 
   <artifactId>malhar-demos</artifactId>
@@ -16,21 +16,9 @@
     <maven.deploy.skip>false</maven.deploy.skip>
     <skipTests>true</skipTests>
   </properties>
-
+  
   <dependencies>
     <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>dt-engine</artifactId>
-      <version>${dt.framework.version}</version>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>malhar-library</artifactId>
-      <version>${project.version}</version>
-      <type>jar</type>
-    </dependency>
-    <dependency>
       <!-- required by twitter demo -->
       <groupId>org.twitter4j</groupId>
       <artifactId>twitter4j-core</artifactId>
@@ -69,7 +57,7 @@
       <version>1.1</version>
     </dependency>
     <dependency>
-      <groupId> org.apache.hadoop</groupId>
+      <groupId>org.apache.hadoop</groupId>
       <artifactId>hadoop-mapreduce-client-core</artifactId>
       <version>${hadoop.version}</version>
     </dependency>
diff --git a/demos/src/main/java/com/datatorrent/demos/machinedata/data/AverageData.java b/demos/src/main/java/com/datatorrent/demos/machinedata/data/AverageData.java
index 226b03c..c9f5a33 100644
--- a/demos/src/main/java/com/datatorrent/demos/machinedata/data/AverageData.java
+++ b/demos/src/main/java/com/datatorrent/demos/machinedata/data/AverageData.java
@@ -15,6 +15,7 @@
  */
 package com.datatorrent.demos.machinedata.data;
 
+
 /**
  * This class stores the value of sum and the count of values summed.
  * <p>
@@ -26,7 +27,9 @@
 public class AverageData
 {
 
-  private double sum;
+  private long cpu;
+  private long hdd;
+  private long ram;
   private long count;
 
   /**
@@ -34,40 +37,51 @@
    */
   public AverageData()
   {
-    sum = 0;
-    count = 0;
+
   }
 
   /**
    * This constructor takes the value of sum and count and initialize the local attributes to corresponding values
    * 
-   * @param sum
-   *          the value of sum
    * @param count
    *          the value of count
    */
-  public AverageData(double sum, long count)
+  public AverageData(long cpu,long hdd,long ram, long count)
   {
-    this.sum = sum;
+    this.cpu = cpu;
+    this.ram = ram;
+    this.hdd = hdd;
     this.count = count;
   }
 
-  /**
-   * This returns the value of sum
-   * @return
-   */
-  public double getSum()
+  public long getCpu()
   {
-    return sum;
+    return cpu;
   }
 
-  /**
-   * This method sets the value of sum
-   * @param sum
-   */
-  public void setSum(double sum)
+  public void setCpu(long cpu)
   {
-    this.sum = sum;
+    this.cpu = cpu;
+  }
+
+  public long getHdd()
+  {
+    return hdd;
+  }
+
+  public void setHdd(long hdd)
+  {
+    this.hdd = hdd;
+  }
+
+  public long getRam()
+  {
+    return ram;
+  }
+
+  public void setRam(long ram)
+  {
+    this.ram = ram;
   }
 
   /**
diff --git a/demos/src/main/java/com/datatorrent/demos/machinedata/data/MachineInfo.java b/demos/src/main/java/com/datatorrent/demos/machinedata/data/MachineInfo.java
index 70885d9..f2648b7 100644
--- a/demos/src/main/java/com/datatorrent/demos/machinedata/data/MachineInfo.java
+++ b/demos/src/main/java/com/datatorrent/demos/machinedata/data/MachineInfo.java
@@ -102,7 +102,7 @@
   /**
    * This method sets the CPU% usage
    * 
-   * @param hdd
+   * @param cpu
    *          the CPU% usage
    */
   public void setCpu(int cpu)
@@ -123,7 +123,7 @@
   /**
    * This method sets the RAM% usage
    * 
-   * @param hdd
+   * @param ram
    *          the RAM% usage
    */
   public void setRam(int ram)
diff --git a/demos/src/main/java/com/datatorrent/demos/machinedata/operator/MachineInfoAveragingOperator.java b/demos/src/main/java/com/datatorrent/demos/machinedata/operator/MachineInfoAveragingOperator.java
index d1c1ab8..d4385f2 100644
--- a/demos/src/main/java/com/datatorrent/demos/machinedata/operator/MachineInfoAveragingOperator.java
+++ b/demos/src/main/java/com/datatorrent/demos/machinedata/operator/MachineInfoAveragingOperator.java
@@ -18,22 +18,22 @@
 import com.datatorrent.api.BaseOperator;
 import com.datatorrent.api.DefaultInputPort;
 import com.datatorrent.api.DefaultOutputPort;
+
 import com.datatorrent.demos.machinedata.data.MachineInfo;
 import com.datatorrent.demos.machinedata.data.MachineKey;
 import com.datatorrent.demos.machinedata.data.AverageData;
 import com.datatorrent.demos.machinedata.data.ResourceType;
 import com.datatorrent.lib.util.KeyHashValPair;
 import com.datatorrent.lib.util.KeyValPair;
+
 import com.google.common.collect.Maps;
 
 import java.math.BigDecimal;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 /**
@@ -46,7 +46,12 @@
 public class MachineInfoAveragingOperator extends BaseOperator
 {
 
-  private Map<MachineKey, List<Map<String, AverageData>>> dataMap = new HashMap<MachineKey, List<Map<String, AverageData>>>();
+  public static final String CPU = "cpu";
+  public static final String RAM = "ram";
+  public static final String HDD = "hdd";
+  public static final String DAY = "day";
+
+  private transient Map<MachineKey, AverageData> dataMap = new HashMap<MachineKey, AverageData>();
 
   public final transient DefaultOutputPort<KeyValPair<MachineKey, Map<String, String>>> outputPort = new DefaultOutputPort<KeyValPair<MachineKey, Map<String, String>>>();
 
@@ -55,15 +60,16 @@
   private int threshold = 95;
 
   private boolean genAlert;
-  private transient DateFormat dateFormat = new SimpleDateFormat();
+  //private transient DateFormat dateFormat = new SimpleDateFormat();
 
   /**
    * Buffer all the tuples as is till end window gets called
    */
-  public final transient DefaultInputPort<KeyHashValPair<MachineKey, Map<String, AverageData>>> inputPort = new DefaultInputPort<KeyHashValPair<MachineKey, Map<String, AverageData>>>() {
+  public final transient DefaultInputPort<KeyHashValPair<MachineKey, AverageData>> inputPort = new DefaultInputPort<KeyHashValPair<MachineKey, AverageData>>()
+  {
 
     @Override
-    public void process(KeyHashValPair<MachineKey, Map<String, AverageData>> tuple)
+    public void process(KeyHashValPair<MachineKey, AverageData> tuple)
     {
       addTuple(tuple);
     }
@@ -71,6 +77,7 @@
 
   /**
    * This method returns the threshold value
+   *
    * @return
    */
   public int getThreshold()
@@ -79,7 +86,8 @@
   }
 
   /**
-   * This method sets the threshold value. If the average usage for any Resource is above this for a given key, then the alert is sent 
+   * This method sets the threshold value. If the average usage for any Resource is above this for a given key, then the alert is sent
+   *
    * @param threshold the threshold value
    */
   public void setThreshold(int threshold)
@@ -89,69 +97,52 @@
 
   /**
    * This adds the given tuple to the dataMap
+   *
    * @param tuple input tuple
    */
-  private void addTuple(KeyHashValPair<MachineKey, Map<String, AverageData>> tuple)
+  private void addTuple(KeyHashValPair<MachineKey, AverageData> tuple)
   {
     MachineKey key = tuple.getKey();
-    List<Map<String, AverageData>> list = dataMap.get(key);
-    if (list == null) {
-      list = new ArrayList<Map<String, AverageData>>();
-      dataMap.put(key, list);
-    }
-    list.add(tuple.getValue());
+    dataMap.put(key, tuple.getValue());
   }
 
   @Override
   public void endWindow()
   {
-    for (Map.Entry<MachineKey, List<Map<String, AverageData>>> entry : dataMap.entrySet()) {
+    for (Map.Entry<MachineKey, AverageData> entry : dataMap.entrySet()) {
       MachineKey key = entry.getKey();
-      List<Map<String, AverageData>> list = entry.getValue();
-
-      Map<ResourceType, AverageData> averageResultMap = Maps.newHashMap();
-
-      for (Map<String, AverageData> map : list) {
-        prepareAverageResult(map, ResourceType.CPU, averageResultMap);
-        prepareAverageResult(map, ResourceType.RAM, averageResultMap);
-        prepareAverageResult(map, ResourceType.HDD, averageResultMap);
-      }
+      AverageData averageResultMap = entry.getValue();
       Map<String, String> averageResult = Maps.newHashMap();
-
-      for (Map.Entry<ResourceType, AverageData> dataEntry : averageResultMap.entrySet()) {
-        ResourceType resourceType = dataEntry.getKey();
-        double average = dataEntry.getValue().getSum() / dataEntry.getValue().getCount();
-        averageResult.put(resourceType.toString(), average+"");
-
-        if (average > threshold) {
-          BigDecimal bd = new BigDecimal(average);
-          bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
-          String stime = key.getDay()+key.getTimeKey();
-          String skey = getKeyInfo(key);
-
-          smtpAlert.emit(resourceType.toString().toUpperCase() + " alert at " + stime + " " + resourceType + " usage breached current usage: " + bd.doubleValue() + "% threshold: " + threshold + "%\n\n" + skey);
-        }
-      }
-      averageResult.put("day", key.getDay().toString());
+      long count = averageResultMap.getCount();
+      double average = averageResultMap.getCpu() / count;
+      averageResult.put(CPU, average + "");
+      emitAlert(average, CPU, key);
+      average = averageResultMap.getHdd() / count;
+      averageResult.put(HDD, average + "");
+      emitAlert(average, HDD, key);
+      average = averageResultMap.getRam() / count;
+      averageResult.put(RAM, average + "");
+      emitAlert(average, RAM, key);
+      averageResult.put(DAY, key.getDay().toString());
       outputPort.emit(new KeyValPair<MachineKey, Map<String, String>>(key, averageResult));
     }
     dataMap.clear();
   }
 
-  private void prepareAverageResult(Map<String, AverageData> map, ResourceType valueKey, Map<ResourceType, AverageData> averageResultMap)
+  private void emitAlert(double average, String resourceType, MachineKey key)
   {
-    AverageData average = averageResultMap.get(valueKey);
-    if (average == null) {
-      average = new AverageData(map.get(valueKey.toString()).getSum(), map.get(valueKey.toString()).getCount());
-      averageResultMap.put(valueKey, average);
-    } else {
-      average.setSum(average.getSum() + map.get(valueKey.toString()).getSum());
-      average.setCount(average.getCount() + map.get(valueKey.toString()).getCount());
+    if (average > threshold) {
+      BigDecimal bd = new BigDecimal(average);
+      bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
+      String stime = key.getDay() + key.getTimeKey();
+      String skey = getKeyInfo(key);
+      smtpAlert.emit(resourceType.toUpperCase() + " alert at " + stime + " " + resourceType + " usage breached current usage: " + bd.doubleValue() + "% threshold: " + threshold + "%\n\n" + skey);
     }
   }
 
   /**
    * This method is used to artificially generate alerts
+   *
    * @param genAlert
    */
   public void setGenAlert(boolean genAlert)
@@ -165,7 +156,7 @@
     DateFormat dayDateFormat = new SimpleDateFormat("dd");
     String day = dayDateFormat.format(date);
 
-    MachineKey alertKey = new MachineKey(timeKey,day);
+    MachineKey alertKey = new MachineKey(timeKey, day);
     alertKey.setCustomer(1);
     alertKey.setProduct(5);
     alertKey.setOs(10);
@@ -186,6 +177,7 @@
 
   /**
    * This method returns the String for a given MachineKey instance
+   *
    * @param key MachineKey instance that needs to be converted to string
    * @return
    */
diff --git a/demos/src/main/java/com/datatorrent/demos/machinedata/operator/MachineInfoAveragingPrerequisitesOperator.java b/demos/src/main/java/com/datatorrent/demos/machinedata/operator/MachineInfoAveragingPrerequisitesOperator.java
index 64bdaaa..e6ef490 100644
--- a/demos/src/main/java/com/datatorrent/demos/machinedata/operator/MachineInfoAveragingPrerequisitesOperator.java
+++ b/demos/src/main/java/com/datatorrent/demos/machinedata/operator/MachineInfoAveragingPrerequisitesOperator.java
@@ -18,9 +18,11 @@
 import com.datatorrent.api.BaseOperator;
 import com.datatorrent.api.DefaultInputPort;
 import com.datatorrent.api.DefaultOutputPort;
+
 import com.datatorrent.demos.machinedata.data.MachineKey;
 import com.datatorrent.demos.machinedata.data.MachineInfo;
 import com.datatorrent.demos.machinedata.data.AverageData;
+import com.datatorrent.lib.math.Average;
 import com.datatorrent.lib.util.KeyHashValPair;
 
 import org.apache.commons.lang.mutable.MutableDouble;
@@ -39,44 +41,36 @@
 {
 
   // Aggregate sum of all values seen for a key.
-  private Map<MachineKey, Map<String, MutableDouble>> sums = new HashMap<MachineKey, Map<String, MutableDouble>>();
+  private Map<MachineKey, AverageData> sums = new HashMap<MachineKey, AverageData>();
 
-  // Count of number of values seen for key.
-  private Map<MachineKey, MutableLong> counts = new HashMap<MachineKey, MutableLong>();
-
-  public final transient DefaultOutputPort<KeyHashValPair<MachineKey, Map<String, AverageData>>> outputPort = new DefaultOutputPort<KeyHashValPair<MachineKey, Map<String, AverageData>>>(){
-    public Unifier<KeyHashValPair<MachineKey,Map<String,AverageData>>> getUnifier() {
+  public final transient DefaultOutputPort<KeyHashValPair<MachineKey, AverageData>> outputPort = new DefaultOutputPort<KeyHashValPair<MachineKey, AverageData>>()
+  {
+    public Unifier<KeyHashValPair<MachineKey, AverageData>> getUnifier()
+    {
       MachineInfoAveragingUnifier unifier = new MachineInfoAveragingUnifier();
       return unifier;
-    };
+    }
+
+    ;
   };
 
-  public transient DefaultInputPort<MachineInfo> inputPort = new DefaultInputPort<MachineInfo>() {
+  public transient DefaultInputPort<MachineInfo> inputPort = new DefaultInputPort<MachineInfo>()
+  {
 
     @Override
     public void process(MachineInfo tuple)
     {
       MachineKey key = tuple.getMachineKey();
-
-      Map<String, MutableDouble> sumsMap = sums.get(key);
-      if (sumsMap == null) {
-        sumsMap = new HashMap<String, MutableDouble>();
-        sumsMap.put("cpu", new MutableDouble(tuple.getCpu()));
-        sumsMap.put("ram", new MutableDouble(tuple.getRam()));
-        sumsMap.put("hdd", new MutableDouble(tuple.getHdd()));
-        sums.put(key, sumsMap);
-      } else {
-        sumsMap.get("cpu").add(tuple.getCpu());
-        sumsMap.get("ram").add(tuple.getRam());
-        sumsMap.get("hdd").add(tuple.getHdd());
+      AverageData averageData = sums.get(key);
+      if (averageData == null) {
+        averageData = new AverageData(tuple.getCpu(), tuple.getHdd(), tuple.getRam(), 1);
+        sums.put(key, averageData);
       }
-
-      MutableLong count = counts.get(key);
-      if (count == null) {
-        count = new MutableLong(1);
-        counts.put(key, count);
-      } else {
-        count.increment();
+      else {
+        averageData.setCpu(averageData.getCpu() + tuple.getCpu());
+        averageData.setRam(averageData.getRam() + tuple.getRam());
+        averageData.setHdd(averageData.getHdd() + tuple.getHdd());
+        averageData.setCount(averageData.getCount() + 1);
       }
     }
   };
@@ -85,22 +79,12 @@
   public void endWindow()
   {
 
-    for (Map.Entry<MachineKey, Map<String, MutableDouble>> entry : sums.entrySet()) {
-
-      Map<String, MutableDouble> sumMap = entry.getValue();
-      long count = counts.get(entry.getKey()).longValue();
-
-      Map<String, AverageData> avg = new HashMap<String, AverageData>();
-      avg.put("cpu", new AverageData(sumMap.get("cpu").doubleValue(), count));
-      avg.put("ram", new AverageData(sumMap.get("ram").doubleValue(), count));
-      avg.put("hdd", new AverageData(sumMap.get("hdd").doubleValue(), count));
-
+    for (Map.Entry<MachineKey, AverageData> entry : sums.entrySet()) {
       if (outputPort.isConnected()) {
-        outputPort.emit(new KeyHashValPair<MachineKey, Map<String, AverageData>>(entry.getKey(), avg));
+        outputPort.emit(new KeyHashValPair<MachineKey, AverageData>(entry.getKey(), entry.getValue()));
       }
     }
     sums.clear();
-    counts.clear();
   }
 
 }
diff --git a/demos/src/main/java/com/datatorrent/demos/machinedata/operator/MachineInfoAveragingUnifier.java b/demos/src/main/java/com/datatorrent/demos/machinedata/operator/MachineInfoAveragingUnifier.java
index 31ea98b..48e1d97 100644
--- a/demos/src/main/java/com/datatorrent/demos/machinedata/operator/MachineInfoAveragingUnifier.java
+++ b/demos/src/main/java/com/datatorrent/demos/machinedata/operator/MachineInfoAveragingUnifier.java
@@ -6,22 +6,22 @@
 import com.datatorrent.api.DefaultOutputPort;
 import com.datatorrent.api.Context.OperatorContext;
 import com.datatorrent.api.Operator.Unifier;
+
 import com.datatorrent.demos.machinedata.data.AverageData;
 import com.datatorrent.demos.machinedata.data.MachineKey;
 import com.datatorrent.lib.util.KeyHashValPair;
 
-
 /**
  * This class calculates the partial sum and count for a given key
  * <p>MachineInfoAveragingUnifier class.</p>
  *
  * @since 0.9.0
  */
-public class MachineInfoAveragingUnifier implements Unifier<KeyHashValPair<MachineKey, Map<String, AverageData>>>
+public class MachineInfoAveragingUnifier implements Unifier<KeyHashValPair<MachineKey, AverageData>>
 {
 
-  private Map<MachineKey, Map<String, AverageData>> sums = new HashMap<MachineKey, Map<String, AverageData>>();
-  public final transient DefaultOutputPort<KeyHashValPair<MachineKey, Map<String, AverageData>>> outputPort = new DefaultOutputPort<KeyHashValPair<MachineKey, Map<String, AverageData>>>();
+  private Map<MachineKey, AverageData> sums = new HashMap<MachineKey, AverageData>();
+  public final transient DefaultOutputPort<KeyHashValPair<MachineKey, AverageData>> outputPort = new DefaultOutputPort<KeyHashValPair<MachineKey, AverageData>>();
 
   @Override
   public void beginWindow(long arg0)
@@ -33,11 +33,11 @@
   @Override
   public void endWindow()
   {
-    for (Map.Entry<MachineKey, Map<String, AverageData>> entry : sums.entrySet()) {
-      outputPort.emit(new KeyHashValPair<MachineKey, Map<String, AverageData>>(entry.getKey(), entry.getValue()));
+    for (Map.Entry<MachineKey, AverageData> entry : sums.entrySet()) {
+      outputPort.emit(new KeyHashValPair<MachineKey, AverageData>(entry.getKey(), entry.getValue()));
     }
     sums.clear();
-  
+
   }
 
   @Override
@@ -55,40 +55,20 @@
   }
 
   @Override
-  public void process(KeyHashValPair<MachineKey, Map<String, AverageData>> arg0)
+  public void process(KeyHashValPair<MachineKey, AverageData> arg0)
   {
     MachineKey tupleKey = arg0.getKey();
-    Map<String, AverageData> sumsMap = sums.get(tupleKey);
-    Map<String, AverageData> tupleValue = arg0.getValue();
-    if (sumsMap == null) {
+    AverageData averageData = sums.get(tupleKey);
+    AverageData tupleValue = arg0.getValue();
+    if (averageData == null) {
       sums.put(tupleKey, tupleValue);
-    } else {
-      updateSum("cpu", sumsMap, tupleValue);
-      updateSum("ram", sumsMap, tupleValue);
-      updateSum("hdd", sumsMap, tupleValue);
     }
-
-  }
-
-  /**
-   * This method updates the sum and count for a given Resource key
-   * @param resourceKey the resource key whose sum and count needs to be updated
-   * @param sumsMap the map that stores the sum and count values
-   * @param tupleMap the new tuple map that is added
-   */
-  private void updateSum(String resourceKey, Map<String, AverageData> sumsMap, Map<String, AverageData> tupleMap)
-  {
-    AverageData sumsAverageData = sumsMap.get(resourceKey);
-    AverageData tupleAverageData = tupleMap.get(resourceKey);
-    if (tupleAverageData != null) {
-      if (sumsAverageData != null) {
-        sumsAverageData.setCount(sumsAverageData.getCount() + tupleAverageData.getCount());
-        sumsAverageData.setSum(sumsAverageData.getSum() + tupleAverageData.getSum());
-      } else {
-        sumsMap.put(resourceKey, tupleAverageData);
-      }
+    else {
+      averageData.setCpu(averageData.getCpu() + tupleValue.getCpu());
+      averageData.setRam(averageData.getRam() + tupleValue.getRam());
+      averageData.setHdd(averageData.getHdd() + tupleValue.getHdd());
+      averageData.setCount(averageData.getCount() + tupleValue.getCount());
     }
-
   }
 
 }
diff --git a/demos/src/main/java/com/datatorrent/demos/mobile/Application.java b/demos/src/main/java/com/datatorrent/demos/mobile/Application.java
index 3beb270..5c2f6bf 100644
--- a/demos/src/main/java/com/datatorrent/demos/mobile/Application.java
+++ b/demos/src/main/java/com/datatorrent/demos/mobile/Application.java
@@ -15,14 +15,12 @@
  */
 package com.datatorrent.demos.mobile;
 
-import com.datatorrent.api.AttributeMap;
+import com.datatorrent.api.*;
 import com.datatorrent.api.Context.OperatorContext;
 import com.datatorrent.api.Context.PortContext;
-import com.datatorrent.api.DAG;
 import com.datatorrent.api.DAG.Locality;
 import com.datatorrent.api.annotation.ApplicationAnnotation;
-import com.datatorrent.api.DAGContext;
-import com.datatorrent.api.StreamingApplication;
+
 import com.datatorrent.lib.io.ConsoleOutputOperator;
 import com.datatorrent.lib.io.PubSubWebSocketInputOperator;
 import com.datatorrent.lib.io.PubSubWebSocketOutputOperator;
@@ -36,6 +34,7 @@
 import org.slf4j.LoggerFactory;
 
 import java.net.URI;
+import java.util.Arrays;
 import java.util.Random;
 
 /**
@@ -159,8 +158,14 @@
     movementGen.setRange(20);
     movementGen.setThreshold(80);
     dag.setAttribute(movementGen, OperatorContext.INITIAL_PARTITION_COUNT, 2);
-    dag.setAttribute(movementGen, OperatorContext.PARTITION_TPS_MIN, 10000);
-    dag.setAttribute(movementGen, OperatorContext.PARTITION_TPS_MAX, 30000);
+    //dag.setAttribute(movementGen, OperatorContext.PARTITION_TPS_MIN, 10000);
+    //dag.setAttribute(movementGen, OperatorContext.PARTITION_TPS_MAX, 30000);
+    ThroughputBasedPartitioner<PhoneMovementGenerator> partitioner = new ThroughputBasedPartitioner<PhoneMovementGenerator>();
+    partitioner.setCooldownMillis(90000);
+    partitioner.setMaximumThroughput(30000);
+    partitioner.setMinimumThroughput(10000);
+    dag.setAttribute(movementGen,OperatorContext.STATS_LISTENERS, Arrays.asList(new StatsListener[]{partitioner}));
+    dag.setAttribute(movementGen,OperatorContext.PARTITIONER, partitioner);
     dag.setInputPortAttribute(movementGen.data, PortContext.QUEUE_CAPACITY, 32 * 1024);
 
     // default partitioning: first connected stream to movementGen will be partitioned
@@ -202,7 +207,7 @@
       movementGen.phone_register.add(5556101);
       ConsoleOutputOperator out = dag.addOperator("phoneLocationQueryResult", new ConsoleOutputOperator());
       out.setStringFormat("phoneLocationQueryResult" + ": %s");
-      dag.addStream("consoledata", movementGen.locationQueryResult, out.input).setLocality(Locality.CONTAINER_LOCAL);
+      dag.addStream("consoledata", movementGen.locationQueryResult, out.input);
     }
   }
 
diff --git a/demos/src/main/java/com/datatorrent/demos/mobile/ThroughputBasedPartitioner.java b/demos/src/main/java/com/datatorrent/demos/mobile/ThroughputBasedPartitioner.java
new file mode 100644
index 0000000..fb756af
--- /dev/null
+++ b/demos/src/main/java/com/datatorrent/demos/mobile/ThroughputBasedPartitioner.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.datatorrent.demos.mobile;
+
+import java.io.Serializable;
+import java.util.*;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.collect.Sets;
+
+import com.datatorrent.api.DefaultPartition;
+import com.datatorrent.api.Operator;
+import com.datatorrent.api.Partitioner;
+import com.datatorrent.api.StatsListener;
+
+/**
+ * This does the partition of the operator based on the throughput.
+ * The max and min throughput can be controlled by the properties
+ *
+ * </br>
+ * <b>maximumEvents:</b> The maximum throughput above which the operator will be repartitioned</br>
+ * <b>minimumEvents:</b> The minimum throughput below which the operators will be merged</br>
+ * <b>cooldownMillis:</b> The time for the operators to stabilize before next partitioning if required</br>
+ * <b></b></br>
+ *
+ * @since 1.0.2
+ */
+public class ThroughputBasedPartitioner<T extends Operator> implements StatsListener, Partitioner<T>, Serializable
+{
+  private long maximumEvents;
+  private long minimumEvents;
+  private long cooldownMillis = 2000;
+  private long nextMillis;
+  private long partitionNextMillis;
+
+  @Override
+  public Response processStats(BatchedOperatorStats stats)
+  {
+    Response response = new Response();
+    response.repartitionRequired = false;
+    if (!partitionedInstanceStatus.containsKey(stats.getOperatorId())) {
+      return response;
+    }
+    partitionedInstanceStatus.put(stats.getOperatorId(), stats);
+    if (System.currentTimeMillis() > nextMillis) {
+      if (stats.getTuplesProcessedPSMA() < minimumEvents || stats.getTuplesProcessedPSMA() > maximumEvents) {
+        response.repartitionRequired = true;
+        logger.debug("setting repartition to true");
+      }
+      nextMillis = System.currentTimeMillis() + cooldownMillis;
+    }
+    return response;
+  }
+
+  @Override
+  public Collection<Partition<T>> definePartitions(Collection<Partition<T>> partitions, int incrementalCapacity)
+  {
+    if (partitionedInstanceStatus == null || partitionedInstanceStatus.isEmpty()) {
+      // first call
+      // trying to give initial stability before sending the repartition call
+      if (partitionedInstanceStatus == null) {
+        partitionedInstanceStatus = new HashMap<Integer, BatchedOperatorStats>();
+      }
+      partitionNextMillis = System.currentTimeMillis() + 2 * cooldownMillis;
+      nextMillis = partitionNextMillis;
+      return null;
+    }
+    else {
+      // repartition call
+      logger.debug("repartition call for phone movement operator");
+      if (System.currentTimeMillis() < partitionNextMillis) {
+        return partitions;
+      }
+      BatchedOperatorStats stats;
+      List<Partition<T>> newPartitions = new ArrayList<Partition<T>>();
+      HashMap<Integer, Partition<T>> lowLoadPartitions = new HashMap<Integer, Partition<T>>();
+      for (Partition<T> p : partitions) {
+        int load = 0;
+        stats = p.getStats();
+        if (stats.getTuplesProcessedPSMA() > maximumEvents) {
+          load = 1;
+        }
+        else if (stats.getTuplesProcessedPSMA() < minimumEvents) {
+          load = -1;
+        }
+        if (load < 0) {
+          // combine neighboring underutilized partitions
+          PartitionKeys pks = p.getPartitionKeys().values().iterator().next(); // one port partitioned
+          for (int partitionKey : pks.partitions) {
+            // look for the sibling partition by excluding leading bit
+            int reducedMask = pks.mask >>> 1;
+            String lookupKey = Integer.valueOf(reducedMask) + "-" + Integer.valueOf(partitionKey & reducedMask);
+            logger.debug("pks {} lookupKey {}", pks, lookupKey);
+            Partition<T> siblingPartition = lowLoadPartitions.remove(partitionKey & reducedMask);
+            if (siblingPartition == null) {
+              lowLoadPartitions.put(partitionKey & reducedMask, p);
+            }
+            else {
+              // both of the partitions are low load, combine
+              PartitionKeys newPks = new PartitionKeys(reducedMask, Sets.newHashSet(partitionKey & reducedMask));
+              // put new value so the map gets marked as modified
+              Operator.InputPort<?> port = siblingPartition.getPartitionKeys().keySet().iterator().next();
+              siblingPartition.getPartitionKeys().put(port, newPks);
+              // add as new partition
+              newPartitions.add(siblingPartition);
+              //LOG.debug("partition keys after merge {}", siblingPartition.getPartitionKeys());
+            }
+          }
+        }
+        else if (load > 0) {
+          // split bottlenecks
+          Map<Operator.InputPort<?>, PartitionKeys> keys = p.getPartitionKeys();
+          Map.Entry<Operator.InputPort<?>, PartitionKeys> e = keys.entrySet().iterator().next();
+
+          final int newMask;
+          final Set<Integer> newKeys;
+
+          if (e.getValue().partitions.size() == 1) {
+            // split single key
+            newMask = (e.getValue().mask << 1) | 1;
+            int key = e.getValue().partitions.iterator().next();
+            int key2 = (newMask ^ e.getValue().mask) | key;
+            newKeys = Sets.newHashSet(key, key2);
+          }
+          else {
+            // assign keys to separate partitions
+            newMask = e.getValue().mask;
+            newKeys = e.getValue().partitions;
+          }
+
+          for (int key : newKeys) {
+            Partition<T> newPartition = new DefaultPartition<T>(p.getPartitionedInstance());
+            newPartition.getPartitionKeys().put(e.getKey(), new PartitionKeys(newMask, Sets.newHashSet(key)));
+            newPartitions.add(newPartition);
+          }
+        }
+        else {
+          // leave unchanged
+          newPartitions.add(p);
+        }
+      }
+      // put back low load partitions that could not be combined
+      newPartitions.addAll(lowLoadPartitions.values());
+      partitionNextMillis = System.currentTimeMillis() + cooldownMillis;
+      return newPartitions;
+
+    }
+  }
+
+  @Override
+  public void partitioned(Map<Integer, Partition<T>> partitions)
+  {
+    logger.debug("Partitioned Map: {}", partitions);
+    partitionedInstanceStatus.clear();
+    for (Map.Entry<Integer, Partition<T>> entry : partitions.entrySet()) {
+      if (partitionedInstanceStatus.containsKey(entry.getKey())) {
+      }
+      else {
+        partitionedInstanceStatus.put(entry.getKey(), null);
+      }
+    }
+  }
+
+  public void setMaximumThroughput(long maxEvents)
+  {
+    maximumEvents = maxEvents;
+  }
+
+  public void setMinimumThroughput(long minEvents)
+  {
+    minimumEvents = minEvents;
+  }
+
+  public void setCooldownMillis(long millis)
+  {
+    cooldownMillis = millis;
+  }
+
+  private transient HashMap<Integer, BatchedOperatorStats> partitionedInstanceStatus = new HashMap<Integer, BatchedOperatorStats>();
+
+  private static final Logger logger = LoggerFactory.getLogger(ThroughputBasedPartitioner.class);
+}
diff --git a/demos/src/main/java/com/datatorrent/demos/pi/Application.java b/demos/src/main/java/com/datatorrent/demos/pi/Application.java
index c85fce8..c9199bf 100644
--- a/demos/src/main/java/com/datatorrent/demos/pi/Application.java
+++ b/demos/src/main/java/com/datatorrent/demos/pi/Application.java
@@ -71,7 +71,7 @@
  *
  * @since 0.3.2
  */
-@ApplicationAnnotation(name="PiCalculatorUsingCustomOperatorDemo")
+@ApplicationAnnotation(name="PiDemo")
 public class Application implements StreamingApplication
 {
   private final Locality locality = null;
diff --git a/demos/src/main/java/com/datatorrent/demos/pi/ApplicationWithScript.java b/demos/src/main/java/com/datatorrent/demos/pi/ApplicationWithScript.java
index 0cd96f4..ad92fb2 100644
--- a/demos/src/main/java/com/datatorrent/demos/pi/ApplicationWithScript.java
+++ b/demos/src/main/java/com/datatorrent/demos/pi/ApplicationWithScript.java
@@ -75,7 +75,7 @@
  *
  * @since 0.3.2
  */
-@ApplicationAnnotation(name="PiCalculatorUsingScriptOperatorDemo")
+@ApplicationAnnotation(name="PiJavaScriptDemo")
 public class ApplicationWithScript implements StreamingApplication
 {
 
diff --git a/demos/src/main/java/com/datatorrent/demos/pi/Calculator.java b/demos/src/main/java/com/datatorrent/demos/pi/Calculator.java
index bcb5c11..dfe535f 100644
--- a/demos/src/main/java/com/datatorrent/demos/pi/Calculator.java
+++ b/demos/src/main/java/com/datatorrent/demos/pi/Calculator.java
@@ -37,7 +37,7 @@
  *
  * @since 0.3.2
  */
-@ApplicationAnnotation(name="PiCalculatorUsingLibraryOperatorsDemo")
+@ApplicationAnnotation(name="PiLibraryDemo")
 public class Calculator implements StreamingApplication
 {
   private final Locality locality = null;
diff --git a/demos/src/main/java/com/datatorrent/demos/twitter/TwitterDumpHBaseApplication.java b/demos/src/main/java/com/datatorrent/demos/twitter/TwitterDumpHBaseApplication.java
index fd3bf40..f29688c 100644
--- a/demos/src/main/java/com/datatorrent/demos/twitter/TwitterDumpHBaseApplication.java
+++ b/demos/src/main/java/com/datatorrent/demos/twitter/TwitterDumpHBaseApplication.java
@@ -36,9 +36,9 @@
 /**
  * An application which connects to Twitter Sample Input and stores all the
  * tweets with their usernames in a hbase database. Please review the docs
- * for TwitterTopCounterApplication to setup your twitter credentials. 
+ * for TwitterTopCounterApplication to setup your twitter credentials.
  *
- * You need to create the HBase table to run this demo. Table name can be 
+ * You need to create the HBase table to run this demo. Table name can be
  * configured but columnfamily must be 'cf' to make this demo simple and complied
  * with the mysql based demo.
  * create 'tablename', 'cf'
diff --git a/demos/src/main/java/com/datatorrent/demos/twitter/TwitterStatusHashtagExtractor.java b/demos/src/main/java/com/datatorrent/demos/twitter/TwitterStatusHashtagExtractor.java
new file mode 100644
index 0000000..0dcb25b
--- /dev/null
+++ b/demos/src/main/java/com/datatorrent/demos/twitter/TwitterStatusHashtagExtractor.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.datatorrent.demos.twitter;
+
+import twitter4j.HashtagEntity;
+import twitter4j.Status;
+
+import com.datatorrent.api.BaseOperator;
+import com.datatorrent.api.DefaultInputPort;
+import com.datatorrent.api.DefaultOutputPort;
+
+/**
+ * <p>TwitterStatusHashtagExtractor class.</p>
+ *
+ * @since 1.0.2
+ */
+public class TwitterStatusHashtagExtractor extends BaseOperator
+{
+  public final transient DefaultOutputPort<String> hashtags = new DefaultOutputPort<String>();
+  public final transient DefaultInputPort<Status> input = new DefaultInputPort<Status>()
+  {
+    @Override
+    public void process(Status status)
+    {
+      HashtagEntity[] entities = status.getHashtagEntities();
+      if (entities != null) {
+        for (HashtagEntity he : entities) {
+          if (he != null) {
+            hashtags.emit(he.getText());
+          }
+        }
+      }
+    }
+
+  };
+}
diff --git a/demos/src/main/java/com/datatorrent/demos/twitter/TwitterTrendingHashtagsApplication.java b/demos/src/main/java/com/datatorrent/demos/twitter/TwitterTrendingHashtagsApplication.java
new file mode 100644
index 0000000..13fa0e4
--- /dev/null
+++ b/demos/src/main/java/com/datatorrent/demos/twitter/TwitterTrendingHashtagsApplication.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.datatorrent.demos.twitter;
+
+import java.net.URI;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.hadoop.conf.Configuration;
+
+import com.datatorrent.lib.algo.UniqueCounter;
+import com.datatorrent.lib.io.ConsoleOutputOperator;
+import com.datatorrent.lib.io.PubSubWebSocketOutputOperator;
+
+import com.datatorrent.contrib.twitter.TwitterSampleInput;
+
+import com.datatorrent.api.DAG;
+import com.datatorrent.api.DAG.Locality;
+import com.datatorrent.api.Operator.InputPort;
+import com.datatorrent.api.StreamingApplication;
+import com.datatorrent.api.annotation.ApplicationAnnotation;
+
+import com.datatorrent.demos.rollingtopwords.WindowedTopCounter;
+
+/**
+ * Twitter Demo Application: <br>
+ * This demo application samples random public status from twitter, send to Hashtag
+ * extractor. <br>
+ * Top 10 Hashtag(s) mentioned in tweets in last 5 mins are displayed on every
+ * window count (500ms).<br>
+ * <br>
+ *
+ * Real Time Calculation :<br>
+ * This application calculates top 10 Hashtag mentioned in tweets in last 5
+ * minutes across a 1% random tweet sampling on a rolling window basis.<br>
+ * <br>
+ * Before running this application, you need to have a <a href="https://dev.twitter.com/apps">Twitter API account</a>
+ * and configure the authentication. For launch from CLI, those go into ~/.dt/dt-site.xml:
+ * <pre>
+ * {@code
+ * <?xml version="1.0" encoding="UTF-8"?>
+ * <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+ * <configuration>
+ *
+ *   <property> <name>dt.operator.TweetSampler.prop.consumerKey</name>
+ *   <value>TBD</value> </property>
+ *
+ *   <property> <name>dt.operator.TweetSampler.prop.consumerSecret</name>
+ *   <value>TBD</value> </property>
+ *
+ *   <property> <name>dt.operator.TweetSampler.prop.accessToken</name>
+ *   <value>TBD</value> </property>
+ *
+ *   <property> <name>dt.operator.TweetSampler.prop.accessTokenSecret</name>
+ *   <value>TBD</value> </property>
+ * </configuration>
+ * }
+ * </pre>
+ * Custom Attributes: <br>
+ * <b>topCounts operator : <b>
+ * <ul>
+ * <li>Top Count : 10, number of top unique Hashtag to be reported.</li>
+ * <li>Sliding window count : 600, report over last 5 min (600 * .5 / 60 mins)</li>
+ * <li>window slide value : 1</li>
+ * </ul>
+ * <p>
+ * Running Java Test or Main app in IDE:
+ *
+ * <pre>
+ * LocalMode.runApp(new Application(), 600000); // 10 min run
+ * </pre>
+ *
+ * Run Success : <br>
+ * For successful deployment and run, user should see similar output on console as below:
+ *
+ * <pre>
+ * topHashtags: {"string": "{\"gameinsight\":\"12\",\"android\":\"8\",\"WotaJKT48alay\":\"12\",\"TernyataJKT48CyberItuForoumSampah\":\"8\",\"NHL15Subban\":\"30\",\"JKT48CYBERKeracunanCUKRIK\":\"8\",\"verifydjzoodel\":\"59\",\"androidgames\":\"9\",\"مع_الله\":\"10\",\"Jct48cyberTAIBABI\":\"10\"}"}
+ * topHashtags: {"string": "{\"gameinsight\":\"12\",\"android\":\"8\",\"WotaJKT48alay\":\"12\",\"TernyataJKT48CyberItuForoumSampah\":\"8\",\"NHL15Subban\":\"30\",\"JKT48CYBERKeracunanCUKRIK\":\"8\",\"verifydjzoodel\":\"59\",\"androidgames\":\"9\",\"مع_الله\":\"10\",\"Jct48cyberTAIBABI\":\"10\"}"}
+ * topHashtags: {"string": "{\"gameinsight\":\"12\",\"android\":\"8\",\"WotaJKT48alay\":\"12\",\"TernyataJKT48CyberItuForoumSampah\":\"8\",\"NHL15Subban\":\"30\",\"JKT48CYBERKeracunanCUKRIK\":\"8\",\"verifydjzoodel\":\"59\",\"androidgames\":\"9\",\"مع_الله\":\"10\",\"Jct48cyberTAIBABI\":\"10\"}"}
+ * topHashtags: {"string": "{\"gameinsight\":\"12\",\"android\":\"8\",\"WotaJKT48alay\":\"12\",\"TernyataJKT48CyberItuForoumSampah\":\"8\",\"NHL15Subban\":\"30\",\"JKT48CYBERKeracunanCUKRIK\":\"8\",\"verifydjzoodel\":\"59\",\"androidgames\":\"9\",\"مع_الله\":\"10\",\"Jct48cyberTAIBABI\":\"10\"}"}
+ * topHashtags: {"string": "{\"gameinsight\":\"12\",\"android\":\"8\",\"WotaJKT48alay\":\"12\",\"TernyataJKT48CyberItuForoumSampah\":\"8\",\"NHL15Subban\":\"30\",\"JKT48CYBERKeracunanCUKRIK\":\"8\",\"verifydjzoodel\":\"59\",\"androidgames\":\"9\",\"مع_الله\":\"10\",\"Jct48cyberTAIBABI\":\"10\"}"}
+ * topHashtags: {"string": "{\"gameinsight\":\"12\",\"android\":\"8\",\"WotaJKT48alay\":\"12\",\"TernyataJKT48CyberItuForoumSampah\":\"8\",\"NHL15Subban\":\"30\",\"JKT48CYBERKeracunanCUKRIK\":\"8\",\"verifydjzoodel\":\"59\",\"androidgames\":\"9\",\"مع_الله\":\"10\",\"Jct48cyberTAIBABI\":\"10\"}"}
+ * topHashtags: {"string": "{\"gameinsight\":\"12\",\"android\":\"8\",\"WotaJKT48alay\":\"12\",\"TernyataJKT48CyberItuForoumSampah\":\"8\",\"NHL15Subban\":\"30\",\"JKT48CYBERKeracunanCUKRIK\":\"8\",\"verifydjzoodel\":\"59\",\"androidgames\":\"9\",\"مع_الله\":\"10\",\"Jct48cyberTAIBABI\":\"10\"}"}
+ * topHashtags: {"string": "{\"gameinsight\":\"12\",\"android\":\"8\",\"WotaJKT48alay\":\"12\",\"TernyataJKT48CyberItuForoumSampah\":\"8\",\"NHL15Subban\":\"30\",\"JKT48CYBERKeracunanCUKRIK\":\"8\",\"verifydjzoodel\":\"59\",\"androidgames\":\"9\",\"مع_الله\":\"10\",\"Jct48cyberTAIBABI\":\"10\"}"}
+ * topHashtags: {"string": "{\"gameinsight\":\"12\",\"android\":\"8\",\"WotaJKT48alay\":\"12\",\"TernyataJKT48CyberItuForoumSampah\":\"8\",\"NHL15Subban\":\"30\",\"JKT48CYBERKeracunanCUKRIK\":\"8\",\"verifydjzoodel\":\"59\",\"androidgames\":\"9\",\"مع_الله\":\"10\",\"Jct48cyberTAIBABI\":\"10\"}"}
+ * topHashtags: {"string": "{\"gameinsight\":\"12\",\"android\":\"8\",\"WotaJKT48alay\":\"12\",\"TernyataJKT48CyberItuForoumSampah\":\"8\",\"NHL15Subban\":\"30\",\"JKT48CYBERKeracunanCUKRIK\":\"8\",\"verifydjzoodel\":\"59\",\"androidgames\":\"9\",\"مع_الله\":\"10\",\"Jct48cyberTAIBABI\":\"10\"}"}
+ * 2013-06-17 14:38:55,201 [main] INFO  stram.StramLocalCluster run - Application finished.
+ * 2013-06-17 14:38:55,201 [container-2] INFO  stram.StramChild processHeartbeatResponse - Received shutdown request
+ * </pre>
+ *
+ * Scaling Options : <br>
+ * User can scale application by setting intial partition size > 1 on count
+ * unique operator. <br>
+ * <br>
+ *
+ * Application DAG : <br>
+ * <img src="doc-files/Application.gif" width=600px > <br>
+ * <br>
+ *
+ * Streaming Window Size : 500ms(default) <br>
+ * Operator Details : <br>
+ * <ul>
+ * <li><b>The twitterFeed operator : </b> This operator samples random public
+ * statues from twitter and emits to application. <br>
+ * Class : com.datatorrent.demos.twitter.TwitterSampleInput <br>
+ * StateFull : No, window count 1 <br>
+ * </li>
+ * <li><b>The HashtagExtractor operator : </b> This operator extracts Hashtag from
+ * random sampled statues from twitter. <br>
+ * Class : {@link com.datatorrent.demos.twitter.TwitterStatusHashtagExtractor} <br>
+ * StateFull : No, window count 1 <br>
+ * </li>
+ * <li><b>The uniqueCounter operator : </b> This operator aggregates count for each
+ * Hashtag extracted from random samples. <br>
+ * Class : {@link com.datatorrent.lib.algo.UniqueCounter} <br>
+ * StateFull : No, window count 1 <br>
+ * </li>
+ * <li><b> The topCounts operator : </b> This operator caluculates top Hashtag in last 1
+ * min sliding window count 1. <br>
+ * Class : com.datatorrent.lib.algo.WindowedTopCounter <br>
+ * StateFull : Yes, sliding window count 120 (1 min) <br>
+ * </li>
+ * <li><b>The operator Console: </b> This operator just outputs the input tuples
+ * to the console (or stdout). <br>
+ * </li>
+ * </ul>
+ *
+ * @since 1.0.2
+ */
+@ApplicationAnnotation(name="TwitterTrendingDemo")
+public class TwitterTrendingHashtagsApplication implements StreamingApplication
+{
+  private final Locality locality = null;
+
+  private InputPort<Object> consoleOutput(DAG dag, String operatorName)
+  {
+    String gatewayAddress = dag.getValue(DAG.GATEWAY_CONNECT_ADDRESS);
+    if (!StringUtils.isEmpty(gatewayAddress)) {
+      URI uri = URI.create("ws://" + gatewayAddress + "/pubsub");
+      String topic = "demos.twitter." + operatorName;
+      //LOG.info("WebSocket with gateway at: {}", gatewayAddress);
+      PubSubWebSocketOutputOperator<Object> wsOut = dag.addOperator(operatorName, new PubSubWebSocketOutputOperator<Object>());
+      wsOut.setUri(uri);
+      wsOut.setTopic(topic);
+      return wsOut.input;
+    }
+    ConsoleOutputOperator operator = dag.addOperator(operatorName, new ConsoleOutputOperator());
+    operator.setStringFormat(operatorName + ": %s");
+    return operator.input;
+  }
+
+  @Override
+  public void populateDAG(DAG dag, Configuration conf)
+  {
+    dag.setAttribute(DAG.APPLICATION_NAME, "TwitterTrendingHashtagsApplication");
+
+    // Setup the operator to get the data from twitter sample stream injected into the system.
+    TwitterSampleInput twitterFeed = new TwitterSampleInput();
+    twitterFeed = dag.addOperator("TweetSampler", twitterFeed);
+
+    //  Setup the operator to get the Hashtags extracted from the twitter statuses
+    TwitterStatusHashtagExtractor HashtagExtractor = dag.addOperator("HashtagExtractor", TwitterStatusHashtagExtractor.class);
+
+    // Setup a node to count the unique Hashtags within a window.
+    UniqueCounter<String> uniqueCounter = dag.addOperator("UniqueHashtagCounter", new UniqueCounter<String>());
+
+    // Get the aggregated Hashtag counts and count them over last 5 mins.
+    WindowedTopCounter<String> topCounts = dag.addOperator("TopCounter", new WindowedTopCounter<String>());
+    topCounts.setTopCount(10);
+    topCounts.setSlidingWindowWidth(600, 1);
+
+    // Feed the statuses from feed into the input of the Hashtag extractor.
+    dag.addStream("TweetStream", twitterFeed.status, HashtagExtractor.input).setLocality(Locality.CONTAINER_LOCAL);
+    //  Start counting the Hashtags coming out of Hashtag extractor
+    dag.addStream("TwittedHashtags", HashtagExtractor.hashtags, uniqueCounter.data).setLocality(locality);
+    // Count unique Hashtags
+    dag.addStream("UniqueHashtagCounts", uniqueCounter.count, topCounts.input).setLocality(locality);
+    // Count top 10
+    dag.addStream("TopHashtags", topCounts.output, consoleOutput(dag, "topHashtags")).setLocality(locality);
+
+  }
+
+}
diff --git a/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/Application.java b/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/Application.java
index 775f411..9bfe29b 100644
--- a/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/Application.java
+++ b/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/Application.java
@@ -32,6 +32,8 @@
  * PartitionableUniqueCount operator initially partitioned into three partitions to
  * test unifier functionality, and output of the operator is sent to verifier to verify
  * that it generates correct result.
+ *
+ * @since 1.0.2
  */
 @ApplicationAnnotation(name="UniqueValueCountDemo")
 public class Application implements StreamingApplication
diff --git a/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/CountVerifier.java b/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/CountVerifier.java
index 4c98b55..b04d6ec 100644
--- a/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/CountVerifier.java
+++ b/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/CountVerifier.java
@@ -28,6 +28,11 @@
 /*
 Compare results and print non-matching values to console.
  */
+/**
+ * <p>CountVerifier class.</p>
+ *
+ * @since 1.0.2
+ */
 public class CountVerifier<K> implements Operator
 {
   HashMap<K, Integer> map1 = new HashMap<K, Integer>();
diff --git a/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/RandomDataGenerator.java b/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/RandomDataGenerator.java
index fc5f053..98f2879 100644
--- a/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/RandomDataGenerator.java
+++ b/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/RandomDataGenerator.java
@@ -26,6 +26,8 @@
 /**
  * Generate random Key value pairs.
  * key is string and value is int, it emits the pair as KeyValPair on outPort,
+ *
+ * @since 1.0.2
  */
 public class RandomDataGenerator implements InputOperator
 {
diff --git a/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/RandomKeyValues.java b/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/RandomKeyValues.java
index 2cb5c39..75a9a80 100644
--- a/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/RandomKeyValues.java
+++ b/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/RandomKeyValues.java
@@ -29,6 +29,7 @@
  * Input port operator for generating random values on keys. <br>
  * Key(s)   : key + integer in range between 0 and numKeys <br>
  * Value(s) : integer in range of 0 to numValuesPerKeys <br>
+ *
  * @since 0.9.3
  */
 public class RandomKeyValues implements InputOperator
diff --git a/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/RandomKeysGenerator.java b/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/RandomKeysGenerator.java
index 4911607..16e34bf 100644
--- a/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/RandomKeysGenerator.java
+++ b/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/RandomKeysGenerator.java
@@ -27,6 +27,11 @@
 /*
     Generate random keys.
  */
+/**
+ * <p>RandomKeysGenerator class.</p>
+ *
+ * @since 1.0.2
+ */
 public class RandomKeysGenerator implements InputOperator
 {
 
diff --git a/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/UniqueKeyValCountDemo.java b/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/UniqueKeyValCountDemo.java
index 4cf5179..9b442e6 100644
--- a/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/UniqueKeyValCountDemo.java
+++ b/demos/src/main/java/com/datatorrent/demos/uniquecountdemo/UniqueKeyValCountDemo.java
@@ -24,6 +24,11 @@
 import com.datatorrent.lib.util.KeyValPair;
 import org.apache.hadoop.conf.Configuration;
 
+/**
+ * <p>UniqueKeyValCountDemo class.</p>
+ *
+ * @since 1.0.2
+ */
 @ApplicationAnnotation(name="UniqueKeyValueCountDemo")
 public class UniqueKeyValCountDemo implements StreamingApplication
 {
diff --git a/library/pom.xml b/library/pom.xml
index c6d1ca2..22ca16b 100644
--- a/library/pom.xml
+++ b/library/pom.xml
@@ -6,7 +6,7 @@
   <parent>
     <groupId>com.datatorrent</groupId>
     <artifactId>malhar-all</artifactId>
-    <version>1.0.2-SNAPSHOT</version>
+    <version>1.0.2</version>
   </parent>
 
   <artifactId>malhar-library</artifactId>
@@ -109,37 +109,6 @@
       <version>1.5.0</version>
     </dependency>
     <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>dt-api</artifactId>
-      <version>${dt.framework.version}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>jetty</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>jetty-util</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.codehaus.jackson</groupId>
-          <artifactId>jackson-core-asl</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.codehaus.jackson</groupId>
-          <artifactId>jackson-mapper-asl</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.codehaus.jackson</groupId>
-          <artifactId>jackson-jaxrs</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.codehaus.jackson</groupId>
-          <artifactId>jackson-xc</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
       <groupId>com.sun.jersey</groupId>
       <artifactId>jersey-client</artifactId>
       <version>${jersey.version}</version>
diff --git a/library/src/main/java/com/datatorrent/lib/algo/PartitionableUniqueCount.java b/library/src/main/java/com/datatorrent/lib/algo/PartitionableUniqueCount.java
index c716928..dcac587 100644
--- a/library/src/main/java/com/datatorrent/lib/algo/PartitionableUniqueCount.java
+++ b/library/src/main/java/com/datatorrent/lib/algo/PartitionableUniqueCount.java
@@ -25,6 +25,11 @@
 import java.util.HashMap;
 import java.util.Map;
 
+/**
+ * <p>PartitionableUniqueCount class.</p>
+ *
+ * @since 1.0.2
+ */
 public class PartitionableUniqueCount<K> extends BaseUniqueKeyCounter<K>
 {
 
diff --git a/library/src/main/java/com/datatorrent/lib/bucket/BucketManager.java b/library/src/main/java/com/datatorrent/lib/bucket/BucketManager.java
index dfecf1d..4d40003 100644
--- a/library/src/main/java/com/datatorrent/lib/bucket/BucketManager.java
+++ b/library/src/main/java/com/datatorrent/lib/bucket/BucketManager.java
@@ -21,8 +21,9 @@
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import com.datatorrent.api.Context;
-import java.io.Serializable;
+import org.apache.commons.lang.mutable.MutableLong;
+
+import com.datatorrent.lib.counters.BasicCounters;
 
 /**
  * <p>
@@ -116,7 +117,7 @@
    * Adds the event to the un-written section of the bucket corresponding to the bucket key.
    *
    * @param bucketKey key of the bucket.
-   * @param event new event.
+   * @param event     new event.
    */
   void newEvent(long bucketKey, T event);
 
@@ -142,22 +143,23 @@
    */
   BucketManager<T> cloneWithProperties();
 
-  void setBucketCounters(@Nonnull BucketCounters stats);
+  void setBucketCounters(@Nonnull BasicCounters<MutableLong> stats);
 
   /**
    * Collects the un-written events of all the old managers and distributes the data to the new managers.<br/>
    * The partition to which an event belongs to depends on the event key.
    * <pre><code>partition = eventKey.hashCode() & partitionMask</code></pre>
    *
-   * @param oldManagers {@link BucketManager}s of all old partitions.
+   * @param oldManagers             {@link BucketManager}s of all old partitions.
    * @param partitionKeysToManagers mapping of partition keys to {@link BucketManager}s of new partitions.
-   * @param partitionMask partition mask to find which partition an event belongs to.
+   * @param partitionMask           partition mask to find which partition an event belongs to.
    */
   void definePartitions(List<BucketManager<T>> oldManagers, Map<Integer, BucketManager<T>> partitionKeysToManagers,
-          int partitionMask);
+                        int partitionMask);
 
   /**
    * Callback interface for {@link BucketManager} for load and off-load operations.
+   *
    * @param <T> Type of the values which can be bucketed.
    */
   public static interface Listener<T extends Bucketable>
@@ -179,58 +181,10 @@
 
   }
 
-  public static class BucketCounters implements Context.Counters, Serializable
+  public static enum CounterKeys
   {
-    protected int numBucketsInMemory;
-    protected int numEvictedBuckets;
-    protected int numDeletedBuckets;
-    protected long numEventsCommittedPerWindow;
-    protected long numEventsInMemory;
-    protected long numIgnoredEvents;
-    protected long low;
-    protected long high;
 
-    public int getNumBucketsInMemory()
-    {
-      return numBucketsInMemory;
-    }
-
-    public int getNumEvictedBuckets()
-    {
-      return numEvictedBuckets;
-    }
-
-    public int getNumDeletedBuckets()
-    {
-      return numDeletedBuckets;
-    }
-
-    public long getNumEventsCommittedPerWindow()
-    {
-      return numEventsCommittedPerWindow;
-    }
-
-    public long getNumEventsInMemory()
-    {
-      return numEventsInMemory;
-    }
-
-    public long getNumIgnoredEvents()
-    {
-      return numIgnoredEvents;
-    }
-
-    public long getLow()
-    {
-      return low;
-    }
-
-    public long getHigh()
-    {
-      return high;
-    }
-
-    private static final long serialVersionUID = 201405191248L;
+    BUCKETS_IN_MEMORY, EVICTED_BUCKETS, DELETED_BUCKETS, EVENTS_COMMITTED_LAST_WINDOW,
+    EVENTS_IN_MEMORY
   }
-
 }
diff --git a/library/src/main/java/com/datatorrent/lib/bucket/BucketManagerImpl.java b/library/src/main/java/com/datatorrent/lib/bucket/BucketManagerImpl.java
index bcb4e12..3bcc5e5 100644
--- a/library/src/main/java/com/datatorrent/lib/bucket/BucketManagerImpl.java
+++ b/library/src/main/java/com/datatorrent/lib/bucket/BucketManagerImpl.java
@@ -28,6 +28,7 @@
 import javax.annotation.Nonnull;
 import javax.validation.constraints.Min;
 
+import org.apache.commons.lang.mutable.MutableLong;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -37,6 +38,7 @@
 import com.google.common.collect.Sets;
 
 import com.datatorrent.common.util.DTThrowable;
+import com.datatorrent.lib.counters.BasicCounters;
 
 /**
  * A {@link BucketManager} implementation.
@@ -105,7 +107,13 @@
   private transient final Lock lock;
   @Nonnull
   private transient final MinMaxPriorityQueue<Bucket<T>> bucketHeap;
-  protected transient BucketCounters bucketCounters;
+
+  protected transient boolean count;
+  protected transient MutableLong numBucketsInMemory;
+  protected transient MutableLong numEvictedBuckets;
+  protected transient MutableLong numDeletedBuckets;
+  protected transient MutableLong numEventsCommittedLastWindow;
+  protected transient MutableLong numEventsInMemory;
 
   public BucketManagerImpl()
   {
@@ -181,10 +189,23 @@
     this.writeEventKeysOnly = writeEventKeysOnly;
   }
 
-  @Nonnull
-  public void setBucketCounters(@Nonnull BucketCounters bucketCounters)
+  @Override
+  public void setBucketCounters(@Nonnull BasicCounters<MutableLong> bucketCounters)
   {
-    this.bucketCounters = bucketCounters;
+    try {
+      numBucketsInMemory = bucketCounters.findCounter(CounterKeys.BUCKETS_IN_MEMORY);
+      numEvictedBuckets = bucketCounters.findCounter(CounterKeys.EVICTED_BUCKETS);
+      numDeletedBuckets = bucketCounters.findCounter(CounterKeys.DELETED_BUCKETS);
+      numEventsCommittedLastWindow = bucketCounters.findCounter(CounterKeys.EVENTS_COMMITTED_LAST_WINDOW);
+      numEventsInMemory = bucketCounters.findCounter(CounterKeys.EVENTS_IN_MEMORY);
+      count = true;
+    }
+    catch (IllegalAccessException e) {
+      throw new RuntimeException(e);
+    }
+    catch (InstantiationException e) {
+      throw new RuntimeException(e);
+    }
   }
 
   @Override
@@ -227,9 +248,9 @@
 
               listener.bucketOffLoaded(oldBucket.bucketKey);
               bucketStore.deleteBucket(bucketIdx);
-              if (bucketCounters != null) {
-                bucketCounters.numDeletedBuckets++;
-                bucketCounters.numBucketsInMemory--;
+              if (count) {
+                numDeletedBuckets.increment();
+                numBucketsInMemory.decrement();
                 numEventsRemoved += oldBucket.countOfUnwrittenEvents() + oldBucket.countOfWrittenEvents();
               }
               logger.debug("deleted bucket {} {}", oldBucket.bucketKey, bucketIdx);
@@ -261,9 +282,9 @@
                 evictionCandidates.remove(lruIdx);
                 buckets[lruIdx] = null;
                 listener.bucketOffLoaded(lruBucket.bucketKey);
-                if (bucketCounters != null) {
-                  bucketCounters.numEvictedBuckets++;
-                  bucketCounters.numBucketsInMemory--;
+                if (count) {
+                  numEvictedBuckets.increment();
+                  numBucketsInMemory.decrement();
                   numEventsRemoved += lruBucket.countOfUnwrittenEvents() + lruBucket.countOfWrittenEvents();
                 }
                 logger.debug("evicted bucket {} {}", lruBucket.bucketKey, lruIdx);
@@ -278,12 +299,9 @@
             bucket.setWrittenEvents(bucketDataInStore);
             evictionCandidates.add(bucketIdx);
             listener.bucketLoaded(bucket);
-            if (bucketCounters != null) {
-              synchronized (bucketCounters) {
-                bucketCounters.numBucketsInMemory++;
-                bucketCounters.numEventsInMemory -= numEventsRemoved;
-                bucketCounters.numEventsInMemory += bucketDataInStore.size();
-              }
+            if (count) {
+              numBucketsInMemory.increment();
+              numEventsInMemory.add(bucketDataInStore.size() - numEventsRemoved);
             }
             bucketHeap.clear();
           }
@@ -359,10 +377,8 @@
     }
 
     bucket.addNewEvent(event.getEventKey(), writeEventKeysOnly ? null : event);
-    if (bucketCounters != null) {
-      synchronized (bucketCounters) {
-        bucketCounters.numEventsInMemory++;
-      }
+    if (count) {
+      numEventsInMemory.increment();
     }
   }
 
@@ -383,8 +399,8 @@
       bucket.transferDataFromMemoryToStore();
       evictionCandidates.add(entry.getKey());
     }
-    if (bucketCounters != null) {
-      bucketCounters.numEventsCommittedPerWindow = eventsCount;
+    if (count) {
+      numEventsCommittedLastWindow.setValue(eventsCount);
     }
     try {
       if (!dataToStore.isEmpty()) {
@@ -476,7 +492,8 @@
       return false;
     }
 
-    BucketManagerImpl that = (BucketManagerImpl) o;
+    @SuppressWarnings("unchecked")
+    BucketManagerImpl<T> that = (BucketManagerImpl<T>) o;
 
     if (committedWindow != that.committedWindow) {
       return false;
diff --git a/library/src/main/java/com/datatorrent/lib/bucket/TimeBasedBucketManagerImpl.java b/library/src/main/java/com/datatorrent/lib/bucket/TimeBasedBucketManagerImpl.java
index 047bada..0d69b60 100644
--- a/library/src/main/java/com/datatorrent/lib/bucket/TimeBasedBucketManagerImpl.java
+++ b/library/src/main/java/com/datatorrent/lib/bucket/TimeBasedBucketManagerImpl.java
@@ -23,11 +23,14 @@
 import javax.annotation.Nonnull;
 import javax.validation.constraints.Min;
 
+import org.apache.commons.lang.mutable.MutableLong;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Preconditions;
 
+import com.datatorrent.lib.counters.BasicCounters;
+
 /**
  * A {@link BucketManager} that creates buckets based on time.<br/>
  *
@@ -51,6 +54,10 @@
   private transient Timer bucketSlidingTimer;
   private final transient Lock lock;
 
+  private transient MutableLong low;
+  private transient MutableLong high;
+  private transient MutableLong numIgnoredEvents;
+
   public TimeBasedBucketManagerImpl()
   {
     super();
@@ -101,7 +108,8 @@
     recomputeNumBuckets();
   }
 
-  private void recomputeNumBuckets(){
+  private void recomputeNumBuckets()
+  {
     Calendar calendar = Calendar.getInstance();
     long now = calendar.getTimeInMillis();
     calendar.add(Calendar.DATE, -daysSpan);
@@ -116,6 +124,23 @@
   }
 
   @Override
+  public void setBucketCounters(@Nonnull BasicCounters<MutableLong> bucketCounters)
+  {
+    super.setBucketCounters(bucketCounters);
+    try {
+      low = bucketCounters.findCounter(CounterKeys.LOW);
+      high = bucketCounters.findCounter(CounterKeys.HIGH);
+      numIgnoredEvents = bucketCounters.findCounter(CounterKeys.IGNORED_EVENTS);
+    }
+    catch (IllegalAccessException e) {
+      throw new RuntimeException(e);
+    }
+    catch (InstantiationException e) {
+      throw new RuntimeException(e);
+    }
+  }
+
+  @Override
   public void startService(Listener<T> listener)
   {
     bucketSlidingTimer = new Timer();
@@ -132,9 +157,9 @@
         synchronized (lock) {
           time = (expiryTime += bucketSpanInMillis);
           endOBucketsInMillis += bucketSpanInMillis;
-          if (bucketCounters != null) {
-            bucketCounters.high = endOBucketsInMillis;
-            bucketCounters.low = expiryTime;
+          if (count) {
+            high.setValue(endOBucketsInMillis);
+            low.setValue(expiryTime);
           }
         }
         try {
@@ -154,8 +179,8 @@
   {
     long eventTime = event.getTime();
     if (eventTime < expiryTime) {
-      if (bucketCounters != null) {
-        bucketCounters.numIgnoredEvents++;
+      if (count) {
+        numIgnoredEvents.increment();
       }
       return -1;
     }
@@ -166,9 +191,9 @@
         long move = ((eventTime - endOBucketsInMillis) / bucketSpanInMillis + 1) * bucketSpanInMillis;
         expiryTime += move;
         endOBucketsInMillis += move;
-        if (bucketCounters != null) {
-          bucketCounters.high = endOBucketsInMillis;
-          bucketCounters.low = expiryTime;
+        if (count) {
+          high.setValue(endOBucketsInMillis);
+          low.setValue(expiryTime);
         }
       }
     }
@@ -195,7 +220,8 @@
       return false;
     }
 
-    TimeBasedBucketManagerImpl that = (TimeBasedBucketManagerImpl) o;
+    @SuppressWarnings("unchecked")
+    TimeBasedBucketManagerImpl<T> that = (TimeBasedBucketManagerImpl<T>) o;
 
     if (bucketSpanInMillis != that.bucketSpanInMillis) {
       return false;
@@ -234,11 +260,7 @@
     }
 
     bucket.addNewEvent(event.getEventKey(), writeEventKeysOnly ? null : event);
-    if (bucketCounters != null) {
-      synchronized (bucketCounters) {
-        bucketCounters.numEventsInMemory++;
-      }
-    }
+    numEventsInMemory.increment();
 
     Long max = maxTimesPerBuckets[bucketIdx];
     if (max == null || event.getTime() > max) {
@@ -265,6 +287,11 @@
   {
   }
 
+  public static enum CounterKeys
+  {
+    LOW, HIGH, IGNORED_EVENTS
+  }
+
   private static transient final Logger logger = LoggerFactory.getLogger(TimeBasedBucketManagerImpl.class);
 
 }
diff --git a/library/src/main/java/com/datatorrent/lib/counters/BasicCounters.java b/library/src/main/java/com/datatorrent/lib/counters/BasicCounters.java
new file mode 100644
index 0000000..9af5f79
--- /dev/null
+++ b/library/src/main/java/com/datatorrent/lib/counters/BasicCounters.java
@@ -0,0 +1,198 @@
+/*
+ * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.datatorrent.lib.counters;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Map;
+
+import javax.annotation.Nonnull;
+
+import org.apache.commons.lang.mutable.Mutable;
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Maps;
+
+import com.datatorrent.api.Context;
+import com.datatorrent.lib.util.NumberAggregate;
+
+/**
+ * Implementation of basic number counters.
+ *
+ * @param <T> type of counter
+ * @since 1.0.2
+ */
+@JsonSerialize(using = BasicCounters.Serializer.class)
+public class BasicCounters<T extends Number & Mutable> implements Serializable
+{
+  private final Map<Enum<?>, T> cache;
+  private final Class<T> counterType;
+
+  private BasicCounters()
+  {
+    //for kryo
+    cache = null;
+    counterType = null;
+  }
+
+  /**
+   * @param counterType type of counter
+   */
+  public BasicCounters(@Nonnull Class<T> counterType)
+  {
+    cache = Maps.newIdentityHashMap();
+    this.counterType = counterType;
+  }
+
+  /**
+   * Returns the counter associated with the key. Creates it if it doesn't exist.
+   */
+  @SuppressWarnings("unchecked")
+  public synchronized T findCounter(Enum<?> counterKey) throws IllegalAccessException, InstantiationException
+  {
+    T counter = cache.get(counterKey);
+    if (counter == null) {
+      counter = counterType.newInstance();
+      cache.put(counterKey, counter);
+    }
+    return counter;
+  }
+
+  /**
+   * Returns the counter if it exists; null otherwise
+   *
+   * @param counterKey
+   * @return
+   */
+  public synchronized T getCounter(Enum<?> counterKey)
+  {
+    return cache.get(counterKey);
+  }
+
+  /**
+   * Sets the value of a counter.
+   *
+   * @param counterKey counter key.
+   * @param value      new value.
+   */
+  public synchronized void setCounter(Enum<?> counterKey, T value)
+  {
+    cache.put(counterKey, value);
+  }
+
+  /**
+   * Returns an immutable copy of all the counters.
+   *
+   * @return
+   */
+  public synchronized ImmutableMap<Enum<?>, T> getCopy()
+  {
+    return ImmutableMap.copyOf(cache);
+  }
+
+  public static class Serializer extends JsonSerializer<BasicCounters<?>> implements Serializable
+  {
+
+    @Override
+    public void serialize(BasicCounters<?> value, JsonGenerator jgen, SerializerProvider provider)
+      throws IOException
+    {
+      jgen.writeObject(value.getCopy());
+    }
+
+    private static final long serialVersionUID = 201406230131L;
+
+  }
+
+  /**
+   * Aggregates the {@link BasicCounters} of physical partitions into {@link NumberAggregate.LongAggregate}.
+   *
+   * @param <T> type of counter
+   */
+  public static class LongAggregator<T extends Number & Mutable> implements Context.CountersAggregator, Serializable
+  {
+    @Override
+    public Object aggregate(Collection<?> objects)
+    {
+      Map<String, NumberAggregate.LongAggregate> aggregates = Maps.newHashMap();
+      for (Object counter : objects) {
+        if (counter instanceof BasicCounters) {
+          @SuppressWarnings("unchecked")
+          BasicCounters<T> physical = (BasicCounters<T>) counter;
+          ImmutableMap<Enum<?>, T> copy = physical.getCopy();
+
+          for (Map.Entry<Enum<?>, T> entry : copy.entrySet()) {
+
+            NumberAggregate.LongAggregate aggregate = aggregates.get(entry.getKey().name());
+
+            if (aggregate == null) {
+              aggregate = new NumberAggregate.LongAggregate();
+
+              aggregates.put(entry.getKey().name(), aggregate);
+            }
+            aggregate.addNumber(entry.getValue().longValue());
+          }
+        }
+      }
+      return ImmutableMap.copyOf(aggregates);
+    }
+
+    private static final long serialVersionUID = 201406222203L;
+  }
+
+  /**
+   * Aggregates the {@link BasicCounters} of physical partitions into {@link NumberAggregate.DoubleAggregate}.
+   *
+   * @param <T> type of counter
+   */
+  public static class DoubleAggregator<T extends Number & Mutable> implements Context.CountersAggregator, Serializable
+  {
+    @Override
+    public Object aggregate(Collection<?> objects)
+    {
+      Map<String, NumberAggregate.DoubleAggregate> aggregates = Maps.newHashMap();
+      for (Object counter : objects) {
+        if (counter instanceof BasicCounters) {
+          @SuppressWarnings("unchecked")
+          BasicCounters<T> physical = (BasicCounters<T>) counter;
+          ImmutableMap<Enum<?>, T> copy = physical.getCopy();
+
+          for (Map.Entry<Enum<?>, T> entry : copy.entrySet()) {
+
+            NumberAggregate.DoubleAggregate aggregate = aggregates.get(entry.getKey().name());
+
+            if (aggregate == null) {
+              aggregate = new NumberAggregate.DoubleAggregate();
+
+              aggregates.put(entry.getKey().name(), aggregate);
+            }
+            aggregate.addNumber(entry.getValue().doubleValue());
+          }
+        }
+      }
+      return ImmutableMap.copyOf(aggregates);
+    }
+
+    private static final long serialVersionUID = 201407011713L;
+  }
+
+  private static final long serialVersionUID = 201406230033L;
+}
diff --git a/library/src/main/java/com/datatorrent/lib/counters/package-info.java b/library/src/main/java/com/datatorrent/lib/counters/package-info.java
new file mode 100644
index 0000000..26ebfd3
--- /dev/null
+++ b/library/src/main/java/com/datatorrent/lib/counters/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Basic counters and aggregates implementations.
+ */
+package com.datatorrent.lib.counters;
\ No newline at end of file
diff --git a/library/src/main/java/com/datatorrent/lib/db/AbstractBatchTransactionableStoreOutputOperator.java b/library/src/main/java/com/datatorrent/lib/db/AbstractBatchTransactionableStoreOutputOperator.java
index 658eed9..d2b780a 100644
--- a/library/src/main/java/com/datatorrent/lib/db/AbstractBatchTransactionableStoreOutputOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/db/AbstractBatchTransactionableStoreOutputOperator.java
@@ -25,8 +25,8 @@
  *
  * @param <T> The tuple type.
  * @param <S> The store type.
+ * @since 1.0.2
  */
-
 public abstract class AbstractBatchTransactionableStoreOutputOperator<T, S extends TransactionableStore> extends AbstractTransactionableStoreOutputOperator<T, S>{
 	protected final List<T> tuples;
 
diff --git a/library/src/main/java/com/datatorrent/lib/dedup/Deduper.java b/library/src/main/java/com/datatorrent/lib/dedup/Deduper.java
index 6e67015..be6281b 100644
--- a/library/src/main/java/com/datatorrent/lib/dedup/Deduper.java
+++ b/library/src/main/java/com/datatorrent/lib/dedup/Deduper.java
@@ -22,6 +22,7 @@
 
 import javax.annotation.Nonnull;
 
+import org.apache.commons.lang.mutable.MutableLong;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -38,6 +39,8 @@
 import com.datatorrent.lib.bucket.Bucket;
 import com.datatorrent.lib.bucket.BucketManager;
 import com.datatorrent.lib.bucket.Bucketable;
+import com.datatorrent.lib.bucket.TimeBasedBucketManagerImpl;
+import com.datatorrent.lib.counters.BasicCounters;
 
 /**
  * <p>
@@ -67,12 +70,12 @@
  * Based on the assumption that duplicate events fall in the same bucket.
  * </p>
  *
- * @param <INPUT> type of input tuple
+ * @param <INPUT>  type of input tuple
  * @param <OUTPUT> type of output tuple
  * @since 0.9.4
  */
 public abstract class Deduper<INPUT extends Bucketable, OUTPUT>
-        implements Operator, BucketManager.Listener<INPUT>, IdleTimeHandler, Partitioner<Deduper<INPUT, OUTPUT>>
+  implements Operator, BucketManager.Listener<INPUT>, IdleTimeHandler, Partitioner<Deduper<INPUT, OUTPUT>>
 {
   @InputPortFieldAnnotation(name = "input", optional = true)
   public final transient DefaultInputPort<INPUT> input = new DefaultInputPort<INPUT>()
@@ -88,7 +91,7 @@
       Bucket<INPUT> bucket = bucketManager.getBucket(bucketKey);
 
       if (bucket != null && bucket.containsEvent(tuple)) {
-        counters.numDuplicateEvents++;
+        numDuplicateEvents.increment();
         return;
       } //ignore event
 
@@ -132,7 +135,8 @@
   protected transient final BlockingQueue<Bucket<INPUT>> fetchedBuckets;
   private transient long sleepTimeMillis;
   private transient OperatorContext context;
-  protected transient Counters counters;
+  protected transient BasicCounters<MutableLong> counters;
+  protected transient MutableLong numDuplicateEvents;
   private transient long currentWindow;
 
   public Deduper()
@@ -150,8 +154,17 @@
     this.context = context;
     this.currentWindow = context.getValue(Context.OperatorContext.ACTIVATION_WINDOW_ID);
     sleepTimeMillis = context.getValue(OperatorContext.SPIN_MILLIS);
-    counters = new Counters();
+    counters = new BasicCounters<MutableLong>(MutableLong.class);
     bucketManager.setBucketCounters(counters);
+    try {
+      numDuplicateEvents = counters.findCounter(CounterKeys.DUPLICATE_EVENTS);
+    }
+    catch (IllegalAccessException e) {
+      throw new RuntimeException(e);
+    }
+    catch (InstantiationException e) {
+      throw new RuntimeException(e);
+    }
     bucketManager.startService(this);
     logger.debug("bucket keys at startup {}", waitingEvents.keySet());
     for (long bucketKey : waitingEvents.keySet()) {
@@ -213,7 +226,7 @@
               output.emit(convert(event));
             }
             else {
-              counters.numDuplicateEvents++;
+              numDuplicateEvents.increment();
             }
           }
         }
@@ -316,7 +329,7 @@
 
       //distribute waiting events
       for (long bucketKey : allWaitingEvents.keySet()) {
-        for (Iterator<INPUT> iterator = allWaitingEvents.get(bucketKey).iterator(); iterator.hasNext();) {
+        for (Iterator<INPUT> iterator = allWaitingEvents.get(bucketKey).iterator(); iterator.hasNext(); ) {
           INPUT event = iterator.next();
           int partitionKey = event.getEventKey().hashCode() & lPartitionMask;
 
@@ -370,7 +383,7 @@
       return false;
     }
 
-    Deduper<?, ?> deduper = (Deduper<?, ?>)o;
+    Deduper<?, ?> deduper = (Deduper<?, ?>) o;
 
     if (partitionMask != deduper.partitionMask) {
       return false;
@@ -400,16 +413,9 @@
     return "Deduper{" + "partitionKeys=" + partitionKeys + ", partitionMask=" + partitionMask + '}';
   }
 
-  public static class Counters extends BucketManager.BucketCounters
+  public static enum CounterKeys
   {
-    protected long numDuplicateEvents;
-
-    public long getNumDuplicateEvents()
-    {
-      return numDuplicateEvents;
-    }
-
-    private static final long serialVersionUID = 201405061055L;
+    DUPLICATE_EVENTS
   }
 
   public static class CountersListener implements StatsListener, Serializable
@@ -421,11 +427,19 @@
       if (lastWindowedStats != null) {
         for (Stats.OperatorStats os : lastWindowedStats) {
           if (os.counters != null) {
-            if (os.counters instanceof Counters) {
-              Counters cs = (Counters)os.counters;
-              logger.debug("bucketStats {} {} {} {} {} {} {} {} {} {}", batchedOperatorStats.getOperatorId(), cs.getNumBucketsInMemory(),
-                           cs.getNumDeletedBuckets(), cs.getNumEvictedBuckets(), cs.getNumEventsInMemory(), cs.getNumEventsCommittedPerWindow(),
-                           cs.getNumIgnoredEvents(), cs.getNumDuplicateEvents(), cs.getLow(), cs.getHigh());
+            if (os.counters instanceof BasicCounters) {
+              @SuppressWarnings("unchecked")
+              BasicCounters<MutableLong> cs = (BasicCounters<MutableLong>) os.counters;
+              logger.debug("operatorId:{} buckets:[in-memory:{} deleted:{} evicted:{}] events:[in-memory:{} committed-last-window:{} " +
+                  "ignored:{} duplicates:{}] low:{} high:{}", batchedOperatorStats.getOperatorId(),
+                cs.getCounter(BucketManager.CounterKeys.BUCKETS_IN_MEMORY),
+                cs.getCounter(BucketManager.CounterKeys.DELETED_BUCKETS),
+                cs.getCounter(BucketManager.CounterKeys.EVICTED_BUCKETS),
+                cs.getCounter(BucketManager.CounterKeys.EVENTS_IN_MEMORY),
+                cs.getCounter(BucketManager.CounterKeys.EVENTS_COMMITTED_LAST_WINDOW),
+                cs.getCounter(TimeBasedBucketManagerImpl.CounterKeys.IGNORED_EVENTS), cs.getCounter(CounterKeys.DUPLICATE_EVENTS),
+                cs.getCounter(TimeBasedBucketManagerImpl.CounterKeys.LOW),
+                cs.getCounter(TimeBasedBucketManagerImpl.CounterKeys.HIGH));
             }
           }
         }
diff --git a/library/src/main/java/com/datatorrent/lib/io/AbstractHttpGetMultiValuedMapOperator.java b/library/src/main/java/com/datatorrent/lib/io/AbstractHttpGetMultiValuedMapOperator.java
index 2b5a92e..9ff1b3f 100644
--- a/library/src/main/java/com/datatorrent/lib/io/AbstractHttpGetMultiValuedMapOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/io/AbstractHttpGetMultiValuedMapOperator.java
@@ -24,6 +24,7 @@
  *
  * @param <INPUT>
  * @param <OUTPUT>
+ * @since 1.0.2
  */
 public abstract class AbstractHttpGetMultiValuedMapOperator<INPUT, OUTPUT> extends AbstractHttpGetOperator<INPUT, OUTPUT>
 {
diff --git a/library/src/main/java/com/datatorrent/lib/io/AbstractHttpGetOperator.java b/library/src/main/java/com/datatorrent/lib/io/AbstractHttpGetOperator.java
index d288a42..ec1faf7 100644
--- a/library/src/main/java/com/datatorrent/lib/io/AbstractHttpGetOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/io/AbstractHttpGetOperator.java
@@ -29,6 +29,7 @@
  *
  * @param <INPUT> tuple type of input port
  * @param <OUTPUT> tuple type of output port
+ * @since 1.0.2
  */
 public abstract class AbstractHttpGetOperator<INPUT, OUTPUT> extends AbstractHttpOperator<INPUT>
 {
diff --git a/library/src/main/java/com/datatorrent/lib/io/AbstractHttpOperator.java b/library/src/main/java/com/datatorrent/lib/io/AbstractHttpOperator.java
index 26d1d08..258ef7f 100644
--- a/library/src/main/java/com/datatorrent/lib/io/AbstractHttpOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/io/AbstractHttpOperator.java
@@ -31,7 +31,9 @@
 /**
  * Abstract http operator that creates client at setup and destroy at teardown
  * and provides the process tuple method to be implemented to process each incoming tuple
+ *
  * @param <T>
+ * @since 1.0.2
  */
 @ShipContainingJars(classes = {com.sun.jersey.api.client.ClientHandler.class})
 public abstract class AbstractHttpOperator<T> extends BaseOperator
diff --git a/library/src/main/java/com/datatorrent/lib/io/HttpGetMapOperator.java b/library/src/main/java/com/datatorrent/lib/io/HttpGetMapOperator.java
index 1420940..8b8bd27 100644
--- a/library/src/main/java/com/datatorrent/lib/io/HttpGetMapOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/io/HttpGetMapOperator.java
@@ -29,6 +29,7 @@
  *
  * @param <K> Type of key in input map tuple
  * @param <V> Type of value in input map tuple
+ * @since 1.0.2
  */
 public class HttpGetMapOperator<K, V> extends AbstractHttpGetOperator<Map<K, V>, String>
 {
diff --git a/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFSDirectoryInputOperator.java b/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFSDirectoryInputOperator.java
index e47df5c..0d64922 100644
--- a/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFSDirectoryInputOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFSDirectoryInputOperator.java
@@ -60,6 +60,7 @@
  * This class supports retrying of failed files by putting them into failed list, and retrying them after pending
  * files are processed. Retrying is disabled when maxRetryCount is set to zero.
  *
+ * @since 1.0.2
  */
 public abstract class AbstractFSDirectoryInputOperator<T> implements InputOperator, Partitioner<AbstractFSDirectoryInputOperator<T>>, StatsListener
 {
diff --git a/library/src/main/java/com/datatorrent/lib/io/fs/AbstractHdfsFileOutputOperator.java b/library/src/main/java/com/datatorrent/lib/io/fs/AbstractHdfsFileOutputOperator.java
index 3f114e9..aaf7ef5 100644
--- a/library/src/main/java/com/datatorrent/lib/io/fs/AbstractHdfsFileOutputOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/io/fs/AbstractHdfsFileOutputOperator.java
@@ -35,6 +35,7 @@
  * Contains base implementations for setup, teardown, open file and close file.
  *
  * @param <INPUT> incoming tuple type
+ * @since 1.0.2
  */
 public abstract class AbstractHdfsFileOutputOperator<INPUT> extends BaseOperator
 {
diff --git a/library/src/main/java/com/datatorrent/lib/io/fs/AbstractHdfsTupleFileOutputOperator.java b/library/src/main/java/com/datatorrent/lib/io/fs/AbstractHdfsTupleFileOutputOperator.java
deleted file mode 100644
index f98d990..0000000
--- a/library/src/main/java/com/datatorrent/lib/io/fs/AbstractHdfsTupleFileOutputOperator.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.datatorrent.lib.io.fs;
-
-import com.datatorrent.api.Context;
-import com.datatorrent.api.DefaultOutputPort;
-import com.datatorrent.api.annotation.OutputPortFieldAnnotation;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-
-import java.io.IOException;
-
-/**
- * Hdfs file output operator that writes the data from the tuple to the file supplied in the tuple.
- *
- * If output port is connected, it sends the output to the output port.
- * @param <INPUT> type of incoming tuple
- * @param <OUTPUT> type of outgoing tuple
- */
-@Deprecated
-public abstract class AbstractHdfsTupleFileOutputOperator<INPUT, OUTPUT> extends AbstractHdfsFileOutputOperator<INPUT>
-{
-  /**
-   *
-   * @param context
-   */
-  @Override
-  public void setup(Context.OperatorContext context)
-  {
-    try {
-      fs = FileSystem.newInstance(new Path(filePath).toUri(), new Configuration());
-    }
-    catch (IOException ex) {
-      throw new RuntimeException(ex);
-    }
-  }
-
-  @Override
-  protected void processTuple(INPUT tuple)
-  {
-    try {
-      Path filepath = new Path(filePath + "/" + getFileName(tuple));
-      openFile(filepath);
-      byte[] tupleBytes = getBytesForTuple(tuple);
-      boolean written = false;
-      if (bufferedOutput != null) {
-        bufferedOutput.write(tupleBytes);
-        written = true;
-      }
-      else if (fsOutput != null) {
-        fsOutput.write(tupleBytes);
-        written = true;
-      }
-      if (written) {
-        totalBytesWritten += tupleBytes.length;
-      }
-      closeFile();
-      if (output.isConnected()) {
-        output.emit(getOutputTuple(tuple));
-      }
-    }
-    catch (IOException ex) {
-      throw new RuntimeException(ex);
-    }
-
-  }
-
-  protected abstract String getFileName(INPUT t);
-
-  protected abstract OUTPUT getOutputTuple(INPUT t);
-
-  @OutputPortFieldAnnotation(name = "output", optional = true)
-  public final transient DefaultOutputPort<OUTPUT> output = new DefaultOutputPort<OUTPUT>();
-  private static final long serialVersionUID = 201405151751L;
-}
diff --git a/library/src/main/java/com/datatorrent/lib/io/fs/HdfsExactlyOnceOutputOperator.java b/library/src/main/java/com/datatorrent/lib/io/fs/HdfsExactlyOnceOutputOperator.java
index 740deee..ecec396 100644
--- a/library/src/main/java/com/datatorrent/lib/io/fs/HdfsExactlyOnceOutputOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/io/fs/HdfsExactlyOnceOutputOperator.java
@@ -34,6 +34,7 @@
  * then the operator doesn't process anything during that window. If it doesn't, then the operator deletes
  * the <window_id>.tmp file if it exists, creates new and starts writing to it.
  *
+ * @since 1.0.2
  */
 public class HdfsExactlyOnceOutputOperator extends AbstractHdfsFileOutputOperator<String>
 {
diff --git a/library/src/main/java/com/datatorrent/lib/io/fs/HdfsFileDataOutputOperator.java b/library/src/main/java/com/datatorrent/lib/io/fs/HdfsFileDataOutputOperator.java
deleted file mode 100644
index 78513d4..0000000
--- a/library/src/main/java/com/datatorrent/lib/io/fs/HdfsFileDataOutputOperator.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.datatorrent.lib.io.fs;
-
-import com.datatorrent.lib.io.fs.HdfsFileDataOutputOperator.FileData;
-import com.datatorrent.lib.io.fs.HdfsFileDataOutputOperator.FileData.FileInfo;
-
-/**
- * Hdfs output operator that takes {@link FileData} input tuple and writes data to the file specified in the tuple.
- */
-@Deprecated
-public class HdfsFileDataOutputOperator extends AbstractHdfsTupleFileOutputOperator<FileData, FileData.FileInfo>
-{
-  @Override
-  protected String getFileName(FileData t)
-  {
-    return t.info.name;
-  }
-
-  @Override
-  protected FileInfo getOutputTuple(FileData t)
-  {
-    return t.info;
-  }
-
-  @Override
-  protected byte[] getBytesForTuple(FileData t)
-  {
-    return t.data.getBytes();
-  }
-
-  public static class FileData
-  {
-    public static class FileInfo
-    {
-      public String name;
-    }
-
-    public FileInfo info = new FileInfo();
-    public String data;
-  }
-
-  private static final long serialVersionUID = 201405151847L;
-}
diff --git a/library/src/main/java/com/datatorrent/lib/statistics/DimensionsComputation.java b/library/src/main/java/com/datatorrent/lib/statistics/DimensionsComputation.java
index 809e160..e47c1a6 100644
--- a/library/src/main/java/com/datatorrent/lib/statistics/DimensionsComputation.java
+++ b/library/src/main/java/com/datatorrent/lib/statistics/DimensionsComputation.java
@@ -36,7 +36,10 @@
 import com.datatorrent.api.annotation.ShipContainingJars;
 
 /**
+ * <p>DimensionsComputation class.</p>
+ *
  * @param <EVENT> - Type of the tuple whose attributes are used to define dimensions.
+ * @since 1.0.2
  */
 @ShipContainingJars(classes = {TCustomHashMap.class, HashingStrategy.class})
 public class DimensionsComputation<EVENT, AGGREGATE extends DimensionsComputation.AggregateEvent> implements Operator
diff --git a/library/src/main/java/com/datatorrent/lib/util/NumberAggregate.java b/library/src/main/java/com/datatorrent/lib/util/NumberAggregate.java
new file mode 100644
index 0000000..1d433dd
--- /dev/null
+++ b/library/src/main/java/com/datatorrent/lib/util/NumberAggregate.java
@@ -0,0 +1,202 @@
+/*
+ * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.datatorrent.lib.util;
+
+/**
+ * Utility class that gives aggregate information (i.e. min, max, avg, sum) with a set of numbers.
+ *
+ * @since 1.0.2
+ */
+public interface NumberAggregate
+{
+  /**
+   * Gets the minimum of the given numbers.
+   *
+   * @return The min
+   */
+  public Number getMin();
+
+  /**
+   * Gets the maximum of the given numbers
+   *
+   * @return The max
+   */
+  public Number getMax();
+
+  /**
+   * Gets the sum of the given numbers
+   *
+   * @return The sum
+   */
+  public Number getSum();
+
+  /**
+   * Gets the average of the given numbers
+   *
+   * @return The avg
+   */
+  public Number getAvg();
+
+  /**
+   * Add a long to the number set
+   *
+   * @param num the number
+   */
+  public void addNumber(Number num);
+
+  /**
+   * This is the aggregate class for Long.
+   */
+  public static class LongAggregate implements NumberAggregate
+  {
+    private int count = 0;
+    private long min = Long.MAX_VALUE;
+    private long max = Long.MIN_VALUE;
+    private long sum = 0;
+    private boolean ignoreSum = false;
+    private boolean ignoreAvg = false;
+
+    /**
+     * Creates a LongAggregate, with sum and average both valid.
+     */
+    public LongAggregate()
+    {
+    }
+
+    /**
+     * Creates a LongAggregate
+     *
+     * @param ignoreSum whether or not sum is valid for the numbers.
+     * @param ignoreAvg whether or not average is valid for the numbers.
+     */
+    public LongAggregate(boolean ignoreSum, boolean ignoreAvg)
+    {
+      this.ignoreSum = ignoreSum;
+      this.ignoreAvg = ignoreAvg;
+    }
+
+    @Override
+    public void addNumber(Number num)
+    {
+      long longVal = num.longValue();
+      if (min > longVal) {
+        min = longVal;
+      }
+      if (max < longVal) {
+        max = longVal;
+      }
+      sum += longVal;
+      count++;
+    }
+
+    @Override
+    public Number getMin()
+    {
+      return (count == 0) ? null : min;
+    }
+
+    @Override
+    public Number getMax()
+    {
+      return (count == 0) ? null : max;
+    }
+
+    @Override
+    public Number getAvg()
+    {
+      return (count == 0 || ignoreAvg) ? null : (sum / count);
+    }
+
+    @Override
+    public Number getSum()
+    {
+      return ignoreSum ? null : sum;
+    }
+
+  }
+
+  /**
+   * This is the aggregate class for Double.
+   */
+  public static class DoubleAggregate implements NumberAggregate
+  {
+    private int count = 0;
+    private double min = Double.MAX_VALUE;
+    private double max = Double.MIN_VALUE;
+    private double sum = 0;
+    private boolean ignoreSum = false;
+    private boolean ignoreAvg = false;
+
+    /**
+     * Creates a DoubleAggregate, with sum and average both valid.
+     */
+    public DoubleAggregate()
+    {
+    }
+
+    /**
+     * Creates a DoubleAggregate
+     *
+     * @param ignoreSum whether or not sum is valid for the numbers.
+     * @param ignoreAvg whether or not average is valid for the numbers.
+     */
+    public DoubleAggregate(boolean ignoreSum, boolean ignoreAvg)
+    {
+      this.ignoreSum = ignoreSum;
+      this.ignoreAvg = ignoreAvg;
+    }
+
+    @Override
+    public void addNumber(Number num)
+    {
+      double doubleVal = num.doubleValue();
+      if (min > doubleVal) {
+        min = doubleVal;
+      }
+      if (max < doubleVal) {
+        max = doubleVal;
+      }
+      sum += doubleVal;
+      count++;
+    }
+
+    @Override
+    public Number getMin()
+    {
+      return (count == 0) ? null : min;
+    }
+
+    @Override
+    public Number getMax()
+    {
+      return (count == 0) ? null : max;
+    }
+
+    @Override
+    public Number getAvg()
+    {
+      return (count == 0 || ignoreAvg) ? null : (sum / count);
+    }
+
+    @Override
+    public Number getSum()
+    {
+      return ignoreSum ? null : sum;
+    }
+
+  }
+
+}
diff --git a/library/src/main/java/com/datatorrent/lib/util/ReusableStringReader.java b/library/src/main/java/com/datatorrent/lib/util/ReusableStringReader.java
new file mode 100644
index 0000000..34547dc
--- /dev/null
+++ b/library/src/main/java/com/datatorrent/lib/util/ReusableStringReader.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.datatorrent.lib.util;
+
+import java.io.IOException;
+import java.io.Reader;
+
+/**
+ * <p>ReusableStringReader class.</p>
+ *
+ * @since 1.0.2
+ */
+public class ReusableStringReader extends Reader
+{
+  private String str;
+  private int length;
+  private int next = 0;
+
+  @Override
+  public int read(char[] cbuf, int off, int len) throws IOException
+  {
+    ensureOpen();
+    if ((off < 0) || (off > cbuf.length) || (len < 0) || ((off + len) > cbuf.length) || ((off + len) < 0)) {
+      throw new IndexOutOfBoundsException();
+    } else if (len == 0) {
+      return 0;
+    }
+    if (next >= length)
+      return -1;
+    int n = Math.min(length - next, len);
+    str.getChars(next, next + n, cbuf, off);
+    next += n;
+    return n;
+  }
+
+  /**
+   * Reads a single character.
+   *
+   * @return The character read, or -1 if the end of the stream has been reached
+   * @throws IOException If an I/O error occurs
+   */
+  public int read() throws IOException
+  {
+    ensureOpen();
+    if (next >= length)
+      return -1;
+    return str.charAt(next++);
+  }
+
+  public boolean ready() throws IOException
+  {
+    ensureOpen();
+    return true;
+  }
+
+  @Override
+  public void close() throws IOException
+  {
+    str = null;
+  }
+
+  /**
+   * Check to make sure that the stream has not been closed
+   */
+  private void ensureOpen() throws IOException
+  {
+    if (str == null) {
+      throw new IOException("Stream closed");
+    }
+  }
+
+  public void open(String str) throws IOException
+  {
+    this.str = str;
+    this.length = this.str.length();
+    this.next = 0;
+  }
+
+}
diff --git a/library/src/main/java/com/datatorrent/lib/xml/XmlDOMOperator.java b/library/src/main/java/com/datatorrent/lib/xml/XmlDOMOperator.java
index f71b47a..08753b0 100644
--- a/library/src/main/java/com/datatorrent/lib/xml/XmlDOMOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/xml/XmlDOMOperator.java
@@ -13,6 +13,8 @@
 
 /**
  * Created by Pramod Immaneni <pramod@datatorrent.com> on 6/12/14.
+ *
+ * @since 1.0.2
  */
 public abstract class XmlDOMOperator<T> extends BaseOperator
 {
diff --git a/library/src/test/java/com/datatorrent/lib/counters/BasicCountersTest.java b/library/src/test/java/com/datatorrent/lib/counters/BasicCountersTest.java
new file mode 100644
index 0000000..8241edc
--- /dev/null
+++ b/library/src/test/java/com/datatorrent/lib/counters/BasicCountersTest.java
@@ -0,0 +1,63 @@
+package com.datatorrent.lib.counters;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang.mutable.MutableDouble;
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.google.common.collect.Lists;
+
+import com.datatorrent.lib.util.NumberAggregate;
+
+/**
+ * Tests for {@link BasicCounters}
+ */
+public class BasicCountersTest
+{
+  private static enum CounterKeys
+  {
+    A
+  }
+
+  @Test
+  public void testBasicCounters() throws InstantiationException, IllegalAccessException
+  {
+    BasicCounters<MutableDouble> doubleBasicCounters = new BasicCounters<MutableDouble>(MutableDouble.class);
+    MutableDouble counterA = doubleBasicCounters.findCounter(CounterKeys.A);
+
+    counterA.increment();
+
+    MutableDouble counterAInCounters = doubleBasicCounters.getCounter(CounterKeys.A);
+    Assert.assertNotNull("null", doubleBasicCounters.getCounter(CounterKeys.A));
+    Assert.assertTrue("equality", counterAInCounters == counterA);
+    Assert.assertEquals(counterA.doubleValue(), 1.0, 0);
+  }
+
+  @Test
+  public void testBasicCountersAggregator() throws InstantiationException, IllegalAccessException
+  {
+    List<Object> physicalCounters = Lists.newArrayList();
+
+    for (int i = 0; i < 5; i++) {
+      BasicCounters<MutableDouble> doubleBasicCounters = new BasicCounters<MutableDouble>(MutableDouble.class);
+      MutableDouble counterA = doubleBasicCounters.findCounter(CounterKeys.A);
+      counterA.increment();
+
+      physicalCounters.add(doubleBasicCounters);
+    }
+
+    BasicCounters.DoubleAggregator<MutableDouble> aggregator = new BasicCounters.DoubleAggregator<MutableDouble>();
+    @SuppressWarnings("unchecked")
+    Map<String, NumberAggregate.DoubleAggregate> aggregateMap = (Map<String, NumberAggregate.DoubleAggregate>) aggregator.aggregate(physicalCounters);
+
+    Assert.assertNotNull("null", aggregateMap.get(CounterKeys.A.name()));
+    NumberAggregate.DoubleAggregate aggregate = aggregateMap.get(CounterKeys.A.name());
+
+    Assert.assertEquals(aggregate.getSum().doubleValue(), 5.0, 0);
+    Assert.assertEquals(aggregate.getMin().doubleValue(), 1.0, 0);
+    Assert.assertEquals(aggregate.getMax().doubleValue(), 1.0, 0);
+    Assert.assertEquals(aggregate.getAvg().doubleValue(), 1.0, 0);
+  }
+}
diff --git a/library/src/test/java/com/datatorrent/lib/helper/OperatorContextTestHelper.java b/library/src/test/java/com/datatorrent/lib/helper/OperatorContextTestHelper.java
index ff32fbe..d6dd65f 100644
--- a/library/src/test/java/com/datatorrent/lib/helper/OperatorContextTestHelper.java
+++ b/library/src/test/java/com/datatorrent/lib/helper/OperatorContextTestHelper.java
@@ -66,7 +66,7 @@
     }
 
     @Override
-    public void setCounters(Counters counters)
+    public void setCounters(Object counters)
     {
       /* intentionally no-op */
     }
@@ -88,7 +88,7 @@
     }
 
     @Override
-    public void setCounters(Counters counters)
+    public void setCounters(Object counters)
     {
       throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
     }
diff --git a/library/src/test/java/com/datatorrent/lib/io/fs/HdfsExactlyOnceOutputOperatorTest.java b/library/src/test/java/com/datatorrent/lib/io/fs/HdfsExactlyOnceOutputOperatorTest.java
index 34e3d6b..408e5d5 100644
--- a/library/src/test/java/com/datatorrent/lib/io/fs/HdfsExactlyOnceOutputOperatorTest.java
+++ b/library/src/test/java/com/datatorrent/lib/io/fs/HdfsExactlyOnceOutputOperatorTest.java
@@ -26,7 +26,6 @@
 
 import com.datatorrent.api.AttributeMap;
 import com.datatorrent.api.AttributeMap.Attribute;
-import com.datatorrent.api.Context.Counters;
 import com.datatorrent.api.Context.OperatorContext;
 
 /**
@@ -167,7 +166,7 @@
     }
 
     @Override
-    public void setCounters(Counters stats)
+    public void setCounters(Object stats)
     {
     }
 
diff --git a/library/src/test/java/com/datatorrent/lib/io/fs/HdfsFileDataOutputOperatorTest.java b/library/src/test/java/com/datatorrent/lib/io/fs/HdfsFileDataOutputOperatorTest.java
deleted file mode 100644
index fe76853..0000000
--- a/library/src/test/java/com/datatorrent/lib/io/fs/HdfsFileDataOutputOperatorTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.datatorrent.lib.io.fs;
-
-import com.datatorrent.lib.helper.OperatorContextTestHelper;
-import com.datatorrent.lib.io.fs.HdfsFileDataOutputOperator.FileData;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.*;
-
-/**
- * Functional test for {@link HdfsFileDataOutputOperator}
- */
-@Deprecated
-public class HdfsFileDataOutputOperatorTest
-{
-  @Test
-  public void testFileOutputOperator()
-  {
-    HdfsFileDataOutputOperator oper = new HdfsFileDataOutputOperator();
-    oper.setFilePath("target");
-    oper.setAppend(false);
-    oper.setup(new OperatorContextTestHelper.TestIdOperatorContext(0));
-    oper.beginWindow(0);
-    FileData fileData1 = new FileData();
-    fileData1.info.name = "file1";
-    fileData1.data = "data1";
-
-    oper.input.process(fileData1);
-
-    FileData fileData2 = new FileData();
-    fileData2.info.name = "file2";
-    fileData2.data = "data2";
-    oper.input.process(fileData2);
-
-    FileData fileData3 = new FileData();
-    fileData3.info.name = "file1";
-    fileData3.data = "data2";
-
-    oper.input.process(fileData3);
-
-    oper.endWindow();
-    oper.teardown();
-    Assert.assertEquals("The number of lines in file target/file-0-0", 1, readFile("target/file1", "data2"));
-    Assert.assertEquals("The number of lines in file target/file-0-1", 1, readFile("target/file2", "data2"));
-    Assert.assertEquals("Checking the file target/file-0-0", true, checkFile("target/file1"));
-    Assert.assertEquals("Checking the file target/file-0-1", true, checkFile("target/file2"));
-
-  }
-
-  private int readFile(String path, final String val)
-  {
-    BufferedReader br = null;
-    try {
-      FileInputStream fstream = new FileInputStream(path);
-      DataInputStream in = new DataInputStream(fstream);
-      br = new BufferedReader(new InputStreamReader(in));
-      String strLine;
-      int count = 0;
-      while ((strLine = br.readLine()) != null) {
-        Assert.assertEquals("Comparing the values", val, strLine);
-        count++;
-      }
-      return count;
-    }
-    catch (Exception e) {
-      return -1;
-    }
-    finally {
-      if (br != null) {
-        try {
-          br.close();
-        }
-        catch (IOException e) {
-        }
-      }
-    }
-  }
-
-  private boolean checkFile(String path)
-  {
-    File file = new File(path);
-    if (file.exists()) {
-      file.delete();
-      return true;
-    }
-    return false;
-  }
-
-}
diff --git a/pom.xml b/pom.xml
index 21f068e..8df1c93 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,11 +4,11 @@
   <parent>
     <groupId>com.datatorrent</groupId>
     <artifactId>dt-framework</artifactId>
-    <version>1.0.1-RC1</version>
+    <version>1.0.2</version>
   </parent>
 
   <artifactId>malhar-all</artifactId>
-  <version>1.0.2-SNAPSHOT</version>
+  <version>1.0.2</version>
   <packaging>pom</packaging>
   <name>Malhar Open Source</name>
   <url>https://www.datatorrent.com/</url>
@@ -26,7 +26,7 @@
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <netbeans.hint.license>malhar-inc</netbeans.hint.license>
     <maven.deploy.skip>false</maven.deploy.skip>
-    <dt.framework.version>1.0.1-RC1</dt.framework.version>
+    <dt.framework.version>1.0.2</dt.framework.version>
     <!-- the following properties match the properties defined in core/pom.xml -->
     <jackson.version>1.9.2</jackson.version>
     <jersey.version>1.9</jersey.version>
@@ -41,4 +41,20 @@
     <module>benchmark</module>
     <module>apps</module>
   </modules>
+
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>dt-api</artifactId>
+      <version>${dt.framework.version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>dt-engine</artifactId>
+      <version>${dt.framework.version}</version>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+
 </project>
diff --git a/samples/pom.xml b/samples/pom.xml
index 326a737..a572d24 100644
--- a/samples/pom.xml
+++ b/samples/pom.xml
@@ -6,7 +6,7 @@
   <parent>
     <groupId>com.datatorrent</groupId>
     <artifactId>malhar-all</artifactId>
-    <version>1.0.2-SNAPSHOT</version>
+    <version>1.0.2</version>
   </parent>
 
   <artifactId>malhar-samples</artifactId>
diff --git a/web/demos/README.md b/web/demos/README.md
index f66ba06..d72e8c2 100644
--- a/web/demos/README.md
+++ b/web/demos/README.md
@@ -2,7 +2,8 @@
 ===============
 
 Web Application for DataTorrent Demos:
-- Twitter
+- Twitter URLs
+- Twitter Hashtags
 - Mobile
 - Machine Generated Data
 - Ads Dimensions
@@ -42,7 +43,8 @@
  See ```dist_start.sh``` and ```dev_start.sh```.
 
  Applications are automatically discovered by name (to show stats like "Events/sec"). See the following settings in ```config.js```:
- - settings.twitter.appName
+ - settings.twitterUrls.appName
+ - settings.twitterHashtags.appName
  - settings.mobile.appName
  - settings.machine.appName
  - settings.dimensions.appName
diff --git a/web/demos/app/index.html b/web/demos/app/index.html
index 0d1ea40..8604ed5 100644
--- a/web/demos/app/index.html
+++ b/web/demos/app/index.html
@@ -38,7 +38,8 @@
             <a class="brand" href="/"></a>
             <div class="nav-collapse collapse">
                 <ul class="nav">
-                    <li><a href="#twitter">Twitter</a></li>
+                    <li><a href="#twitterUrls">Twitter URLs</a></li>
+                    <li><a href="#twitterHashtags">Twitter Hashtags</a></li>
                     <li><a href="#mobile">Mobile</a></li>
                     <li><a href="#machine">Machine</a></li>
                     <li><a href="#dimensions">Ads</a></li>
diff --git a/web/demos/app/scripts/app.js b/web/demos/app/scripts/app.js
index 79e3ae0..ec7caf0 100644
--- a/web/demos/app/scripts/app.js
+++ b/web/demos/app/scripts/app.js
@@ -38,9 +38,13 @@
       .when('/', {
         templateUrl: 'views/welcome.html'
       })
-      .when('/twitter', {
+      .when('/twitterUrls', {
         templateUrl: 'views/twitter.html',
-        controller: 'TwitterController'
+        controller: 'TwitterUrlsController'
+      })
+      .when('/twitterHashtags', {
+        templateUrl: 'views/twitter.html',
+        controller: 'TwitterHashtagsController'
       })
       .when('/mobile', {
         templateUrl: 'views/mobile.html',
diff --git a/web/demos/app/scripts/controllers/twitter.js b/web/demos/app/scripts/controllers/twitter.js
index 8b36c21..37cceb6 100644
--- a/web/demos/app/scripts/controllers/twitter.js
+++ b/web/demos/app/scripts/controllers/twitter.js
@@ -19,14 +19,40 @@
 'use strict';
 
 angular.module('twitter')
-    .controller('TwitterController', ['$scope', 'rest', function ($scope, rest) {
-        rest.getApp(settings.twitter.appName).then(function (app) {
+    .controller('TwitterUrlsController', ['$scope', 'rest', function ($scope, rest) {
+        rest.getApp(settings.twitterUrls.appName).then(function (app) {
             $scope.app = app;
             $scope.appURL = settings.appsURL + app.id;
         });
+
+        $scope.topic = settings.twitterUrls.topic;
+        $scope.pageTitle = 'Twitter Top URLs';
+        $scope.entity = 'URLs';
+        $scope.gridTitle = 'Twitter Top URLs';
+        $scope.chartTitle = 'Top 10 URLs Chart';
+        $scope.colName = 'URL';
+        $scope.formatter = function(url) {
+            return '<a class="svg-link" xlink:href="' + url + '">' + url + '</a>';
+        };
+    }])
+    .controller('TwitterHashtagsController', ['$scope', 'rest', function ($scope, rest) {
+        rest.getApp(settings.twitterHashtags.appName).then(function (app) {
+          $scope.app = app;
+          $scope.appURL = settings.appsURL + app.id;
+        });
+
+        $scope.topic = settings.twitterHashtags.topic;
+        $scope.pageTitle = 'Twitter Top Hashtags';
+        $scope.entity = 'hashtags';
+        $scope.gridTitle = 'Twitter Top Hashtags';
+        $scope.chartTitle = 'Top 10 Hashtags Chart';
+        $scope.colName = 'Hashtag';
+        $scope.formatter = function(Hashtag) {
+            return '<a class="svg-link" xlink:href="https://twitter.com/search?q=%23' + encodeURIComponent(Hashtag) + '">' + Hashtag + '</a>';
+        };
     }])
     .controller('TwitterGridControlller', ['$scope', 'socket', function ($scope, socket) {
-        socket.subscribe(settings.twitter.topic, function(data) {
+        socket.subscribe($scope.topic, function(data) {
             var list = [];
             jQuery.each(data.data, function(key, value) {
                 list.push( { name: key, value: parseInt(value, 10) } );
@@ -34,19 +60,21 @@
             list = _.sortBy(list, function(item) {
                 return -item.value;
             });
-            $scope.myData = list;
+            $scope.topTen = list;
             $scope.$apply();
         }, $scope);
 
         $scope.gridOptions = {
-            data: 'myData',
+            data: 'topTen',
             enableColumnResize: true,
-            columnDefs: [{ field: "name", displayName: 'URL', width: '75%', sortable: false },
-                { field: "value", displayName: 'Count', width: '25%', sortable: false }]
+          columnDefs: [
+            { field: "name", displayName: $scope.colName, width: '75%', sortable: false },
+            { field: "value", displayName: 'Count', width: '25%', sortable: false }
+          ]
         };
     }])
     .controller('TwitterBarChartController', ['$scope', 'socket', function($scope, socket) {
-        socket.subscribe(settings.twitter.topic, function(data) {
+        socket.subscribe($scope.topic, function(data) {
             var list = [];
             jQuery.each(data.data, function(key, value) {
                 list.push( { name: key, value: parseInt(value, 10) } );
@@ -57,6 +85,9 @@
             //var max = _.max(list, function(item) {item.value});
             var max = list[0].value;
             _.each(list, function(item) {
+                if ($scope.formatter) {
+                    item.name = $scope.formatter(item.name);
+                }
                 item.name += ' - ' + item.value;
                 item.score = item.value / max * 100;
             });
diff --git a/web/demos/app/scripts/directives/barChart.js b/web/demos/app/scripts/directives/barChart.js
index 20d74a5..ca4358e 100644
--- a/web/demos/app/scripts/directives/barChart.js
+++ b/web/demos/app/scripts/directives/barChart.js
@@ -92,7 +92,7 @@
                         .attr("fill", "#fff")
                         .attr("y", function(d, i){return i * 35 + 22;})
                         .attr("x", 15)
-                        .text(function(d){return d[scope.label];});
+                        .html(function(d){return d[scope.label];});
 
                 };
             }
diff --git a/web/demos/app/styles/main.css b/web/demos/app/styles/main.css
index 5bc81c1..78dc25f 100644
--- a/web/demos/app/styles/main.css
+++ b/web/demos/app/styles/main.css
@@ -227,4 +227,7 @@
 }
 button.clearFraudsBtn {
   float:right;
+}
+a.svg-link {
+    text-decoration: underline;
 }
\ No newline at end of file
diff --git a/web/demos/app/views/dimensions.html b/web/demos/app/views/dimensions.html
index ea29596..8cda47b 100644
--- a/web/demos/app/views/dimensions.html
+++ b/web/demos/app/views/dimensions.html
@@ -160,6 +160,6 @@
     <hr>
 
     <footer>
-        <p>&copy; DataTorrent 2013</p>
+        <p>&copy; DataTorrent 2014</p>
     </footer>
 </div><!--/.fluid-container-->
\ No newline at end of file
diff --git a/web/demos/app/views/fraud.html b/web/demos/app/views/fraud.html
index 8afb4a4..57ac920 100644
--- a/web/demos/app/views/fraud.html
+++ b/web/demos/app/views/fraud.html
@@ -47,7 +47,7 @@
 	<hr>
 
 	<footer>
-		<p>&copy; DataTorrent 2013</p>
+		<p>&copy; DataTorrent 2014</p>
 	</footer>
 </div><!--/.fluid-container-->
 <div id="txn-modal" class="modal hide fade" role="dialog" style="display:none;">
diff --git a/web/demos/app/views/machine.html b/web/demos/app/views/machine.html
index 3e840ff..68b62ae 100644
--- a/web/demos/app/views/machine.html
+++ b/web/demos/app/views/machine.html
@@ -168,6 +168,6 @@
     <hr>
 
     <footer>
-        <p>&copy; DataTorrent 2013</p>
+        <p>&copy; DataTorrent 2014</p>
     </footer>
 </div><!--/.fluid-container-->
\ No newline at end of file
diff --git a/web/demos/app/views/mobile.html b/web/demos/app/views/mobile.html
index ce583ab..9477c3a 100644
--- a/web/demos/app/views/mobile.html
+++ b/web/demos/app/views/mobile.html
@@ -45,6 +45,6 @@
     <hr>
 
     <footer>
-        <p>&copy; DataTorrent 2013</p>
+        <p>&copy; DataTorrent 2014</p>
     </footer>
 </div><!--/.fluid-container-->
\ No newline at end of file
diff --git a/web/demos/app/views/twitter.html b/web/demos/app/views/twitter.html
index 3ba9051..e1897cd 100644
--- a/web/demos/app/views/twitter.html
+++ b/web/demos/app/views/twitter.html
@@ -2,14 +2,14 @@
     <div class="row-fluid">
         <div class="span12">
             <h2 class="app-title">
-                Twitter Top URLs
+                {{pageTitle}}
                 <a ng-show="appURL" href="{{appURL}}" class="btn btn-primary btn-view-console" target="_blank">View Console</a>
             </h2>
         </div>
     </div>
     <div class="row-fluid">
         <p class="well span7">
-            This demo application processes tweets and computes most frequently cited URLs during the last 5 minutes. The results are continuously updated every 0.5 sec. For demo purposes, we used live (1% sample) developer version of the Twitter feed, and scale it up by 100x to produce the true load.  The application process load equivalent to full firehose.
+            This demo application processes tweets and computes most frequently cited {{entity}} during the last 5 minutes. The results are continuously updated every 0.5 sec. For demo purposes, we used live (1% sample) developer version of the Twitter feed, and scale it up by 100x to produce the true load.  The application process load equivalent to full firehose.
         </p>
         <div class="span5">
             <span widgets-stat="" app="app"></span>
@@ -17,13 +17,13 @@
     </div>
     <div class="row-fluid">
         <div class="span4">
-            <h4>Top 10 URLs</h4>
+            <h4>{{gridTitle}}</h4>
             <div ng-controller="TwitterGridControlller">
                 <div class="twitter-grid" ng-grid="gridOptions"></div>
             </div>
         </div><!--/span-->
         <div class="span4">
-            <h4>Top 10 URLs Chart</h4>
+            <h4>{{chartTitle}}</h4>
             <div ng-controller="TwitterBarChartController">
                 <span widgets-bar-chart="" class="bar-chart" data="twitterBarChartData" label="name" on-click="d3OnClick(item)"></span>
             </div>
@@ -33,6 +33,6 @@
     <hr>
 
     <footer>
-        <p>&copy; DataTorrent 2013</p>
+        <p>&copy; DataTorrent 2014</p>
     </footer>
 </div><!--/.fluid-container-->
\ No newline at end of file
diff --git a/web/demos/config.js b/web/demos/config.js
index ec62902..1db5085 100644
--- a/web/demos/config.js
+++ b/web/demos/config.js
@@ -26,7 +26,8 @@
 config.settings = {};
 var settings = config.settings;
 
-settings.twitter = {};
+settings.twitterUrls = {};
+settings.twitterHashtags = {};
 settings.mobile = {};
 settings.mobile.topic = {};
 settings.machine = {};
@@ -38,8 +39,10 @@
 settings.webSocketURL = 'ws://' + config.gateway.host + ':' + config.gateway.port + '/pubsub';
 settings.appsURL = 'http://' + config.gateway.host + ':' + config.gateway.port + '/static/#ops/apps/';
 
-settings.twitter.appName = process.env.APP_NAME_TWITTER || 'TwitterDemo';
-settings.twitter.topic = 'demos.twitter.topURLs';
+settings.twitterUrls.appName = process.env.APP_NAME_TWITTER_URLS || 'TwitterDemo';
+settings.twitterUrls.topic = 'demos.twitter.topURLs';
+settings.twitterHashtags.appName = process.env.APP_NAME_TWITTER_HASHTAGS || 'TwitterTrendingDemo';
+settings.twitterHashtags.topic = 'demos.twitter.topHashtags';
 settings.mobile.topic.out = 'demos.mobile.phoneLocationQueryResult';
 settings.mobile.topic.in = 'demos.mobile.phoneLocationQuery';
 settings.mobile.appName = process.env.APP_NAME_MOBILE || 'MobileDemo';
diff --git a/web/demos/package/README.md b/web/demos/package/README.md
index cd3eee0..2020823 100644
--- a/web/demos/package/README.md
+++ b/web/demos/package/README.md
@@ -2,7 +2,8 @@
 ===============
 
 Web Application for DataTorrent Demos:
-- Twitter
+- Twitter URLs
+- Twitter Hashtags
 - Mobile
 - Machine Generated Data
 - Ads Dimensions
@@ -22,7 +23,8 @@
  Please use ```config.js``` or environment variables (```start.sh```) for configuration (DT Gateway, Redis, MongoDB, etc.).
 
  Applications are automatically discovered by name (to show stats like "Events/sec"). See the following settings in ```config.js```:
- - settings.twitter.appName
+ - settings.twitterUrls.appName
+ - settings.twitterHashtags.appName
  - settings.mobile.appName
  - settings.machine.appName
  - settings.dimensions.appName
@@ -30,7 +32,7 @@
 
 ## Architecture and Development
 
-See web application source code  [webapps](https://github.com/DataTorrent/Malhar/tree/master/webapps)
+See web application source code  [web demos](https://github.com/DataTorrent/Malhar/tree/master/web/demos)
 
 ## Tips
 
diff --git a/web/demos/package/app/index.html b/web/demos/package/app/index.html
index 5c53afa..e3b6356 100644
--- a/web/demos/package/app/index.html
+++ b/web/demos/package/app/index.html
@@ -13,7 +13,7 @@
 
     <link rel="stylesheet" href="styles/5e6512ec.vendor.css">
 
-    <link rel="stylesheet" href="styles/f3706ec2.main.css">
+    <link rel="stylesheet" href="styles/00ae7995.main.css">
 </head>
 <body ng-app="app">
 <!--[if lt IE 9]>
@@ -31,7 +31,8 @@
             <a class="brand" href="/"></a>
             <div class="nav-collapse collapse">
                 <ul class="nav">
-                    <li><a href="#twitter">Twitter</a></li>
+                    <li><a href="#twitterUrls">Twitter URLs</a></li>
+                    <li><a href="#twitterHashtags">Twitter Hashtags</a></li>
                     <li><a href="#mobile">Mobile</a></li>
                     <li><a href="#machine">Machine</a></li>
                     <li><a href="#dimensions">Ads</a></li>
@@ -46,11 +47,11 @@
 
 <script src="settings.js"></script>
 
-<script src="scripts/43b68137.plugins.js"></script>
+<script src="scripts/d63799f1.plugins.js"></script>
 
-<script src="scripts/095af978.modules.js"></script>
+<script src="scripts/9f21e177.modules.js"></script>
 
-<script src="scripts/6277abef.scripts.js"></script>
+<script src="scripts/5f986af9.scripts.js"></script>
 
 <script type="text/javascript" src="https://www.google.com/jsapi"></script>
 <script type="text/javascript">
diff --git a/web/demos/package/app/scripts/095af978.modules.js b/web/demos/package/app/scripts/095af978.modules.js
deleted file mode 100644
index c460cfd..0000000
--- a/web/demos/package/app/scripts/095af978.modules.js
+++ /dev/null
@@ -1,11 +0,0 @@
-function Gauge(a,b){this.element=a;var c=this;this.configure=function(a){this.config=a,this.config.size=.9*this.config.size,this.config.raduis=.97*this.config.size/2,this.config.cx=this.config.size/2,this.config.cy=this.config.size/2,this.config.min=void 0!=a.min?a.min:0,this.config.max=void 0!=a.max?a.max:100,this.config.range=this.config.max-this.config.min,this.config.majorTicks=a.majorTicks||5,this.config.minorTicks=a.minorTicks||2,this.config.greenColor=a.greenColor||"#109618",this.config.yellowColor=a.yellowColor||"#FF9900",this.config.redColor=a.redColor||"#DC3912",this.config.transitionDuration=a.transitionDuration||500},this.render=function(){this.body=d3.select(this.element).append("svg:svg").attr("class","gauge").attr("width",this.config.size).attr("height",this.config.size),this.body.append("svg:circle").attr("cx",this.config.cx).attr("cy",this.config.cy).attr("r",this.config.raduis).style("fill","#ccc").style("stroke","#000").style("stroke-width","0.5px"),this.body.append("svg:circle").attr("cx",this.config.cx).attr("cy",this.config.cy).attr("r",.9*this.config.raduis).style("fill","#fff").style("stroke","#e0e0e0").style("stroke-width","2px");for(var a in this.config.greenZones)this.drawBand(this.config.greenZones[a].from,this.config.greenZones[a].to,c.config.greenColor);for(var a in this.config.yellowZones)this.drawBand(this.config.yellowZones[a].from,this.config.yellowZones[a].to,c.config.yellowColor);for(var a in this.config.redZones)this.drawBand(this.config.redZones[a].from,this.config.redZones[a].to,c.config.redColor);if(void 0!=this.config.label){var b=Math.round(this.config.size/9);this.body.append("svg:text").attr("x",this.config.cx).attr("y",this.config.cy/2+b/2).attr("dy",b/2).attr("text-anchor","middle").text(this.config.label).style("font-size",b+"px").style("fill","#333").style("stroke-width","0px")}for(var b=Math.round(this.config.size/16),d=this.config.range/(this.config.majorTicks-1),e=this.config.min;e<=this.config.max;e+=d){for(var f=d/this.config.minorTicks,g=e+f;g<Math.min(e+d,this.config.max);g+=f){var h=this.valueToPoint(g,.75),i=this.valueToPoint(g,.85);this.body.append("svg:line").attr("x1",h.x).attr("y1",h.y).attr("x2",i.x).attr("y2",i.y).style("stroke","#666").style("stroke-width","1px")}var h=this.valueToPoint(e,.7),i=this.valueToPoint(e,.85);if(this.body.append("svg:line").attr("x1",h.x).attr("y1",h.y).attr("x2",i.x).attr("y2",i.y).style("stroke","#333").style("stroke-width","2px"),e==this.config.min||e==this.config.max){var j=this.valueToPoint(e,.63);this.body.append("svg:text").attr("x",j.x).attr("y",j.y).attr("dy",b/3).attr("text-anchor",e==this.config.min?"start":"end").text(e).style("font-size",b+"px").style("fill","#333").style("stroke-width","0px")}}var k=this.body.append("svg:g").attr("class","pointerContainer"),l=(this.config.min+this.config.max)/2,m=this.buildPointerPath(l),n=d3.svg.line().x(function(a){return a.x}).y(function(a){return a.y}).interpolate("basis");k.selectAll("path").data([m]).enter().append("svg:path").attr("d",n).style("fill","#dc3912").style("stroke","#c63310").style("fill-opacity",.7),k.append("svg:circle").attr("cx",this.config.cx).attr("cy",this.config.cy).attr("r",.12*this.config.raduis).style("fill","#4684EE").style("stroke","#666").style("opacity",1);var b=Math.round(this.config.size/10);k.selectAll("text").data([l]).enter().append("svg:text").attr("x",this.config.cx).attr("y",this.config.size-this.config.cy/4-b).attr("dy",b/2).attr("text-anchor","middle").style("font-size",b+"px").style("fill","#000").style("stroke-width","0px"),this.redraw(this.config.min,0)},this.buildPointerPath=function(a){function b(a,b){var d=c.valueToPoint(a,b);return d.x-=c.config.cx,d.y-=c.config.cy,d}var d=this.config.range/13,e=b(a,.85),f=b(a-d,.12),g=b(a+d,.12),h=a-this.config.range*(1/.75)/2,i=b(h,.28),j=b(h-d,.12),k=b(h+d,.12);return[e,f,k,i,j,g,e]},this.drawBand=function(a,b,d){0>=b-a||this.body.append("svg:path").style("fill",d).attr("d",d3.svg.arc().startAngle(this.valueToRadians(a)).endAngle(this.valueToRadians(b)).innerRadius(.65*this.config.raduis).outerRadius(.85*this.config.raduis)).attr("transform",function(){return"translate("+c.config.cx+", "+c.config.cy+") rotate(270)"})},this.redraw=function(a,b){var d=this.body.select(".pointerContainer");d.selectAll("text").text(Math.round(a));var e=d.selectAll("path");e.transition().duration(void 0!=b?b:this.config.transitionDuration).attrTween("transform",function(){var b=a;a>c.config.max?b=c.config.max+.02*c.config.range:a<c.config.min&&(b=c.config.min-.02*c.config.range);var d=c.valueToDegrees(b)-90,e=c._currentRotation||d;return c._currentRotation=d,function(a){var b=e+(d-e)*a;return"translate("+c.config.cx+", "+c.config.cy+") rotate("+b+")"}})},this.valueToDegrees=function(a){return a/this.config.range*270-(this.config.min/this.config.range*270+45)},this.valueToRadians=function(a){return this.valueToDegrees(a)*Math.PI/180},this.valueToPoint=function(a,b){return{x:this.config.cx-this.config.raduis*b*Math.cos(this.valueToRadians(a)),y:this.config.cy-this.config.raduis*b*Math.sin(this.valueToRadians(a))}},this.configure(b)}(function(){var a=this,b=a._,c={},d=Array.prototype,e=Object.prototype,f=Function.prototype,g=d.push,h=d.slice,i=d.concat,j=e.toString,k=e.hasOwnProperty,l=d.forEach,m=d.map,n=d.reduce,o=d.reduceRight,p=d.filter,q=d.every,r=d.some,s=d.indexOf,t=d.lastIndexOf,u=Array.isArray,v=Object.keys,w=f.bind,x=function(a){return a instanceof x?a:this instanceof x?void(this._wrapped=a):new x(a)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=x),exports._=x):a._=x,x.VERSION="1.5.2";var y=x.each=x.forEach=function(a,b,d){if(null!=a)if(l&&a.forEach===l)a.forEach(b,d);else if(a.length===+a.length){for(var e=0,f=a.length;f>e;e++)if(b.call(d,a[e],e,a)===c)return}else for(var g=x.keys(a),e=0,f=g.length;f>e;e++)if(b.call(d,a[g[e]],g[e],a)===c)return};x.map=x.collect=function(a,b,c){var d=[];return null==a?d:m&&a.map===m?a.map(b,c):(y(a,function(a,e,f){d.push(b.call(c,a,e,f))}),d)};var z="Reduce of empty array with no initial value";x.reduce=x.foldl=x.inject=function(a,b,c,d){var e=arguments.length>2;if(null==a&&(a=[]),n&&a.reduce===n)return d&&(b=x.bind(b,d)),e?a.reduce(b,c):a.reduce(b);if(y(a,function(a,f,g){e?c=b.call(d,c,a,f,g):(c=a,e=!0)}),!e)throw new TypeError(z);return c},x.reduceRight=x.foldr=function(a,b,c,d){var e=arguments.length>2;if(null==a&&(a=[]),o&&a.reduceRight===o)return d&&(b=x.bind(b,d)),e?a.reduceRight(b,c):a.reduceRight(b);var f=a.length;if(f!==+f){var g=x.keys(a);f=g.length}if(y(a,function(h,i,j){i=g?g[--f]:--f,e?c=b.call(d,c,a[i],i,j):(c=a[i],e=!0)}),!e)throw new TypeError(z);return c},x.find=x.detect=function(a,b,c){var d;return A(a,function(a,e,f){return b.call(c,a,e,f)?(d=a,!0):void 0}),d},x.filter=x.select=function(a,b,c){var d=[];return null==a?d:p&&a.filter===p?a.filter(b,c):(y(a,function(a,e,f){b.call(c,a,e,f)&&d.push(a)}),d)},x.reject=function(a,b,c){return x.filter(a,function(a,d,e){return!b.call(c,a,d,e)},c)},x.every=x.all=function(a,b,d){b||(b=x.identity);var e=!0;return null==a?e:q&&a.every===q?a.every(b,d):(y(a,function(a,f,g){return(e=e&&b.call(d,a,f,g))?void 0:c}),!!e)};var A=x.some=x.any=function(a,b,d){b||(b=x.identity);var e=!1;return null==a?e:r&&a.some===r?a.some(b,d):(y(a,function(a,f,g){return e||(e=b.call(d,a,f,g))?c:void 0}),!!e)};x.contains=x.include=function(a,b){return null==a?!1:s&&a.indexOf===s?-1!=a.indexOf(b):A(a,function(a){return a===b})},x.invoke=function(a,b){var c=h.call(arguments,2),d=x.isFunction(b);return x.map(a,function(a){return(d?b:a[b]).apply(a,c)})},x.pluck=function(a,b){return x.map(a,function(a){return a[b]})},x.where=function(a,b,c){return x.isEmpty(b)?c?void 0:[]:x[c?"find":"filter"](a,function(a){for(var c in b)if(b[c]!==a[c])return!1;return!0})},x.findWhere=function(a,b){return x.where(a,b,!0)},x.max=function(a,b,c){if(!b&&x.isArray(a)&&a[0]===+a[0]&&a.length<65535)return Math.max.apply(Math,a);if(!b&&x.isEmpty(a))return-1/0;var d={computed:-1/0,value:-1/0};return y(a,function(a,e,f){var g=b?b.call(c,a,e,f):a;g>d.computed&&(d={value:a,computed:g})}),d.value},x.min=function(a,b,c){if(!b&&x.isArray(a)&&a[0]===+a[0]&&a.length<65535)return Math.min.apply(Math,a);if(!b&&x.isEmpty(a))return 1/0;var d={computed:1/0,value:1/0};return y(a,function(a,e,f){var g=b?b.call(c,a,e,f):a;g<d.computed&&(d={value:a,computed:g})}),d.value},x.shuffle=function(a){var b,c=0,d=[];return y(a,function(a){b=x.random(c++),d[c-1]=d[b],d[b]=a}),d},x.sample=function(a,b,c){return arguments.length<2||c?a[x.random(a.length-1)]:x.shuffle(a).slice(0,Math.max(0,b))};var B=function(a){return x.isFunction(a)?a:function(b){return b[a]}};x.sortBy=function(a,b,c){var d=B(b);return x.pluck(x.map(a,function(a,b,e){return{value:a,index:b,criteria:d.call(c,a,b,e)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;if(c!==d){if(c>d||void 0===c)return 1;if(d>c||void 0===d)return-1}return a.index-b.index}),"value")};var C=function(a){return function(b,c,d){var e={},f=null==c?x.identity:B(c);return y(b,function(c,g){var h=f.call(d,c,g,b);a(e,h,c)}),e}};x.groupBy=C(function(a,b,c){(x.has(a,b)?a[b]:a[b]=[]).push(c)}),x.indexBy=C(function(a,b,c){a[b]=c}),x.countBy=C(function(a,b){x.has(a,b)?a[b]++:a[b]=1}),x.sortedIndex=function(a,b,c,d){c=null==c?x.identity:B(c);for(var e=c.call(d,b),f=0,g=a.length;g>f;){var h=f+g>>>1;c.call(d,a[h])<e?f=h+1:g=h}return f},x.toArray=function(a){return a?x.isArray(a)?h.call(a):a.length===+a.length?x.map(a,x.identity):x.values(a):[]},x.size=function(a){return null==a?0:a.length===+a.length?a.length:x.keys(a).length},x.first=x.head=x.take=function(a,b,c){return null==a?void 0:null==b||c?a[0]:h.call(a,0,b)},x.initial=function(a,b,c){return h.call(a,0,a.length-(null==b||c?1:b))},x.last=function(a,b,c){return null==a?void 0:null==b||c?a[a.length-1]:h.call(a,Math.max(a.length-b,0))},x.rest=x.tail=x.drop=function(a,b,c){return h.call(a,null==b||c?1:b)},x.compact=function(a){return x.filter(a,x.identity)};var D=function(a,b,c){return b&&x.every(a,x.isArray)?i.apply(c,a):(y(a,function(a){x.isArray(a)||x.isArguments(a)?b?g.apply(c,a):D(a,b,c):c.push(a)}),c)};x.flatten=function(a,b){return D(a,b,[])},x.without=function(a){return x.difference(a,h.call(arguments,1))},x.uniq=x.unique=function(a,b,c,d){x.isFunction(b)&&(d=c,c=b,b=!1);var e=c?x.map(a,c,d):a,f=[],g=[];return y(e,function(c,d){(b?d&&g[g.length-1]===c:x.contains(g,c))||(g.push(c),f.push(a[d]))}),f},x.union=function(){return x.uniq(x.flatten(arguments,!0))},x.intersection=function(a){var b=h.call(arguments,1);return x.filter(x.uniq(a),function(a){return x.every(b,function(b){return x.indexOf(b,a)>=0})})},x.difference=function(a){var b=i.apply(d,h.call(arguments,1));return x.filter(a,function(a){return!x.contains(b,a)})},x.zip=function(){for(var a=x.max(x.pluck(arguments,"length").concat(0)),b=new Array(a),c=0;a>c;c++)b[c]=x.pluck(arguments,""+c);return b},x.object=function(a,b){if(null==a)return{};for(var c={},d=0,e=a.length;e>d;d++)b?c[a[d]]=b[d]:c[a[d][0]]=a[d][1];return c},x.indexOf=function(a,b,c){if(null==a)return-1;var d=0,e=a.length;if(c){if("number"!=typeof c)return d=x.sortedIndex(a,b),a[d]===b?d:-1;d=0>c?Math.max(0,e+c):c}if(s&&a.indexOf===s)return a.indexOf(b,c);for(;e>d;d++)if(a[d]===b)return d;return-1},x.lastIndexOf=function(a,b,c){if(null==a)return-1;var d=null!=c;if(t&&a.lastIndexOf===t)return d?a.lastIndexOf(b,c):a.lastIndexOf(b);for(var e=d?c:a.length;e--;)if(a[e]===b)return e;return-1},x.range=function(a,b,c){arguments.length<=1&&(b=a||0,a=0),c=arguments[2]||1;for(var d=Math.max(Math.ceil((b-a)/c),0),e=0,f=new Array(d);d>e;)f[e++]=a,a+=c;return f};var E=function(){};x.bind=function(a,b){var c,d;if(w&&a.bind===w)return w.apply(a,h.call(arguments,1));if(!x.isFunction(a))throw new TypeError;return c=h.call(arguments,2),d=function(){if(!(this instanceof d))return a.apply(b,c.concat(h.call(arguments)));E.prototype=a.prototype;var e=new E;E.prototype=null;var f=a.apply(e,c.concat(h.call(arguments)));return Object(f)===f?f:e}},x.partial=function(a){var b=h.call(arguments,1);return function(){return a.apply(this,b.concat(h.call(arguments)))}},x.bindAll=function(a){var b=h.call(arguments,1);if(0===b.length)throw new Error("bindAll must be passed function names");return y(b,function(b){a[b]=x.bind(a[b],a)}),a},x.memoize=function(a,b){var c={};return b||(b=x.identity),function(){var d=b.apply(this,arguments);return x.has(c,d)?c[d]:c[d]=a.apply(this,arguments)}},x.delay=function(a,b){var c=h.call(arguments,2);return setTimeout(function(){return a.apply(null,c)},b)},x.defer=function(a){return x.delay.apply(x,[a,1].concat(h.call(arguments,1)))},x.throttle=function(a,b,c){var d,e,f,g=null,h=0;c||(c={});var i=function(){h=c.leading===!1?0:new Date,g=null,f=a.apply(d,e)};return function(){var j=new Date;h||c.leading!==!1||(h=j);var k=b-(j-h);return d=this,e=arguments,0>=k?(clearTimeout(g),g=null,h=j,f=a.apply(d,e)):g||c.trailing===!1||(g=setTimeout(i,k)),f}},x.debounce=function(a,b,c){var d,e,f,g,h;return function(){f=this,e=arguments,g=new Date;var i=function(){var j=new Date-g;b>j?d=setTimeout(i,b-j):(d=null,c||(h=a.apply(f,e)))},j=c&&!d;return d||(d=setTimeout(i,b)),j&&(h=a.apply(f,e)),h}},x.once=function(a){var b,c=!1;return function(){return c?b:(c=!0,b=a.apply(this,arguments),a=null,b)}},x.wrap=function(a,b){return function(){var c=[a];return g.apply(c,arguments),b.apply(this,c)}},x.compose=function(){var a=arguments;return function(){for(var b=arguments,c=a.length-1;c>=0;c--)b=[a[c].apply(this,b)];return b[0]}},x.after=function(a,b){return function(){return--a<1?b.apply(this,arguments):void 0}},x.keys=v||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var b=[];for(var c in a)x.has(a,c)&&b.push(c);return b},x.values=function(a){for(var b=x.keys(a),c=b.length,d=new Array(c),e=0;c>e;e++)d[e]=a[b[e]];return d},x.pairs=function(a){for(var b=x.keys(a),c=b.length,d=new Array(c),e=0;c>e;e++)d[e]=[b[e],a[b[e]]];return d},x.invert=function(a){for(var b={},c=x.keys(a),d=0,e=c.length;e>d;d++)b[a[c[d]]]=c[d];return b},x.functions=x.methods=function(a){var b=[];for(var c in a)x.isFunction(a[c])&&b.push(c);return b.sort()},x.extend=function(a){return y(h.call(arguments,1),function(b){if(b)for(var c in b)a[c]=b[c]}),a},x.pick=function(a){var b={},c=i.apply(d,h.call(arguments,1));return y(c,function(c){c in a&&(b[c]=a[c])}),b},x.omit=function(a){var b={},c=i.apply(d,h.call(arguments,1));for(var e in a)x.contains(c,e)||(b[e]=a[e]);return b},x.defaults=function(a){return y(h.call(arguments,1),function(b){if(b)for(var c in b)void 0===a[c]&&(a[c]=b[c])}),a},x.clone=function(a){return x.isObject(a)?x.isArray(a)?a.slice():x.extend({},a):a},x.tap=function(a,b){return b(a),a};var F=function(a,b,c,d){if(a===b)return 0!==a||1/a==1/b;if(null==a||null==b)return a===b;a instanceof x&&(a=a._wrapped),b instanceof x&&(b=b._wrapped);var e=j.call(a);if(e!=j.call(b))return!1;switch(e){case"[object String]":return a==String(b);case"[object Number]":return a!=+a?b!=+b:0==a?1/a==1/b:a==+b;case"[object Date]":case"[object Boolean]":return+a==+b;case"[object RegExp]":return a.source==b.source&&a.global==b.global&&a.multiline==b.multiline&&a.ignoreCase==b.ignoreCase}if("object"!=typeof a||"object"!=typeof b)return!1;for(var f=c.length;f--;)if(c[f]==a)return d[f]==b;var g=a.constructor,h=b.constructor;if(g!==h&&!(x.isFunction(g)&&g instanceof g&&x.isFunction(h)&&h instanceof h))return!1;c.push(a),d.push(b);var i=0,k=!0;if("[object Array]"==e){if(i=a.length,k=i==b.length)for(;i--&&(k=F(a[i],b[i],c,d)););}else{for(var l in a)if(x.has(a,l)&&(i++,!(k=x.has(b,l)&&F(a[l],b[l],c,d))))break;if(k){for(l in b)if(x.has(b,l)&&!i--)break;k=!i}}return c.pop(),d.pop(),k};x.isEqual=function(a,b){return F(a,b,[],[])},x.isEmpty=function(a){if(null==a)return!0;if(x.isArray(a)||x.isString(a))return 0===a.length;for(var b in a)if(x.has(a,b))return!1;return!0},x.isElement=function(a){return!(!a||1!==a.nodeType)},x.isArray=u||function(a){return"[object Array]"==j.call(a)},x.isObject=function(a){return a===Object(a)},y(["Arguments","Function","String","Number","Date","RegExp"],function(a){x["is"+a]=function(b){return j.call(b)=="[object "+a+"]"}}),x.isArguments(arguments)||(x.isArguments=function(a){return!(!a||!x.has(a,"callee"))}),"function"!=typeof/./&&(x.isFunction=function(a){return"function"==typeof a}),x.isFinite=function(a){return isFinite(a)&&!isNaN(parseFloat(a))},x.isNaN=function(a){return x.isNumber(a)&&a!=+a},x.isBoolean=function(a){return a===!0||a===!1||"[object Boolean]"==j.call(a)},x.isNull=function(a){return null===a},x.isUndefined=function(a){return void 0===a},x.has=function(a,b){return k.call(a,b)},x.noConflict=function(){return a._=b,this},x.identity=function(a){return a},x.times=function(a,b,c){for(var d=Array(Math.max(0,a)),e=0;a>e;e++)d[e]=b.call(c,e);return d},x.random=function(a,b){return null==b&&(b=a,a=0),a+Math.floor(Math.random()*(b-a+1))};var G={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"}};G.unescape=x.invert(G.escape);var H={escape:new RegExp("["+x.keys(G.escape).join("")+"]","g"),unescape:new RegExp("("+x.keys(G.unescape).join("|")+")","g")};x.each(["escape","unescape"],function(a){x[a]=function(b){return null==b?"":(""+b).replace(H[a],function(b){return G[a][b]})}}),x.result=function(a,b){if(null==a)return void 0;var c=a[b];return x.isFunction(c)?c.call(a):c},x.mixin=function(a){y(x.functions(a),function(b){var c=x[b]=a[b];x.prototype[b]=function(){var a=[this._wrapped];return g.apply(a,arguments),M.call(this,c.apply(x,a))}})};var I=0;x.uniqueId=function(a){var b=++I+"";return a?a+b:b},x.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var J=/(.)^/,K={"'":"'","\\":"\\","\r":"r","\n":"n","	":"t","\u2028":"u2028","\u2029":"u2029"},L=/\\|'|\r|\n|\t|\u2028|\u2029/g;x.template=function(a,b,c){var d;c=x.defaults({},c,x.templateSettings);var e=new RegExp([(c.escape||J).source,(c.interpolate||J).source,(c.evaluate||J).source].join("|")+"|$","g"),f=0,g="__p+='";a.replace(e,function(b,c,d,e,h){return g+=a.slice(f,h).replace(L,function(a){return"\\"+K[a]}),c&&(g+="'+\n((__t=("+c+"))==null?'':_.escape(__t))+\n'"),d&&(g+="'+\n((__t=("+d+"))==null?'':__t)+\n'"),e&&(g+="';\n"+e+"\n__p+='"),f=h+b.length,b}),g+="';\n",c.variable||(g="with(obj||{}){\n"+g+"}\n"),g="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+g+"return __p;\n";try{d=new Function(c.variable||"obj","_",g)}catch(h){throw h.source=g,h}if(b)return d(b,x);var i=function(a){return d.call(this,a,x)};return i.source="function("+(c.variable||"obj")+"){\n"+g+"}",i},x.chain=function(a){return x(a).chain()};var M=function(a){return this._chain?x(a).chain():a};x.mixin(x),y(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var b=d[a];x.prototype[a]=function(){var c=this._wrapped;return b.apply(c,arguments),"shift"!=a&&"splice"!=a||0!==c.length||delete c[0],M.call(this,c)}}),y(["concat","join","slice"],function(a){var b=d[a];x.prototype[a]=function(){return M.call(this,b.apply(this._wrapped,arguments))}}),x.extend(x.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this),function(a,b){"use strict";function c(){function a(a,c){return b.extend(new(b.extend(function(){},{prototype:a})),c)}function c(a,b){var c=b.caseInsensitiveMatch,d={originalPath:a,regexp:a},e=d.keys=[];return a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(a,b,c,d){var f="?"===d?d:null,g="*"===d?d:null;return e.push({name:c,optional:!!f}),b=b||"",""+(f?"":b)+"(?:"+(f?b:"")+(g&&"(.+?)"||"([^/]+)")+(f||"")+")"+(f||"")}).replace(/([\/$\*])/g,"\\$1"),d.regexp=new RegExp("^"+a+"$",c?"i":""),d}var d={};this.when=function(a,e){if(d[a]=b.extend({reloadOnSearch:!0},e,a&&c(a,e)),a){var f="/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";d[f]=b.extend({redirectTo:a},c(f,e))}return this},this.otherwise=function(a){return this.when(null,a),this},this.$get=["$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce",function(c,e,f,g,h,i,j,k){function l(a,b){var c=b.keys,d={};if(!b.regexp)return null;var e=b.regexp.exec(a);if(!e)return null;for(var f=1,g=e.length;g>f;++f){var h=c[f-1],i="string"==typeof e[f]?decodeURIComponent(e[f]):e[f];h&&i&&(d[h.name]=i)}return d}function m(){var a=n(),d=q.current;a&&d&&a.$$route===d.$$route&&b.equals(a.pathParams,d.pathParams)&&!a.reloadOnSearch&&!p?(d.params=a.params,b.copy(d.params,f),c.$broadcast("$routeUpdate",d)):(a||d)&&(p=!1,c.$broadcast("$routeChangeStart",a,d),q.current=a,a&&a.redirectTo&&(b.isString(a.redirectTo)?e.path(o(a.redirectTo,a.params)).search(a.params).replace():e.url(a.redirectTo(a.pathParams,e.path(),e.search())).replace()),g.when(a).then(function(){if(a){var c,d,e=b.extend({},a.resolve);return b.forEach(e,function(a,c){e[c]=b.isString(a)?h.get(a):h.invoke(a)}),b.isDefined(c=a.template)?b.isFunction(c)&&(c=c(a.params)):b.isDefined(d=a.templateUrl)&&(b.isFunction(d)&&(d=d(a.params)),d=k.getTrustedResourceUrl(d),b.isDefined(d)&&(a.loadedTemplateUrl=d,c=i.get(d,{cache:j}).then(function(a){return a.data}))),b.isDefined(c)&&(e.$template=c),g.all(e)}}).then(function(e){a==q.current&&(a&&(a.locals=e,b.copy(a.params,f)),c.$broadcast("$routeChangeSuccess",a,d))},function(b){a==q.current&&c.$broadcast("$routeChangeError",a,d,b)}))}function n(){var c,f;return b.forEach(d,function(d){!f&&(c=l(e.path(),d))&&(f=a(d,{params:b.extend({},e.search(),c),pathParams:c}),f.$$route=d)}),f||d[null]&&a(d[null],{params:{},pathParams:{}})}function o(a,c){var d=[];return b.forEach((a||"").split(":"),function(a,b){if(0===b)d.push(a);else{var e=a.match(/(\w+)(.*)/),f=e[1];d.push(c[f]),d.push(e[2]||""),delete c[f]}}),d.join("")}var p=!1,q={routes:d,reload:function(){p=!0,c.$evalAsync(m)}};return c.$on("$locationChangeSuccess",m),q}]}function d(){this.$get=function(){return{}}}function e(a,c,d){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(e,f,g,h,i){function j(){n&&(n.remove(),n=null),l&&(l.$destroy(),l=null),m&&(d.leave(m,function(){n=null}),n=m,m=null)}function k(){var g=a.current&&a.current.locals,h=g&&g.$template;if(b.isDefined(h)){var k=e.$new(),n=a.current,q=i(k,function(a){d.enter(a,null,m||f,function(){!b.isDefined(o)||o&&!e.$eval(o)||c()}),j()});m=q,l=n.scope=k,l.$emit("$viewContentLoaded"),l.$eval(p)}else j()}var l,m,n,o=g.autoscroll,p=g.onload||"";e.$on("$routeChangeSuccess",k),k()}}}function f(a,b,c){return{restrict:"ECA",priority:-400,link:function(d,e){var f=c.current,g=f.locals;e.html(g.$template);var h=a(e.contents());if(f.controller){g.$scope=d;var i=b(f.controller,g);f.controllerAs&&(d[f.controllerAs]=i),e.data("$ngControllerController",i),e.children().data("$ngControllerController",i)}h(d)}}}var g=b.module("ngRoute",["ng"]).provider("$route",c);g.provider("$routeParams",d),g.directive("ngView",e),g.directive("ngView",f),e.$inject=["$route","$anchorScroll","$animate"],f.$inject=["$compile","$controller","$route"]}(window,window.angular),function(a,b,c){"use strict";function d(a){return null!=a&&""!==a&&"hasOwnProperty"!==a&&h.test("."+a)}function e(a,b){if(!d(b))throw g("badmember",'Dotted member path "@{0}" is invalid.',b);for(var e=b.split("."),f=0,h=e.length;h>f&&a!==c;f++){var i=e[f];a=null!==a?a[i]:c}return a}function f(a,c){c=c||{},b.forEach(c,function(a,b){delete c[b]});for(var d in a)!a.hasOwnProperty(d)||"$"===d.charAt(0)&&"$"===d.charAt(1)||(c[d]=a[d]);return c}var g=b.$$minErr("$resource"),h=/^(\.[a-zA-Z_$][0-9a-zA-Z_$]*)+$/;b.module("ngResource",["ng"]).factory("$resource",["$http","$q",function(a,d){function h(a){return i(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function i(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,b?"%20":"+")}function j(a,b){this.template=a,this.defaults=b||{},this.urlParams={}}function k(h,i,r){function s(a,b){var c={};return b=o({},i,b),n(b,function(b,d){q(b)&&(b=b()),c[d]=b&&b.charAt&&"@"==b.charAt(0)?e(a,b.substr(1)):b}),c}function t(a){return a.resource}function u(a){f(a||{},this)}var v=new j(h);return r=o({},l,r),n(r,function(e,h){var i=/^(POST|PUT|PATCH)$/i.test(e.method);u[h]=function(h,j,k,l){var r,w,x,y={};switch(arguments.length){case 4:x=l,w=k;case 3:case 2:if(!q(j)){y=h,r=j,w=k;break}if(q(h)){w=h,x=j;break}w=j,x=k;case 1:q(h)?w=h:i?r=h:y=h;break;case 0:break;default:throw g("badargs","Expected up to 4 arguments [params, data, success, error], got {0} arguments",arguments.length)}var z=this instanceof u,A=z?r:e.isArray?[]:new u(r),B={},C=e.interceptor&&e.interceptor.response||t,D=e.interceptor&&e.interceptor.responseError||c;n(e,function(a,b){"params"!=b&&"isArray"!=b&&"interceptor"!=b&&(B[b]=p(a))}),i&&(B.data=r),v.setUrlParams(B,o({},s(r,e.params||{}),y),e.url);var E=a(B).then(function(a){var c=a.data,d=A.$promise;if(c){if(b.isArray(c)!==!!e.isArray)throw g("badcfg","Error in resource configuration. Expected response to contain an {0} but got an {1}",e.isArray?"array":"object",b.isArray(c)?"array":"object");e.isArray?(A.length=0,n(c,function(a){A.push(new u(a))})):(f(c,A),A.$promise=d)}return A.$resolved=!0,a.resource=A,a},function(a){return A.$resolved=!0,(x||m)(a),d.reject(a)});return E=E.then(function(a){var b=C(a);return(w||m)(b,a.headers),b},D),z?E:(A.$promise=E,A.$resolved=!1,A)},u.prototype["$"+h]=function(a,b,c){q(a)&&(c=b,b=a,a={});var d=u[h].call(this,a,this,b,c);return d.$promise||d}}),u.bind=function(a){return k(h,o({},i,a),r)},u}var l={get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}},m=b.noop,n=b.forEach,o=b.extend,p=b.copy,q=b.isFunction;return j.prototype={setUrlParams:function(a,c,d){var e,f,i=this,j=d||i.template,k=i.urlParams={};n(j.split(/\W/),function(a){if("hasOwnProperty"===a)throw g("badname","hasOwnProperty is not a valid parameter name.");!new RegExp("^\\d+$").test(a)&&a&&new RegExp("(^|[^\\\\]):"+a+"(\\W|$)").test(j)&&(k[a]=!0)}),j=j.replace(/\\:/g,":"),c=c||{},n(i.urlParams,function(a,d){e=c.hasOwnProperty(d)?c[d]:i.defaults[d],b.isDefined(e)&&null!==e?(f=h(e),j=j.replace(new RegExp(":"+d+"(\\W|$)","g"),function(a,b){return f+b})):j=j.replace(new RegExp("(/?):"+d+"(\\W|$)","g"),function(a,b,c){return"/"==c.charAt(0)?c:b+c})}),j=j.replace(/\/+$/,"")||"/",j=j.replace(/\/\.(?=\w+($|\?))/,"."),a.url=j.replace(/\/\\\./,"/."),n(c,function(b,c){i.urlParams[c]||(a.params=a.params||{},a.params[c]=b)})}},k}])}(window,window.angular),function(a,b,c){"use strict";b.module("ngCookies",["ng"]).factory("$cookies",["$rootScope","$browser",function(a,d){function e(){var a,e,f,i;for(a in h)k(g[a])&&d.cookies(a,c);for(a in g)e=g[a],b.isString(e)||(e=""+e,g[a]=e),e!==h[a]&&(d.cookies(a,e),i=!0);if(i){i=!1,f=d.cookies();for(a in g)g[a]!==f[a]&&(k(f[a])?delete g[a]:g[a]=f[a],i=!0)}}var f,g={},h={},i=!1,j=b.copy,k=b.isUndefined;return d.addPollFn(function(){var b=d.cookies();f!=b&&(f=b,j(b,h),j(b,g),i&&a.$apply())})(),i=!0,a.$watch(e),g}]).factory("$cookieStore",["$cookies",function(a){return{get:function(c){var d=a[c];return d?b.fromJson(d):d},put:function(c,d){a[c]=b.toJson(d)},remove:function(b){delete a[b]}}}])}(window,window.angular),function(a,b){"use strict";function c(){this.$get=["$$sanitizeUri",function(a){return function(b){var c=[];return f(b,i(c,function(b,c){return!/^unsafe/.test(a(b,c))})),c.join("")}}]}function d(a){var c=[],d=i(c,b.noop);return d.chars(a),c.join("")}function e(a){var b,c={},d=a.split(",");for(b=0;b<d.length;b++)c[d[b]]=!0;return c}function f(a,c){function d(a,d,f,h){if(d=b.lowercase(d),x[d])for(;s.last()&&y[s.last()];)e("",s.last());w[d]&&s.last()==d&&e("",d),h=t[d]||!!h,h||s.push(d);var i={};f.replace(m,function(a,b,c,d,e){var f=c||d||e||"";i[b]=g(f)}),c.start&&c.start(d,i,h)}function e(a,d){var e,f=0;if(d=b.lowercase(d))for(f=s.length-1;f>=0&&s[f]!=d;f--);if(f>=0){for(e=s.length-1;e>=f;e--)c.end&&c.end(s[e]);s.length=f}}var f,h,i,s=[],u=a;for(s.last=function(){return s[s.length-1]};a;){if(h=!0,s.last()&&z[s.last()])a=a.replace(new RegExp("(.*)<\\s*\\/\\s*"+s.last()+"[^>]*>","i"),function(a,b){return b=b.replace(p,"$1").replace(r,"$1"),c.chars&&c.chars(g(b)),""}),e("",s.last());else if(0===a.indexOf("<!--")?(f=a.indexOf("--",4),f>=0&&a.lastIndexOf("-->",f)===f&&(c.comment&&c.comment(a.substring(4,f)),a=a.substring(f+3),h=!1)):q.test(a)?(i=a.match(q),i&&(a=a.replace(i[0],""),h=!1)):o.test(a)?(i=a.match(l),i&&(a=a.substring(i[0].length),i[0].replace(l,e),h=!1)):n.test(a)&&(i=a.match(k),i&&(a=a.substring(i[0].length),i[0].replace(k,d),h=!1)),h){f=a.indexOf("<");var v=0>f?a:a.substring(0,f);a=0>f?"":a.substring(f),c.chars&&c.chars(g(v))}if(a==u)throw j("badparse","The sanitizer was unable to parse the following block of html: {0}",a);u=a}e()}function g(a){if(!a)return"";var b=E.exec(a),c=b[1],d=b[3],e=b[2];return e&&(D.innerHTML=e.replace(/</g,"&lt;"),e="textContent"in D?D.textContent:D.innerText),c+e+d}function h(a){return a.replace(/&/g,"&amp;").replace(s,function(a){return"&#"+a.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function i(a,c){var d=!1,e=b.bind(a,a.push);return{start:function(a,f,g){a=b.lowercase(a),!d&&z[a]&&(d=a),d||A[a]!==!0||(e("<"),e(a),b.forEach(f,function(d,f){var g=b.lowercase(f),i="img"===a&&"src"===g||"background"===g;C[g]!==!0||B[g]===!0&&!c(d,i)||(e(" "),e(f),e('="'),e(h(d)),e('"'))}),e(g?"/>":">"))},end:function(a){a=b.lowercase(a),d||A[a]!==!0||(e("</"),e(a),e(">")),a==d&&(d=!1)},chars:function(a){d||e(h(a))}}}var j=b.$$minErr("$sanitize"),k=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,l=/^<\s*\/\s*([\w:-]+)[^>]*>/,m=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,n=/^</,o=/^<\s*\//,p=/<!--(.*?)-->/g,q=/<!DOCTYPE([^>]*?)>/i,r=/<!\[CDATA\[(.*?)]]>/g,s=/([^\#-~| |!])/g,t=e("area,br,col,hr,img,wbr"),u=e("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),v=e("rp,rt"),w=b.extend({},v,u),x=b.extend({},u,e("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),y=b.extend({},v,e("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),z=e("script,style"),A=b.extend({},t,x,y,w),B=e("background,cite,href,longdesc,src,usemap"),C=b.extend({},B,e("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,target,title,type,valign,value,vspace,width")),D=document.createElement("pre"),E=/^(\s*)([\s\S]*?)(\s*)$/;b.module("ngSanitize",[]).provider("$sanitize",c),b.module("ngSanitize").filter("linky",["$sanitize",function(a){var c=/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>]/,e=/^mailto:/;return function(f,g){function h(a){a&&n.push(d(a))}function i(a,c){n.push("<a "),b.isDefined(g)&&(n.push('target="'),n.push(g),n.push('" ')),n.push('href="'),n.push(a),n.push('">'),h(c),n.push("</a>")}if(!f)return f;for(var j,k,l,m=f,n=[];j=m.match(c);)k=j[0],j[2]==j[3]&&(k="mailto:"+k),l=j.index,h(m.substr(0,l)),i(k,j[0].replace(e,"")),m=m.substring(l+j[0].length);return h(m),a(n.join(""))}}])}(window,window.angular),function(){var a=angular.module("restangular",[]);a.provider("Restangular",function(){var a={};a.init=function(a,b){function c(a,b,c,d){var e={};return _.each(_.keys(d),function(f){var g=d[f];g.params=_.extend({},g.params,a.defaultRequestParams[g.method.toLowerCase()]),_.isEmpty(g.params)&&delete g.params,e[f]=a.isSafe(g.method)?function(){return b(_.extend(g,{url:c}))}:function(a){return b(_.extend(g,{url:c,data:a}))}}),e}a.configuration=b;var d=["get","head","options","trace","getlist"];b.isSafe=function(a){return _.contains(d,a.toLowerCase())
-};var e=/^https?:\/\//i;b.isAbsoluteUrl=function(a){return a&&e.test(a)},b.baseUrl=_.isUndefined(b.baseUrl)?"":b.baseUrl,a.setBaseUrl=function(a){return b.baseUrl=/\/$/.test(a)?a.substring(0,a.length-1):a,this},b.extraFields=b.extraFields||[],a.setExtraFields=function(a){return b.extraFields=a,this},b.defaultHttpFields=b.defaultHttpFields||{},a.setDefaultHttpFields=function(a){return b.defaultHttpFields=a,this},b.withHttpValues=function(a,c){return _.defaults(c,a,b.defaultHttpFields)},b.encodeIds=_.isUndefined(b.encodeIds)?!0:b.encodeIds,a.setEncodeIds=function(a){b.encodeIds=a},b.defaultRequestParams=b.defaultRequestParams||{get:{},post:{},put:{},remove:{},common:{}},a.setDefaultRequestParams=function(a,c){var d=[],e=c||a;return _.isUndefined(c)?d.push("common"):_.isArray(a)?d=a:d.push(a),_.each(d,function(a){b.defaultRequestParams[a]=e}),this},a.requestParams=b.defaultRequestParams,b.defaultHeaders=b.defaultHeaders||{},a.setDefaultHeaders=function(c){return b.defaultHeaders=c,a.defaultHeaders=b.defaultHeaders,this},a.defaultHeaders=b.defaultHeaders,b.methodOverriders=b.methodOverriders||[],a.setMethodOverriders=function(a){var c=_.extend([],a);return b.isOverridenMethod("delete",c)&&c.push("remove"),b.methodOverriders=c,this},b.isOverridenMethod=function(a,c){var d=c||b.methodOverriders;return!_.isUndefined(_.find(d,function(b){return b.toLowerCase()===a.toLowerCase()}))},b.urlCreator=b.urlCreator||"path",a.setUrlCreator=function(a){if(!_.has(b.urlCreatorFactory,a))throw new Error("URL Path selected isn't valid");return b.urlCreator=a,this},b.restangularFields=b.restangularFields||{id:"id",route:"route",parentResource:"parentResource",restangularCollection:"restangularCollection",cannonicalId:"__cannonicalId",etag:"restangularEtag",selfLink:"href",get:"get",getList:"getList",put:"put",post:"post",remove:"remove",head:"head",trace:"trace",options:"options",patch:"patch",getRestangularUrl:"getRestangularUrl",getRequestedUrl:"getRequestedUrl",putElement:"putElement",addRestangularMethod:"addRestangularMethod",getParentList:"getParentList",clone:"clone",ids:"ids",httpConfig:"_$httpConfig",reqParams:"reqParams"},a.setRestangularFields=function(a){return b.restangularFields=_.extend(b.restangularFields,a),this},b.setFieldToElem=function(a,b,c){var d=a.split("."),e=b;return _.each(_.initial(d),function(a){e[a]={},e=e[a]}),e[_.last(d)]=c,this},b.getFieldFromElem=function(a,b){var c=a.split("."),d=angular.copy(b);return _.each(c,function(a){d&&(d=d[a])}),d},b.setIdToElem=function(a,c){return b.setFieldToElem(b.restangularFields.id,a,c),this},b.getIdFromElem=function(a){return b.getFieldFromElem(b.restangularFields.id,a)},b.isValidId=function(a){return""!==a&&!_.isUndefined(a)&&!_.isNull(a)},b.setUrlToElem=function(a,c){return b.setFieldToElem(b.restangularFields.selfLink,a,c),this},b.getUrlFromElem=function(a){return b.getFieldFromElem(b.restangularFields.selfLink,a)},b.useCannonicalId=_.isUndefined(b.useCannonicalId)?!1:b.useCannonicalId,a.setUseCannonicalId=function(a){return b.useCannonicalId=a,this},b.getCannonicalIdFromElem=function(a){var c=a[b.restangularFields.cannonicalId],d=b.isValidId(c)?c:b.getIdFromElem(a);return d},b.responseExtractor=b.responseExtractor||function(a){return a},a.setResponseExtractor=function(a){return b.responseExtractor=a,this},a.setResponseInterceptor=a.setResponseExtractor,b.fullRequestInterceptor=b.fullRequestInterceptor||function(a,b,c,d,e,f,g){return{element:a,headers:e,params:f,httpConfig:g}},a.setRequestInterceptor=function(a){return b.fullRequestInterceptor=function(b,c,d,e,f,g,h){return{headers:f,params:g,element:a(b,c,d,e),httpConfig:h}},this},a.setFullRequestInterceptor=function(a){return b.fullRequestInterceptor=a,this},b.errorInterceptor=b.errorInterceptor||function(){},a.setErrorInterceptor=function(a){return b.errorInterceptor=a,this},b.onBeforeElemRestangularized=b.onBeforeElemRestangularized||function(a){return a},a.setOnBeforeElemRestangularized=function(a){return b.onBeforeElemRestangularized=a,this},b.onElemRestangularized=b.onElemRestangularized||function(a){return a},a.setOnElemRestangularized=function(a){return b.onElemRestangularized=a,this},a.setListTypeIsArray=function(){},b.shouldSaveParent=b.shouldSaveParent||function(){return!0},a.setParentless=function(a){return _.isArray(a)?b.shouldSaveParent=function(b){return!_.contains(a,b)}:_.isBoolean(a)&&(b.shouldSaveParent=function(){return!a}),this},b.suffix=_.isUndefined(b.suffix)?null:b.suffix,a.setRequestSuffix=function(a){return b.suffix=a,this},b.transformers=b.transformers||{},a.addElementTransformer=function(a,c,d){var e=null,f=null;2===arguments.length?f=c:(f=d,e=c);var g=b.transformers[a];g||(g=b.transformers[a]=[]),g.push(function(a,b){return _.isNull(e)||a==e?f(b):b})},a.extendCollection=function(b,c){return a.addElementTransformer(b,!0,c)},a.extendModel=function(b,c){return a.addElementTransformer(b,!1,c)},b.transformElem=function(a,c,d,e){var f=b.transformers[d],g=a;return f&&_.each(f,function(a){g=a(c,g)}),b.onElemRestangularized(g,c,d,e)},b.fullResponse=_.isUndefined(b.fullResponse)?!1:b.fullResponse,a.setFullResponse=function(a){return b.fullResponse=a,this},b.urlCreatorFactory={};var f=function(){};f.prototype.setConfig=function(a){return this.config=a,this},f.prototype.parentsArray=function(a){for(var b=[];a;)b.push(a),a=a[this.config.restangularFields.parentResource];return b.reverse()},f.prototype.resource=function(a,d,e,f,g,h,i,j){var k=_.defaults(g||{},this.config.defaultRequestParams.common),l=_.defaults(f||{},this.config.defaultHeaders);i&&(b.isSafe(j)?l["If-None-Match"]=i:l["If-Match"]=i);var m=this.base(a);if(h){var n="";/\/$/.test(m)||(n+="/"),n+=h,m+=n}return this.config.suffix&&-1===m.indexOf(this.config.suffix,m.length-this.config.suffix.length)&&(m+=this.config.suffix),a[this.config.restangularFields.httpConfig]=void 0,c(this.config,d,m,{getList:this.config.withHttpValues(e,{method:"GET",params:k,headers:l}),get:this.config.withHttpValues(e,{method:"GET",params:k,headers:l}),put:this.config.withHttpValues(e,{method:"PUT",params:k,headers:l}),post:this.config.withHttpValues(e,{method:"POST",params:k,headers:l}),remove:this.config.withHttpValues(e,{method:"DELETE",params:k,headers:l}),head:this.config.withHttpValues(e,{method:"HEAD",params:k,headers:l}),trace:this.config.withHttpValues(e,{method:"TRACE",params:k,headers:l}),options:this.config.withHttpValues(e,{method:"OPTIONS",params:k,headers:l}),patch:this.config.withHttpValues(e,{method:"PATCH",params:k,headers:l})})};var g=function(){};g.prototype=new f,g.prototype.base=function(a){var c=this;return _.reduce(this.parentsArray(a),function(a,d){var e,f=c.config.getUrlFromElem(d);if(f){if(c.config.isAbsoluteUrl(f))return f;e=f}else if(e=d[c.config.restangularFields.route],d[c.config.restangularFields.restangularCollection]){var g=d[c.config.restangularFields.ids];g&&(e+="/"+g.join(","))}else{var h;h=c.config.useCannonicalId?c.config.getCannonicalIdFromElem(d):c.config.getIdFromElem(d),b.isValidId(h)&&(e+="/"+(c.config.encodeIds?encodeURIComponent(h):h))}return a+"/"+e},this.config.baseUrl)},g.prototype.fetchUrl=function(a,b){var c=this.base(a);return b&&(c+="/"+b),c},g.prototype.fetchRequestedUrl=function(a,c){function d(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b.sort()}function e(a,b,c){for(var e=d(a),f=0;f<e.length;f++)b.call(c,a[e[f]],e[f]);return e}function f(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,b?"%20":"+")}var g=this.fetchUrl(a,c),h=a[b.restangularFields.reqParams];if(!h)return g;var i=[];return e(h,function(a,b){null!=a&&void 0!=a&&(angular.isArray(a)||(a=[a]),angular.forEach(a,function(a){angular.isObject(a)&&(a=angular.toJson(a)),i.push(f(b)+"="+f(a))}))}),g+(-1===g.indexOf("?")?"?":"&")+i.join("&")},b.urlCreatorFactory.path=g};var b={};a.init(this,b),this.$get=["$http","$q",function(c,d){function e(f){function g(a,b,c,d){if(b[f.restangularFields.route]=c,b[f.restangularFields.getRestangularUrl]=_.bind(N.fetchUrl,N,b),b[f.restangularFields.getRequestedUrl]=_.bind(N.fetchRequestedUrl,N,b),b[f.restangularFields.addRestangularMethod]=_.bind(K,b),b[f.restangularFields.clone]=_.bind(s,b,b),b[f.restangularFields.reqParams]=_.isEmpty(d)?null:d,b.withHttpConfig=_.bind(z,b),b.one=_.bind(h,b,b),b.all=_.bind(i,b,b),b.several=_.bind(j,b,b),b.oneUrl=_.bind(k,b,b),b.allUrl=_.bind(l,b,b),a&&f.shouldSaveParent(c)){var e=f.getIdFromElem(a),g=f.getUrlFromElem(a),m=_.union(_.values(_.pick(f.restangularFields,["route","parentResource"])),f.extraFields),n=_.pick(a,m);f.isValidId(e)&&f.setIdToElem(n,e),f.isValidId(g)&&f.setUrlToElem(n,g),b[f.restangularFields.parentResource]=n}else b[f.restangularFields.parentResource]=null;return b}function h(a,b,c){var d={};return f.setIdToElem(d,c),t(a,d,b)}function i(a,b){return u(a,[],b,!0)}function j(a,b){var c=[];return c[f.restangularFields.ids]=Array.prototype.splice.call(arguments,2),u(a,c,b,!0)}function k(a,b,c){var d={};return f.setUrlToElem(d,c),t(a,d,b)}function l(a,b,c){var d={};return f.setUrlToElem(d,c),u(a,d,b,!0)}function m(a,b){return a.call=_.bind(n,a),a.get=_.bind(o,a),a[f.restangularFields.restangularCollection]=b,b&&(a.push=_.bind(n,a,"push")),a}function n(a){var b=d.defer(),c=arguments;return this.then(function(d){var e=Array.prototype.slice.call(c,1),f=d[a];f.apply(d,e),b.resolve(d)}),m(b.promise,this[f.restangularFields.restangularCollection])}function o(a){var b=d.defer();return this.then(function(c){b.resolve(c[a])}),m(b.promise,this[f.restangularFields.restangularCollection])}function p(a,b,c){return f.fullResponse?a.resolve(_.extend(b,{data:c})):void a.resolve(c)}function q(a){return _.isArray(a)?_.without(a,_.values(_.omit(f.restangularFields,"id"))):_.omit(a,_.values(_.omit(f.restangularFields,"id")))}function r(a){a.customOperation=_.bind(J,a),_.each(["put","post","get","delete"],function(b){_.each(["do","custom"],function(c){var d,e="delete"===b?"remove":b,f=c+b.toUpperCase();d="put"!==e&&"post"!==e?J:function(a,b,c,d,e){return _.bind(J,this)(a,c,d,e,b)},a[f]=_.bind(d,a,e)})}),a.customGETLIST=_.bind(y,a),a.doGETLIST=a.customGETLIST}function s(a){var b=angular.copy(a);return t(b[f.restangularFields.parentResource],b,b[f.restangularFields.route])}function t(a,b,c,d,e){var h=f.onBeforeElemRestangularized(b,!1,c),i=g(a,h,c,e);return f.useCannonicalId&&(i[f.restangularFields.cannonicalId]=f.getIdFromElem(i)),d&&(i[f.restangularFields.getParentList]=function(){return d}),i[f.restangularFields.restangularCollection]=!1,i[f.restangularFields.get]=_.bind(B,i),i[f.restangularFields.getList]=_.bind(y,i),i[f.restangularFields.put]=_.bind(D,i),i[f.restangularFields.post]=_.bind(E,i),i[f.restangularFields.remove]=_.bind(C,i),i[f.restangularFields.head]=_.bind(F,i),i[f.restangularFields.trace]=_.bind(G,i),i[f.restangularFields.options]=_.bind(H,i),i[f.restangularFields.patch]=_.bind(I,i),r(i),f.transformElem(i,!1,c,M)}function u(a,b,c,d){var e=f.onBeforeElemRestangularized(b,!0,c),h=g(a,e,c,d);return h[f.restangularFields.restangularCollection]=!0,h[f.restangularFields.post]=_.bind(E,h,null),h[f.restangularFields.head]=_.bind(F,h),h[f.restangularFields.trace]=_.bind(G,h),h[f.restangularFields.putElement]=_.bind(w,h),h[f.restangularFields.options]=_.bind(H,h),h[f.restangularFields.patch]=_.bind(I,h),h[f.restangularFields.get]=_.bind(v,h),h[f.restangularFields.getList]=_.bind(y,h,null),r(h),f.transformElem(h,!0,c,M)}function v(a,b,c){return this.customGET(a.toString(),b,c)}function w(a,b,c){var e=this,f=this[a],g=d.defer();return f.put(b,c).then(function(b){var c=s(e);c[a]=b,g.resolve(c)},function(a){g.reject(a)}),m(g.promise,!0)}function x(a,b,c,d,e,g){var h=f.responseExtractor(a,b,c,d,e,g),i=e.headers("ETag");return h&&i&&(h[f.restangularFields.etag]=i),h}function y(a,b,e){var g=this,h=d.defer(),i="getList",j=N.fetchUrl(this,a),k=a||g[f.restangularFields.route],l=f.fullRequestInterceptor(null,i,k,j,e||{},b||{},this[f.restangularFields.httpConfig]||{});return N.resource(this,c,l.httpConfig,l.headers,l.params,a,this[f.restangularFields.etag],i).getList().then(function(b){var c=b.data,d=b.config.params,e=x(c,i,k,j,b,h),l=_.map(e,function(b){return g[f.restangularFields.restangularCollection]?t(g[f.restangularFields.parentResource],b,g[f.restangularFields.route],e):t(g,b,a,e)});l=_.extend(e,l),g[f.restangularFields.restangularCollection]?p(h,b,u(g[f.restangularFields.parentResource],l,g[f.restangularFields.route],d)):p(h,b,u(g,l,a,d))},function(a){f.errorInterceptor(a)!==!1&&h.reject(a)}),m(h.promise,!0)}function z(a){return this[f.restangularFields.httpConfig]=a,this}function A(a,b,e,g,h){var i=this,j=d.defer(),k=e||{},l=b||this[f.restangularFields.route],n=N.fetchUrl(this,b),o=g||this,r=o[f.restangularFields.etag];_.isObject(o)&&(o=q(o));var s=f.fullRequestInterceptor(o,a,l,n,h||{},k||{},this[f.restangularFields.httpConfig]||{}),u=function(c){var d=c.data,e=c.config.params,g=x(d,a,l,n,c,j);g?"post"!==a||i[f.restangularFields.restangularCollection]?p(j,c,t(i[f.restangularFields.parentResource],g,i[f.restangularFields.route],e)):p(j,c,t(i,g,b,e)):p(j,c,void 0)},v=function(a){f.errorInterceptor(a)!==!1&&j.reject(a)},w=a,y=_.extend({},s.headers),z=f.isOverridenMethod(a);return z&&(w="post",y=_.extend(y,{"X-HTTP-Method-Override":"remove"===a?"DELETE":a})),f.isSafe(a)?z?N.resource(this,c,s.httpConfig,y,s.params,b,r,w)[w]({}).then(u,v):N.resource(this,c,s.httpConfig,y,s.params,b,r,w)[w]().then(u,v):N.resource(this,c,s.httpConfig,y,s.params,b,r,w)[w](s.element).then(u,v),m(j.promise)}function B(a,b){return _.bind(A,this)("get",void 0,a,void 0,b)}function C(a,b){return _.bind(A,this)("remove",void 0,a,void 0,b)}function D(a,b){return _.bind(A,this)("put",void 0,a,void 0,b)}function E(a,b,c,d){return _.bind(A,this)("post",a,c,b,d)}function F(a,b){return _.bind(A,this)("head",void 0,a,void 0,b)}function G(a,b){return _.bind(A,this)("trace",void 0,a,void 0,b)}function H(a,b){return _.bind(A,this)("options",void 0,a,void 0,b)}function I(a,b,c){return _.bind(A,this)("patch",void 0,b,a,c)}function J(a,b,c,d,e){return _.bind(A,this)(a,b,c,e,d)}function K(a,b,c,d,e,g){var h;h="getList"===b?_.bind(y,this,c):_.bind(J,this,b,c);var i=function(a,b,c){var f=_.defaults({params:a,headers:b,elem:c},{params:d,headers:e,elem:g});return h(f.params,f.headers,f.elem)};this[a]=f.isSafe(b)?i:function(a,b,c){return i(b,c,a)}}function L(c){var d=angular.copy(b);return a.init(d,d),c(d),e(d)}var M={},N=new f.urlCreatorFactory[f.urlCreator];return N.setConfig(f),a.init(M,f),M.copy=_.bind(s,M),M.withConfig=_.bind(L,M),M.one=_.bind(h,M,null),M.all=_.bind(i,M,null),M.several=_.bind(j,M,null),M.oneUrl=_.bind(k,M,null),M.allUrl=_.bind(l,M,null),M.restangularizeElement=_.bind(t,M),M.restangularizeCollection=_.bind(u,M),M}return e(b)}]})}(),function(a,b){"use strict";var c=6,d=4,e="asc",f="desc",g="_ng_field_",h="_ng_depth_",i="_ng_hidden_",j="_ng_column_",k=/CUSTOM_FILTERS/g,l=/COL_FIELD/g,m=/DISPLAY_CELL_TEMPLATE/g,n=/EDITABLE_CELL_TEMPLATE/g,o=/CELL_EDITABLE_CONDITION/g,p=/<.+>/;a.ngGrid={},a.ngGrid.i18n={};var q=(angular.module("ngGrid.services",[]),angular.module("ngGrid.directives",[])),r=angular.module("ngGrid.filters",[]);angular.module("ngGrid",["ngGrid.services","ngGrid.directives","ngGrid.filters"]);var s=function(a,b,d,e){if(void 0===a.selectionProvider.selectedItems)return!0;var f,g=d.which||d.keyCode,h=!1,i=!1,j=void 0===a.selectionProvider.lastClickedRow?1:a.selectionProvider.lastClickedRow.rowIndex,k=a.columns.filter(function(a){return a.visible}),l=a.columns.filter(function(a){return a.pinned});if(a.col&&(f=k.indexOf(a.col)),37!==g&&38!==g&&39!==g&&40!==g&&(e.config.noTabInterference||9!==g)&&13!==g)return!0;if(a.enableCellSelection){9===g&&d.preventDefault();var m=a.showSelectionCheckbox?1===a.col.index:0===a.col.index,n=1===a.$index||0===a.$index,o=a.$index===a.renderedColumns.length-1||a.$index===a.renderedColumns.length-2,p=k.indexOf(a.col)===k.length-1,q=l.indexOf(a.col)===l.length-1;if(37===g||9===g&&d.shiftKey){var r=0;m||(f-=1),n?m&&9===g&&d.shiftKey?(r=e.$canvas.width(),f=k.length-1,i=!0):r=e.$viewport.scrollLeft()-a.col.width:l.length>0&&(r=e.$viewport.scrollLeft()-k[f].width),e.$viewport.scrollLeft(r)}else(39===g||9===g&&!d.shiftKey)&&(o?p&&9===g&&!d.shiftKey?(e.$viewport.scrollLeft(0),f=a.showSelectionCheckbox?1:0,h=!0):e.$viewport.scrollLeft(e.$viewport.scrollLeft()+a.col.width):q&&e.$viewport.scrollLeft(0),p||(f+=1))}var s;s=a.configGroups.length>0?e.rowFactory.parsedData.filter(function(a){return!a.isAggRow}):e.filteredRows;var t=0;if(0!==j&&(38===g||13===g&&d.shiftKey||9===g&&d.shiftKey&&i)?t=-1:j!==s.length-1&&(40===g||13===g&&!d.shiftKey||9===g&&h)&&(t=1),t){var u=s[j+t];u.beforeSelectionChange(u,d)&&(u.continueSelection(d),a.$emit("ngGridEventDigestGridParent"),a.selectionProvider.lastClickedRow.renderedRowIndex>=a.renderedRows.length-c-2?e.$viewport.scrollTop(e.$viewport.scrollTop()+a.rowHeight):a.selectionProvider.lastClickedRow.renderedRowIndex<=c+2&&e.$viewport.scrollTop(e.$viewport.scrollTop()-a.rowHeight))}return a.enableCellSelection&&setTimeout(function(){a.domAccessProvider.focusCellElement(a,a.renderedColumns.indexOf(k[f]))},3),!1};String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),Array.prototype.indexOf||(Array.prototype.indexOf=function(a){var b=this.length>>>0,c=Number(arguments[1])||0;for(c=0>c?Math.ceil(c):Math.floor(c),0>c&&(c+=b);b>c;c++)if(c in this&&this[c]===a)return c;return-1}),Array.prototype.filter||(Array.prototype.filter=function(a){var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=[],e=arguments[1],f=0;c>f;f++)if(f in b){var g=b[f];a.call(e,g,f,b)&&d.push(g)}return d}),r.filter("checkmark",function(){return function(a){return a?"✔":"✘"}}),r.filter("ngColumns",function(){return function(a){return a.filter(function(a){return!a.isAggCol})}}),angular.module("ngGrid.services").factory("$domUtilityService",["$utilityService","$window",function(a,c){var d={},e={},f=function(){var a=b("<div></div>");a.appendTo("body"),a.height(100).width(100).css("position","absolute").css("overflow","scroll"),a.append('<div style="height: 400px; width: 400px;"></div>'),d.ScrollH=a.height()-a[0].clientHeight,d.ScrollW=a.width()-a[0].clientWidth,a.empty(),a.attr("style",""),a.append('<span style="font-family: Verdana, Helvetica, Sans-Serif; font-size: 14px;"><strong>M</strong></span>'),d.LetterW=a.children().first().width(),a.remove()};return d.eventStorage={},d.AssignGridContainers=function(a,c,e){e.$root=b(c),e.$topPanel=e.$root.find(".ngTopPanel"),e.$groupPanel=e.$root.find(".ngGroupPanel"),e.$headerContainer=e.$topPanel.find(".ngHeaderContainer"),a.$headerContainer=e.$headerContainer,e.$headerScroller=e.$topPanel.find(".ngHeaderScroller"),e.$headers=e.$headerScroller.children(),e.$viewport=e.$root.find(".ngViewport"),e.$canvas=e.$viewport.find(".ngCanvas"),e.$footerPanel=e.$root.find(".ngFooterPanel");var f=a.$watch(function(){return e.$viewport.scrollLeft()},function(a){return e.$headerContainer.scrollLeft(a)});a.$on("$destroy",function(){b(e.$root.parent()).off("resize.nggrid"),e.$root=null,e.$topPanel=null,e.$headerContainer=null,e.$headers=null,e.$canvas=null,e.$footerPanel=null,f()}),d.UpdateGridLayout(a,e)},d.getRealWidth=function(a){var c=0,d={visibility:"hidden",display:"block"},e=a.parents().andSelf().not(":visible");return b.swap(e[0],d,function(){c=a.outerWidth()}),c},d.UpdateGridLayout=function(a,b){if(b.$root){var c=b.$viewport.scrollTop();b.elementDims.rootMaxW=b.$root.width(),b.$root.is(":hidden")&&(b.elementDims.rootMaxW=d.getRealWidth(b.$root)),b.elementDims.rootMaxH=b.$root.height(),b.refreshDomSizes(),a.adjustScrollTop(c,!0)}},d.numberOfGrids=0,d.setStyleText=function(a,b){var d=a.styleSheet,e=a.gridId,f=c.document;d||(d=f.getElementById(e)),d||(d=f.createElement("style"),d.type="text/css",d.id=e,(f.head||f.getElementsByTagName("head")[0]).appendChild(d)),d.styleSheet&&!d.sheet?d.styleSheet.cssText=b:d.innerHTML=b,a.styleSheet=d,a.styleText=b},d.BuildStyles=function(a,b,c){var e,f=b.config.rowHeight,g=b.gridId,h=a.columns,i=0,j=a.totalRowWidth();e="."+g+" .ngCanvas { width: "+j+"px; }."+g+" .ngRow { width: "+j+"px; }."+g+" .ngCanvas { width: "+j+"px; }."+g+" .ngHeaderScroller { width: "+(j+d.ScrollH)+"px}";for(var k=0;k<h.length;k++){var l=h[k];l.visible!==!1&&(e+="."+g+" .col"+k+" { width: "+l.width+"px; left: "+i+"px; height: "+f+"px }."+g+" .colt"+k+" { width: "+l.width+"px; }",i+=l.width)}d.setStyleText(b,e),a.adjustScrollLeft(b.$viewport.scrollLeft()),c&&d.digest(a)},d.setColLeft=function(a,b,c){if(c.styleText){var f=e[a.index];f||(f=e[a.index]=new RegExp(".col"+a.index+" { width: [0-9]+px; left: [0-9]+px"));var g=c.styleText.replace(f,".col"+a.index+" { width: "+a.width+"px; left: "+b+"px");d.setStyleText(c,g)}},d.setColLeft.immediate=1,d.RebuildGrid=function(a,b){d.UpdateGridLayout(a,b),(null==b.config.maintainColumnRatios||b.config.maintainColumnRatios)&&b.configureColumnWidths(),a.adjustScrollLeft(b.$viewport.scrollLeft()),d.BuildStyles(a,b,!0)},d.digest=function(a){a.$root.$$phase||a.$digest()},d.ScrollH=17,d.ScrollW=17,d.LetterW=10,f(),d}]),angular.module("ngGrid.services").factory("$sortService",["$parse",function(a){var b={};return b.colSortFnCache={},b.isCustomSort=!1,b.guessSortFn=function(a){var c=typeof a;switch(c){case"number":return b.sortNumber;case"boolean":return b.sortBool;case"string":return a.match(/^[-+]?[£$¤]?[\d,.]+%?$/)?b.sortNumberStr:b.sortAlpha;default:return"[object Date]"===Object.prototype.toString.call(a)?b.sortDate:b.basicSort}},b.basicSort=function(a,b){return a===b?0:b>a?-1:1},b.sortNumber=function(a,b){return a-b},b.sortNumberStr=function(a,b){var c,d,e=!1,f=!1;return c=parseFloat(a.replace(/[^0-9.-]/g,"")),isNaN(c)&&(e=!0),d=parseFloat(b.replace(/[^0-9.-]/g,"")),isNaN(d)&&(f=!0),e&&f?0:e?1:f?-1:c-d},b.sortAlpha=function(a,b){var c=a.toLowerCase(),d=b.toLowerCase();return c===d?0:d>c?-1:1},b.sortDate=function(a,b){var c=a.getTime(),d=b.getTime();return c===d?0:d>c?-1:1},b.sortBool=function(a,b){return a&&b?0:a||b?a?1:-1:0},b.sortData=function(c,d){if(d&&c){var f,g,h=c.fields.length,i=c.fields,j=d.slice(0);d.sort(function(d,k){for(var l,m,n=0,o=0;0===n&&h>o;){f=c.columns[o],g=c.directions[o],m=b.getSortFn(f,j);var p=a(i[o])(d),q=a(i[o])(k);b.isCustomSort?(l=m(p,q),n=g===e?l:0-l):!p&&0!==p||!q&&0!==q?q||p?p?q||(n=-1):n=1:n=0:(l=m(p,q),n=g===e?l:0-l),o++}return n})}},b.Sort=function(a,c){b.isSorting||(b.isSorting=!0,b.sortData(a,c),b.isSorting=!1)},b.getSortFn=function(c,d){var e,f;if(b.colSortFnCache[c.field])e=b.colSortFnCache[c.field];else if(void 0!==c.sortingAlgorithm)e=c.sortingAlgorithm,b.colSortFnCache[c.field]=c.sortingAlgorithm,b.isCustomSort=!0;else{if(f=d[0],!f)return e;e=b.guessSortFn(a(c.field)(f)),e?b.colSortFnCache[c.field]=e:e=b.sortAlpha}return e},b}]),angular.module("ngGrid.services").factory("$utilityService",["$parse",function(c){var d=/function (.{1,})\(/,e={visualLength:function(a){var c=document.getElementById("testDataLength");c||(c=document.createElement("SPAN"),c.id="testDataLength",c.style.visibility="hidden",document.body.appendChild(c));var d=b(a);b(c).css({font:d.css("font"),"font-size":d.css("font-size"),"font-family":d.css("font-family")}),c.innerHTML=d.text();var e=c.offsetWidth;return document.body.removeChild(c),e},forIn:function(a,b){for(var c in a)a.hasOwnProperty(c)&&b(a[c],c)},evalProperty:function(a,b){return c("entity."+b)({entity:a})},endsWith:function(a,b){return a&&b&&"string"==typeof a?-1!==a.indexOf(b,a.length-b.length):!1},isNullOrUndefined:function(a){return void 0===a||null===a?!0:!1},getElementsByClassName:function(a){if(document.getElementsByClassName)return document.getElementsByClassName(a);for(var b=[],c=new RegExp("\\b"+a+"\\b"),d=document.getElementsByTagName("*"),e=0;e<d.length;e++){var f=d[e].className;c.test(f)&&b.push(d[e])}return b},newId:function(){var a=(new Date).getTime();return function(){return a+=1}}(),seti18n:function(b,c){var d=a.ngGrid.i18n[c];for(var e in d)b.i18n[e]=d[e]},getInstanceType:function(a){var b=d.exec(a.constructor.toString());if(b&&b.length>1){var c=b[1].replace(/^\s+|\s+$/g,"");return c}return""}};return e}]);var t=function(a,b,c,d){this.rowIndex=0,this.offsetTop=this.rowIndex*c,this.entity=a,this.label=a.gLabel,this.field=a.gField,this.depth=a.gDepth,this.parent=a.parent,this.children=a.children,this.aggChildren=a.aggChildren,this.aggIndex=a.aggIndex,this.collapsed=d,this.groupInitState=d,this.rowFactory=b,this.rowHeight=c,this.isAggRow=!0,this.offsetLeft=25*a.gDepth,this.aggLabelFilter=a.aggLabelFilter};t.prototype.toggleExpand=function(){this.collapsed=this.collapsed?!1:!0,this.orig&&(this.orig.collapsed=this.collapsed),this.notifyChildren()},t.prototype.setExpand=function(a){this.collapsed=a,this.notifyChildren()},t.prototype.notifyChildren=function(){for(var a=Math.max(this.rowFactory.aggCache.length,this.children.length),b=0;a>b;b++)if(this.aggChildren[b]&&(this.aggChildren[b].entity[i]=this.collapsed,this.collapsed&&this.aggChildren[b].setExpand(this.collapsed)),this.children[b]&&(this.children[b][i]=this.collapsed),b>this.aggIndex&&this.rowFactory.aggCache[b]){var c=this.rowFactory.aggCache[b],d=30*this.children.length;c.offsetTop=this.collapsed?c.offsetTop-d:c.offsetTop+d}this.rowFactory.renderedChange()},t.prototype.aggClass=function(){return this.collapsed?"ngAggArrowCollapsed":"ngAggArrowExpanded"},t.prototype.totalChildren=function(){if(this.aggChildren.length>0){var a=0,b=function(c){c.aggChildren.length>0?angular.forEach(c.aggChildren,function(a){b(a)}):a+=c.children.length};return b(this),a}return this.children.length},t.prototype.copy=function(){var a=new t(this.entity,this.rowFactory,this.rowHeight,this.groupInitState);return a.orig=this,a};var u=function(a,c,d,g,h,i){var j=this,l=a.colDef,m=500,n=0,o=null;j.colDef=a.colDef,j.width=l.width,j.groupIndex=0,j.isGroupedBy=!1,j.minWidth=l.minWidth?l.minWidth:50,j.maxWidth=l.maxWidth?l.maxWidth:9e3,j.enableCellEdit=void 0!==l.enableCellEdit?l.enableCellEdit:a.enableCellEdit||a.enableCellEditOnFocus,j.cellEditableCondition=l.cellEditableCondition||a.cellEditableCondition||"true",j.headerRowHeight=a.headerRowHeight,j.displayName=void 0===l.displayName?l.field:l.displayName,j.index=a.index,j.isAggCol=a.isAggCol,j.cellClass=l.cellClass,j.sortPriority=void 0,j.cellFilter=l.cellFilter?l.cellFilter:"",j.field=l.field,j.aggLabelFilter=l.aggLabelFilter||l.cellFilter,j.visible=i.isNullOrUndefined(l.visible)||l.visible,j.sortable=!1,j.resizable=!1,j.pinnable=!1,j.pinned=a.enablePinning&&l.pinned,j.originalIndex=null==a.originalIndex?j.index:a.originalIndex,j.groupable=i.isNullOrUndefined(l.groupable)||l.groupable,a.enableSort&&(j.sortable=i.isNullOrUndefined(l.sortable)||l.sortable),a.enableResize&&(j.resizable=i.isNullOrUndefined(l.resizable)||l.resizable),a.enablePinning&&(j.pinnable=i.isNullOrUndefined(l.pinnable)||l.pinnable),j.sortDirection=void 0,j.sortingAlgorithm=l.sortFn,j.headerClass=l.headerClass,j.cursor=j.sortable?"pointer":"default",j.headerCellTemplate=l.headerCellTemplate||h.get("headerCellTemplate.html"),j.cellTemplate=l.cellTemplate||h.get("cellTemplate.html").replace(k,j.cellFilter?"|"+j.cellFilter:""),j.enableCellEdit&&(j.cellEditTemplate=l.cellEditTemplate||h.get("cellEditTemplate.html"),j.editableCellTemplate=l.editableCellTemplate||h.get("editableCellTemplate.html")),l.cellTemplate&&!p.test(l.cellTemplate)&&(j.cellTemplate=h.get(l.cellTemplate)||b.ajax({type:"GET",url:l.cellTemplate,async:!1}).responseText),j.enableCellEdit&&l.editableCellTemplate&&!p.test(l.editableCellTemplate)&&(j.editableCellTemplate=h.get(l.editableCellTemplate)||b.ajax({type:"GET",url:l.editableCellTemplate,async:!1}).responseText),l.headerCellTemplate&&!p.test(l.headerCellTemplate)&&(j.headerCellTemplate=h.get(l.headerCellTemplate)||b.ajax({type:"GET",url:l.headerCellTemplate,async:!1}).responseText),j.colIndex=function(){var a=j.pinned?"pinned ":"";return a+="col"+j.index+" colt"+j.index,j.cellClass&&(a+=" "+j.cellClass),a},j.groupedByClass=function(){return j.isGroupedBy?"ngGroupedByIcon":"ngGroupIcon"},j.toggleVisible=function(){j.visible=!j.visible},j.showSortButtonUp=function(){return j.sortable?j.sortDirection===f:j.sortable},j.showSortButtonDown=function(){return j.sortable?j.sortDirection===e:j.sortable},j.noSortVisible=function(){return!j.sortDirection},j.sort=function(b){if(!j.sortable)return!0;var c=j.sortDirection===e?f:e;return j.sortDirection=c,a.sortCallback(j,b),!1},j.gripClick=function(){n++,1===n?o=setTimeout(function(){n=0},m):(clearTimeout(o),a.resizeOnDataCallback(j),n=0)},j.gripOnMouseDown=function(a){return c.isColumnResizing=!0,a.ctrlKey&&!j.pinned?(j.toggleVisible(),g.BuildStyles(c,d),!0):(a.target.parentElement.style.cursor="col-resize",j.startMousePosition=a.clientX,j.origWidth=j.width,b(document).mousemove(j.onMouseMove),b(document).mouseup(j.gripOnMouseUp),!1)},j.onMouseMove=function(a){var b=a.clientX-j.startMousePosition,e=b+j.origWidth;return j.width=e<j.minWidth?j.minWidth:e>j.maxWidth?j.maxWidth:e,c.hasUserChangedGridColumnWidths=!0,g.BuildStyles(c,d),!1},j.gripOnMouseUp=function(a){return b(document).off("mousemove",j.onMouseMove),b(document).off("mouseup",j.gripOnMouseUp),a.target.parentElement.style.cursor="default",g.digest(c),c.isColumnResizing=!1,!1},j.copy=function(){var b=new u(a,c,d,g,h,i);return b.isClone=!0,b.orig=j,b},j.setVars=function(a){j.orig=a,j.width=a.width,j.groupIndex=a.groupIndex,j.isGroupedBy=a.isGroupedBy,j.displayName=a.displayName,j.index=a.index,j.isAggCol=a.isAggCol,j.cellClass=a.cellClass,j.cellFilter=a.cellFilter,j.field=a.field,j.aggLabelFilter=a.aggLabelFilter,j.visible=a.visible,j.sortable=a.sortable,j.resizable=a.resizable,j.pinnable=a.pinnable,j.pinned=a.pinned,j.originalIndex=a.originalIndex,j.sortDirection=a.sortDirection,j.sortingAlgorithm=a.sortingAlgorithm,j.headerClass=a.headerClass,j.headerCellTemplate=a.headerCellTemplate,j.cellTemplate=a.cellTemplate,j.cellEditTemplate=a.cellEditTemplate}},v=function(a){this.outerHeight=null,this.outerWidth=null,b.extend(this,a)},w=function(a){this.previousColumn=null,this.grid=a};w.prototype.changeUserSelect=function(a,b){a.css({"-webkit-touch-callout":b,"-webkit-user-select":b,"-khtml-user-select":b,"-moz-user-select":"none"===b?"-moz-none":b,"-ms-user-select":b,"user-select":b})},w.prototype.focusCellElement=function(a,b){if(a.selectionProvider.lastClickedRow){var c=void 0!==b?b:this.previousColumn,d=a.selectionProvider.lastClickedRow.clone?a.selectionProvider.lastClickedRow.clone.elm:a.selectionProvider.lastClickedRow.elm;if(void 0!==c&&d){var e=angular.element(d[0].children).filter(function(){return 8!==this.nodeType}),f=Math.max(Math.min(a.renderedColumns.length-1,c),0);this.grid.config.showSelectionCheckbox&&angular.element(e[f]).scope()&&0===angular.element(e[f]).scope().col.index&&(f=1),e[f]&&e[f].children[1].children[0].focus(),this.previousColumn=c}}},w.prototype.selectionHandlers=function(a,b){function c(c){if(16===c.keyCode)return f.changeUserSelect(b,"none",c),!0;if(!e){e=!0;var d=s(a,b,c,f.grid);return e=!1,d}return!0}function d(a){return 16===a.keyCode&&f.changeUserSelect(b,"text",a),!0}var e=!1,f=this;b.bind("keydown",c),b.bind("keyup",d),b.on("$destroy",function(){b.off("keydown",c),b.off("keyup",d)})};var x=function(c,d,e,f){var g=this;g.colToMove=void 0,g.groupToMove=void 0,g.assignEvents=function(){c.config.jqueryUIDraggable&&!c.config.enablePinning?(c.$groupPanel.droppable({addClasses:!1,drop:function(a){g.onGroupDrop(a)}}),c.$groupPanel.on("$destroy",function(){c.$groupPanel=null})):(c.$groupPanel.on("mousedown",g.onGroupMouseDown).on("dragover",g.dragOver).on("drop",g.onGroupDrop),c.$topPanel.on("mousedown",".ngHeaderScroller",g.onHeaderMouseDown).on("dragover",".ngHeaderScroller",g.dragOver),c.$groupPanel.on("$destroy",function(){c.$groupPanel&&c.$groupPanel.off("mousedown"),c.$groupPanel=null}),c.config.enableColumnReordering&&c.$topPanel.on("drop",".ngHeaderScroller",g.onHeaderDrop),c.$topPanel.on("$destroy",function(){c.$topPanel&&c.$topPanel.off("mousedown"),c.config.enableColumnReordering&&c.$topPanel&&c.$topPanel.off("drop"),c.$topPanel=null
-})),d.$on("$destroy",d.$watch("renderedColumns",function(){f(g.setDraggables)}))},g.dragStart=function(a){a.dataTransfer.setData("text","")},g.dragOver=function(a){a.preventDefault()},g.setDraggables=function(){if(c.config.jqueryUIDraggable)c.$root&&c.$root.find(".ngHeaderSortColumn").draggable({helper:"clone",appendTo:"body",stack:"div",addClasses:!1,start:function(a){g.onHeaderMouseDown(a)}}).droppable({drop:function(a){g.onHeaderDrop(a)}});else{var a=c.$root.find(".ngHeaderSortColumn");if(angular.forEach(a,function(a){a.className&&-1!==a.className.indexOf("ngHeaderSortColumn")&&(a.setAttribute("draggable","true"),a.addEventListener&&(a.addEventListener("dragstart",g.dragStart),angular.element(a).on("$destroy",function(){angular.element(a).off("dragstart",g.dragStart),a.removeEventListener("dragstart",g.dragStart)})))}),-1!==navigator.userAgent.indexOf("MSIE")){var b=c.$root.find(".ngHeaderSortColumn");b.bind("selectstart",function(){return this.dragDrop(),!1}),angular.element(b).on("$destroy",function(){b.off("selectstart")})}}},g.onGroupMouseDown=function(a){var d=b(a.target);if("ngRemoveGroup"!==d[0].className){var e=angular.element(d).scope();e&&(c.config.jqueryUIDraggable||(d.attr("draggable","true"),this.addEventListener&&(this.addEventListener("dragstart",g.dragStart),angular.element(this).on("$destroy",function(){this.removeEventListener("dragstart",g.dragStart)})),-1!==navigator.userAgent.indexOf("MSIE")&&(d.bind("selectstart",function(){return this.dragDrop(),!1}),d.on("$destroy",function(){d.off("selectstart")}))),g.groupToMove={header:d,groupName:e.group,index:e.$index})}else g.groupToMove=void 0},g.onGroupDrop=function(a){a.stopPropagation();var e,f;g.groupToMove?(e=b(a.target).closest(".ngGroupElement"),"ngGroupPanel"===e.context.className?(d.configGroups.splice(g.groupToMove.index,1),d.configGroups.push(g.groupToMove.groupName)):(f=angular.element(e).scope(),f&&g.groupToMove.index!==f.$index&&(d.configGroups.splice(g.groupToMove.index,1),d.configGroups.splice(f.$index,0,g.groupToMove.groupName))),g.groupToMove=void 0,c.fixGroupIndexes()):g.colToMove&&(-1===d.configGroups.indexOf(g.colToMove.col)&&(e=b(a.target).closest(".ngGroupElement"),"ngGroupPanel"===e.context.className||"ngGroupPanelDescription ng-binding"===e.context.className?d.groupBy(g.colToMove.col):(f=angular.element(e).scope(),f&&d.removeGroup(f.$index))),g.colToMove=void 0),d.$$phase||d.$apply()},g.onHeaderMouseDown=function(a){var c=b(a.target).closest(".ngHeaderSortColumn"),d=angular.element(c).scope();d&&(g.colToMove={header:c,col:d.col})},g.onHeaderDrop=function(a){if(g.colToMove&&!g.colToMove.col.pinned){var f=b(a.target).closest(".ngHeaderSortColumn"),h=angular.element(f).scope();if(h){if(g.colToMove.col===h.col||h.col.pinned)return;d.columns.splice(g.colToMove.col.index,1),d.columns.splice(h.col.index,0,g.colToMove.col),c.fixColumnIndexes(),g.colToMove=void 0,e.digest(d)}}},g.assignGridEventHandlers=function(){-1===c.config.tabIndex?(c.$viewport.attr("tabIndex",e.numberOfGrids),e.numberOfGrids++):c.$viewport.attr("tabIndex",c.config.tabIndex);var f,g=function(){clearTimeout(f),f=setTimeout(function(){e.RebuildGrid(d,c)},100)};b(a).on("resize.nggrid",g);var h,i=function(){clearTimeout(h),h=setTimeout(function(){e.RebuildGrid(d,c)},100)};b(c.$root.parent()).on("resize.nggrid",i),d.$on("$destroy",function(){b(a).off("resize.nggrid",g)})},g.assignGridEventHandlers(),g.assignEvents()},y=function(a,b){a.maxRows=function(){var c=Math.max(a.totalServerItems,b.data.length);return c},a.$on("$destroy",a.$watch("totalServerItems",function(){a.currentMaxPages=a.maxPages()})),a.multiSelect=b.config.enableRowSelection&&b.config.multiSelect,a.selectedItemCount=b.selectedItemCount,a.maxPages=function(){return 0===a.maxRows()?1:Math.ceil(a.maxRows()/a.pagingOptions.pageSize)},a.pageForward=function(){var b=a.pagingOptions.currentPage;a.totalServerItems>0?a.pagingOptions.currentPage=Math.min(b+1,a.maxPages()):a.pagingOptions.currentPage++},a.pageBackward=function(){var b=a.pagingOptions.currentPage;a.pagingOptions.currentPage=Math.max(b-1,1)},a.pageToFirst=function(){a.pagingOptions.currentPage=1},a.pageToLast=function(){var b=a.maxPages();a.pagingOptions.currentPage=b},a.cantPageForward=function(){var c=a.pagingOptions.currentPage,d=a.maxPages();return a.totalServerItems>0?c>=d:b.data.length<1},a.cantPageToLast=function(){return a.totalServerItems>0?a.cantPageForward():!0},a.cantPageBackward=function(){var b=a.pagingOptions.currentPage;return 1>=b}},z=function(e,f,g,h,j,k,l,m,n,o,q){var r={aggregateTemplate:void 0,afterSelectionChange:function(){},beforeSelectionChange:function(){return!0},checkboxCellTemplate:void 0,checkboxHeaderTemplate:void 0,columnDefs:void 0,data:[],dataUpdated:function(){},enableCellEdit:!1,enableCellEditOnFocus:!1,enableCellSelection:!1,enableColumnResize:!1,enableColumnReordering:!1,enableColumnHeavyVirt:!1,enablePaging:!1,enablePinning:!1,enableRowSelection:!0,enableSorting:!0,enableHighlighting:!1,excludeProperties:[],filterOptions:{filterText:"",useExternalFilter:!1},footerRowHeight:55,footerTemplate:void 0,forceSyncScrolling:!0,groups:[],groupsCollapsedByDefault:!0,headerRowHeight:30,headerRowTemplate:void 0,jqueryUIDraggable:!1,jqueryUITheme:!1,keepLastSelected:!0,maintainColumnRatios:void 0,menuTemplate:void 0,multiSelect:!0,pagingOptions:{pageSizes:[250,500,1e3],pageSize:250,currentPage:1},pinSelectionCheckbox:!1,plugins:[],primaryKey:void 0,rowHeight:30,rowTemplate:void 0,selectedItems:[],selectWithCheckboxOnly:!1,showColumnMenu:!1,showFilter:!1,showFooter:!1,showGroupPanel:!1,showSelectionCheckbox:!1,sortInfo:{fields:[],columns:[],directions:[]},tabIndex:-1,totalServerItems:0,useExternalSorting:!1,i18n:"en",virtualizationThreshold:50,noTabInterference:!1},s=this;s.maxCanvasHt=0,s.config=b.extend(r,a.ngGrid.config,f),s.config.showSelectionCheckbox=s.config.showSelectionCheckbox&&s.config.enableColumnHeavyVirt===!1,s.config.enablePinning=s.config.enablePinning&&s.config.enableColumnHeavyVirt===!1,s.config.selectWithCheckboxOnly=s.config.selectWithCheckboxOnly&&s.config.showSelectionCheckbox!==!1,s.config.pinSelectionCheckbox=s.config.enablePinning,"string"==typeof f.columnDefs&&(s.config.columnDefs=e.$eval(f.columnDefs)),s.rowCache=[],s.rowMap=[],s.gridId="ng"+l.newId(),s.$root=null,s.$groupPanel=null,s.$topPanel=null,s.$headerContainer=null,s.$headerScroller=null,s.$headers=null,s.$viewport=null,s.$canvas=null,s.rootDim=s.config.gridDim,s.data=[],s.lateBindColumns=!1,s.filteredRows=[],s.initTemplates=function(){var a=["rowTemplate","aggregateTemplate","headerRowTemplate","checkboxCellTemplate","checkboxHeaderTemplate","menuTemplate","footerTemplate"],b=[];return angular.forEach(a,function(a){b.push(s.getTemplate(a))}),q.all(b)},s.getTemplate=function(a){var b=s.config[a],c=s.gridId+a+".html",d=q.defer();if(b&&!p.test(b))o.get(b,{cache:k}).success(function(a){k.put(c,a),d.resolve()}).error(function(){d.reject("Could not load template: "+b)});else if(b)k.put(c,b),d.resolve();else{var e=a+".html";k.put(c,k.get(e)),d.resolve()}return d.promise},"object"==typeof s.config.data&&(s.data=s.config.data),s.calcMaxCanvasHeight=function(){var a;return a=s.config.groups.length>0?s.rowFactory.parsedData.filter(function(a){return!a[i]}).length*s.config.rowHeight:s.filteredRows.length*s.config.rowHeight},s.elementDims={scrollW:0,scrollH:0,rowIndexCellW:25,rowSelectedCellW:25,rootMaxW:0,rootMaxH:0},s.setRenderedRows=function(a){e.renderedRows.length=a.length;for(var b=0;b<a.length;b++)!e.renderedRows[b]||a[b].isAggRow||e.renderedRows[b].isAggRow?(e.renderedRows[b]=a[b].copy(),e.renderedRows[b].collapsed=a[b].collapsed,a[b].isAggRow||e.renderedRows[b].setVars(a[b])):e.renderedRows[b].setVars(a[b]),e.renderedRows[b].rowIndex=a[b].rowIndex,e.renderedRows[b].offsetTop=a[b].offsetTop,e.renderedRows[b].selected=a[b].selected,a[b].renderedRowIndex=b;s.refreshDomSizes(),e.$emit("ngGridEventRows",a)},s.minRowsToRender=function(){var a=e.viewportDimHeight()||1;return Math.floor(a/s.config.rowHeight)},s.refreshDomSizes=function(){var a=new v;a.outerWidth=s.elementDims.rootMaxW,a.outerHeight=s.elementDims.rootMaxH,s.rootDim=a,s.maxCanvasHt=s.calcMaxCanvasHeight()},s.buildColumnDefsFromData=function(){s.config.columnDefs=[];var a=s.data[0];return a?void l.forIn(a,function(a,b){-1===s.config.excludeProperties.indexOf(b)&&s.config.columnDefs.push({field:b})}):void(s.lateBoundColumns=!0)},s.buildColumns=function(){var a=s.config.columnDefs,b=[];if(a||(s.buildColumnDefsFromData(),a=s.config.columnDefs),s.config.showSelectionCheckbox&&b.push(new u({colDef:{field:"✔",width:s.elementDims.rowSelectedCellW,sortable:!1,resizable:!1,groupable:!1,headerCellTemplate:k.get(e.gridId+"checkboxHeaderTemplate.html"),cellTemplate:k.get(e.gridId+"checkboxCellTemplate.html"),pinned:s.config.pinSelectionCheckbox},index:0,headerRowHeight:s.config.headerRowHeight,sortCallback:s.sortData,resizeOnDataCallback:s.resizeOnData,enableResize:s.config.enableColumnResize,enableSort:s.config.enableSorting,enablePinning:s.config.enablePinning},e,s,h,k,l)),a.length>0){var c=s.config.showSelectionCheckbox?1:0,d=e.configGroups.length;e.configGroups.length=0,angular.forEach(a,function(a,f){f+=c;var g=new u({colDef:a,index:f+d,originalIndex:f,headerRowHeight:s.config.headerRowHeight,sortCallback:s.sortData,resizeOnDataCallback:s.resizeOnData,enableResize:s.config.enableColumnResize,enableSort:s.config.enableSorting,enablePinning:s.config.enablePinning,enableCellEdit:s.config.enableCellEdit||s.config.enableCellEditOnFocus,cellEditableCondition:s.config.cellEditableCondition},e,s,h,k,l),i=s.config.groups.indexOf(a.field);-1!==i&&(g.isGroupedBy=!0,e.configGroups.splice(i,0,g),g.groupIndex=e.configGroups.length),b.push(g)}),e.columns=b,s.config.groups.length>0&&s.rowFactory.getGrouping(s.config.groups)}},s.configureColumnWidths=function(){var a=[],b=[],c=0,d=0,f={};if(angular.forEach(e.columns,function(a,b){if(!l.isNullOrUndefined(a.originalIndex)){var c=a.originalIndex;s.config.showSelectionCheckbox&&(0===a.originalIndex&&a.visible&&(d+=25),c--),f[c]=b}}),angular.forEach(s.config.columnDefs,function(g,h){var i=e.columns[f[h]];g.index=h;var j,k=!1;if(l.isNullOrUndefined(g.width)?g.width="*":(k=isNaN(g.width)?l.endsWith(g.width,"%"):!1,j=k?g.width:parseInt(g.width,10)),isNaN(j)&&!e.hasUserChangedGridColumnWidths){if(j=g.width,"auto"===j){i.width=i.minWidth,d+=i.width;var m=i;return void e.$on("$destroy",e.$on("ngGridEventData",function(){s.resizeOnData(m)}))}if(-1!==j.indexOf("*"))return i.visible!==!1&&(c+=j.length),void a.push(g);if(k)return void b.push(g);throw'unable to parse column width, use percentage ("10%","20%", etc...) or "*" to use remaining width of grid'}i.visible!==!1&&(d+=i.width=parseInt(i.width,10))}),b.length>0){s.config.maintainColumnRatios=s.config.maintainColumnRatios!==!1;var g=0,i=0;angular.forEach(b,function(a){var b=e.columns[f[a.index]],c=parseFloat(a.width)/100;g+=c,b.visible||(i+=c)});var j=g-i;angular.forEach(b,function(a){var b=e.columns[f[a.index]],c=parseFloat(a.width)/100;c/=i>0?j:g;var h=s.rootDim.outerWidth*g;b.width=h*c,d+=b.width})}if(a.length>0){s.config.maintainColumnRatios=s.config.maintainColumnRatios!==!1;var k=s.rootDim.outerWidth-d;s.maxCanvasHt>e.viewportDimHeight()&&(k-=h.ScrollW);var m=Math.floor(k/c);angular.forEach(a,function(b,c){var g=e.columns[f[b.index]];g.width=m*b.width.length,g.visible!==!1&&(d+=g.width);var i=c===a.length-1;if(i&&d<s.rootDim.outerWidth){var j=s.rootDim.outerWidth-d;s.maxCanvasHt>e.viewportDimHeight()&&(j-=h.ScrollW),g.width+=j}})}},s.init=function(){return s.initTemplates().then(function(){e.selectionProvider=new E(s,e,n),e.domAccessProvider=new w(s),s.rowFactory=new C(s,e,h,k,l),s.searchProvider=new D(e,s,j),s.styleProvider=new F(e,s),e.$on("$destroy",e.$watch("configGroups",function(a){var b=[];angular.forEach(a,function(a){b.push(a.field||a)}),s.config.groups=b,s.rowFactory.filteredRowsChanged(),e.$emit("ngGridEventGroups",a)},!0)),e.$on("$destroy",e.$watch("columns",function(a){e.isColumnResizing||h.RebuildGrid(e,s),e.$emit("ngGridEventColumns",a)},!0)),e.$on("$destroy",e.$watch(function(){return f.i18n},function(a){l.seti18n(e,a)})),s.maxCanvasHt=s.calcMaxCanvasHeight(),s.config.sortInfo.fields&&s.config.sortInfo.fields.length>0&&e.$on("$destroy",e.$watch(function(){return s.config.sortInfo},function(){g.isSorting||(s.sortColumnsInit(),e.$emit("ngGridEventSorted",s.config.sortInfo))},!0))})},s.resizeOnData=function(a){var c=a.minWidth,d=l.getElementsByClassName("col"+a.index);angular.forEach(d,function(a,d){var e;if(0===d){var f=b(a).find(".ngHeaderText");e=l.visualLength(f)+10}else{var g=b(a).find(".ngCellText");e=l.visualLength(g)+10}e>c&&(c=e)}),a.width=a.longest=Math.min(a.maxWidth,c+7),h.BuildStyles(e,s,!0)},s.lastSortedColumns=[],s.sortData=function(a,c){if(c&&c.shiftKey&&s.config.sortInfo){var d=s.config.sortInfo.columns.indexOf(a);-1===d?(1===s.config.sortInfo.columns.length&&(s.config.sortInfo.columns[0].sortPriority=1),s.config.sortInfo.columns.push(a),a.sortPriority=s.config.sortInfo.columns.length,s.config.sortInfo.fields.push(a.field),s.config.sortInfo.directions.push(a.sortDirection),s.lastSortedColumns.push(a)):s.config.sortInfo.directions[d]=a.sortDirection}else if(!s.config.useExternalSorting||s.config.useExternalSorting&&s.config.sortInfo){var f=b.isArray(a);s.config.sortInfo.columns.length=0,s.config.sortInfo.fields.length=0,s.config.sortInfo.directions.length=0;var g=function(a){s.config.sortInfo.columns.push(a),s.config.sortInfo.fields.push(a.field),s.config.sortInfo.directions.push(a.sortDirection),s.lastSortedColumns.push(a)};f?angular.forEach(a,function(a,b){a.sortPriority=b+1,g(a)}):(s.clearSortingData(a),a.sortPriority=void 0,g(a)),s.sortActual(),s.searchProvider.evalFilter(),e.$emit("ngGridEventSorted",s.config.sortInfo)}},s.sortColumnsInit=function(){s.config.sortInfo.columns?s.config.sortInfo.columns.length=0:s.config.sortInfo.columns=[];var a=[];angular.forEach(e.columns,function(b){var c=s.config.sortInfo.fields.indexOf(b.field);-1!==c&&(b.sortDirection=s.config.sortInfo.directions[c]||"asc",a[c]=b)}),s.sortData(1===a.length?a[0]:a)},s.sortActual=function(){if(!s.config.useExternalSorting){var a=s.data.slice(0);angular.forEach(a,function(a,b){var c=s.rowMap[b];if(void 0!==c){var d=s.rowCache[c];void 0!==d&&(a.preSortSelected=d.selected,a.preSortIndex=b)}}),g.Sort(s.config.sortInfo,a),angular.forEach(a,function(a,b){s.rowCache[b].entity=a,s.rowCache[b].selected=a.preSortSelected,s.rowMap[a.preSortIndex]=b,delete a.preSortSelected,delete a.preSortIndex})}},s.clearSortingData=function(a){a?(angular.forEach(s.lastSortedColumns,function(b){a.index!==b.index&&(b.sortDirection="",b.sortPriority=null)}),s.lastSortedColumns[0]=a,s.lastSortedColumns.length=1):(angular.forEach(s.lastSortedColumns,function(a){a.sortDirection="",a.sortPriority=null}),s.lastSortedColumns=[])},s.fixColumnIndexes=function(){for(var a=0;a<e.columns.length;a++)e.columns[a].index=a},s.fixGroupIndexes=function(){angular.forEach(e.configGroups,function(a,b){a.groupIndex=b+1})},e.elementsNeedMeasuring=!0,e.columns=[],e.renderedRows=[],e.renderedColumns=[],e.headerRow=null,e.rowHeight=s.config.rowHeight,e.jqueryUITheme=s.config.jqueryUITheme,e.showSelectionCheckbox=s.config.showSelectionCheckbox,e.enableCellSelection=s.config.enableCellSelection,e.enableCellEditOnFocus=s.config.enableCellEditOnFocus,e.footer=null,e.selectedItems=s.config.selectedItems,e.multiSelect=s.config.multiSelect,e.showFooter=s.config.showFooter,e.footerRowHeight=e.showFooter?s.config.footerRowHeight:0,e.showColumnMenu=s.config.showColumnMenu,e.forceSyncScrolling=s.config.forceSyncScrolling,e.showMenu=!1,e.configGroups=[],e.gridId=s.gridId,e.enablePaging=s.config.enablePaging,e.pagingOptions=s.config.pagingOptions,e.i18n={},l.seti18n(e,s.config.i18n),e.adjustScrollLeft=function(a){for(var b=0,c=0,d=e.columns.length,f=[],g=!s.config.enableColumnHeavyVirt,i=0,j=function(a){g?f.push(a):e.renderedColumns[i]?e.renderedColumns[i].setVars(a):e.renderedColumns[i]=a.copy(),i++},k=0;d>k;k++){var l=e.columns[k];if(l.visible!==!1){var m=l.width+b;if(l.pinned){j(l);var n=k>0?a+c:a;h.setColLeft(l,n,s),c+=l.width}else m>=a&&b<=a+s.rootDim.outerWidth&&j(l);b+=l.width}}g&&(e.renderedColumns=f)},s.prevScrollTop=0,s.prevScrollIndex=0,e.adjustScrollTop=function(a,b){if(s.prevScrollTop!==a||b){a>0&&s.$viewport[0].scrollHeight-a<=s.$viewport.outerHeight()&&e.$emit("ngGridEventScroll");var f,g=Math.floor(a/s.config.rowHeight);if(s.filteredRows.length>s.config.virtualizationThreshold){if(s.prevScrollTop<a&&g<s.prevScrollIndex+d)return;if(s.prevScrollTop>a&&g>s.prevScrollIndex-d)return;f=new A(Math.max(0,g-c),g+s.minRowsToRender()+c)}else{var h=e.configGroups.length>0?s.rowFactory.parsedData.length:s.filteredRows.length;f=new A(0,Math.max(h,s.minRowsToRender()+c))}s.prevScrollTop=a,s.rowFactory.UpdateViewableRange(f),s.prevScrollIndex=g}},e.toggleShowMenu=function(){e.showMenu=!e.showMenu},e.toggleSelectAll=function(a,b){e.selectionProvider.toggleSelectAll(a,!1,b)},e.totalFilteredItemsLength=function(){return s.filteredRows.length},e.showGroupPanel=function(){return s.config.showGroupPanel},e.topPanelHeight=function(){return s.config.showGroupPanel===!0?s.config.headerRowHeight+32:s.config.headerRowHeight},e.viewportDimHeight=function(){return Math.max(0,s.rootDim.outerHeight-e.topPanelHeight()-e.footerRowHeight-2)},e.groupBy=function(a){if(!(s.data.length<1)&&a.groupable&&a.field){a.sortDirection||a.sort({shiftKey:e.configGroups.length>0?!0:!1});var b=e.configGroups.indexOf(a);-1===b?(a.isGroupedBy=!0,e.configGroups.push(a),a.groupIndex=e.configGroups.length):e.removeGroup(b),s.$viewport.scrollTop(0),h.digest(e)}},e.removeGroup=function(a){var b=e.columns.filter(function(b){return b.groupIndex===a+1})[0];b.isGroupedBy=!1,b.groupIndex=0,e.columns[a].isAggCol&&(e.columns.splice(a,1),e.configGroups.splice(a,1),s.fixGroupIndexes()),0===e.configGroups.length&&(s.fixColumnIndexes(),h.digest(e)),e.adjustScrollLeft(0)},e.togglePin=function(a){for(var b=a.index,c=0,d=0;d<e.columns.length&&e.columns[d].pinned;d++)c++;a.pinned&&(c=Math.max(a.originalIndex,c-1)),a.pinned=!a.pinned,e.columns.splice(b,1),e.columns.splice(c,0,a),s.fixColumnIndexes(),h.BuildStyles(e,s,!0),s.$viewport.scrollLeft(s.$viewport.scrollLeft()-a.width)},e.totalRowWidth=function(){for(var a=0,b=e.columns,c=0;c<b.length;c++)b[c].visible!==!1&&(a+=b[c].width);return a},e.headerScrollerDim=function(){var a=e.viewportDimHeight(),b=s.maxCanvasHt,c=b>a,d=new v;return d.autoFitHeight=!0,d.outerWidth=e.totalRowWidth(),c?d.outerWidth+=s.elementDims.scrollW:b-a<=s.elementDims.scrollH&&(d.outerWidth+=s.elementDims.scrollW),d}},A=function(a,b){this.topRow=a,this.bottomRow=b},B=function(a,b,c,d,e){this.entity=a,this.config=b,this.selectionProvider=c,this.rowIndex=d,this.utils=e,this.selected=c.getSelection(a),this.cursor=this.config.enableRowSelection&&!this.config.selectWithCheckboxOnly?"pointer":"default",this.beforeSelectionChange=b.beforeSelectionChangeCallback,this.afterSelectionChange=b.afterSelectionChangeCallback,this.offsetTop=this.rowIndex*b.rowHeight,this.rowDisplayIndex=0};B.prototype.setSelection=function(a){this.selectionProvider.setSelection(this,a),this.selectionProvider.lastClickedRow=this},B.prototype.continueSelection=function(a){this.selectionProvider.ChangeSelection(this,a)},B.prototype.ensureEntity=function(a){this.entity!==a&&(this.entity=a,this.selected=this.selectionProvider.getSelection(this.entity))},B.prototype.toggleSelected=function(a){if(!this.config.enableRowSelection&&!this.config.enableCellSelection)return!0;var b=a.target||a;return"checkbox"===b.type&&"ngSelectionCell ng-scope"!==b.parentElement.className?!0:this.config.selectWithCheckboxOnly&&"checkbox"!==b.type?(this.selectionProvider.lastClickedRow=this,!0):(this.beforeSelectionChange(this,a)&&this.continueSelection(a),!1)},B.prototype.alternatingRowClass=function(){var a=this.rowIndex%2===0,b={ngRow:!0,selected:this.selected,even:a,odd:!a,"ui-state-default":this.config.jqueryUITheme&&a,"ui-state-active":this.config.jqueryUITheme&&!a};return b},B.prototype.getProperty=function(a){return this.utils.evalProperty(this.entity,a)},B.prototype.copy=function(){return this.clone=new B(this.entity,this.config,this.selectionProvider,this.rowIndex,this.utils),this.clone.isClone=!0,this.clone.elm=this.elm,this.clone.orig=this,this.clone},B.prototype.setVars=function(a){a.clone=this,this.entity=a.entity,this.selected=a.selected,this.orig=a};var C=function(a,b,d,e,f){var k=this;k.aggCache={},k.parentCache=[],k.dataChanged=!0,k.parsedData=[],k.rowConfig={},k.selectionProvider=b.selectionProvider,k.rowHeight=30,k.numberOfAggregates=0,k.groupedData=void 0,k.rowHeight=a.config.rowHeight,k.rowConfig={enableRowSelection:a.config.enableRowSelection,rowClasses:a.config.rowClasses,selectedItems:b.selectedItems,selectWithCheckboxOnly:a.config.selectWithCheckboxOnly,beforeSelectionChangeCallback:a.config.beforeSelectionChange,afterSelectionChangeCallback:a.config.afterSelectionChange,jqueryUITheme:a.config.jqueryUITheme,enableCellSelection:a.config.enableCellSelection,rowHeight:a.config.rowHeight},k.renderedRange=new A(0,a.minRowsToRender()+c),k.buildEntityRow=function(a,b){return new B(a,k.rowConfig,k.selectionProvider,b,f)},k.buildAggregateRow=function(b,c){var d=k.aggCache[b.aggIndex];return d||(d=new t(b,k,k.rowConfig.rowHeight,a.config.groupsCollapsedByDefault),k.aggCache[b.aggIndex]=d),d.rowIndex=c,d.offsetTop=c*k.rowConfig.rowHeight,d},k.UpdateViewableRange=function(a){k.renderedRange=a,k.renderedChange()},k.filteredRowsChanged=function(){a.lateBoundColumns&&a.filteredRows.length>0&&(a.config.columnDefs=void 0,a.buildColumns(),a.lateBoundColumns=!1,b.$evalAsync(function(){b.adjustScrollLeft(0)})),k.dataChanged=!0,a.config.groups.length>0&&k.getGrouping(a.config.groups),k.UpdateViewableRange(k.renderedRange)},k.renderedChange=function(){if(!k.groupedData||a.config.groups.length<1)return k.renderedChangeNoGroups(),void a.refreshDomSizes();k.wasGrouped=!0,k.parentCache=[];var b=0,c=k.parsedData.filter(function(a){return a.isAggRow?a.parent&&a.parent.collapsed?!1:!0:(a[i]||(a.rowIndex=b++),!a[i])});k.totalRows=c.length;for(var d=[],e=k.renderedRange.topRow;e<k.renderedRange.bottomRow;e++)c[e]&&(c[e].offsetTop=e*a.config.rowHeight,d.push(c[e]));a.setRenderedRows(d)},k.renderedChangeNoGroups=function(){for(var b=[],c=k.renderedRange.topRow;c<k.renderedRange.bottomRow;c++)a.filteredRows[c]&&(a.filteredRows[c].rowIndex=c,a.filteredRows[c].offsetTop=c*a.config.rowHeight,b.push(a.filteredRows[c]));a.setRenderedRows(b)},k.fixRowCache=function(){var b=a.data.length,c=b-a.rowCache.length;if(0>c)a.rowCache.length=a.rowMap.length=b;else for(var d=a.rowCache.length;b>d;d++)a.rowCache[d]=a.rowFactory.buildEntityRow(a.data[d],d)},k.parseGroupData=function(a){if(a.values)for(var b=0;b<a.values.length;b++)k.parentCache[k.parentCache.length-1].children.push(a.values[b]),k.parsedData.push(a.values[b]);else for(var c in a)if(c!==g&&c!==h&&c!==j&&a.hasOwnProperty(c)){var d=k.buildAggregateRow({gField:a[g],gLabel:c,gDepth:a[h],isAggRow:!0,_ng_hidden_:!1,children:[],aggChildren:[],aggIndex:k.numberOfAggregates,aggLabelFilter:a[j].aggLabelFilter},0);k.numberOfAggregates++,d.parent=k.parentCache[d.depth-1],d.parent&&(d.parent.collapsed=!1,d.parent.aggChildren.push(d)),k.parsedData.push(d),k.parentCache[d.depth]=d,k.parseGroupData(a[c])}},k.getGrouping=function(c){function l(a,b){return a.filter(function(a){return a.field===b})}k.aggCache=[],k.numberOfAggregates=0,k.groupedData={};for(var m=a.filteredRows,n=c.length,o=b.columns,p=0;p<m.length;p++){var q=m[p].entity;if(!q)return;m[p][i]=a.config.groupsCollapsedByDefault;for(var r=k.groupedData,s=0;s<c.length;s++){var t=c[s],v=l(o,t)[0],w=f.evalProperty(q,t);w=w?w.toString():"null",r[w]||(r[w]={}),r[g]||(r[g]=t),r[h]||(r[h]=s),r[j]||(r[j]=v),r=r[w]}r.values||(r.values=[]),r.values.push(m[p])}if(o.length>0)for(var x=0;x<c.length;x++)!o[x].isAggCol&&n>=x&&o.splice(0,0,new u({colDef:{field:"",width:25,sortable:!1,resizable:!1,headerCellTemplate:'<div class="ngAggHeader"></div>',pinned:a.config.pinSelectionCheckbox},enablePinning:a.config.enablePinning,isAggCol:!0,headerRowHeight:a.config.headerRowHeight},b,a,d,e,f));a.fixColumnIndexes(),b.adjustScrollLeft(0),k.parsedData.length=0,k.parseGroupData(k.groupedData),k.fixRowCache()},a.config.groups.length>0&&a.filteredRows.length>0&&k.getGrouping(a.config.groups)},D=function(a,c,d){var e=this,f=[];e.extFilter=c.config.filterOptions.useExternalFilter,a.showFilter=c.config.showFilter,a.filterText="",e.fieldMap={};var g=function(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c.toLowerCase()]=a[c]);return b},h=function(a,b,c){var e;for(var f in b)if(b.hasOwnProperty(f)){var i=c[f.toLowerCase()];if(!i)continue;var j=b[f];if("object"!=typeof j||j instanceof Date){var k=null,l=null;if(i&&i.cellFilter&&(l=i.cellFilter.split(":"),k=d(l[0])),null!==j&&void 0!==j){if("function"==typeof k){var m=k(j,l[1].slice(1,-1)).toString();e=a.regex.test(m)}else e=a.regex.test(j.toString());if(e)return!0}}else{var n=g(i);if(e=h(a,j,n))return!0}}return!1},i=function(a,b){var c,f=e.fieldMap[a.columnDisplay];if(!f)return!1;var g=f.cellFilter.split(":"),h=f.cellFilter?d(g[0]):null,i=b[a.column]||b[f.field.split(".")[0]];if(null===i||void 0===i)return!1;if("function"==typeof h){var j=h("object"==typeof i?k(i,f.field):i,g[1]).toString();c=a.regex.test(j)}else c=a.regex.test("object"==typeof i?k(i,f.field).toString():i.toString());return c?!0:!1},j=function(a){for(var b=0,c=f.length;c>b;b++){var d,g=f[b];if(d=g.column?i(g,a):h(g,a,e.fieldMap),!d)return!1}return!0};e.evalFilter=function(){c.filteredRows=0===f.length?c.rowCache:c.rowCache.filter(function(a){return j(a.entity)});for(var a=0;a<c.filteredRows.length;a++)c.filteredRows[a].rowIndex=a;c.rowFactory.filteredRowsChanged()};var k=function(a,b){if("object"!=typeof a||"string"!=typeof b)return a;var c=b.split("."),d=a;if(c.length>1){for(var e=1,f=c.length;f>e;e++)if(d=d[c[e]],!d)return a;return d}return a},l=function(a,b){try{return new RegExp(a,b)}catch(c){return new RegExp(a.replace(/(\^|\$|\(|\)|<|>|\[|\]|\{|\}|\\|\||\.|\*|\+|\?)/g,"\\$1"))}},m=function(a){f=[];var c;if(c=b.trim(a))for(var d=c.split(";"),e=0;e<d.length;e++){var g=d[e].split(":");if(g.length>1){var h=b.trim(g[0]),i=b.trim(g[1]);h&&i&&f.push({column:h,columnDisplay:h.replace(/\s+/g,"").toLowerCase(),regex:l(i,"i")})}else{var j=b.trim(g[0]);j&&f.push({column:"",regex:l(j,"i")})}}};e.extFilter||a.$on("$destroy",a.$watch("columns",function(a){for(var b=0;b<a.length;b++){var c=a[b];if(c.field)if(c.field.match(/\./g)){for(var d=c.field.split("."),f=e.fieldMap,g=0;g<d.length-1;g++)f[d[g]]=f[d[g]]||{},f=f[d[g]];f[d[d.length-1]]=c}else e.fieldMap[c.field.toLowerCase()]=c;c.displayName&&(e.fieldMap[c.displayName.toLowerCase().replace(/\s+/g,"")]=c)}})),a.$on("$destroy",a.$watch(function(){return c.config.filterOptions.filterText},function(b){a.filterText=b})),a.$on("$destroy",a.$watch("filterText",function(b){e.extFilter||(a.$emit("ngGridEventFilter",b),m(b),e.evalFilter())}))},E=function(a,b,c){var d=this;d.multi=a.config.multiSelect,d.selectedItems=a.config.selectedItems,d.selectedIndex=a.config.selectedIndex,d.lastClickedRow=void 0,d.ignoreSelectedItemChanges=!1,d.pKeyParser=c(a.config.primaryKey),d.ChangeSelection=function(c,e){var f=e.which||e.keyCode,g=40===f||38===f;if(e&&e.shiftKey&&!e.keyCode&&d.multi&&a.config.enableRowSelection){if(d.lastClickedRow){var h;h=b.configGroups.length>0?a.rowFactory.parsedData.filter(function(a){return!a.isAggRow}):a.filteredRows;var i=c.rowIndex,j=d.lastClickedRowIndex;if(i===j)return!1;j>i?(i^=j,j=i^j,i^=j,i--):j++;for(var k=[];i>=j;j++)k.push(h[j]);if(k[k.length-1].beforeSelectionChange(k,e)){for(var l=0;l<k.length;l++){var m=k[l],n=m.selected;m.selected=!n,m.clone&&(m.clone.selected=m.selected);var o=d.selectedItems.indexOf(m.entity);-1===o?d.selectedItems.push(m.entity):d.selectedItems.splice(o,1)}k[k.length-1].afterSelectionChange(k,e)}return d.lastClickedRow=c,d.lastClickedRowIndex=c.rowIndex,!0}}else d.multi?(!e.keyCode||g&&!a.config.selectWithCheckboxOnly)&&d.setSelection(c,!c.selected):d.lastClickedRow===c?d.setSelection(d.lastClickedRow,a.config.keepLastSelected?!0:!c.selected):(d.lastClickedRow&&d.setSelection(d.lastClickedRow,!1),d.setSelection(c,!c.selected));return d.lastClickedRow=c,d.lastClickedRowIndex=c.rowIndex,!0},d.getSelection=function(a){return-1!==d.getSelectionIndex(a)},d.getSelectionIndex=function(b){var c=-1;if(a.config.primaryKey){var e=d.pKeyParser(b);angular.forEach(d.selectedItems,function(a,b){e===d.pKeyParser(a)&&(c=b)})}else c=d.selectedItems.indexOf(b);return c},d.setSelection=function(b,c){if(a.config.enableRowSelection){if(c)-1===d.getSelectionIndex(b.entity)&&(!d.multi&&d.selectedItems.length>0&&d.toggleSelectAll(!1,!0),d.selectedItems.push(b.entity));else{var e=d.getSelectionIndex(b.entity);-1!==e&&d.selectedItems.splice(e,1)}b.selected=c,b.orig&&(b.orig.selected=c),b.clone&&(b.clone.selected=c),b.afterSelectionChange(b)}},d.toggleSelectAll=function(b,c,e){var f=e?a.filteredRows:a.rowCache;if(c||a.config.beforeSelectionChange(f,b)){var g=d.selectedItems.length;g>0&&(d.selectedItems.length=0);for(var h=0;h<f.length;h++)f[h].selected=b,f[h].clone&&(f[h].clone.selected=b),b&&d.selectedItems.push(f[h].entity);c||a.config.afterSelectionChange(f,b)}}},F=function(a,b){a.headerCellStyle=function(a){return{height:a.headerRowHeight+"px"}},a.rowStyle=function(b){var c={top:b.offsetTop+"px",height:a.rowHeight+"px"};return b.isAggRow&&(c.left=b.offsetLeft),c},a.canvasStyle=function(){return{height:b.maxCanvasHt+"px"}},a.headerScrollerStyle=function(){return{height:b.config.headerRowHeight+"px"}},a.topPanelStyle=function(){return{width:b.rootDim.outerWidth+"px",height:a.topPanelHeight()+"px"}},a.headerStyle=function(){return{width:b.rootDim.outerWidth+"px",height:b.config.headerRowHeight+"px"}},a.groupPanelStyle=function(){return{width:b.rootDim.outerWidth+"px",height:"32px"}},a.viewportStyle=function(){return{width:b.rootDim.outerWidth+"px",height:a.viewportDimHeight()+"px"}},a.footerStyle=function(){return{width:b.rootDim.outerWidth+"px",height:a.footerRowHeight+"px"}}};q.directive("ngCellHasFocus",["$domUtilityService",function(a){var b=function(b){b.isFocused=!0,a.digest(b),b.$broadcast("ngGridEventStartCellEdit"),b.$emit("ngGridEventStartCellEdit"),b.$on("$destroy",b.$on("ngGridEventEndCellEdit",function(){b.isFocused=!1,a.digest(b)}))};return function(a,c){function d(){return a.enableCellEditOnFocus?j=!0:c.focus(),!0}function e(d){a.enableCellEditOnFocus&&(d.preventDefault(),j=!1,b(a,c))}function f(){return i=!0,a.enableCellEditOnFocus&&!j&&b(a,c),!0}function g(){return i=!1,!0}function h(d){return a.enableCellEditOnFocus||(i&&37!==d.keyCode&&38!==d.keyCode&&39!==d.keyCode&&40!==d.keyCode&&9!==d.keyCode&&!d.shiftKey&&13!==d.keyCode&&b(a,c),i&&d.shiftKey&&d.keyCode>=65&&d.keyCode<=90&&b(a,c),27===d.keyCode&&c.focus()),!0}var i=!1,j=!1;a.editCell=function(){a.enableCellEditOnFocus||setTimeout(function(){b(a,c)},0)},c.bind("mousedown",d),c.bind("click",e),c.bind("focus",f),c.bind("blur",g),c.bind("keydown",h),c.on("$destroy",function(){c.off("mousedown",d),c.off("click",e),c.off("focus",f),c.off("blur",g),c.off("keydown",h)})}}]),q.directive("ngCellText",function(){return function(a,b){function c(a){a.preventDefault()}function d(a){a.preventDefault()}b.bind("mouseover",c),b.bind("mouseleave",d),b.on("$destroy",function(){b.off("mouseover",c),b.off("mouseleave",d)})}}),q.directive("ngCell",["$compile","$domUtilityService",function(a,c){var d={scope:!1,compile:function(){return{pre:function(c,d){var e,f=c.col.cellTemplate.replace(l,"row.entity."+c.col.field);c.col.enableCellEdit?(e=c.col.cellEditTemplate,e=e.replace(o,c.col.cellEditableCondition),e=e.replace(m,f),e=e.replace(n,c.col.editableCellTemplate.replace(l,"row.entity."+c.col.field))):e=f;var g=b(e);d.append(g),a(g)(c),c.enableCellSelection&&-1===g[0].className.indexOf("ngSelectionCell")&&(g[0].setAttribute("tabindex",0),g.addClass("ngCellElement"))
-},post:function(a,b){a.enableCellSelection&&a.domAccessProvider.selectionHandlers(a,b),a.$on("$destroy",a.$on("ngGridEventDigestCell",function(){c.digest(a)}))}}}};return d}]),q.directive("ngEditCellIf",[function(){return{transclude:"element",priority:1e3,terminal:!0,restrict:"A",compile:function(a,b,c){return function(a,b,d){var e,f;a.$on("$destroy",a.$watch(d.ngEditCellIf,function(d){e&&(e.remove(),e=void 0),f&&(f.$destroy(),f=void 0),d&&(f=a.$new(),c(f,function(a){e=a,b.after(a)}))}))}}}}]),q.directive("ngGridFooter",["$compile","$templateCache",function(a,b){var c={scope:!1,compile:function(){return{pre:function(c,d){0===d.children().length&&d.append(a(b.get(c.gridId+"footerTemplate.html"))(c))}}}};return c}]),q.directive("ngGridMenu",["$compile","$templateCache",function(a,b){var c={scope:!1,compile:function(){return{pre:function(c,d){0===d.children().length&&d.append(a(b.get(c.gridId+"menuTemplate.html"))(c))}}}};return c}]),q.directive("ngGrid",["$compile","$filter","$templateCache","$sortService","$domUtilityService","$utilityService","$timeout","$parse","$http","$q",function(a,c,d,e,f,g,h,i,j,k){var l={scope:!0,compile:function(){return{pre:function(l,m,n){var o=b(m),p=l.$eval(n.ngGrid);p.gridDim=new v({outerHeight:b(o).height(),outerWidth:b(o).width()});var q=new z(l,p,e,f,c,d,g,h,i,j,k);return l.$on("$destroy",function(){p.gridDim=null,p.selectRow=null,p.selectItem=null,p.selectAll=null,p.selectVisible=null,p.groupBy=null,p.sortBy=null,p.gridId=null,p.ngGrid=null,p.$gridScope=null,p.$gridServices=null,l.domAccessProvider.grid=null,angular.element(q.styleSheet).remove(),q.styleSheet=null}),q.init().then(function(){if("string"==typeof p.columnDefs?l.$on("$destroy",l.$parent.$watch(p.columnDefs,function(a){return a?(q.lateBoundColumns=!1,l.columns=[],q.config.columnDefs=a,q.buildColumns(),q.eventProvider.assignEvents(),void f.RebuildGrid(l,q)):(q.refreshDomSizes(),void q.buildColumns())},!0)):q.buildColumns(),"string"==typeof p.totalServerItems?l.$on("$destroy",l.$parent.$watch(p.totalServerItems,function(a){l.totalServerItems=angular.isDefined(a)?a:0})):l.totalServerItems=0,"string"==typeof p.data){var c=function(a){q.data=b.extend([],a),q.rowFactory.fixRowCache(),angular.forEach(q.data,function(a,b){var c=q.rowMap[b]||b;q.rowCache[c]&&q.rowCache[c].ensureEntity(a),q.rowMap[c]=b}),q.searchProvider.evalFilter(),q.configureColumnWidths(),q.refreshDomSizes(),q.config.sortInfo.fields.length>0&&(q.sortColumnsInit(),l.$emit("ngGridEventSorted",q.config.sortInfo)),l.$emit("ngGridEventData",q.gridId)};l.$on("$destroy",l.$parent.$watch(p.data,c)),l.$on("$destroy",l.$parent.$watch(p.data+".length",function(){c(l.$eval(p.data)),l.adjustScrollTop(q.$viewport.scrollTop(),!0)}))}return q.footerController=new y(l,q),m.addClass("ngGrid").addClass(q.gridId.toString()),p.enableHighlighting||m.addClass("unselectable"),p.jqueryUITheme&&m.addClass("ui-widget"),m.append(a(d.get("gridTemplate.html"))(l)),f.AssignGridContainers(l,m,q),q.eventProvider=new x(q,l,f,h),p.selectRow=function(a,b){q.rowCache[a]&&(q.rowCache[a].clone&&q.rowCache[a].clone.setSelection(b?!0:!1),q.rowCache[a].setSelection(b?!0:!1))},p.selectItem=function(a,b){p.selectRow(q.rowMap[a],b)},p.selectAll=function(a){l.toggleSelectAll(a)},p.selectVisible=function(a){l.toggleSelectAll(a,!0)},p.groupBy=function(a){if(a)l.groupBy(l.columns.filter(function(b){return b.field===a})[0]);else{var c=b.extend(!0,[],l.configGroups);angular.forEach(c,l.groupBy)}},p.sortBy=function(a){var b=l.columns.filter(function(b){return b.field===a})[0];b&&b.sort()},p.gridId=q.gridId,p.ngGrid=q,p.$gridScope=l,p.$gridServices={SortService:e,DomUtilityService:f,UtilityService:g},l.$on("$destroy",l.$on("ngGridEventDigestGrid",function(){f.digest(l.$parent)})),l.$on("$destroy",l.$on("ngGridEventDigestGridParent",function(){f.digest(l.$parent)})),l.$evalAsync(function(){l.adjustScrollLeft(0)}),angular.forEach(p.plugins,function(a){"function"==typeof a&&(a=new a);var b=l.$new();a.init(b,q,p.$gridServices),p.plugins[g.getInstanceType(a)]=a,l.$on("$destroy",function(){b.$destroy()})}),"function"==typeof p.init&&p.init(q,l),null})}}}};return l}]),q.directive("ngHeaderCell",["$compile",function(a){var b={scope:!1,compile:function(){return{pre:function(b,c){c.append(a(b.col.headerCellTemplate)(b))}}}};return b}]),q.directive("ngHeaderRow",["$compile","$templateCache",function(a,b){var c={scope:!1,compile:function(){return{pre:function(c,d){0===d.children().length&&d.append(a(b.get(c.gridId+"headerRowTemplate.html"))(c))}}}};return c}]),q.directive("ngInput",[function(){return{require:"ngModel",link:function(a,b,c,d){function e(c){switch(c.keyCode){case 37:case 38:case 39:case 40:c.stopPropagation();break;case 27:a.$$phase||a.$apply(function(){d.$setViewValue(h),b.blur()});break;case 13:(a.enableCellEditOnFocus&&a.totalFilteredItemsLength()-1>a.row.rowIndex&&a.row.rowIndex>0||a.col.enableCellEdit)&&b.blur()}return!0}function f(a){a.stopPropagation()}function g(a){a.stopPropagation()}var h,i=a.$watch("ngModel",function(){h=d.$modelValue,i()});b.bind("keydown",e),b.bind("click",f),b.bind("mousedown",g),b.on("$destroy",function(){b.off("keydown",e),b.off("click",f),b.off("mousedown",g)}),a.$on("$destroy",a.$on("ngGridEventStartCellEdit",function(){b.focus(),b.select()})),angular.element(b).bind("blur",function(){a.$emit("ngGridEventEndCellEdit")})}}}]),q.directive("ngRow",["$compile","$domUtilityService","$templateCache",function(a,b,c){var d={scope:!1,compile:function(){return{pre:function(d,e){if(d.row.elm=e,d.row.clone&&(d.row.clone.elm=e),d.row.isAggRow){var f=c.get(d.gridId+"aggregateTemplate.html");f=d.row.aggLabelFilter?f.replace(k,"| "+d.row.aggLabelFilter):f.replace(k,""),e.append(a(f)(d))}else e.append(a(c.get(d.gridId+"rowTemplate.html"))(d));d.$on("$destroy",d.$on("ngGridEventDigestRow",function(){b.digest(d)}))}}}};return d}]),q.directive("ngViewport",[function(){return function(a,b){function c(b){var c=b.target.scrollLeft,d=b.target.scrollTop;return a.$headerContainer&&a.$headerContainer.scrollLeft(c),a.adjustScrollLeft(c),a.adjustScrollTop(d),a.forceSyncScrolling?i():(clearTimeout(g),g=setTimeout(i,150)),f=c,h=d,e=!1,!0}function d(){return e=!0,b.focus&&b.focus(),!0}var e,f,g,h=0,i=function(){a.$root.$$phase||a.$digest()};b.bind("scroll",c),b.bind("mousewheel DOMMouseScroll",d),b.on("$destroy",function(){b.off("scroll",c),b.off("mousewheel DOMMouseScroll",d)}),a.enableCellSelection||a.domAccessProvider.selectionHandlers(a,b)}}]),a.ngGrid.i18n.da={ngAggregateLabel:"artikler",ngGroupPanelDescription:"Grupér rækker udfra en kolonne ved at trække dens overskift hertil.",ngSearchPlaceHolder:"Søg...",ngMenuText:"Vælg kolonner:",ngShowingItemsLabel:"Viste rækker:",ngTotalItemsLabel:"Rækker totalt:",ngSelectedItemsLabel:"Valgte rækker:",ngPageSizeLabel:"Side størrelse:",ngPagerFirstTitle:"Første side",ngPagerNextTitle:"Næste side",ngPagerPrevTitle:"Forrige side",ngPagerLastTitle:"Sidste side"},a.ngGrid.i18n.de={ngAggregateLabel:"eintrag",ngGroupPanelDescription:"Ziehen Sie eine Spaltenüberschrift hierhin um nach dieser Spalte zu gruppieren.",ngSearchPlaceHolder:"Suche...",ngMenuText:"Spalten auswählen:",ngShowingItemsLabel:"Zeige Einträge:",ngTotalItemsLabel:"Einträge gesamt:",ngSelectedItemsLabel:"Ausgewählte Einträge:",ngPageSizeLabel:"Einträge pro Seite:",ngPagerFirstTitle:"Erste Seite",ngPagerNextTitle:"Nächste Seite",ngPagerPrevTitle:"Vorherige Seite",ngPagerLastTitle:"Letzte Seite"},a.ngGrid.i18n.en={ngAggregateLabel:"items",ngGroupPanelDescription:"Drag a column header here and drop it to group by that column.",ngSearchPlaceHolder:"Search...",ngMenuText:"Choose Columns:",ngShowingItemsLabel:"Showing Items:",ngTotalItemsLabel:"Total Items:",ngSelectedItemsLabel:"Selected Items:",ngPageSizeLabel:"Page Size:",ngPagerFirstTitle:"First Page",ngPagerNextTitle:"Next Page",ngPagerPrevTitle:"Previous Page",ngPagerLastTitle:"Last Page"},a.ngGrid.i18n.es={ngAggregateLabel:"Artículos",ngGroupPanelDescription:"Arrastre un encabezado de columna aquí y soltarlo para agrupar por esa columna.",ngSearchPlaceHolder:"Buscar...",ngMenuText:"Elegir columnas:",ngShowingItemsLabel:"Artículos Mostrando:",ngTotalItemsLabel:"Artículos Totales:",ngSelectedItemsLabel:"Artículos Seleccionados:",ngPageSizeLabel:"Tamaño de Página:",ngPagerFirstTitle:"Primera Página",ngPagerNextTitle:"Página Siguiente",ngPagerPrevTitle:"Página Anterior",ngPagerLastTitle:"Última Página"},a.ngGrid.i18n.fa={ngAggregateLabel:"موردها",ngGroupPanelDescription:"یک عنوان ستون اینجا را بردار و به گروهی از آن ستون بیانداز.",ngSearchPlaceHolder:"جستجو...",ngMenuText:"انتخاب ستون‌ها:",ngShowingItemsLabel:"نمایش موردها:",ngTotalItemsLabel:"همهٔ موردها:",ngSelectedItemsLabel:"موردهای انتخاب‌شده:",ngPageSizeLabel:"اندازهٔ صفحه:",ngPagerFirstTitle:"صفحهٔ اول",ngPagerNextTitle:"صفحهٔ بعد",ngPagerPrevTitle:"صفحهٔ قبل",ngPagerLastTitle:"آخرین صفحه"},a.ngGrid.i18n.fr={ngAggregateLabel:"articles",ngGroupPanelDescription:"Faites glisser un en-tête de colonne ici et déposez-le vers un groupe par cette colonne.",ngSearchPlaceHolder:"Recherche...",ngMenuText:"Choisir des colonnes:",ngShowingItemsLabel:"Articles Affichage des:",ngTotalItemsLabel:"Nombre total d'articles:",ngSelectedItemsLabel:"Éléments Articles:",ngPageSizeLabel:"Taille de page:",ngPagerFirstTitle:"Première page",ngPagerNextTitle:"Page Suivante",ngPagerPrevTitle:"Page précédente",ngPagerLastTitle:"Dernière page"},a.ngGrid.i18n.nl={ngAggregateLabel:"items",ngGroupPanelDescription:"Sleep hier een kolomkop om op te groeperen.",ngSearchPlaceHolder:"Zoeken...",ngMenuText:"Kies kolommen:",ngShowingItemsLabel:"Toon items:",ngTotalItemsLabel:"Totaal items:",ngSelectedItemsLabel:"Geselecteerde items:",ngPageSizeLabel:"Pagina grootte:, ",ngPagerFirstTitle:"Eerste pagina",ngPagerNextTitle:"Volgende pagina",ngPagerPrevTitle:"Vorige pagina",ngPagerLastTitle:"Laatste pagina"},a.ngGrid.i18n["pt-br"]={ngAggregateLabel:"itens",ngGroupPanelDescription:"Arraste e solte uma coluna aqui para agrupar por essa coluna",ngSearchPlaceHolder:"Procurar...",ngMenuText:"Selecione as colunas:",ngShowingItemsLabel:"Mostrando os Itens:",ngTotalItemsLabel:"Total de Itens:",ngSelectedItemsLabel:"Items Selecionados:",ngPageSizeLabel:"Tamanho da Página:",ngPagerFirstTitle:"Primeira Página",ngPagerNextTitle:"Próxima Página",ngPagerPrevTitle:"Página Anterior",ngPagerLastTitle:"Última Página"},a.ngGrid.i18n["zh-cn"]={ngAggregateLabel:"条目",ngGroupPanelDescription:"拖曳表头到此处以进行分组",ngSearchPlaceHolder:"搜索...",ngMenuText:"数据分组与选择列:",ngShowingItemsLabel:"当前显示条目:",ngTotalItemsLabel:"条目总数:",ngSelectedItemsLabel:"选中条目:",ngPageSizeLabel:"每页显示数:",ngPagerFirstTitle:"回到首页",ngPagerNextTitle:"下一页",ngPagerPrevTitle:"上一页",ngPagerLastTitle:"前往尾页"},a.ngGrid.i18n["zh-tw"]={ngAggregateLabel:"筆",ngGroupPanelDescription:"拖拉表頭到此處以進行分組",ngSearchPlaceHolder:"搜尋...",ngMenuText:"選擇欄位:",ngShowingItemsLabel:"目前顯示筆數:",ngTotalItemsLabel:"總筆數:",ngSelectedItemsLabel:"選取筆數:",ngPageSizeLabel:"每頁顯示:",ngPagerFirstTitle:"第一頁",ngPagerNextTitle:"下一頁",ngPagerPrevTitle:"上一頁",ngPagerLastTitle:"最後頁"},angular.module("ngGrid").run(["$templateCache",function(a){a.put("aggregateTemplate.html",'<div ng-click="row.toggleExpand()" ng-style="rowStyle(row)" class="ngAggregate">\r\n    <span class="ngAggregateText">{{row.label CUSTOM_FILTERS}} ({{row.totalChildren()}} {{AggItemsLabel}})</span>\r\n    <div class="{{row.aggClass()}}"></div>\r\n</div>\r\n'),a.put("cellEditTemplate.html",'<div ng-cell-has-focus ng-dblclick="CELL_EDITABLE_CONDITION && editCell()">\r\n	<div ng-edit-cell-if="!(isFocused && CELL_EDITABLE_CONDITION)">	\r\n		DISPLAY_CELL_TEMPLATE\r\n	</div>\r\n	<div ng-edit-cell-if="isFocused && CELL_EDITABLE_CONDITION">\r\n		EDITABLE_CELL_TEMPLATE\r\n	</div>\r\n</div>\r\n'),a.put("cellTemplate.html",'<div class="ngCellText" ng-class="col.colIndex()"><span ng-cell-text>{{COL_FIELD CUSTOM_FILTERS}}</span></div>'),a.put("checkboxCellTemplate.html",'<div class="ngSelectionCell"><input tabindex="-1" class="ngSelectionCheckbox" type="checkbox" ng-checked="row.selected" /></div>'),a.put("checkboxHeaderTemplate.html",'<input class="ngSelectionHeader" type="checkbox" ng-show="multiSelect" ng-model="allSelected" ng-change="toggleSelectAll(allSelected, true)"/>'),a.put("editableCellTemplate.html",'<input ng-class="\'colt\' + col.index" ng-input="COL_FIELD" ng-model="COL_FIELD" />'),a.put("footerTemplate.html",'<div ng-show="showFooter" class="ngFooterPanel" ng-class="{\'ui-widget-content\': jqueryUITheme, \'ui-corner-bottom\': jqueryUITheme}" ng-style="footerStyle()">\r\n    <div class="ngTotalSelectContainer" >\r\n        <div class="ngFooterTotalItems" ng-class="{\'ngNoMultiSelect\': !multiSelect}" >\r\n            <span class="ngLabel">{{i18n.ngTotalItemsLabel}} {{maxRows()}}</span><span ng-show="filterText.length > 0" class="ngLabel">({{i18n.ngShowingItemsLabel}} {{totalFilteredItemsLength()}})</span>\r\n        </div>\r\n        <div class="ngFooterSelectedItems" ng-show="multiSelect">\r\n            <span class="ngLabel">{{i18n.ngSelectedItemsLabel}} {{selectedItems.length}}</span>\r\n        </div>\r\n    </div>\r\n    <div class="ngPagerContainer" style="float: right; margin-top: 10px;" ng-show="enablePaging" ng-class="{\'ngNoMultiSelect\': !multiSelect}">\r\n        <div style="float:left; margin-right: 10px;" class="ngRowCountPicker">\r\n            <span style="float: left; margin-top: 3px;" class="ngLabel">{{i18n.ngPageSizeLabel}}</span>\r\n            <select style="float: left;height: 27px; width: 100px" ng-model="pagingOptions.pageSize" >\r\n                <option ng-repeat="size in pagingOptions.pageSizes">{{size}}</option>\r\n            </select>\r\n        </div>\r\n        <div style="float:left; margin-right: 10px; line-height:25px;" class="ngPagerControl" style="float: left; min-width: 135px;">\r\n            <button type="button" class="ngPagerButton" ng-click="pageToFirst()" ng-disabled="cantPageBackward()" title="{{i18n.ngPagerFirstTitle}}"><div class="ngPagerFirstTriangle"><div class="ngPagerFirstBar"></div></div></button>\r\n            <button type="button" class="ngPagerButton" ng-click="pageBackward()" ng-disabled="cantPageBackward()" title="{{i18n.ngPagerPrevTitle}}"><div class="ngPagerFirstTriangle ngPagerPrevTriangle"></div></button>\r\n            <input class="ngPagerCurrent" min="1" max="{{currentMaxPages}}" type="number" style="width:50px; height: 24px; margin-top: 1px; padding: 0 4px;" ng-model="pagingOptions.currentPage"/>\r\n            <span class="ngGridMaxPagesNumber" ng-show="maxPages() > 0">/ {{maxPages()}}</span>\r\n            <button type="button" class="ngPagerButton" ng-click="pageForward()" ng-disabled="cantPageForward()" title="{{i18n.ngPagerNextTitle}}"><div class="ngPagerLastTriangle ngPagerNextTriangle"></div></button>\r\n            <button type="button" class="ngPagerButton" ng-click="pageToLast()" ng-disabled="cantPageToLast()" title="{{i18n.ngPagerLastTitle}}"><div class="ngPagerLastTriangle"><div class="ngPagerLastBar"></div></div></button>\r\n        </div>\r\n    </div>\r\n</div>\r\n'),a.put("gridTemplate.html",'<div class="ngTopPanel" ng-class="{\'ui-widget-header\':jqueryUITheme, \'ui-corner-top\': jqueryUITheme}" ng-style="topPanelStyle()">\r\n    <div class="ngGroupPanel" ng-show="showGroupPanel()" ng-style="groupPanelStyle()">\r\n        <div class="ngGroupPanelDescription" ng-show="configGroups.length == 0">{{i18n.ngGroupPanelDescription}}</div>\r\n        <ul ng-show="configGroups.length > 0" class="ngGroupList">\r\n            <li class="ngGroupItem" ng-repeat="group in configGroups">\r\n                <span class="ngGroupElement">\r\n                    <span class="ngGroupName">{{group.displayName}}\r\n                        <span ng-click="removeGroup($index)" class="ngRemoveGroup">x</span>\r\n                    </span>\r\n                    <span ng-hide="$last" class="ngGroupArrow"></span>\r\n                </span>\r\n            </li>\r\n        </ul>\r\n    </div>\r\n    <div class="ngHeaderContainer" ng-style="headerStyle()">\r\n        <div ng-header-row class="ngHeaderScroller" ng-style="headerScrollerStyle()"></div>\r\n    </div>\r\n    <div ng-grid-menu></div>\r\n</div>\r\n<div class="ngViewport" unselectable="on" ng-viewport ng-class="{\'ui-widget-content\': jqueryUITheme}" ng-style="viewportStyle()">\r\n    <div class="ngCanvas" ng-style="canvasStyle()">\r\n        <div ng-style="rowStyle(row)" ng-repeat="row in renderedRows" ng-click="row.toggleSelected($event)" ng-class="row.alternatingRowClass()" ng-row></div>\r\n    </div>\r\n</div>\r\n<div ng-grid-footer></div>\r\n'),a.put("headerCellTemplate.html",'<div class="ngHeaderSortColumn {{col.headerClass}}" ng-style="{\'cursor\': col.cursor}" ng-class="{ \'ngSorted\': !col.noSortVisible() }">\r\n    <div ng-click="col.sort($event)" ng-class="\'colt\' + col.index" class="ngHeaderText">{{col.displayName}}</div>\r\n    <div class="ngSortButtonDown" ng-click="col.sort($event)" ng-show="col.showSortButtonDown()"></div>\r\n    <div class="ngSortButtonUp" ng-click="col.sort($event)" ng-show="col.showSortButtonUp()"></div>\r\n    <div class="ngSortPriority">{{col.sortPriority}}</div>\r\n    <div ng-class="{ ngPinnedIcon: col.pinned, ngUnPinnedIcon: !col.pinned }" ng-click="togglePin(col)" ng-show="col.pinnable"></div>\r\n</div>\r\n<div ng-show="col.resizable" class="ngHeaderGrip" ng-click="col.gripClick($event)" ng-mousedown="col.gripOnMouseDown($event)"></div>\r\n'),a.put("headerRowTemplate.html",'<div ng-style="{ height: col.headerRowHeight }" ng-repeat="col in renderedColumns" ng-class="col.colIndex()" class="ngHeaderCell">\r\n	<div class="ngVerticalBar" ng-style="{height: col.headerRowHeight}" ng-class="{ ngVerticalBarVisible: !$last }">&nbsp;</div>\r\n	<div ng-header-cell></div>\r\n</div>'),a.put("menuTemplate.html",'<div ng-show="showColumnMenu || showFilter"  class="ngHeaderButton" ng-click="toggleShowMenu()">\r\n    <div class="ngHeaderButtonArrow"></div>\r\n</div>\r\n<div ng-show="showMenu" class="ngColMenu">\r\n    <div ng-show="showFilter">\r\n        <input placeholder="{{i18n.ngSearchPlaceHolder}}" type="text" ng-model="filterText"/>\r\n    </div>\r\n    <div ng-show="showColumnMenu">\r\n        <span class="ngMenuText">{{i18n.ngMenuText}}</span>\r\n        <ul class="ngColList">\r\n            <li class="ngColListItem" ng-repeat="col in columns | ngColumns">\r\n                <label><input ng-disabled="col.pinned" type="checkbox" class="ngColListCheckbox" ng-model="col.visible"/>{{col.displayName}}</label>\r\n				<a title="Group By" ng-class="col.groupedByClass()" ng-show="col.groupable && col.visible" ng-click="groupBy(col)"></a>\r\n				<span class="ngGroupingNumber" ng-show="col.groupIndex > 0">{{col.groupIndex}}</span>          \r\n            </li>\r\n        </ul>\r\n    </div>\r\n</div>'),a.put("rowTemplate.html",'<div ng-style="{ \'cursor\': row.cursor }" ng-repeat="col in renderedColumns" ng-class="col.colIndex()" class="ngCell {{col.cellClass}}">\r\n	<div class="ngVerticalBar" ng-style="{height: rowHeight}" ng-class="{ ngVerticalBarVisible: !$last }">&nbsp;</div>\r\n	<div ng-cell></div>\r\n</div>')}])}(window,jQuery),d3=function(){function a(a){return null!=a&&!isNaN(a)}function b(a){return a.length}function c(a){for(var b=1;a*b%1;)b*=10;return b}function d(a,b){try{for(var c in b)Object.defineProperty(a.prototype,c,{value:b[c],enumerable:!1})}catch(d){a.prototype=b}}function e(){}function f(){}function g(a,b,c){return function(){var d=c.apply(b,arguments);return d===b?a:d}}function h(a,b){if(b in a)return b;b=b.charAt(0).toUpperCase()+b.substring(1);for(var c=0,d=lh.length;d>c;++c){var e=lh[c]+b;if(e in a)return e}}function i(){}function j(){}function k(a){function b(){for(var b,d=c,e=-1,f=d.length;++e<f;)(b=d[e].on)&&b.apply(this,arguments);return a}var c=[],d=new e;return b.on=function(b,e){var f,g=d.get(b);return arguments.length<2?g&&g.on:(g&&(g.on=null,c=c.slice(0,f=c.indexOf(g)).concat(c.slice(f+1)),d.remove(b)),e&&c.push(d.set(b,{on:e})),a)},b}function l(){Wg.event.preventDefault()}function m(){for(var a,b=Wg.event;a=b.sourceEvent;)b=a;return b}function n(a){for(var b=new j,c=0,d=arguments.length;++c<d;)b[arguments[c]]=k(b);return b.of=function(c,d){return function(e){try{var f=e.sourceEvent=Wg.event;e.target=a,Wg.event=e,b[e.type].apply(c,d)}finally{Wg.event=f}}},b}function o(a){return nh(a,sh),a}function p(a){return"function"==typeof a?a:function(){return oh(a,this)}}function q(a){return"function"==typeof a?a:function(){return ph(a,this)}}function r(a,b){function c(){this.removeAttribute(a)}function d(){this.removeAttributeNS(a.space,a.local)}function e(){this.setAttribute(a,b)}function f(){this.setAttributeNS(a.space,a.local,b)}function g(){var c=b.apply(this,arguments);null==c?this.removeAttribute(a):this.setAttribute(a,c)}function h(){var c=b.apply(this,arguments);null==c?this.removeAttributeNS(a.space,a.local):this.setAttributeNS(a.space,a.local,c)}return a=Wg.ns.qualify(a),null==b?a.local?d:c:"function"==typeof b?a.local?h:g:a.local?f:e}function s(a){return a.trim().replace(/\s+/g," ")}function t(a){return new RegExp("(?:^|\\s+)"+Wg.requote(a)+"(?:\\s+|$)","g")}function u(a){return a.trim().split(/^|\s+/)}function v(a,b){function c(){for(var c=-1;++c<e;)a[c](this,b)}function d(){for(var c=-1,d=b.apply(this,arguments);++c<e;)a[c](this,d)}a=u(a).map(w);var e=a.length;return"function"==typeof b?d:c}function w(a){var b=t(a);return function(c,d){if(e=c.classList)return d?e.add(a):e.remove(a);var e=c.getAttribute("class")||"";d?(b.lastIndex=0,b.test(e)||c.setAttribute("class",s(e+" "+a))):c.setAttribute("class",s(e.replace(b," ")))}}function x(a,b,c){function d(){this.style.removeProperty(a)}function e(){this.style.setProperty(a,b,c)}function f(){var d=b.apply(this,arguments);null==d?this.style.removeProperty(a):this.style.setProperty(a,d,c)}return null==b?d:"function"==typeof b?f:e}function y(a,b){function c(){delete this[a]}function d(){this[a]=b}function e(){var c=b.apply(this,arguments);null==c?delete this[a]:this[a]=c}return null==b?c:"function"==typeof b?e:d}function z(a){return"function"==typeof a?a:(a=Wg.ns.qualify(a)).local?function(){return this.ownerDocument.createElementNS(a.space,a.local)}:function(){return this.ownerDocument.createElementNS(this.namespaceURI,a)}}function A(a){return{__data__:a}}function B(a){return function(){return rh(this,a)}}function C(a){return arguments.length||(a=Wg.ascending),function(b,c){return b&&c?a(b.__data__,c.__data__):!b-!c}}function D(a,b){for(var c=0,d=a.length;d>c;c++)for(var e,f=a[c],g=0,h=f.length;h>g;g++)(e=f[g])&&b(e,g,c);return a}function E(a){return nh(a,uh),a}function F(a){var b,c;return function(d,e,f){var g,h=a[f].update,i=h.length;for(f!=c&&(c=f,b=0),e>=b&&(b=e+1);!(g=h[b])&&++b<i;);return g}}function G(){var a=this.__transition__;a&&++a.active}function H(a,b,c){function d(){var b=this[g];b&&(this.removeEventListener(a,b,b.$),delete this[g])}function e(){var e=j(b,Yg(arguments));d.call(this),this.addEventListener(a,this[g]=e,e.$=c),e._=b}function f(){var b,c=new RegExp("^__on([^.]+)"+Wg.requote(a)+"$");for(var d in this)if(b=d.match(c)){var e=this[d];this.removeEventListener(b[1],e,e.$),delete this[d]}}var g="__on"+a,h=a.indexOf("."),j=I;h>0&&(a=a.substring(0,h));var k=wh.get(a);return k&&(a=k,j=J),h?b?e:d:b?i:f}function I(a,b){return function(c){var d=Wg.event;Wg.event=c,b[0]=this.__data__;try{a.apply(this,b)}finally{Wg.event=d}}}function J(a,b){var c=I(a,b);return function(a){var b=this,d=a.relatedTarget;d&&(d===b||8&d.compareDocumentPosition(b))||c.call(b,a)}}function K(){var a=".dragsuppress-"+ ++yh,b="click"+a,c=Wg.select(_g).on("touchmove"+a,l).on("dragstart"+a,l).on("selectstart"+a,l);if(xh){var d=$g.style,e=d[xh];d[xh]="none"}return function(f){function g(){c.on(b,null)}c.on(a,null),xh&&(d[xh]=e),f&&(c.on(b,function(){l(),g()},!0),setTimeout(g,0))}}function L(a,b){b.changedTouches&&(b=b.changedTouches[0]);var c=a.ownerSVGElement||a;if(c.createSVGPoint){var d=c.createSVGPoint();if(0>zh&&(_g.scrollX||_g.scrollY)){c=Wg.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var e=c[0][0].getScreenCTM();zh=!(e.f||e.e),c.remove()}return zh?(d.x=b.pageX,d.y=b.pageY):(d.x=b.clientX,d.y=b.clientY),d=d.matrixTransform(a.getScreenCTM().inverse()),[d.x,d.y]}var f=a.getBoundingClientRect();return[b.clientX-f.left-a.clientLeft,b.clientY-f.top-a.clientTop]}function M(a){return a>0?1:0>a?-1:0}function N(a){return a>1?0:-1>a?Ah:Math.acos(a)}function O(a){return a>1?Ch:-1>a?-Ch:Math.asin(a)}function P(a){return((a=Math.exp(a))-1/a)/2}function Q(a){return((a=Math.exp(a))+1/a)/2}function R(a){return((a=Math.exp(2*a))-1)/(a+1)}function S(a){return(a=Math.sin(a/2))*a}function T(){}function U(a,b,c){return new V(a,b,c)}function V(a,b,c){this.h=a,this.s=b,this.l=c}function W(a,b,c){function d(a){return a>360?a-=360:0>a&&(a+=360),60>a?f+(g-f)*a/60:180>a?g:240>a?f+(g-f)*(240-a)/60:f}function e(a){return Math.round(255*d(a))}var f,g;return a=isNaN(a)?0:(a%=360)<0?a+360:a,b=isNaN(b)?0:0>b?0:b>1?1:b,c=0>c?0:c>1?1:c,g=.5>=c?c*(1+b):c+b-c*b,f=2*c-g,hb(e(a+120),e(a),e(a-120))}function X(a,b,c){return new Y(a,b,c)}function Y(a,b,c){this.h=a,this.c=b,this.l=c}function Z(a,b,c){return isNaN(a)&&(a=0),isNaN(b)&&(b=0),$(c,Math.cos(a*=Fh)*b,Math.sin(a)*b)}function $(a,b,c){return new _(a,b,c)}function _(a,b,c){this.l=a,this.a=b,this.b=c}function ab(a,b,c){var d=(a+16)/116,e=d+b/500,f=d-c/200;return e=cb(e)*Qh,d=cb(d)*Rh,f=cb(f)*Sh,hb(eb(3.2404542*e-1.5371385*d-.4985314*f),eb(-.969266*e+1.8760108*d+.041556*f),eb(.0556434*e-.2040259*d+1.0572252*f))}function bb(a,b,c){return a>0?X(Math.atan2(c,b)*Gh,Math.sqrt(b*b+c*c),a):X(0/0,0/0,a)}function cb(a){return a>.206893034?a*a*a:(a-4/29)/7.787037}function db(a){return a>.008856?Math.pow(a,1/3):7.787037*a+4/29}function eb(a){return Math.round(255*(.00304>=a?12.92*a:1.055*Math.pow(a,1/2.4)-.055))}function fb(a){return hb(a>>16,a>>8&255,255&a)}function gb(a){return fb(a)+""}function hb(a,b,c){return new ib(a,b,c)}function ib(a,b,c){this.r=a,this.g=b,this.b=c}function jb(a){return 16>a?"0"+Math.max(0,a).toString(16):Math.min(255,a).toString(16)}function kb(a,b,c){var d,e,f,g=0,h=0,i=0;if(d=/([a-z]+)\((.*)\)/i.exec(a))switch(e=d[2].split(","),d[1]){case"hsl":return c(parseFloat(e[0]),parseFloat(e[1])/100,parseFloat(e[2])/100);case"rgb":return b(ob(e[0]),ob(e[1]),ob(e[2]))}return(f=Vh.get(a))?b(f.r,f.g,f.b):(null!=a&&"#"===a.charAt(0)&&(4===a.length?(g=a.charAt(1),g+=g,h=a.charAt(2),h+=h,i=a.charAt(3),i+=i):7===a.length&&(g=a.substring(1,3),h=a.substring(3,5),i=a.substring(5,7)),g=parseInt(g,16),h=parseInt(h,16),i=parseInt(i,16)),b(g,h,i))}function lb(a,b,c){var d,e,f=Math.min(a/=255,b/=255,c/=255),g=Math.max(a,b,c),h=g-f,i=(g+f)/2;return h?(e=.5>i?h/(g+f):h/(2-g-f),d=a==g?(b-c)/h+(c>b?6:0):b==g?(c-a)/h+2:(a-b)/h+4,d*=60):(d=0/0,e=i>0&&1>i?0:d),U(d,e,i)}function mb(a,b,c){a=nb(a),b=nb(b),c=nb(c);var d=db((.4124564*a+.3575761*b+.1804375*c)/Qh),e=db((.2126729*a+.7151522*b+.072175*c)/Rh),f=db((.0193339*a+.119192*b+.9503041*c)/Sh);return $(116*e-16,500*(d-e),200*(e-f))}function nb(a){return(a/=255)<=.04045?a/12.92:Math.pow((a+.055)/1.055,2.4)}function ob(a){var b=parseFloat(a);return"%"===a.charAt(a.length-1)?Math.round(2.55*b):b}function pb(a){return"function"==typeof a?a:function(){return a}}function qb(a){return a}function rb(a){return function(b,c,d){return 2===arguments.length&&"function"==typeof c&&(d=c,c=null),sb(b,c,a,d)}}function sb(a,b,c,d){function e(){var a,b=i.status;if(!b&&i.responseText||b>=200&&300>b||304===b){try{a=c.call(f,i)}catch(d){return void g.error.call(f,d)}g.load.call(f,a)}else g.error.call(f,i)}var f={},g=Wg.dispatch("beforesend","progress","load","error"),h={},i=new XMLHttpRequest,j=null;return!_g.XDomainRequest||"withCredentials"in i||!/^(http(s)?:)?\/\//.test(a)||(i=new XDomainRequest),"onload"in i?i.onload=i.onerror=e:i.onreadystatechange=function(){i.readyState>3&&e()},i.onprogress=function(a){var b=Wg.event;Wg.event=a;try{g.progress.call(f,i)}finally{Wg.event=b}},f.header=function(a,b){return a=(a+"").toLowerCase(),arguments.length<2?h[a]:(null==b?delete h[a]:h[a]=b+"",f)},f.mimeType=function(a){return arguments.length?(b=null==a?null:a+"",f):b},f.responseType=function(a){return arguments.length?(j=a,f):j},f.response=function(a){return c=a,f},["get","post"].forEach(function(a){f[a]=function(){return f.send.apply(f,[a].concat(Yg(arguments)))}}),f.send=function(c,d,e){if(2===arguments.length&&"function"==typeof d&&(e=d,d=null),i.open(c,a,!0),null==b||"accept"in h||(h.accept=b+",*/*"),i.setRequestHeader)for(var k in h)i.setRequestHeader(k,h[k]);return null!=b&&i.overrideMimeType&&i.overrideMimeType(b),null!=j&&(i.responseType=j),null!=e&&f.on("error",e).on("load",function(a){e(null,a)}),g.beforesend.call(f,i),i.send(null==d?null:d),f},f.abort=function(){return i.abort(),f},Wg.rebind(f,g,"on"),null==d?f:f.get(tb(d))}function tb(a){return 1===a.length?function(b,c){a(null==b?c:null)}:a}function ub(){var a=vb(),b=wb()-a;b>24?(isFinite(b)&&(clearTimeout(Zh),Zh=setTimeout(ub,b)),Yh=0):(Yh=1,_h(ub))}function vb(){var a=Date.now();for($h=Wh;$h;)a>=$h.t&&($h.f=$h.c(a-$h.t)),$h=$h.n;return a}function wb(){for(var a,b=Wh,c=1/0;b;)b.f?b=a?a.n=b.n:Wh=b.n:(b.t<c&&(c=b.t),b=(a=b).n);return Xh=a,c}function xb(a,b){var c=Math.pow(10,3*ih(8-b));return{scale:b>8?function(a){return a/c}:function(a){return a*c},symbol:a}}function yb(a,b){return b-(a?Math.ceil(Math.log(a)/Math.LN10):1)}function zb(a){return a+""}function Ab(){}function Bb(a,b,c){var d=c.s=a+b,e=d-a,f=d-e;c.t=a-f+(b-e)}function Cb(a,b){a&&li.hasOwnProperty(a.type)&&li[a.type](a,b)}function Db(a,b,c){var d,e=-1,f=a.length-c;for(b.lineStart();++e<f;)d=a[e],b.point(d[0],d[1],d[2]);b.lineEnd()}function Eb(a,b){var c=-1,d=a.length;for(b.polygonStart();++c<d;)Db(a[c],b,1);b.polygonEnd()}function Fb(){function a(a,b){a*=Fh,b=b*Fh/2+Ah/4;var c=a-d,g=Math.cos(b),h=Math.sin(b),i=f*h,j=e*g+i*Math.cos(c),k=i*Math.sin(c);ni.add(Math.atan2(k,j)),d=a,e=g,f=h}var b,c,d,e,f;oi.point=function(g,h){oi.point=a,d=(b=g)*Fh,e=Math.cos(h=(c=h)*Fh/2+Ah/4),f=Math.sin(h)},oi.lineEnd=function(){a(b,c)}}function Gb(a){var b=a[0],c=a[1],d=Math.cos(c);return[d*Math.cos(b),d*Math.sin(b),Math.sin(c)]}function Hb(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]}function Ib(a,b){return[a[1]*b[2]-a[2]*b[1],a[2]*b[0]-a[0]*b[2],a[0]*b[1]-a[1]*b[0]]}function Jb(a,b){a[0]+=b[0],a[1]+=b[1],a[2]+=b[2]}function Kb(a,b){return[a[0]*b,a[1]*b,a[2]*b]}function Lb(a){var b=Math.sqrt(a[0]*a[0]+a[1]*a[1]+a[2]*a[2]);a[0]/=b,a[1]/=b,a[2]/=b}function Mb(a){return[Math.atan2(a[1],a[0]),O(a[2])]}function Nb(a,b){return ih(a[0]-b[0])<Dh&&ih(a[1]-b[1])<Dh}function Ob(a,b){a*=Fh;var c=Math.cos(b*=Fh);Pb(c*Math.cos(a),c*Math.sin(a),Math.sin(b))}function Pb(a,b,c){++pi,ri+=(a-ri)/pi,si+=(b-si)/pi,ti+=(c-ti)/pi}function Qb(){function a(a,e){a*=Fh;var f=Math.cos(e*=Fh),g=f*Math.cos(a),h=f*Math.sin(a),i=Math.sin(e),j=Math.atan2(Math.sqrt((j=c*i-d*h)*j+(j=d*g-b*i)*j+(j=b*h-c*g)*j),b*g+c*h+d*i);qi+=j,ui+=j*(b+(b=g)),vi+=j*(c+(c=h)),wi+=j*(d+(d=i)),Pb(b,c,d)}var b,c,d;Ai.point=function(e,f){e*=Fh;var g=Math.cos(f*=Fh);b=g*Math.cos(e),c=g*Math.sin(e),d=Math.sin(f),Ai.point=a,Pb(b,c,d)}}function Rb(){Ai.point=Ob}function Sb(){function a(a,b){a*=Fh;var c=Math.cos(b*=Fh),g=c*Math.cos(a),h=c*Math.sin(a),i=Math.sin(b),j=e*i-f*h,k=f*g-d*i,l=d*h-e*g,m=Math.sqrt(j*j+k*k+l*l),n=d*g+e*h+f*i,o=m&&-N(n)/m,p=Math.atan2(m,n);xi+=o*j,yi+=o*k,zi+=o*l,qi+=p,ui+=p*(d+(d=g)),vi+=p*(e+(e=h)),wi+=p*(f+(f=i)),Pb(d,e,f)}var b,c,d,e,f;Ai.point=function(g,h){b=g,c=h,Ai.point=a,g*=Fh;var i=Math.cos(h*=Fh);d=i*Math.cos(g),e=i*Math.sin(g),f=Math.sin(h),Pb(d,e,f)},Ai.lineEnd=function(){a(b,c),Ai.lineEnd=Rb,Ai.point=Ob}}function Tb(){return!0}function Ub(a,b,c,d,e){var f=[],g=[];if(a.forEach(function(a){if(!((b=a.length-1)<=0)){var b,c=a[0],d=a[b];if(Nb(c,d)){e.lineStart();for(var h=0;b>h;++h)e.point((c=a[h])[0],c[1]);return void e.lineEnd()}var i=new Wb(c,a,null,!0),j=new Wb(c,null,i,!1);i.o=j,f.push(i),g.push(j),i=new Wb(d,a,null,!1),j=new Wb(d,null,i,!0),i.o=j,f.push(i),g.push(j)
-}}),g.sort(b),Vb(f),Vb(g),f.length){for(var h=0,i=c,j=g.length;j>h;++h)g[h].e=i=!i;for(var k,l,m=f[0];;){for(var n=m,o=!0;n.v;)if((n=n.n)===m)return;k=n.z,e.lineStart();do{if(n.v=n.o.v=!0,n.e){if(o)for(var h=0,j=k.length;j>h;++h)e.point((l=k[h])[0],l[1]);else d(n.x,n.n.x,1,e);n=n.n}else{if(o){k=n.p.z;for(var h=k.length-1;h>=0;--h)e.point((l=k[h])[0],l[1])}else d(n.x,n.p.x,-1,e);n=n.p}n=n.o,k=n.z,o=!o}while(!n.v);e.lineEnd()}}}function Vb(a){if(b=a.length){for(var b,c,d=0,e=a[0];++d<b;)e.n=c=a[d],c.p=e,e=c;e.n=c=a[0],c.p=e}}function Wb(a,b,c,d){this.x=a,this.z=b,this.o=c,this.e=d,this.v=!1,this.n=this.p=null}function Xb(a,b,c,d){return function(e,f){function g(b,c){var d=e(b,c);a(b=d[0],c=d[1])&&f.point(b,c)}function h(a,b){var c=e(a,b);q.point(c[0],c[1])}function i(){s.point=h,q.lineStart()}function j(){s.point=g,q.lineEnd()}function k(a,b){p.push([a,b]);var c=e(a,b);u.point(c[0],c[1])}function l(){u.lineStart(),p=[]}function m(){k(p[0][0],p[0][1]),u.lineEnd();var a,b=u.clean(),c=t.buffer(),d=c.length;if(p.pop(),o.push(p),p=null,d){if(1&b){a=c[0];var e,d=a.length-1,g=-1;for(f.lineStart();++g<d;)f.point((e=a[g])[0],e[1]);return void f.lineEnd()}d>1&&2&b&&c.push(c.pop().concat(c.shift())),n.push(c.filter(Yb))}}var n,o,p,q=b(f),r=e.invert(d[0],d[1]),s={point:g,lineStart:i,lineEnd:j,polygonStart:function(){s.point=k,s.lineStart=l,s.lineEnd=m,n=[],o=[],f.polygonStart()},polygonEnd:function(){s.point=g,s.lineStart=i,s.lineEnd=j,n=Wg.merge(n);var a=_b(r,o);n.length?Ub(n,$b,a,c,f):a&&(f.lineStart(),c(null,null,1,f),f.lineEnd()),f.polygonEnd(),n=o=null},sphere:function(){f.polygonStart(),f.lineStart(),c(null,null,1,f),f.lineEnd(),f.polygonEnd()}},t=Zb(),u=b(t);return s}}function Yb(a){return a.length>1}function Zb(){var a,b=[];return{lineStart:function(){b.push(a=[])},point:function(b,c){a.push([b,c])},lineEnd:i,buffer:function(){var c=b;return b=[],a=null,c},rejoin:function(){b.length>1&&b.push(b.pop().concat(b.shift()))}}}function $b(a,b){return((a=a.x)[0]<0?a[1]-Ch-Dh:Ch-a[1])-((b=b.x)[0]<0?b[1]-Ch-Dh:Ch-b[1])}function _b(a,b){var c=a[0],d=a[1],e=[Math.sin(c),-Math.cos(c),0],f=0,g=0;ni.reset();for(var h=0,i=b.length;i>h;++h){var j=b[h],k=j.length;if(k)for(var l=j[0],m=l[0],n=l[1]/2+Ah/4,o=Math.sin(n),p=Math.cos(n),q=1;;){q===k&&(q=0),a=j[q];var r=a[0],s=a[1]/2+Ah/4,t=Math.sin(s),u=Math.cos(s),v=r-m,w=ih(v)>Ah,x=o*t;if(ni.add(Math.atan2(x*Math.sin(v),p*u+x*Math.cos(v))),f+=w?v+(v>=0?Bh:-Bh):v,w^m>=c^r>=c){var y=Ib(Gb(l),Gb(a));Lb(y);var z=Ib(e,y);Lb(z);var A=(w^v>=0?-1:1)*O(z[2]);(d>A||d===A&&(y[0]||y[1]))&&(g+=w^v>=0?1:-1)}if(!q++)break;m=r,o=t,p=u,l=a}}return(-Dh>f||Dh>f&&0>ni)^1&g}function ac(a){var b,c=0/0,d=0/0,e=0/0;return{lineStart:function(){a.lineStart(),b=1},point:function(f,g){var h=f>0?Ah:-Ah,i=ih(f-c);ih(i-Ah)<Dh?(a.point(c,d=(d+g)/2>0?Ch:-Ch),a.point(e,d),a.lineEnd(),a.lineStart(),a.point(h,d),a.point(f,d),b=0):e!==h&&i>=Ah&&(ih(c-e)<Dh&&(c-=e*Dh),ih(f-h)<Dh&&(f-=h*Dh),d=bc(c,d,f,g),a.point(e,d),a.lineEnd(),a.lineStart(),a.point(h,d),b=0),a.point(c=f,d=g),e=h},lineEnd:function(){a.lineEnd(),c=d=0/0},clean:function(){return 2-b}}}function bc(a,b,c,d){var e,f,g=Math.sin(a-c);return ih(g)>Dh?Math.atan((Math.sin(b)*(f=Math.cos(d))*Math.sin(c)-Math.sin(d)*(e=Math.cos(b))*Math.sin(a))/(e*f*g)):(b+d)/2}function cc(a,b,c,d){var e;if(null==a)e=c*Ch,d.point(-Ah,e),d.point(0,e),d.point(Ah,e),d.point(Ah,0),d.point(Ah,-e),d.point(0,-e),d.point(-Ah,-e),d.point(-Ah,0),d.point(-Ah,e);else if(ih(a[0]-b[0])>Dh){var f=a[0]<b[0]?Ah:-Ah;e=c*f/2,d.point(-f,e),d.point(0,e),d.point(f,e)}else d.point(b[0],b[1])}function dc(a){function b(a,b){return Math.cos(a)*Math.cos(b)>f}function c(a){var c,f,i,j,k;return{lineStart:function(){j=i=!1,k=1},point:function(l,m){var n,o=[l,m],p=b(l,m),q=g?p?0:e(l,m):p?e(l+(0>l?Ah:-Ah),m):0;if(!c&&(j=i=p)&&a.lineStart(),p!==i&&(n=d(c,o),(Nb(c,n)||Nb(o,n))&&(o[0]+=Dh,o[1]+=Dh,p=b(o[0],o[1]))),p!==i)k=0,p?(a.lineStart(),n=d(o,c),a.point(n[0],n[1])):(n=d(c,o),a.point(n[0],n[1]),a.lineEnd()),c=n;else if(h&&c&&g^p){var r;q&f||!(r=d(o,c,!0))||(k=0,g?(a.lineStart(),a.point(r[0][0],r[0][1]),a.point(r[1][0],r[1][1]),a.lineEnd()):(a.point(r[1][0],r[1][1]),a.lineEnd(),a.lineStart(),a.point(r[0][0],r[0][1])))}!p||c&&Nb(c,o)||a.point(o[0],o[1]),c=o,i=p,f=q},lineEnd:function(){i&&a.lineEnd(),c=null},clean:function(){return k|(j&&i)<<1}}}function d(a,b,c){var d=Gb(a),e=Gb(b),g=[1,0,0],h=Ib(d,e),i=Hb(h,h),j=h[0],k=i-j*j;if(!k)return!c&&a;var l=f*i/k,m=-f*j/k,n=Ib(g,h),o=Kb(g,l),p=Kb(h,m);Jb(o,p);var q=n,r=Hb(o,q),s=Hb(q,q),t=r*r-s*(Hb(o,o)-1);if(!(0>t)){var u=Math.sqrt(t),v=Kb(q,(-r-u)/s);if(Jb(v,o),v=Mb(v),!c)return v;var w,x=a[0],y=b[0],z=a[1],A=b[1];x>y&&(w=x,x=y,y=w);var B=y-x,C=ih(B-Ah)<Dh,D=C||Dh>B;if(!C&&z>A&&(w=z,z=A,A=w),D?C?z+A>0^v[1]<(ih(v[0]-x)<Dh?z:A):z<=v[1]&&v[1]<=A:B>Ah^(x<=v[0]&&v[0]<=y)){var E=Kb(q,(-r+u)/s);return Jb(E,o),[v,Mb(E)]}}}function e(b,c){var d=g?a:Ah-a,e=0;return-d>b?e|=1:b>d&&(e|=2),-d>c?e|=4:c>d&&(e|=8),e}var f=Math.cos(a),g=f>0,h=ih(f)>Dh,i=Fc(a,6*Fh);return Xb(b,c,i,g?[0,-a]:[-Ah,a-Ah])}function ec(a,b,c,d){return function(e){var f,g=e.a,h=e.b,i=g.x,j=g.y,k=h.x,l=h.y,m=0,n=1,o=k-i,p=l-j;if(f=a-i,o||!(f>0)){if(f/=o,0>o){if(m>f)return;n>f&&(n=f)}else if(o>0){if(f>n)return;f>m&&(m=f)}if(f=c-i,o||!(0>f)){if(f/=o,0>o){if(f>n)return;f>m&&(m=f)}else if(o>0){if(m>f)return;n>f&&(n=f)}if(f=b-j,p||!(f>0)){if(f/=p,0>p){if(m>f)return;n>f&&(n=f)}else if(p>0){if(f>n)return;f>m&&(m=f)}if(f=d-j,p||!(0>f)){if(f/=p,0>p){if(f>n)return;f>m&&(m=f)}else if(p>0){if(m>f)return;n>f&&(n=f)}return m>0&&(e.a={x:i+m*o,y:j+m*p}),1>n&&(e.b={x:i+n*o,y:j+n*p}),e}}}}}}function fc(a,b,c,d){function e(d,e){return ih(d[0]-a)<Dh?e>0?0:3:ih(d[0]-c)<Dh?e>0?2:1:ih(d[1]-b)<Dh?e>0?1:0:e>0?3:2}function f(a,b){return g(a.x,b.x)}function g(a,b){var c=e(a,1),d=e(b,1);return c!==d?c-d:0===c?b[1]-a[1]:1===c?a[0]-b[0]:2===c?a[1]-b[1]:b[0]-a[0]}return function(h){function i(a){for(var b=0,c=r.length,d=a[1],e=0;c>e;++e)for(var f,g=1,h=r[e],i=h.length,k=h[0];i>g;++g)f=h[g],k[1]<=d?f[1]>d&&j(k,f,a)>0&&++b:f[1]<=d&&j(k,f,a)<0&&--b,k=f;return 0!==b}function j(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])}function k(f,h,i,j){var k=0,l=0;if(null==f||(k=e(f,i))!==(l=e(h,i))||g(f,h)<0^i>0){do j.point(0===k||3===k?a:c,k>1?d:b);while((k=(k+i+4)%4)!==l)}else j.point(h[0],h[1])}function l(e,f){return e>=a&&c>=e&&f>=b&&d>=f}function m(a,b){l(a,b)&&h.point(a,b)}function n(){E.point=p,r&&r.push(s=[]),z=!0,y=!1,w=x=0/0}function o(){q&&(p(t,u),v&&y&&C.rejoin(),q.push(C.buffer())),E.point=m,y&&h.lineEnd()}function p(a,b){a=Math.max(-Ci,Math.min(Ci,a)),b=Math.max(-Ci,Math.min(Ci,b));var c=l(a,b);if(r&&s.push([a,b]),z)t=a,u=b,v=c,z=!1,c&&(h.lineStart(),h.point(a,b));else if(c&&y)h.point(a,b);else{var d={a:{x:w,y:x},b:{x:a,y:b}};D(d)?(y||(h.lineStart(),h.point(d.a.x,d.a.y)),h.point(d.b.x,d.b.y),c||h.lineEnd(),A=!1):c&&(h.lineStart(),h.point(a,b),A=!1)}w=a,x=b,y=c}var q,r,s,t,u,v,w,x,y,z,A,B=h,C=Zb(),D=ec(a,b,c,d),E={point:m,lineStart:n,lineEnd:o,polygonStart:function(){h=C,q=[],r=[],A=!0},polygonEnd:function(){h=B,q=Wg.merge(q);var b=i([a,d]),c=A&&b,e=q.length;(c||e)&&(h.polygonStart(),c&&(h.lineStart(),k(null,null,1,h),h.lineEnd()),e&&Ub(q,f,b,k,h),h.polygonEnd()),q=r=s=null}};return E}}function gc(a,b){function c(c,d){return c=a(c,d),b(c[0],c[1])}return a.invert&&b.invert&&(c.invert=function(c,d){return c=b.invert(c,d),c&&a.invert(c[0],c[1])}),c}function hc(a){var b=0,c=Ah/3,d=xc(a),e=d(b,c);return e.parallels=function(a){return arguments.length?d(b=a[0]*Ah/180,c=a[1]*Ah/180):[b/Ah*180,c/Ah*180]},e}function ic(a,b){function c(a,b){var c=Math.sqrt(f-2*e*Math.sin(b))/e;return[c*Math.sin(a*=e),g-c*Math.cos(a)]}var d=Math.sin(a),e=(d+Math.sin(b))/2,f=1+d*(2*e-d),g=Math.sqrt(f)/e;return c.invert=function(a,b){var c=g-b;return[Math.atan2(a,c)/e,O((f-(a*a+c*c)*e*e)/(2*e))]},c}function jc(){function a(a,b){Ei+=e*a-d*b,d=a,e=b}var b,c,d,e;Ji.point=function(f,g){Ji.point=a,b=d=f,c=e=g},Ji.lineEnd=function(){a(b,c)}}function kc(a,b){Fi>a&&(Fi=a),a>Hi&&(Hi=a),Gi>b&&(Gi=b),b>Ii&&(Ii=b)}function lc(){function a(a,b){g.push("M",a,",",b,f)}function b(a,b){g.push("M",a,",",b),h.point=c}function c(a,b){g.push("L",a,",",b)}function d(){h.point=a}function e(){g.push("Z")}var f=mc(4.5),g=[],h={point:a,lineStart:function(){h.point=b},lineEnd:d,polygonStart:function(){h.lineEnd=e},polygonEnd:function(){h.lineEnd=d,h.point=a},pointRadius:function(a){return f=mc(a),h},result:function(){if(g.length){var a=g.join("");return g=[],a}}};return h}function mc(a){return"m0,"+a+"a"+a+","+a+" 0 1,1 0,"+-2*a+"a"+a+","+a+" 0 1,1 0,"+2*a+"z"}function nc(a,b){ri+=a,si+=b,++ti}function oc(){function a(a,d){var e=a-b,f=d-c,g=Math.sqrt(e*e+f*f);ui+=g*(b+a)/2,vi+=g*(c+d)/2,wi+=g,nc(b=a,c=d)}var b,c;Li.point=function(d,e){Li.point=a,nc(b=d,c=e)}}function pc(){Li.point=nc}function qc(){function a(a,b){var c=a-d,f=b-e,g=Math.sqrt(c*c+f*f);ui+=g*(d+a)/2,vi+=g*(e+b)/2,wi+=g,g=e*a-d*b,xi+=g*(d+a),yi+=g*(e+b),zi+=3*g,nc(d=a,e=b)}var b,c,d,e;Li.point=function(f,g){Li.point=a,nc(b=d=f,c=e=g)},Li.lineEnd=function(){a(b,c)}}function rc(a){function b(b,c){a.moveTo(b,c),a.arc(b,c,g,0,Bh)}function c(b,c){a.moveTo(b,c),h.point=d}function d(b,c){a.lineTo(b,c)}function e(){h.point=b}function f(){a.closePath()}var g=4.5,h={point:b,lineStart:function(){h.point=c},lineEnd:e,polygonStart:function(){h.lineEnd=f},polygonEnd:function(){h.lineEnd=e,h.point=b},pointRadius:function(a){return g=a,h},result:i};return h}function sc(a){function b(a){return(h?d:c)(a)}function c(b){return vc(b,function(c,d){c=a(c,d),b.point(c[0],c[1])})}function d(b){function c(c,d){c=a(c,d),b.point(c[0],c[1])}function d(){t=0/0,y.point=f,b.lineStart()}function f(c,d){var f=Gb([c,d]),g=a(c,d);e(t,u,s,v,w,x,t=g[0],u=g[1],s=c,v=f[0],w=f[1],x=f[2],h,b),b.point(t,u)}function g(){y.point=c,b.lineEnd()}function i(){d(),y.point=j,y.lineEnd=k}function j(a,b){f(l=a,m=b),n=t,o=u,p=v,q=w,r=x,y.point=f}function k(){e(t,u,s,v,w,x,n,o,l,p,q,r,h,b),y.lineEnd=g,g()}var l,m,n,o,p,q,r,s,t,u,v,w,x,y={point:c,lineStart:d,lineEnd:g,polygonStart:function(){b.polygonStart(),y.lineStart=i},polygonEnd:function(){b.polygonEnd(),y.lineStart=d}};return y}function e(b,c,d,h,i,j,k,l,m,n,o,p,q,r){var s=k-b,t=l-c,u=s*s+t*t;if(u>4*f&&q--){var v=h+n,w=i+o,x=j+p,y=Math.sqrt(v*v+w*w+x*x),z=Math.asin(x/=y),A=ih(ih(x)-1)<Dh||ih(d-m)<Dh?(d+m)/2:Math.atan2(w,v),B=a(A,z),C=B[0],D=B[1],E=C-b,F=D-c,G=t*E-s*F;(G*G/u>f||ih((s*E+t*F)/u-.5)>.3||g>h*n+i*o+j*p)&&(e(b,c,d,h,i,j,C,D,A,v/=y,w/=y,x,q,r),r.point(C,D),e(C,D,A,v,w,x,k,l,m,n,o,p,q,r))}}var f=.5,g=Math.cos(30*Fh),h=16;return b.precision=function(a){return arguments.length?(h=(f=a*a)>0&&16,b):Math.sqrt(f)},b}function tc(a){var b=sc(function(b,c){return a([b*Gh,c*Gh])});return function(a){return yc(b(a))}}function uc(a){this.stream=a}function vc(a,b){return{point:b,sphere:function(){a.sphere()},lineStart:function(){a.lineStart()},lineEnd:function(){a.lineEnd()},polygonStart:function(){a.polygonStart()},polygonEnd:function(){a.polygonEnd()}}}function wc(a){return xc(function(){return a})()}function xc(a){function b(a){return a=h(a[0]*Fh,a[1]*Fh),[a[0]*m+i,j-a[1]*m]}function c(a){return a=h.invert((a[0]-i)/m,(j-a[1])/m),a&&[a[0]*Gh,a[1]*Gh]}function d(){h=gc(g=Bc(r,s,t),f);var a=f(p,q);return i=n-a[0]*m,j=o+a[1]*m,e()}function e(){return k&&(k.valid=!1,k=null),b}var f,g,h,i,j,k,l=sc(function(a,b){return a=f(a,b),[a[0]*m+i,j-a[1]*m]}),m=150,n=480,o=250,p=0,q=0,r=0,s=0,t=0,u=Bi,v=qb,w=null,x=null;return b.stream=function(a){return k&&(k.valid=!1),k=yc(u(g,l(v(a)))),k.valid=!0,k},b.clipAngle=function(a){return arguments.length?(u=null==a?(w=a,Bi):dc((w=+a)*Fh),e()):w},b.clipExtent=function(a){return arguments.length?(x=a,v=a?fc(a[0][0],a[0][1],a[1][0],a[1][1]):qb,e()):x},b.scale=function(a){return arguments.length?(m=+a,d()):m},b.translate=function(a){return arguments.length?(n=+a[0],o=+a[1],d()):[n,o]},b.center=function(a){return arguments.length?(p=a[0]%360*Fh,q=a[1]%360*Fh,d()):[p*Gh,q*Gh]},b.rotate=function(a){return arguments.length?(r=a[0]%360*Fh,s=a[1]%360*Fh,t=a.length>2?a[2]%360*Fh:0,d()):[r*Gh,s*Gh,t*Gh]},Wg.rebind(b,l,"precision"),function(){return f=a.apply(this,arguments),b.invert=f.invert&&c,d()}}function yc(a){return vc(a,function(b,c){a.point(b*Fh,c*Fh)})}function zc(a,b){return[a,b]}function Ac(a,b){return[a>Ah?a-Bh:-Ah>a?a+Bh:a,b]}function Bc(a,b,c){return a?b||c?gc(Dc(a),Ec(b,c)):Dc(a):b||c?Ec(b,c):Ac}function Cc(a){return function(b,c){return b+=a,[b>Ah?b-Bh:-Ah>b?b+Bh:b,c]}}function Dc(a){var b=Cc(a);return b.invert=Cc(-a),b}function Ec(a,b){function c(a,b){var c=Math.cos(b),h=Math.cos(a)*c,i=Math.sin(a)*c,j=Math.sin(b),k=j*d+h*e;return[Math.atan2(i*f-k*g,h*d-j*e),O(k*f+i*g)]}var d=Math.cos(a),e=Math.sin(a),f=Math.cos(b),g=Math.sin(b);return c.invert=function(a,b){var c=Math.cos(b),h=Math.cos(a)*c,i=Math.sin(a)*c,j=Math.sin(b),k=j*f-i*g;return[Math.atan2(i*f+j*g,h*d+k*e),O(k*d-h*e)]},c}function Fc(a,b){var c=Math.cos(a),d=Math.sin(a);return function(e,f,g,h){var i=g*b;null!=e?(e=Gc(c,e),f=Gc(c,f),(g>0?f>e:e>f)&&(e+=g*Bh)):(e=a+g*Bh,f=a-.5*i);for(var j,k=e;g>0?k>f:f>k;k-=i)h.point((j=Mb([c,-d*Math.cos(k),-d*Math.sin(k)]))[0],j[1])}}function Gc(a,b){var c=Gb(b);c[0]-=a,Lb(c);var d=N(-c[1]);return((-c[2]<0?-d:d)+2*Math.PI-Dh)%(2*Math.PI)}function Hc(a,b,c){var d=Wg.range(a,b-Dh,c).concat(b);return function(a){return d.map(function(b){return[a,b]})}}function Ic(a,b,c){var d=Wg.range(a,b-Dh,c).concat(b);return function(a){return d.map(function(b){return[b,a]})}}function Jc(a){return a.source}function Kc(a){return a.target}function Lc(a,b,c,d){var e=Math.cos(b),f=Math.sin(b),g=Math.cos(d),h=Math.sin(d),i=e*Math.cos(a),j=e*Math.sin(a),k=g*Math.cos(c),l=g*Math.sin(c),m=2*Math.asin(Math.sqrt(S(d-b)+e*g*S(c-a))),n=1/Math.sin(m),o=m?function(a){var b=Math.sin(a*=m)*n,c=Math.sin(m-a)*n,d=c*i+b*k,e=c*j+b*l,g=c*f+b*h;return[Math.atan2(e,d)*Gh,Math.atan2(g,Math.sqrt(d*d+e*e))*Gh]}:function(){return[a*Gh,b*Gh]};return o.distance=m,o}function Mc(){function a(a,e){var f=Math.sin(e*=Fh),g=Math.cos(e),h=ih((a*=Fh)-b),i=Math.cos(h);Mi+=Math.atan2(Math.sqrt((h=g*Math.sin(h))*h+(h=d*f-c*g*i)*h),c*f+d*g*i),b=a,c=f,d=g}var b,c,d;Ni.point=function(e,f){b=e*Fh,c=Math.sin(f*=Fh),d=Math.cos(f),Ni.point=a},Ni.lineEnd=function(){Ni.point=Ni.lineEnd=i}}function Nc(a,b){function c(b,c){var d=Math.cos(b),e=Math.cos(c),f=a(d*e);return[f*e*Math.sin(b),f*Math.sin(c)]}return c.invert=function(a,c){var d=Math.sqrt(a*a+c*c),e=b(d),f=Math.sin(e),g=Math.cos(e);return[Math.atan2(a*f,d*g),Math.asin(d&&c*f/d)]},c}function Oc(a,b){function c(a,b){var c=ih(ih(b)-Ch)<Dh?0:g/Math.pow(e(b),f);return[c*Math.sin(f*a),g-c*Math.cos(f*a)]}var d=Math.cos(a),e=function(a){return Math.tan(Ah/4+a/2)},f=a===b?Math.sin(a):Math.log(d/Math.cos(b))/Math.log(e(b)/e(a)),g=d*Math.pow(e(a),f)/f;return f?(c.invert=function(a,b){var c=g-b,d=M(f)*Math.sqrt(a*a+c*c);return[Math.atan2(a,c)/f,2*Math.atan(Math.pow(g/d,1/f))-Ch]},c):Qc}function Pc(a,b){function c(a,b){var c=f-b;return[c*Math.sin(e*a),f-c*Math.cos(e*a)]}var d=Math.cos(a),e=a===b?Math.sin(a):(d-Math.cos(b))/(b-a),f=d/e+a;return ih(e)<Dh?zc:(c.invert=function(a,b){var c=f-b;return[Math.atan2(a,c)/e,f-M(e)*Math.sqrt(a*a+c*c)]},c)}function Qc(a,b){return[a,Math.log(Math.tan(Ah/4+b/2))]}function Rc(a){var b,c=wc(a),d=c.scale,e=c.translate,f=c.clipExtent;return c.scale=function(){var a=d.apply(c,arguments);return a===c?b?c.clipExtent(null):c:a},c.translate=function(){var a=e.apply(c,arguments);return a===c?b?c.clipExtent(null):c:a},c.clipExtent=function(a){var g=f.apply(c,arguments);if(g===c){if(b=null==a){var h=Ah*d(),i=e();f([[i[0]-h,i[1]-h],[i[0]+h,i[1]+h]])}}else b&&(g=null);return g},c.clipExtent(null)}function Sc(a,b){return[Math.log(Math.tan(Ah/4+b/2)),-a]}function Tc(a){return a[0]}function Uc(a){return a[1]}function Vc(a,b,c,d){var e,f,g,h,i,j,k;return e=d[a],f=e[0],g=e[1],e=d[b],h=e[0],i=e[1],e=d[c],j=e[0],k=e[1],(k-g)*(h-f)-(i-g)*(j-f)>0}function Wc(a,b,c){return(c[0]-b[0])*(a[1]-b[1])<(c[1]-b[1])*(a[0]-b[0])}function Xc(a,b,c,d){var e=a[0],f=c[0],g=b[0]-e,h=d[0]-f,i=a[1],j=c[1],k=b[1]-i,l=d[1]-j,m=(h*(i-j)-l*(e-f))/(l*g-h*k);return[e+m*g,i+m*k]}function Yc(a){var b=a[0],c=a[a.length-1];return!(b[0]-c[0]||b[1]-c[1])}function Zc(){sd(this),this.edge=this.site=this.circle=null}function $c(a){var b=Zi.pop()||new Zc;return b.site=a,b}function _c(a){jd(a),Wi.remove(a),Zi.push(a),sd(a)}function ad(a){var b=a.circle,c=b.x,d=b.cy,e={x:c,y:d},f=a.P,g=a.N,h=[a];_c(a);for(var i=f;i.circle&&ih(c-i.circle.x)<Dh&&ih(d-i.circle.cy)<Dh;)f=i.P,h.unshift(i),_c(i),i=f;h.unshift(i),jd(i);for(var j=g;j.circle&&ih(c-j.circle.x)<Dh&&ih(d-j.circle.cy)<Dh;)g=j.N,h.push(j),_c(j),j=g;h.push(j),jd(j);var k,l=h.length;for(k=1;l>k;++k)j=h[k],i=h[k-1],pd(j.edge,i.site,j.site,e);i=h[0],j=h[l-1],j.edge=nd(i.site,j.site,null,e),id(i),id(j)}function bd(a){for(var b,c,d,e,f=a.x,g=a.y,h=Wi._;h;)if(d=cd(h,g)-f,d>Dh)h=h.L;else{if(e=f-dd(h,g),!(e>Dh)){d>-Dh?(b=h.P,c=h):e>-Dh?(b=h,c=h.N):b=c=h;break}if(!h.R){b=h;break}h=h.R}var i=$c(a);if(Wi.insert(b,i),b||c){if(b===c)return jd(b),c=$c(b.site),Wi.insert(i,c),i.edge=c.edge=nd(b.site,i.site),id(b),void id(c);if(!c)return void(i.edge=nd(b.site,i.site));jd(b),jd(c);var j=b.site,k=j.x,l=j.y,m=a.x-k,n=a.y-l,o=c.site,p=o.x-k,q=o.y-l,r=2*(m*q-n*p),s=m*m+n*n,t=p*p+q*q,u={x:(q*s-n*t)/r+k,y:(m*t-p*s)/r+l};pd(c.edge,j,o,u),i.edge=nd(j,a,null,u),c.edge=nd(a,o,null,u),id(b),id(c)}}function cd(a,b){var c=a.site,d=c.x,e=c.y,f=e-b;if(!f)return d;var g=a.P;if(!g)return-1/0;c=g.site;var h=c.x,i=c.y,j=i-b;if(!j)return h;var k=h-d,l=1/f-1/j,m=k/j;return l?(-m+Math.sqrt(m*m-2*l*(k*k/(-2*j)-i+j/2+e-f/2)))/l+d:(d+h)/2}function dd(a,b){var c=a.N;if(c)return cd(c,b);var d=a.site;return d.y===b?d.x:1/0}function ed(a){this.site=a,this.edges=[]}function fd(a){for(var b,c,d,e,f,g,h,i,j,k,l=a[0][0],m=a[1][0],n=a[0][1],o=a[1][1],p=Vi,q=p.length;q--;)if(f=p[q],f&&f.prepare())for(h=f.edges,i=h.length,g=0;i>g;)k=h[g].end(),d=k.x,e=k.y,j=h[++g%i].start(),b=j.x,c=j.y,(ih(d-b)>Dh||ih(e-c)>Dh)&&(h.splice(g,0,new qd(od(f.site,k,ih(d-l)<Dh&&o-e>Dh?{x:l,y:ih(b-l)<Dh?c:o}:ih(e-o)<Dh&&m-d>Dh?{x:ih(c-o)<Dh?b:m,y:o}:ih(d-m)<Dh&&e-n>Dh?{x:m,y:ih(b-m)<Dh?c:n}:ih(e-n)<Dh&&d-l>Dh?{x:ih(c-n)<Dh?b:l,y:n}:null),f.site,null)),++i)}function gd(a,b){return b.angle-a.angle}function hd(){sd(this),this.x=this.y=this.arc=this.site=this.cy=null}function id(a){var b=a.P,c=a.N;if(b&&c){var d=b.site,e=a.site,f=c.site;if(d!==f){var g=e.x,h=e.y,i=d.x-g,j=d.y-h,k=f.x-g,l=f.y-h,m=2*(i*l-j*k);if(!(m>=-Eh)){var n=i*i+j*j,o=k*k+l*l,p=(l*n-j*o)/m,q=(i*o-k*n)/m,l=q+h,r=$i.pop()||new hd;r.arc=a,r.site=e,r.x=p+g,r.y=l+Math.sqrt(p*p+q*q),r.cy=l,a.circle=r;for(var s=null,t=Yi._;t;)if(r.y<t.y||r.y===t.y&&r.x<=t.x){if(!t.L){s=t.P;break}t=t.L}else{if(!t.R){s=t;break}t=t.R}Yi.insert(s,r),s||(Xi=r)}}}}function jd(a){var b=a.circle;b&&(b.P||(Xi=b.N),Yi.remove(b),$i.push(b),sd(b),a.circle=null)}function kd(a){for(var b,c=Ui,d=ec(a[0][0],a[0][1],a[1][0],a[1][1]),e=c.length;e--;)b=c[e],(!ld(b,a)||!d(b)||ih(b.a.x-b.b.x)<Dh&&ih(b.a.y-b.b.y)<Dh)&&(b.a=b.b=null,c.splice(e,1))}function ld(a,b){var c=a.b;if(c)return!0;var d,e,f=a.a,g=b[0][0],h=b[1][0],i=b[0][1],j=b[1][1],k=a.l,l=a.r,m=k.x,n=k.y,o=l.x,p=l.y,q=(m+o)/2,r=(n+p)/2;if(p===n){if(g>q||q>=h)return;if(m>o){if(f){if(f.y>=j)return}else f={x:q,y:i};c={x:q,y:j}}else{if(f){if(f.y<i)return}else f={x:q,y:j};c={x:q,y:i}}}else if(d=(m-o)/(p-n),e=r-d*q,-1>d||d>1)if(m>o){if(f){if(f.y>=j)return}else f={x:(i-e)/d,y:i};c={x:(j-e)/d,y:j}}else{if(f){if(f.y<i)return}else f={x:(j-e)/d,y:j};c={x:(i-e)/d,y:i}}else if(p>n){if(f){if(f.x>=h)return}else f={x:g,y:d*g+e};c={x:h,y:d*h+e}}else{if(f){if(f.x<g)return}else f={x:h,y:d*h+e};c={x:g,y:d*g+e}}return a.a=f,a.b=c,!0}function md(a,b){this.l=a,this.r=b,this.a=this.b=null}function nd(a,b,c,d){var e=new md(a,b);return Ui.push(e),c&&pd(e,a,b,c),d&&pd(e,b,a,d),Vi[a.i].edges.push(new qd(e,a,b)),Vi[b.i].edges.push(new qd(e,b,a)),e}function od(a,b,c){var d=new md(a,null);return d.a=b,d.b=c,Ui.push(d),d}function pd(a,b,c,d){a.a||a.b?a.l===c?a.b=d:a.a=d:(a.a=d,a.l=b,a.r=c)}function qd(a,b,c){var d=a.a,e=a.b;this.edge=a,this.site=b,this.angle=c?Math.atan2(c.y-b.y,c.x-b.x):a.l===b?Math.atan2(e.x-d.x,d.y-e.y):Math.atan2(d.x-e.x,e.y-d.y)}function rd(){this._=null}function sd(a){a.U=a.C=a.L=a.R=a.P=a.N=null}function td(a,b){var c=b,d=b.R,e=c.U;e?e.L===c?e.L=d:e.R=d:a._=d,d.U=e,c.U=d,c.R=d.L,c.R&&(c.R.U=c),d.L=c}function ud(a,b){var c=b,d=b.L,e=c.U;e?e.L===c?e.L=d:e.R=d:a._=d,d.U=e,c.U=d,c.L=d.R,c.L&&(c.L.U=c),d.R=c}function vd(a){for(;a.L;)a=a.L;return a}function wd(a,b){var c,d,e,f=a.sort(xd).pop();for(Ui=[],Vi=new Array(a.length),Wi=new rd,Yi=new rd;;)if(e=Xi,f&&(!e||f.y<e.y||f.y===e.y&&f.x<e.x))(f.x!==c||f.y!==d)&&(Vi[f.i]=new ed(f),bd(f),c=f.x,d=f.y),f=a.pop();else{if(!e)break;ad(e.arc)}b&&(kd(b),fd(b));var g={cells:Vi,edges:Ui};return Wi=Yi=Ui=Vi=null,g}function xd(a,b){return b.y-a.y||b.x-a.x}function yd(a,b,c){return(a.x-c.x)*(b.y-a.y)-(a.x-b.x)*(c.y-a.y)}function zd(a){return a.x}function Ad(a){return a.y}function Bd(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function Cd(a,b,c,d,e,f){if(!a(b,c,d,e,f)){var g=.5*(c+e),h=.5*(d+f),i=b.nodes;i[0]&&Cd(a,i[0],c,d,g,h),i[1]&&Cd(a,i[1],g,d,e,h),i[2]&&Cd(a,i[2],c,h,g,f),i[3]&&Cd(a,i[3],g,h,e,f)}}function Dd(a,b){a=Wg.rgb(a),b=Wg.rgb(b);var c=a.r,d=a.g,e=a.b,f=b.r-c,g=b.g-d,h=b.b-e;return function(a){return"#"+jb(Math.round(c+f*a))+jb(Math.round(d+g*a))+jb(Math.round(e+h*a))}}function Ed(a,b){var c,d={},e={};for(c in a)c in b?d[c]=Hd(a[c],b[c]):e[c]=a[c];for(c in b)c in a||(e[c]=b[c]);return function(a){for(c in d)e[c]=d[c](a);return e}}function Fd(a,b){return b-=a=+a,function(c){return a+b*c}}function Gd(a,b){var c,d,e,f,g,h=0,i=0,j=[],k=[];for(a+="",b+="",aj.lastIndex=0,d=0;c=aj.exec(b);++d)c.index&&j.push(b.substring(h,i=c.index)),k.push({i:j.length,x:c[0]}),j.push(null),h=aj.lastIndex;for(h<b.length&&j.push(b.substring(h)),d=0,f=k.length;(c=aj.exec(a))&&f>d;++d)if(g=k[d],g.x==c[0]){if(g.i)if(null==j[g.i+1])for(j[g.i-1]+=g.x,j.splice(g.i,1),e=d+1;f>e;++e)k[e].i--;else for(j[g.i-1]+=g.x+j[g.i+1],j.splice(g.i,2),e=d+1;f>e;++e)k[e].i-=2;else if(null==j[g.i+1])j[g.i]=g.x;else for(j[g.i]=g.x+j[g.i+1],j.splice(g.i+1,1),e=d+1;f>e;++e)k[e].i--;k.splice(d,1),f--,d--}else g.x=Fd(parseFloat(c[0]),parseFloat(g.x));for(;f>d;)g=k.pop(),null==j[g.i+1]?j[g.i]=g.x:(j[g.i]=g.x+j[g.i+1],j.splice(g.i+1,1)),f--;return 1===j.length?null==j[0]?(g=k[0].x,function(a){return g(a)+""}):function(){return b}:function(a){for(d=0;f>d;++d)j[(g=k[d]).i]=g.x(a);return j.join("")}}function Hd(a,b){for(var c,d=Wg.interpolators.length;--d>=0&&!(c=Wg.interpolators[d](a,b)););return c}function Id(a,b){var c,d=[],e=[],f=a.length,g=b.length,h=Math.min(a.length,b.length);for(c=0;h>c;++c)d.push(Hd(a[c],b[c]));for(;f>c;++c)e[c]=a[c];for(;g>c;++c)e[c]=b[c];return function(a){for(c=0;h>c;++c)e[c]=d[c](a);return e}}function Jd(a){return function(b){return 0>=b?0:b>=1?1:a(b)}}function Kd(a){return function(b){return 1-a(1-b)}}function Ld(a){return function(b){return.5*(.5>b?a(2*b):2-a(2-2*b))}}function Md(a){return a*a}function Nd(a){return a*a*a}function Od(a){if(0>=a)return 0;if(a>=1)return 1;var b=a*a,c=b*a;return 4*(.5>a?c:3*(a-b)+c-.75)}function Pd(a){return function(b){return Math.pow(b,a)}}function Qd(a){return 1-Math.cos(a*Ch)}function Rd(a){return Math.pow(2,10*(a-1))}function Sd(a){return 1-Math.sqrt(1-a*a)}function Td(a,b){var c;return arguments.length<2&&(b=.45),arguments.length?c=b/Bh*Math.asin(1/a):(a=1,c=b/4),function(d){return 1+a*Math.pow(2,-10*d)*Math.sin((d-c)*Bh/b)}}function Ud(a){return a||(a=1.70158),function(b){return b*b*((a+1)*b-a)}}function Vd(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375}function Wd(a,b){a=Wg.hcl(a),b=Wg.hcl(b);var c=a.h,d=a.c,e=a.l,f=b.h-c,g=b.c-d,h=b.l-e;return isNaN(g)&&(g=0,d=isNaN(d)?b.c:d),isNaN(f)?(f=0,c=isNaN(c)?b.h:c):f>180?f-=360:-180>f&&(f+=360),function(a){return Z(c+f*a,d+g*a,e+h*a)+""}}function Xd(a,b){a=Wg.hsl(a),b=Wg.hsl(b);var c=a.h,d=a.s,e=a.l,f=b.h-c,g=b.s-d,h=b.l-e;return isNaN(g)&&(g=0,d=isNaN(d)?b.s:d),isNaN(f)?(f=0,c=isNaN(c)?b.h:c):f>180?f-=360:-180>f&&(f+=360),function(a){return W(c+f*a,d+g*a,e+h*a)+""}}function Yd(a,b){a=Wg.lab(a),b=Wg.lab(b);var c=a.l,d=a.a,e=a.b,f=b.l-c,g=b.a-d,h=b.b-e;return function(a){return ab(c+f*a,d+g*a,e+h*a)+""}}function Zd(a,b){return b-=a,function(c){return Math.round(a+b*c)}}function $d(a){var b=[a.a,a.b],c=[a.c,a.d],d=ae(b),e=_d(b,c),f=ae(be(c,b,-e))||0;b[0]*c[1]<c[0]*b[1]&&(b[0]*=-1,b[1]*=-1,d*=-1,e*=-1),this.rotate=(d?Math.atan2(b[1],b[0]):Math.atan2(-c[0],c[1]))*Gh,this.translate=[a.e,a.f],this.scale=[d,f],this.skew=f?Math.atan2(e,f)*Gh:0}function _d(a,b){return a[0]*b[0]+a[1]*b[1]}function ae(a){var b=Math.sqrt(_d(a,a));return b&&(a[0]/=b,a[1]/=b),b}function be(a,b,c){return a[0]+=c*b[0],a[1]+=c*b[1],a}function ce(a,b){var c,d=[],e=[],f=Wg.transform(a),g=Wg.transform(b),h=f.translate,i=g.translate,j=f.rotate,k=g.rotate,l=f.skew,m=g.skew,n=f.scale,o=g.scale;return h[0]!=i[0]||h[1]!=i[1]?(d.push("translate(",null,",",null,")"),e.push({i:1,x:Fd(h[0],i[0])},{i:3,x:Fd(h[1],i[1])})):d.push(i[0]||i[1]?"translate("+i+")":""),j!=k?(j-k>180?k+=360:k-j>180&&(j+=360),e.push({i:d.push(d.pop()+"rotate(",null,")")-2,x:Fd(j,k)})):k&&d.push(d.pop()+"rotate("+k+")"),l!=m?e.push({i:d.push(d.pop()+"skewX(",null,")")-2,x:Fd(l,m)}):m&&d.push(d.pop()+"skewX("+m+")"),n[0]!=o[0]||n[1]!=o[1]?(c=d.push(d.pop()+"scale(",null,",",null,")"),e.push({i:c-4,x:Fd(n[0],o[0])},{i:c-2,x:Fd(n[1],o[1])})):(1!=o[0]||1!=o[1])&&d.push(d.pop()+"scale("+o+")"),c=e.length,function(a){for(var b,f=-1;++f<c;)d[(b=e[f]).i]=b.x(a);return d.join("")}}function de(a,b){return b=b-(a=+a)?1/(b-a):0,function(c){return(c-a)*b}}function ee(a,b){return b=b-(a=+a)?1/(b-a):0,function(c){return Math.max(0,Math.min(1,(c-a)*b))}}function fe(a){for(var b=a.source,c=a.target,d=he(b,c),e=[b];b!==d;)b=b.parent,e.push(b);for(var f=e.length;c!==d;)e.splice(f,0,c),c=c.parent;return e}function ge(a){for(var b=[],c=a.parent;null!=c;)b.push(a),a=c,c=c.parent;return b.push(a),b}function he(a,b){if(a===b)return a;for(var c=ge(a),d=ge(b),e=c.pop(),f=d.pop(),g=null;e===f;)g=e,e=c.pop(),f=d.pop();return g}function ie(a){a.fixed|=2}function je(a){a.fixed&=-7}function ke(a){a.fixed|=4,a.px=a.x,a.py=a.y}function le(a){a.fixed&=-5}function me(a,b,c){var d=0,e=0;if(a.charge=0,!a.leaf)for(var f,g=a.nodes,h=g.length,i=-1;++i<h;)f=g[i],null!=f&&(me(f,b,c),a.charge+=f.charge,d+=f.charge*f.cx,e+=f.charge*f.cy);if(a.point){a.leaf||(a.point.x+=Math.random()-.5,a.point.y+=Math.random()-.5);var j=b*c[a.point.index];a.charge+=a.pointCharge=j,d+=j*a.point.x,e+=j*a.point.y}a.cx=d/a.charge,a.cy=e/a.charge}function ne(a,b){return Wg.rebind(a,b,"sort","children","value"),a.nodes=a,a.links=re,a}function oe(a){return a.children}function pe(a){return a.value}function qe(a,b){return b.value-a.value}function re(a){return Wg.merge(a.map(function(a){return(a.children||[]).map(function(b){return{source:a,target:b}})}))}function se(a){return a.x}function te(a){return a.y}function ue(a,b,c){a.y0=b,a.y=c}function ve(a){return Wg.range(a.length)}function we(a){for(var b=-1,c=a[0].length,d=[];++b<c;)d[b]=0;return d}function xe(a){for(var b,c=1,d=0,e=a[0][1],f=a.length;f>c;++c)(b=a[c][1])>e&&(d=c,e=b);return d}function ye(a){return a.reduce(ze,0)}function ze(a,b){return a+b[1]}function Ae(a,b){return Be(a,Math.ceil(Math.log(b.length)/Math.LN2+1))}function Be(a,b){for(var c=-1,d=+a[0],e=(a[1]-d)/b,f=[];++c<=b;)f[c]=e*c+d;return f}function Ce(a){return[Wg.min(a),Wg.max(a)]}function De(a,b){return a.parent==b.parent?1:2}function Ee(a){var b=a.children;return b&&b.length?b[0]:a._tree.thread}function Fe(a){var b,c=a.children;return c&&(b=c.length)?c[b-1]:a._tree.thread}function Ge(a,b){var c=a.children;if(c&&(e=c.length))for(var d,e,f=-1;++f<e;)b(d=Ge(c[f],b),a)>0&&(a=d);return a}function He(a,b){return a.x-b.x}function Ie(a,b){return b.x-a.x}function Je(a,b){return a.depth-b.depth}function Ke(a,b){function c(a,d){var e=a.children;if(e&&(g=e.length))for(var f,g,h=null,i=-1;++i<g;)f=e[i],c(f,h),h=f;b(a,d)}c(a,null)}function Le(a){for(var b,c=0,d=0,e=a.children,f=e.length;--f>=0;)b=e[f]._tree,b.prelim+=c,b.mod+=c,c+=b.shift+(d+=b.change)}function Me(a,b,c){a=a._tree,b=b._tree;var d=c/(b.number-a.number);a.change+=d,b.change-=d,b.shift+=c,b.prelim+=c,b.mod+=c}function Ne(a,b,c){return a._tree.ancestor.parent==b.parent?a._tree.ancestor:c}function Oe(a,b){return a.value-b.value}function Pe(a,b){var c=a._pack_next;a._pack_next=b,b._pack_prev=a,b._pack_next=c,c._pack_prev=b}function Qe(a,b){a._pack_next=b,b._pack_prev=a}function Re(a,b){var c=b.x-a.x,d=b.y-a.y,e=a.r+b.r;return.999*e*e>c*c+d*d}function Se(a){function b(a){k=Math.min(a.x-a.r,k),l=Math.max(a.x+a.r,l),m=Math.min(a.y-a.r,m),n=Math.max(a.y+a.r,n)}if((c=a.children)&&(j=c.length)){var c,d,e,f,g,h,i,j,k=1/0,l=-1/0,m=1/0,n=-1/0;if(c.forEach(Te),d=c[0],d.x=-d.r,d.y=0,b(d),j>1&&(e=c[1],e.x=e.r,e.y=0,b(e),j>2))for(f=c[2],We(d,e,f),b(f),Pe(d,f),d._pack_prev=f,Pe(f,e),e=d._pack_next,g=3;j>g;g++){We(d,e,f=c[g]);var o=0,p=1,q=1;for(h=e._pack_next;h!==e;h=h._pack_next,p++)if(Re(h,f)){o=1;break}if(1==o)for(i=d._pack_prev;i!==h._pack_prev&&!Re(i,f);i=i._pack_prev,q++);o?(q>p||p==q&&e.r<d.r?Qe(d,e=h):Qe(d=i,e),g--):(Pe(d,f),e=f,b(f))}var r=(k+l)/2,s=(m+n)/2,t=0;for(g=0;j>g;g++)f=c[g],f.x-=r,f.y-=s,t=Math.max(t,f.r+Math.sqrt(f.x*f.x+f.y*f.y));a.r=t,c.forEach(Ue)}}function Te(a){a._pack_next=a._pack_prev=a}function Ue(a){delete a._pack_next,delete a._pack_prev}function Ve(a,b,c,d){var e=a.children;if(a.x=b+=d*a.x,a.y=c+=d*a.y,a.r*=d,e)for(var f=-1,g=e.length;++f<g;)Ve(e[f],b,c,d)}function We(a,b,c){var d=a.r+c.r,e=b.x-a.x,f=b.y-a.y;if(d&&(e||f)){var g=b.r+c.r,h=e*e+f*f;g*=g,d*=d;var i=.5+(d-g)/(2*h),j=Math.sqrt(Math.max(0,2*g*(d+h)-(d-=h)*d-g*g))/(2*h);c.x=a.x+i*e+j*f,c.y=a.y+i*f-j*e}else c.x=a.x+d,c.y=a.y}function Xe(a){return 1+Wg.max(a,function(a){return a.y})}function Ye(a){return a.reduce(function(a,b){return a+b.x},0)/a.length}function Ze(a){var b=a.children;return b&&b.length?Ze(b[0]):a}function $e(a){var b,c=a.children;return c&&(b=c.length)?$e(c[b-1]):a}function _e(a){return{x:a.x,y:a.y,dx:a.dx,dy:a.dy}}function af(a,b){var c=a.x+b[3],d=a.y+b[0],e=a.dx-b[1]-b[3],f=a.dy-b[0]-b[2];return 0>e&&(c+=e/2,e=0),0>f&&(d+=f/2,f=0),{x:c,y:d,dx:e,dy:f}}function bf(a){var b=a[0],c=a[a.length-1];return c>b?[b,c]:[c,b]}function cf(a){return a.rangeExtent?a.rangeExtent():bf(a.range())}function df(a,b,c,d){var e=c(a[0],a[1]),f=d(b[0],b[1]);return function(a){return f(e(a))}}function ef(a,b){var c,d=0,e=a.length-1,f=a[d],g=a[e];return f>g&&(c=d,d=e,e=c,c=f,f=g,g=c),a[d]=b.floor(f),a[e]=b.ceil(g),a}function ff(a){return a?{floor:function(b){return Math.floor(b/a)*a},ceil:function(b){return Math.ceil(b/a)*a}}:kj}function gf(a,b,c,d){var e=[],f=[],g=0,h=Math.min(a.length,b.length)-1;for(a[h]<a[0]&&(a=a.slice().reverse(),b=b.slice().reverse());++g<=h;)e.push(c(a[g-1],a[g])),f.push(d(b[g-1],b[g]));return function(b){var c=Wg.bisect(a,b,1,h)-1;return f[c](e[c](b))}}function hf(a,b,c,d){function e(){var e=Math.min(a.length,b.length)>2?gf:df,i=d?ee:de;return g=e(a,b,i,c),h=e(b,a,i,Hd),f}function f(a){return g(a)}var g,h;return f.invert=function(a){return h(a)},f.domain=function(b){return arguments.length?(a=b.map(Number),e()):a},f.range=function(a){return arguments.length?(b=a,e()):b},f.rangeRound=function(a){return f.range(a).interpolate(Zd)},f.clamp=function(a){return arguments.length?(d=a,e()):d},f.interpolate=function(a){return arguments.length?(c=a,e()):c},f.ticks=function(b){return mf(a,b)},f.tickFormat=function(b,c){return nf(a,b,c)},f.nice=function(b){return kf(a,b),e()},f.copy=function(){return hf(a,b,c,d)},e()}function jf(a,b){return Wg.rebind(a,b,"range","rangeRound","interpolate","clamp")}function kf(a,b){return ef(a,ff(lf(a,b)[2]))}function lf(a,b){null==b&&(b=10);var c=bf(a),d=c[1]-c[0],e=Math.pow(10,Math.floor(Math.log(d/b)/Math.LN10)),f=b/d*e;return.15>=f?e*=10:.35>=f?e*=5:.75>=f&&(e*=2),c[0]=Math.ceil(c[0]/e)*e,c[1]=Math.floor(c[1]/e)*e+.5*e,c[2]=e,c}function mf(a,b){return Wg.range.apply(Wg,lf(a,b))
-}function nf(a,b,c){var d=lf(a,b);return Wg.format(c?c.replace(fi,function(a,b,c,e,f,g,h,i,j,k){return[b,c,e,f,g,h,i,j||"."+pf(k,d),k].join("")}):",."+of(d[2])+"f")}function of(a){return-Math.floor(Math.log(a)/Math.LN10+.01)}function pf(a,b){var c=of(b[2]);return a in lj?Math.abs(c-of(Math.max(Math.abs(b[0]),Math.abs(b[1]))))+ +("e"!==a):c-2*("%"===a)}function qf(a,b,c,d){function e(a){return(c?Math.log(0>a?0:a):-Math.log(a>0?0:-a))/Math.log(b)}function f(a){return c?Math.pow(b,a):-Math.pow(b,-a)}function g(b){return a(e(b))}return g.invert=function(b){return f(a.invert(b))},g.domain=function(b){return arguments.length?(c=b[0]>=0,a.domain((d=b.map(Number)).map(e)),g):d},g.base=function(c){return arguments.length?(b=+c,a.domain(d.map(e)),g):b},g.nice=function(){var b=ef(d.map(e),c?Math:nj);return a.domain(b),d=b.map(f),g},g.ticks=function(){var a=bf(d),g=[],h=a[0],i=a[1],j=Math.floor(e(h)),k=Math.ceil(e(i)),l=b%1?2:b;if(isFinite(k-j)){if(c){for(;k>j;j++)for(var m=1;l>m;m++)g.push(f(j)*m);g.push(f(j))}else for(g.push(f(j));j++<k;)for(var m=l-1;m>0;m--)g.push(f(j)*m);for(j=0;g[j]<h;j++);for(k=g.length;g[k-1]>i;k--);g=g.slice(j,k)}return g},g.tickFormat=function(a,b){if(!arguments.length)return mj;arguments.length<2?b=mj:"function"!=typeof b&&(b=Wg.format(b));var d,h=Math.max(.1,a/g.ticks().length),i=c?(d=1e-12,Math.ceil):(d=-1e-12,Math.floor);return function(a){return a/f(i(e(a)+d))<=h?b(a):""}},g.copy=function(){return qf(a.copy(),b,c,d)},jf(g,a)}function rf(a,b,c){function d(b){return a(e(b))}var e=sf(b),f=sf(1/b);return d.invert=function(b){return f(a.invert(b))},d.domain=function(b){return arguments.length?(a.domain((c=b.map(Number)).map(e)),d):c},d.ticks=function(a){return mf(c,a)},d.tickFormat=function(a,b){return nf(c,a,b)},d.nice=function(a){return d.domain(kf(c,a))},d.exponent=function(g){return arguments.length?(e=sf(b=g),f=sf(1/b),a.domain(c.map(e)),d):b},d.copy=function(){return rf(a.copy(),b,c)},jf(d,a)}function sf(a){return function(b){return 0>b?-Math.pow(-b,a):Math.pow(b,a)}}function tf(a,b){function c(c){return g[((f.get(c)||"range"===b.t&&f.set(c,a.push(c)))-1)%g.length]}function d(b,c){return Wg.range(a.length).map(function(a){return b+c*a})}var f,g,h;return c.domain=function(d){if(!arguments.length)return a;a=[],f=new e;for(var g,h=-1,i=d.length;++h<i;)f.has(g=d[h])||f.set(g,a.push(g));return c[b.t].apply(c,b.a)},c.range=function(a){return arguments.length?(g=a,h=0,b={t:"range",a:arguments},c):g},c.rangePoints=function(e,f){arguments.length<2&&(f=0);var i=e[0],j=e[1],k=(j-i)/(Math.max(1,a.length-1)+f);return g=d(a.length<2?(i+j)/2:i+k*f/2,k),h=0,b={t:"rangePoints",a:arguments},c},c.rangeBands=function(e,f,i){arguments.length<2&&(f=0),arguments.length<3&&(i=f);var j=e[1]<e[0],k=e[j-0],l=e[1-j],m=(l-k)/(a.length-f+2*i);return g=d(k+m*i,m),j&&g.reverse(),h=m*(1-f),b={t:"rangeBands",a:arguments},c},c.rangeRoundBands=function(e,f,i){arguments.length<2&&(f=0),arguments.length<3&&(i=f);var j=e[1]<e[0],k=e[j-0],l=e[1-j],m=Math.floor((l-k)/(a.length-f+2*i)),n=l-k-(a.length-f)*m;return g=d(k+Math.round(n/2),m),j&&g.reverse(),h=Math.round(m*(1-f)),b={t:"rangeRoundBands",a:arguments},c},c.rangeBand=function(){return h},c.rangeExtent=function(){return bf(b.a[0])},c.copy=function(){return tf(a,b)},c.domain(a)}function uf(a,b){function c(){var c=0,f=b.length;for(e=[];++c<f;)e[c-1]=Wg.quantile(a,c/f);return d}function d(a){return isNaN(a=+a)?void 0:b[Wg.bisect(e,a)]}var e;return d.domain=function(b){return arguments.length?(a=b.filter(function(a){return!isNaN(a)}).sort(Wg.ascending),c()):a},d.range=function(a){return arguments.length?(b=a,c()):b},d.quantiles=function(){return e},d.invertExtent=function(c){return c=b.indexOf(c),0>c?[0/0,0/0]:[c>0?e[c-1]:a[0],c<e.length?e[c]:a[a.length-1]]},d.copy=function(){return uf(a,b)},c()}function vf(a,b,c){function d(b){return c[Math.max(0,Math.min(g,Math.floor(f*(b-a))))]}function e(){return f=c.length/(b-a),g=c.length-1,d}var f,g;return d.domain=function(c){return arguments.length?(a=+c[0],b=+c[c.length-1],e()):[a,b]},d.range=function(a){return arguments.length?(c=a,e()):c},d.invertExtent=function(b){return b=c.indexOf(b),b=0>b?0/0:b/f+a,[b,b+1/f]},d.copy=function(){return vf(a,b,c)},e()}function wf(a,b){function c(c){return c>=c?b[Wg.bisect(a,c)]:void 0}return c.domain=function(b){return arguments.length?(a=b,c):a},c.range=function(a){return arguments.length?(b=a,c):b},c.invertExtent=function(c){return c=b.indexOf(c),[a[c-1],a[c]]},c.copy=function(){return wf(a,b)},c}function xf(a){function b(a){return+a}return b.invert=b,b.domain=b.range=function(c){return arguments.length?(a=c.map(b),b):a},b.ticks=function(b){return mf(a,b)},b.tickFormat=function(b,c){return nf(a,b,c)},b.copy=function(){return xf(a)},b}function yf(a){return a.innerRadius}function zf(a){return a.outerRadius}function Af(a){return a.startAngle}function Bf(a){return a.endAngle}function Cf(a){function b(b){function g(){j.push("M",f(a(k),h))}for(var i,j=[],k=[],l=-1,m=b.length,n=pb(c),o=pb(d);++l<m;)e.call(this,i=b[l],l)?k.push([+n.call(this,i,l),+o.call(this,i,l)]):k.length&&(g(),k=[]);return k.length&&g(),j.length?j.join(""):null}var c=Tc,d=Uc,e=Tb,f=Df,g=f.key,h=.7;return b.x=function(a){return arguments.length?(c=a,b):c},b.y=function(a){return arguments.length?(d=a,b):d},b.defined=function(a){return arguments.length?(e=a,b):e},b.interpolate=function(a){return arguments.length?(g="function"==typeof a?f=a:(f=uj.get(a)||Df).key,b):g},b.tension=function(a){return arguments.length?(h=a,b):h},b}function Df(a){return a.join("L")}function Ef(a){return Df(a)+"Z"}function Ff(a){for(var b=0,c=a.length,d=a[0],e=[d[0],",",d[1]];++b<c;)e.push("H",(d[0]+(d=a[b])[0])/2,"V",d[1]);return c>1&&e.push("H",d[0]),e.join("")}function Gf(a){for(var b=0,c=a.length,d=a[0],e=[d[0],",",d[1]];++b<c;)e.push("V",(d=a[b])[1],"H",d[0]);return e.join("")}function Hf(a){for(var b=0,c=a.length,d=a[0],e=[d[0],",",d[1]];++b<c;)e.push("H",(d=a[b])[0],"V",d[1]);return e.join("")}function If(a,b){return a.length<4?Df(a):a[1]+Lf(a.slice(1,a.length-1),Mf(a,b))}function Jf(a,b){return a.length<3?Df(a):a[0]+Lf((a.push(a[0]),a),Mf([a[a.length-2]].concat(a,[a[1]]),b))}function Kf(a,b){return a.length<3?Df(a):a[0]+Lf(a,Mf(a,b))}function Lf(a,b){if(b.length<1||a.length!=b.length&&a.length!=b.length+2)return Df(a);var c=a.length!=b.length,d="",e=a[0],f=a[1],g=b[0],h=g,i=1;if(c&&(d+="Q"+(f[0]-2*g[0]/3)+","+(f[1]-2*g[1]/3)+","+f[0]+","+f[1],e=a[1],i=2),b.length>1){h=b[1],f=a[i],i++,d+="C"+(e[0]+g[0])+","+(e[1]+g[1])+","+(f[0]-h[0])+","+(f[1]-h[1])+","+f[0]+","+f[1];for(var j=2;j<b.length;j++,i++)f=a[i],h=b[j],d+="S"+(f[0]-h[0])+","+(f[1]-h[1])+","+f[0]+","+f[1]}if(c){var k=a[i];d+="Q"+(f[0]+2*h[0]/3)+","+(f[1]+2*h[1]/3)+","+k[0]+","+k[1]}return d}function Mf(a,b){for(var c,d=[],e=(1-b)/2,f=a[0],g=a[1],h=1,i=a.length;++h<i;)c=f,f=g,g=a[h],d.push([e*(g[0]-c[0]),e*(g[1]-c[1])]);return d}function Nf(a){if(a.length<3)return Df(a);var b=1,c=a.length,d=a[0],e=d[0],f=d[1],g=[e,e,e,(d=a[1])[0]],h=[f,f,f,d[1]],i=[e,",",f,"L",Rf(xj,g),",",Rf(xj,h)];for(a.push(a[c-1]);++b<=c;)d=a[b],g.shift(),g.push(d[0]),h.shift(),h.push(d[1]),Sf(i,g,h);return a.pop(),i.push("L",d),i.join("")}function Of(a){if(a.length<4)return Df(a);for(var b,c=[],d=-1,e=a.length,f=[0],g=[0];++d<3;)b=a[d],f.push(b[0]),g.push(b[1]);for(c.push(Rf(xj,f)+","+Rf(xj,g)),--d;++d<e;)b=a[d],f.shift(),f.push(b[0]),g.shift(),g.push(b[1]),Sf(c,f,g);return c.join("")}function Pf(a){for(var b,c,d=-1,e=a.length,f=e+4,g=[],h=[];++d<4;)c=a[d%e],g.push(c[0]),h.push(c[1]);for(b=[Rf(xj,g),",",Rf(xj,h)],--d;++d<f;)c=a[d%e],g.shift(),g.push(c[0]),h.shift(),h.push(c[1]),Sf(b,g,h);return b.join("")}function Qf(a,b){var c=a.length-1;if(c)for(var d,e,f=a[0][0],g=a[0][1],h=a[c][0]-f,i=a[c][1]-g,j=-1;++j<=c;)d=a[j],e=j/c,d[0]=b*d[0]+(1-b)*(f+e*h),d[1]=b*d[1]+(1-b)*(g+e*i);return Nf(a)}function Rf(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]}function Sf(a,b,c){a.push("C",Rf(vj,b),",",Rf(vj,c),",",Rf(wj,b),",",Rf(wj,c),",",Rf(xj,b),",",Rf(xj,c))}function Tf(a,b){return(b[1]-a[1])/(b[0]-a[0])}function Uf(a){for(var b=0,c=a.length-1,d=[],e=a[0],f=a[1],g=d[0]=Tf(e,f);++b<c;)d[b]=(g+(g=Tf(e=f,f=a[b+1])))/2;return d[b]=g,d}function Vf(a){for(var b,c,d,e,f=[],g=Uf(a),h=-1,i=a.length-1;++h<i;)b=Tf(a[h],a[h+1]),ih(b)<Dh?g[h]=g[h+1]=0:(c=g[h]/b,d=g[h+1]/b,e=c*c+d*d,e>9&&(e=3*b/Math.sqrt(e),g[h]=e*c,g[h+1]=e*d));for(h=-1;++h<=i;)e=(a[Math.min(i,h+1)][0]-a[Math.max(0,h-1)][0])/(6*(1+g[h]*g[h])),f.push([e||0,g[h]*e||0]);return f}function Wf(a){return a.length<3?Df(a):a[0]+Lf(a,Vf(a))}function Xf(a){for(var b,c,d,e=-1,f=a.length;++e<f;)b=a[e],c=b[0],d=b[1]+sj,b[0]=c*Math.cos(d),b[1]=c*Math.sin(d);return a}function Yf(a){function b(b){function i(){p.push("M",h(a(r),l),k,j(a(q.reverse()),l),"Z")}for(var m,n,o,p=[],q=[],r=[],s=-1,t=b.length,u=pb(c),v=pb(e),w=c===d?function(){return n}:pb(d),x=e===f?function(){return o}:pb(f);++s<t;)g.call(this,m=b[s],s)?(q.push([n=+u.call(this,m,s),o=+v.call(this,m,s)]),r.push([+w.call(this,m,s),+x.call(this,m,s)])):q.length&&(i(),q=[],r=[]);return q.length&&i(),p.length?p.join(""):null}var c=Tc,d=Tc,e=0,f=Uc,g=Tb,h=Df,i=h.key,j=h,k="L",l=.7;return b.x=function(a){return arguments.length?(c=d=a,b):d},b.x0=function(a){return arguments.length?(c=a,b):c},b.x1=function(a){return arguments.length?(d=a,b):d},b.y=function(a){return arguments.length?(e=f=a,b):f},b.y0=function(a){return arguments.length?(e=a,b):e},b.y1=function(a){return arguments.length?(f=a,b):f},b.defined=function(a){return arguments.length?(g=a,b):g},b.interpolate=function(a){return arguments.length?(i="function"==typeof a?h=a:(h=uj.get(a)||Df).key,j=h.reverse||h,k=h.closed?"M":"L",b):i},b.tension=function(a){return arguments.length?(l=a,b):l},b}function Zf(a){return a.radius}function $f(a){return[a.x,a.y]}function _f(a){return function(){var b=a.apply(this,arguments),c=b[0],d=b[1]+sj;return[c*Math.cos(d),c*Math.sin(d)]}}function ag(){return 64}function bg(){return"circle"}function cg(a){var b=Math.sqrt(a/Ah);return"M0,"+b+"A"+b+","+b+" 0 1,1 0,"+-b+"A"+b+","+b+" 0 1,1 0,"+b+"Z"}function dg(a,b){return nh(a,Dj),a.id=b,a}function eg(a,b,c,d){var e=a.id;return D(a,"function"==typeof c?function(a,f,g){a.__transition__[e].tween.set(b,d(c.call(a,a.__data__,f,g)))}:(c=d(c),function(a){a.__transition__[e].tween.set(b,c)}))}function fg(a){return null==a&&(a=""),function(){this.textContent=a}}function gg(a,b,c,d){var f=a.__transition__||(a.__transition__={active:0,count:0}),g=f[c];if(!g){var h=d.time;g=f[c]={tween:new e,time:h,ease:d.ease,delay:d.delay,duration:d.duration},++f.count,Wg.timer(function(d){function e(d){return f.active>c?j():(f.active=c,g.event&&g.event.start.call(a,k,b),g.tween.forEach(function(c,d){(d=d.call(a,k,b))&&p.push(d)}),void Wg.timer(function(){return o.c=i(d||1)?Tb:i,1},0,h))}function i(d){if(f.active!==c)return j();for(var e=d/n,h=l(e),i=p.length;i>0;)p[--i].call(a,h);return e>=1?(g.event&&g.event.end.call(a,k,b),j()):void 0}function j(){return--f.count?delete f[c]:delete a.__transition__,1}var k=a.__data__,l=g.ease,m=g.delay,n=g.duration,o=$h,p=[];return o.t=m+h,d>=m?e(d-m):void(o.c=e)},0,h)}}function hg(a,b){a.attr("transform",function(a){return"translate("+b(a)+",0)"})}function ig(a,b){a.attr("transform",function(a){return"translate(0,"+b(a)+")"})}function jg(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function kg(a,b,c){function d(b){var c=a(b),d=f(c,1);return d-b>b-c?c:d}function e(c){return b(c=a(new Kj(c-1)),1),c}function f(a,c){return b(a=new Kj(+a),c),a}function g(a,d,f){var g=e(a),h=[];if(f>1)for(;d>g;)c(g)%f||h.push(new Date(+g)),b(g,1);else for(;d>g;)h.push(new Date(+g)),b(g,1);return h}function h(a,b,c){try{Kj=jg;var d=new jg;return d._=a,g(d,b,c)}finally{Kj=Date}}a.floor=a,a.round=d,a.ceil=e,a.offset=f,a.range=g;var i=a.utc=lg(a);return i.floor=i,i.round=lg(d),i.ceil=lg(e),i.offset=lg(f),i.range=h,a}function lg(a){return function(b,c){try{Kj=jg;var d=new jg;return d._=b,a(d,c)._}finally{Kj=Date}}}function mg(a){function b(b){for(var d,e,f,g=[],h=-1,i=0;++h<c;)37===a.charCodeAt(h)&&(g.push(a.substring(i,h)),null!=(e=bk[d=a.charAt(++h)])&&(d=a.charAt(++h)),(f=ck[d])&&(d=f(b,null==e?"e"===d?" ":"0":e)),g.push(d),i=h+1);return g.push(a.substring(i,h)),g.join("")}var c=a.length;return b.parse=function(b){var c={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},d=ng(c,a,b,0);if(d!=b.length)return null;"p"in c&&(c.H=c.H%12+12*c.p);var e=null!=c.Z&&Kj!==jg,f=new(e?jg:Kj);return"j"in c?f.setFullYear(c.y,0,c.j):"w"in c&&("W"in c||"U"in c)?(f.setFullYear(c.y,0,1),f.setFullYear(c.y,0,"W"in c?(c.w+6)%7+7*c.W-(f.getDay()+5)%7:c.w+7*c.U-(f.getDay()+6)%7)):f.setFullYear(c.y,c.m,c.d),f.setHours(c.H+Math.floor(c.Z/100),c.M+c.Z%100,c.S,c.L),e?f._:f},b.toString=function(){return a},b}function ng(a,b,c,d){for(var e,f,g,h=0,i=b.length,j=c.length;i>h;){if(d>=j)return-1;if(e=b.charCodeAt(h++),37===e){if(g=b.charAt(h++),f=dk[g in bk?b.charAt(h++):g],!f||(d=f(a,c,d))<0)return-1}else if(e!=c.charCodeAt(d++))return-1}return d}function og(a){return new RegExp("^(?:"+a.map(Wg.requote).join("|")+")","i")}function pg(a){for(var b=new e,c=-1,d=a.length;++c<d;)b.set(a[c].toLowerCase(),c);return b}function qg(a,b,c){var d=0>a?"-":"",e=(d?-a:a)+"",f=e.length;return d+(c>f?new Array(c-f+1).join(b)+e:e)}function rg(a,b,c){Wj.lastIndex=0;var d=Wj.exec(b.substring(c));return d?(a.w=Xj.get(d[0].toLowerCase()),c+d[0].length):-1}function sg(a,b,c){Uj.lastIndex=0;var d=Uj.exec(b.substring(c));return d?(a.w=Vj.get(d[0].toLowerCase()),c+d[0].length):-1}function tg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+1));return d?(a.w=+d[0],c+d[0].length):-1}function ug(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c));return d?(a.U=+d[0],c+d[0].length):-1}function vg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c));return d?(a.W=+d[0],c+d[0].length):-1}function wg(a,b,c){$j.lastIndex=0;var d=$j.exec(b.substring(c));return d?(a.m=_j.get(d[0].toLowerCase()),c+d[0].length):-1}function xg(a,b,c){Yj.lastIndex=0;var d=Yj.exec(b.substring(c));return d?(a.m=Zj.get(d[0].toLowerCase()),c+d[0].length):-1}function yg(a,b,c){return ng(a,ck.c.toString(),b,c)}function zg(a,b,c){return ng(a,ck.x.toString(),b,c)}function Ag(a,b,c){return ng(a,ck.X.toString(),b,c)}function Bg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+4));return d?(a.y=+d[0],c+d[0].length):-1}function Cg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+2));return d?(a.y=Eg(+d[0]),c+d[0].length):-1}function Dg(a,b,c){return/^[+-]\d{4}$/.test(b=b.substring(c,c+5))?(a.Z=+b,c+5):-1}function Eg(a){return a+(a>68?1900:2e3)}function Fg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+2));return d?(a.m=d[0]-1,c+d[0].length):-1}function Gg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+2));return d?(a.d=+d[0],c+d[0].length):-1}function Hg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+3));return d?(a.j=+d[0],c+d[0].length):-1}function Ig(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+2));return d?(a.H=+d[0],c+d[0].length):-1}function Jg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+2));return d?(a.M=+d[0],c+d[0].length):-1}function Kg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+2));return d?(a.S=+d[0],c+d[0].length):-1}function Lg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+3));return d?(a.L=+d[0],c+d[0].length):-1}function Mg(a,b,c){var d=fk.get(b.substring(c,c+=2).toLowerCase());return null==d?-1:(a.p=d,c)}function Ng(a){var b=a.getTimezoneOffset(),c=b>0?"-":"+",d=~~(ih(b)/60),e=ih(b)%60;return c+qg(d,"0",2)+qg(e,"0",2)}function Og(a,b,c){ak.lastIndex=0;var d=ak.exec(b.substring(c,c+1));return d?c+d[0].length:-1}function Pg(a){function b(a){try{Kj=jg;var b=new Kj;return b._=a,c(b)}finally{Kj=Date}}var c=mg(a);return b.parse=function(a){try{Kj=jg;var b=c.parse(a);return b&&b._}finally{Kj=Date}},b.toString=c.toString,b}function Qg(a){return a.toISOString()}function Rg(a,b,c){function d(b){return a(b)}function e(a,c){var d=a[1]-a[0],e=d/c,f=Wg.bisect(hk,e);return f==hk.length?[b.year,lf(a.map(function(a){return a/31536e6}),c)[2]]:f?b[e/hk[f-1]<hk[f]/e?f-1:f]:[lk,lf(a,c)[2]]}return d.invert=function(b){return Sg(a.invert(b))},d.domain=function(b){return arguments.length?(a.domain(b),d):a.domain().map(Sg)},d.nice=function(a,b){function c(c){return!isNaN(c)&&!a.range(c,Sg(+c+1),b).length}var f=d.domain(),g=bf(f),h=null==a?e(g,10):"number"==typeof a&&e(g,a);return h&&(a=h[0],b=h[1]),d.domain(ef(f,b>1?{floor:function(b){for(;c(b=a.floor(b));)b=Sg(b-1);return b},ceil:function(b){for(;c(b=a.ceil(b));)b=Sg(+b+1);return b}}:a))},d.ticks=function(a,b){var c=bf(d.domain()),f=null==a?e(c,10):"number"==typeof a?e(c,a):!a.range&&[{range:a},b];return f&&(a=f[0],b=f[1]),a.range(c[0],Sg(+c[1]+1),1>b?1:b)},d.tickFormat=function(){return c},d.copy=function(){return Rg(a.copy(),b,c)},jf(d,a)}function Sg(a){return new Date(a)}function Tg(a){return function(b){for(var c=a.length-1,d=a[c];!d[1](b);)d=a[--c];return d[0](b)}}function Ug(a){return JSON.parse(a.responseText)}function Vg(a){var b=Zg.createRange();return b.selectNode(Zg.body),b.createContextualFragment(a.responseText)}var Wg={version:"3.3.13"};Date.now||(Date.now=function(){return+new Date});var Xg=[].slice,Yg=function(a){return Xg.call(a)},Zg=document,$g=Zg.documentElement,_g=window;try{Yg($g.childNodes)[0].nodeType}catch(ah){Yg=function(a){for(var b=a.length,c=new Array(b);b--;)c[b]=a[b];return c}}try{Zg.createElement("div").style.setProperty("opacity",0,"")}catch(bh){var ch=_g.Element.prototype,dh=ch.setAttribute,eh=ch.setAttributeNS,fh=_g.CSSStyleDeclaration.prototype,gh=fh.setProperty;ch.setAttribute=function(a,b){dh.call(this,a,b+"")},ch.setAttributeNS=function(a,b,c){eh.call(this,a,b,c+"")},fh.setProperty=function(a,b,c){gh.call(this,a,b+"",c)}}Wg.ascending=function(a,b){return b>a?-1:a>b?1:a>=b?0:0/0},Wg.descending=function(a,b){return a>b?-1:b>a?1:b>=a?0:0/0},Wg.min=function(a,b){var c,d,e=-1,f=a.length;if(1===arguments.length){for(;++e<f&&!(null!=(c=a[e])&&c>=c);)c=void 0;for(;++e<f;)null!=(d=a[e])&&c>d&&(c=d)}else{for(;++e<f&&!(null!=(c=b.call(a,a[e],e))&&c>=c);)c=void 0;for(;++e<f;)null!=(d=b.call(a,a[e],e))&&c>d&&(c=d)}return c},Wg.max=function(a,b){var c,d,e=-1,f=a.length;if(1===arguments.length){for(;++e<f&&!(null!=(c=a[e])&&c>=c);)c=void 0;for(;++e<f;)null!=(d=a[e])&&d>c&&(c=d)}else{for(;++e<f&&!(null!=(c=b.call(a,a[e],e))&&c>=c);)c=void 0;for(;++e<f;)null!=(d=b.call(a,a[e],e))&&d>c&&(c=d)}return c},Wg.extent=function(a,b){var c,d,e,f=-1,g=a.length;if(1===arguments.length){for(;++f<g&&!(null!=(c=e=a[f])&&c>=c);)c=e=void 0;for(;++f<g;)null!=(d=a[f])&&(c>d&&(c=d),d>e&&(e=d))}else{for(;++f<g&&!(null!=(c=e=b.call(a,a[f],f))&&c>=c);)c=void 0;for(;++f<g;)null!=(d=b.call(a,a[f],f))&&(c>d&&(c=d),d>e&&(e=d))}return[c,e]},Wg.sum=function(a,b){var c,d=0,e=a.length,f=-1;if(1===arguments.length)for(;++f<e;)isNaN(c=+a[f])||(d+=c);else for(;++f<e;)isNaN(c=+b.call(a,a[f],f))||(d+=c);return d},Wg.mean=function(b,c){var d,e=b.length,f=0,g=-1,h=0;if(1===arguments.length)for(;++g<e;)a(d=b[g])&&(f+=(d-f)/++h);else for(;++g<e;)a(d=c.call(b,b[g],g))&&(f+=(d-f)/++h);return h?f:void 0},Wg.quantile=function(a,b){var c=(a.length-1)*b+1,d=Math.floor(c),e=+a[d-1],f=c-d;return f?e+f*(a[d]-e):e},Wg.median=function(b,c){return arguments.length>1&&(b=b.map(c)),b=b.filter(a),b.length?Wg.quantile(b.sort(Wg.ascending),.5):void 0},Wg.bisector=function(a){return{left:function(b,c,d,e){for(arguments.length<3&&(d=0),arguments.length<4&&(e=b.length);e>d;){var f=d+e>>>1;a.call(b,b[f],f)<c?d=f+1:e=f}return d},right:function(b,c,d,e){for(arguments.length<3&&(d=0),arguments.length<4&&(e=b.length);e>d;){var f=d+e>>>1;c<a.call(b,b[f],f)?e=f:d=f+1}return d}}};var hh=Wg.bisector(function(a){return a});Wg.bisectLeft=hh.left,Wg.bisect=Wg.bisectRight=hh.right,Wg.shuffle=function(a){for(var b,c,d=a.length;d;)c=Math.random()*d--|0,b=a[d],a[d]=a[c],a[c]=b;return a},Wg.permute=function(a,b){for(var c=b.length,d=new Array(c);c--;)d[c]=a[b[c]];return d},Wg.pairs=function(a){for(var b,c=0,d=a.length-1,e=a[0],f=new Array(0>d?0:d);d>c;)f[c]=[b=e,e=a[++c]];return f},Wg.zip=function(){if(!(e=arguments.length))return[];for(var a=-1,c=Wg.min(arguments,b),d=new Array(c);++a<c;)for(var e,f=-1,g=d[a]=new Array(e);++f<e;)g[f]=arguments[f][a];return d},Wg.transpose=function(a){return Wg.zip.apply(Wg,a)},Wg.keys=function(a){var b=[];for(var c in a)b.push(c);return b},Wg.values=function(a){var b=[];for(var c in a)b.push(a[c]);return b},Wg.entries=function(a){var b=[];for(var c in a)b.push({key:c,value:a[c]});return b},Wg.merge=function(a){for(var b,c,d,e=a.length,f=-1,g=0;++f<e;)g+=a[f].length;for(c=new Array(g);--e>=0;)for(d=a[e],b=d.length;--b>=0;)c[--g]=d[b];return c};var ih=Math.abs;Wg.range=function(a,b,d){if(arguments.length<3&&(d=1,arguments.length<2&&(b=a,a=0)),(b-a)/d===1/0)throw new Error("infinite range");var e,f=[],g=c(ih(d)),h=-1;if(a*=g,b*=g,d*=g,0>d)for(;(e=a+d*++h)>b;)f.push(e/g);else for(;(e=a+d*++h)<b;)f.push(e/g);return f},Wg.map=function(a){var b=new e;if(a instanceof e)a.forEach(function(a,c){b.set(a,c)});else for(var c in a)b.set(c,a[c]);return b},d(e,{has:function(a){return jh+a in this},get:function(a){return this[jh+a]},set:function(a,b){return this[jh+a]=b},remove:function(a){return a=jh+a,a in this&&delete this[a]},keys:function(){var a=[];return this.forEach(function(b){a.push(b)}),a},values:function(){var a=[];return this.forEach(function(b,c){a.push(c)}),a},entries:function(){var a=[];return this.forEach(function(b,c){a.push({key:b,value:c})}),a},forEach:function(a){for(var b in this)b.charCodeAt(0)===kh&&a.call(this,b.substring(1),this[b])}});var jh="\x00",kh=jh.charCodeAt(0);Wg.nest=function(){function a(b,h,i){if(i>=g.length)return d?d.call(f,h):c?h.sort(c):h;for(var j,k,l,m,n=-1,o=h.length,p=g[i++],q=new e;++n<o;)(m=q.get(j=p(k=h[n])))?m.push(k):q.set(j,[k]);return b?(k=b(),l=function(c,d){k.set(c,a(b,d,i))}):(k={},l=function(c,d){k[c]=a(b,d,i)}),q.forEach(l),k}function b(a,c){if(c>=g.length)return a;var d=[],e=h[c++];return a.forEach(function(a,e){d.push({key:a,values:b(e,c)})}),e?d.sort(function(a,b){return e(a.key,b.key)}):d}var c,d,f={},g=[],h=[];return f.map=function(b,c){return a(c,b,0)},f.entries=function(c){return b(a(Wg.map,c,0),0)},f.key=function(a){return g.push(a),f},f.sortKeys=function(a){return h[g.length-1]=a,f},f.sortValues=function(a){return c=a,f},f.rollup=function(a){return d=a,f},f},Wg.set=function(a){var b=new f;if(a)for(var c=0,d=a.length;d>c;++c)b.add(a[c]);return b},d(f,{has:function(a){return jh+a in this},add:function(a){return this[jh+a]=!0,a},remove:function(a){return a=jh+a,a in this&&delete this[a]},values:function(){var a=[];return this.forEach(function(b){a.push(b)}),a},forEach:function(a){for(var b in this)b.charCodeAt(0)===kh&&a.call(this,b.substring(1))}}),Wg.behavior={},Wg.rebind=function(a,b){for(var c,d=1,e=arguments.length;++d<e;)a[c=arguments[d]]=g(a,b,b[c]);return a};var lh=["webkit","ms","moz","Moz","o","O"];Wg.dispatch=function(){for(var a=new j,b=-1,c=arguments.length;++b<c;)a[arguments[b]]=k(a);return a},j.prototype.on=function(a,b){var c=a.indexOf("."),d="";if(c>=0&&(d=a.substring(c+1),a=a.substring(0,c)),a)return arguments.length<2?this[a].on(d):this[a].on(d,b);if(2===arguments.length){if(null==b)for(a in this)this.hasOwnProperty(a)&&this[a].on(d,null);return this}},Wg.event=null,Wg.requote=function(a){return a.replace(mh,"\\$&")};var mh=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,nh={}.__proto__?function(a,b){a.__proto__=b}:function(a,b){for(var c in b)a[c]=b[c]},oh=function(a,b){return b.querySelector(a)},ph=function(a,b){return b.querySelectorAll(a)},qh=$g[h($g,"matchesSelector")],rh=function(a,b){return qh.call(a,b)};"function"==typeof Sizzle&&(oh=function(a,b){return Sizzle(a,b)[0]||null},ph=function(a,b){return Sizzle.uniqueSort(Sizzle(a,b))},rh=Sizzle.matchesSelector),Wg.selection=function(){return vh};var sh=Wg.selection.prototype=[];sh.select=function(a){var b,c,d,e,f=[];a=p(a);for(var g=-1,h=this.length;++g<h;){f.push(b=[]),b.parentNode=(d=this[g]).parentNode;for(var i=-1,j=d.length;++i<j;)(e=d[i])?(b.push(c=a.call(e,e.__data__,i,g)),c&&"__data__"in e&&(c.__data__=e.__data__)):b.push(null)}return o(f)},sh.selectAll=function(a){var b,c,d=[];a=q(a);for(var e=-1,f=this.length;++e<f;)for(var g=this[e],h=-1,i=g.length;++h<i;)(c=g[h])&&(d.push(b=Yg(a.call(c,c.__data__,h,e))),b.parentNode=c);return o(d)};var th={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};Wg.ns={prefix:th,qualify:function(a){var b=a.indexOf(":"),c=a;return b>=0&&(c=a.substring(0,b),a=a.substring(b+1)),th.hasOwnProperty(c)?{space:th[c],local:a}:a}},sh.attr=function(a,b){if(arguments.length<2){if("string"==typeof a){var c=this.node();return a=Wg.ns.qualify(a),a.local?c.getAttributeNS(a.space,a.local):c.getAttribute(a)}for(b in a)this.each(r(b,a[b]));return this}return this.each(r(a,b))},sh.classed=function(a,b){if(arguments.length<2){if("string"==typeof a){var c=this.node(),d=(a=u(a)).length,e=-1;if(b=c.classList){for(;++e<d;)if(!b.contains(a[e]))return!1}else for(b=c.getAttribute("class");++e<d;)if(!t(a[e]).test(b))return!1;return!0}for(b in a)this.each(v(b,a[b]));return this}return this.each(v(a,b))},sh.style=function(a,b,c){var d=arguments.length;if(3>d){if("string"!=typeof a){2>d&&(b="");for(c in a)this.each(x(c,a[c],b));return this}if(2>d)return _g.getComputedStyle(this.node(),null).getPropertyValue(a);c=""}return this.each(x(a,b,c))},sh.property=function(a,b){if(arguments.length<2){if("string"==typeof a)return this.node()[a];for(b in a)this.each(y(b,a[b]));return this}return this.each(y(a,b))},sh.text=function(a){return arguments.length?this.each("function"==typeof a?function(){var b=a.apply(this,arguments);this.textContent=null==b?"":b}:null==a?function(){this.textContent=""}:function(){this.textContent=a}):this.node().textContent},sh.html=function(a){return arguments.length?this.each("function"==typeof a?function(){var b=a.apply(this,arguments);this.innerHTML=null==b?"":b}:null==a?function(){this.innerHTML=""}:function(){this.innerHTML=a}):this.node().innerHTML},sh.append=function(a){return a=z(a),this.select(function(){return this.appendChild(a.apply(this,arguments))})},sh.insert=function(a,b){return a=z(a),b=p(b),this.select(function(){return this.insertBefore(a.apply(this,arguments),b.apply(this,arguments)||null)})},sh.remove=function(){return this.each(function(){var a=this.parentNode;a&&a.removeChild(this)})},sh.data=function(a,b){function c(a,c){var d,f,g,h=a.length,l=c.length,m=Math.min(h,l),n=new Array(l),o=new Array(l),p=new Array(h);if(b){var q,r=new e,s=new e,t=[];for(d=-1;++d<h;)q=b.call(f=a[d],f.__data__,d),r.has(q)?p[d]=f:r.set(q,f),t.push(q);for(d=-1;++d<l;)q=b.call(c,g=c[d],d),(f=r.get(q))?(n[d]=f,f.__data__=g):s.has(q)||(o[d]=A(g)),s.set(q,g),r.remove(q);for(d=-1;++d<h;)r.has(t[d])&&(p[d]=a[d])}else{for(d=-1;++d<m;)f=a[d],g=c[d],f?(f.__data__=g,n[d]=f):o[d]=A(g);for(;l>d;++d)o[d]=A(c[d]);for(;h>d;++d)p[d]=a[d]}o.update=n,o.parentNode=n.parentNode=p.parentNode=a.parentNode,i.push(o),j.push(n),k.push(p)}var d,f,g=-1,h=this.length;if(!arguments.length){for(a=new Array(h=(d=this[0]).length);++g<h;)(f=d[g])&&(a[g]=f.__data__);return a}var i=E([]),j=o([]),k=o([]);if("function"==typeof a)for(;++g<h;)c(d=this[g],a.call(d,d.parentNode.__data__,g));else for(;++g<h;)c(d=this[g],a);return j.enter=function(){return i},j.exit=function(){return k},j},sh.datum=function(a){return arguments.length?this.property("__data__",a):this.property("__data__")},sh.filter=function(a){var b,c,d,e=[];"function"!=typeof a&&(a=B(a));for(var f=0,g=this.length;g>f;f++){e.push(b=[]),b.parentNode=(c=this[f]).parentNode;for(var h=0,i=c.length;i>h;h++)(d=c[h])&&a.call(d,d.__data__,h,f)&&b.push(d)}return o(e)},sh.order=function(){for(var a=-1,b=this.length;++a<b;)for(var c,d=this[a],e=d.length-1,f=d[e];--e>=0;)(c=d[e])&&(f&&f!==c.nextSibling&&f.parentNode.insertBefore(c,f),f=c);return this},sh.sort=function(a){a=C.apply(this,arguments);for(var b=-1,c=this.length;++b<c;)this[b].sort(a);return this.order()},sh.each=function(a){return D(this,function(b,c,d){a.call(b,b.__data__,c,d)})},sh.call=function(a){var b=Yg(arguments);return a.apply(b[0]=this,b),this},sh.empty=function(){return!this.node()},sh.node=function(){for(var a=0,b=this.length;b>a;a++)for(var c=this[a],d=0,e=c.length;e>d;d++){var f=c[d];if(f)return f}return null},sh.size=function(){var a=0;return this.each(function(){++a}),a};var uh=[];Wg.selection.enter=E,Wg.selection.enter.prototype=uh,uh.append=sh.append,uh.empty=sh.empty,uh.node=sh.node,uh.call=sh.call,uh.size=sh.size,uh.select=function(a){for(var b,c,d,e,f,g=[],h=-1,i=this.length;++h<i;){d=(e=this[h]).update,g.push(b=[]),b.parentNode=e.parentNode;for(var j=-1,k=e.length;++j<k;)(f=e[j])?(b.push(d[j]=c=a.call(e.parentNode,f.__data__,j,h)),c.__data__=f.__data__):b.push(null)}return o(g)},uh.insert=function(a,b){return arguments.length<2&&(b=F(this)),sh.insert.call(this,a,b)},sh.transition=function(){for(var a,b,c=zj||++Ej,d=[],e=Aj||{time:Date.now(),ease:Od,delay:0,duration:250},f=-1,g=this.length;++f<g;){d.push(a=[]);for(var h=this[f],i=-1,j=h.length;++i<j;)(b=h[i])&&gg(b,i,c,e),a.push(b)}return dg(d,c)},sh.interrupt=function(){return this.each(G)},Wg.select=function(a){var b=["string"==typeof a?oh(a,Zg):a];return b.parentNode=$g,o([b])},Wg.selectAll=function(a){var b=Yg("string"==typeof a?ph(a,Zg):a);return b.parentNode=$g,o([b])};var vh=Wg.select($g);sh.on=function(a,b,c){var d=arguments.length;if(3>d){if("string"!=typeof a){2>d&&(b=!1);for(c in a)this.each(H(c,a[c],b));return this}if(2>d)return(d=this.node()["__on"+a])&&d._;c=!1}return this.each(H(a,b,c))};var wh=Wg.map({mouseenter:"mouseover",mouseleave:"mouseout"});wh.forEach(function(a){"on"+a in Zg&&wh.remove(a)});var xh="onselectstart"in Zg?null:h($g.style,"userSelect"),yh=0;Wg.mouse=function(a){return L(a,m())};var zh=/WebKit/.test(_g.navigator.userAgent)?-1:0;Wg.touches=function(a,b){return arguments.length<2&&(b=m().touches),b?Yg(b).map(function(b){var c=L(a,b);return c.identifier=b.identifier,c}):[]},Wg.behavior.drag=function(){function a(){this.on("mousedown.drag",g).on("touchstart.drag",h)}function b(){return Wg.event.changedTouches[0].identifier}function c(a,b){return Wg.touches(a).filter(function(a){return a.identifier===b})[0]}function d(a,b,c,d){return function(){function g(){var a=b(k,n),c=a[0]-p[0],d=a[1]-p[1];q|=c|d,p=a,l({type:"drag",x:a[0]+i[0],y:a[1]+i[1],dx:c,dy:d})}function h(){r.on(c+"."+o,null).on(d+"."+o,null),s(q&&Wg.event.target===m),l({type:"dragend"})}var i,j=this,k=j.parentNode,l=e.of(j,arguments),m=Wg.event.target,n=a(),o=null==n?"drag":"drag-"+n,p=b(k,n),q=0,r=Wg.select(_g).on(c+"."+o,g).on(d+"."+o,h),s=K();f?(i=f.apply(j,arguments),i=[i.x-p[0],i.y-p[1]]):i=[0,0],l({type:"dragstart"})}}var e=n(a,"drag","dragstart","dragend"),f=null,g=d(i,Wg.mouse,"mousemove","mouseup"),h=d(b,c,"touchmove","touchend");return a.origin=function(b){return arguments.length?(f=b,a):f},Wg.rebind(a,e,"on")};var Ah=Math.PI,Bh=2*Ah,Ch=Ah/2,Dh=1e-6,Eh=Dh*Dh,Fh=Ah/180,Gh=180/Ah,Hh=Math.SQRT2,Ih=2,Jh=4;Wg.interpolateZoom=function(a,b){function c(a){var b=a*s;if(r){var c=Q(p),g=f/(Ih*m)*(c*R(Hh*b+p)-P(p));return[d+g*j,e+g*k,f*c/Q(Hh*b+p)]}return[d+a*j,e+a*k,f*Math.exp(Hh*b)]}var d=a[0],e=a[1],f=a[2],g=b[0],h=b[1],i=b[2],j=g-d,k=h-e,l=j*j+k*k,m=Math.sqrt(l),n=(i*i-f*f+Jh*l)/(2*f*Ih*m),o=(i*i-f*f-Jh*l)/(2*i*Ih*m),p=Math.log(Math.sqrt(n*n+1)-n),q=Math.log(Math.sqrt(o*o+1)-o),r=q-p,s=(r||Math.log(i/f))/Hh;return c.duration=1e3*s,c},Wg.behavior.zoom=function(){function a(a){a.on(B,j).on(Mh+".zoom",m).on(C,o).on("dblclick.zoom",p).on(E,k)}function b(a){return[(a[0]-y.x)/y.k,(a[1]-y.y)/y.k]}function c(a){return[a[0]*y.k+y.x,a[1]*y.k+y.y]}function d(a){y.k=Math.max(A[0],Math.min(A[1],a))}function e(a,b){b=c(b),y.x+=a[0]-b[0],y.y+=a[1]-b[1]}function f(){v&&v.domain(u.range().map(function(a){return(a-y.x)/y.k}).map(u.invert)),x&&x.domain(w.range().map(function(a){return(a-y.y)/y.k}).map(w.invert))
-}function g(a){a({type:"zoomstart"})}function h(a){f(),a({type:"zoom",scale:y.k,translate:[y.x,y.y]})}function i(a){a({type:"zoomend"})}function j(){function a(){k=1,e(Wg.mouse(d),m),h(f)}function c(){l.on(C,_g===d?o:null).on(D,null),n(k&&Wg.event.target===j),i(f)}var d=this,f=F.of(d,arguments),j=Wg.event.target,k=0,l=Wg.select(_g).on(C,a).on(D,c),m=b(Wg.mouse(d)),n=K();G.call(d),g(f)}function k(){function a(){var a=Wg.touches(o);return n=y.k,a.forEach(function(a){a.identifier in q&&(q[a.identifier]=b(a))}),a}function c(){for(var b=Wg.event.changedTouches,c=0,f=b.length;f>c;++c)q[b[c].identifier]=null;var g=a(),i=Date.now();if(1===g.length){if(500>i-t){var j=g[0],k=q[j.identifier];d(2*y.k),e(j,k),l(),h(p)}t=i}else if(g.length>1){var j=g[0],m=g[1],n=j[0]-m[0],o=j[1]-m[1];r=n*n+o*o}}function f(){for(var a,b,c,f,g=Wg.touches(o),i=0,j=g.length;j>i;++i,f=null)if(c=g[i],f=q[c.identifier]){if(b)break;a=c,b=f}if(f){var k=(k=c[0]-a[0])*k+(k=c[1]-a[1])*k,l=r&&Math.sqrt(k/r);a=[(a[0]+c[0])/2,(a[1]+c[1])/2],b=[(b[0]+f[0])/2,(b[1]+f[1])/2],d(l*n)}t=null,e(a,b),h(p)}function m(){if(Wg.event.touches.length){for(var b=Wg.event.changedTouches,c=0,d=b.length;d>c;++c)delete q[b[c].identifier];for(var e in q)return void a()}w.on(u,null).on(v,null),x.on(B,j).on(E,k),z(),i(p)}var n,o=this,p=F.of(o,arguments),q={},r=0,s=Wg.event.changedTouches[0].identifier,u="touchmove.zoom-"+s,v="touchend.zoom-"+s,w=Wg.select(_g).on(u,f).on(v,m),x=Wg.select(o).on(B,null).on(E,c),z=K();G.call(o),c(),g(p)}function m(){var a=F.of(this,arguments);s?clearTimeout(s):(G.call(this),g(a)),s=setTimeout(function(){s=null,i(a)},50),l();var c=r||Wg.mouse(this);q||(q=b(c)),d(Math.pow(2,.002*Kh())*y.k),e(c,q),h(a)}function o(){q=null}function p(){var a=F.of(this,arguments),c=Wg.mouse(this),f=b(c),j=Math.log(y.k)/Math.LN2;g(a),d(Math.pow(2,Wg.event.shiftKey?Math.ceil(j)-1:Math.floor(j)+1)),e(c,f),h(a),i(a)}var q,r,s,t,u,v,w,x,y={x:0,y:0,k:1},z=[960,500],A=Lh,B="mousedown.zoom",C="mousemove.zoom",D="mouseup.zoom",E="touchstart.zoom",F=n(a,"zoomstart","zoom","zoomend");return a.event=function(a){a.each(function(){var a=F.of(this,arguments),b=y;zj?Wg.select(this).transition().each("start.zoom",function(){y=this.__chart__||{x:0,y:0,k:1},g(a)}).tween("zoom:zoom",function(){var c=z[0],d=z[1],e=c/2,f=d/2,g=Wg.interpolateZoom([(e-y.x)/y.k,(f-y.y)/y.k,c/y.k],[(e-b.x)/b.k,(f-b.y)/b.k,c/b.k]);return function(b){var d=g(b),i=c/d[2];this.__chart__=y={x:e-d[0]*i,y:f-d[1]*i,k:i},h(a)}}).each("end.zoom",function(){i(a)}):(this.__chart__=y,g(a),h(a),i(a))})},a.translate=function(b){return arguments.length?(y={x:+b[0],y:+b[1],k:y.k},f(),a):[y.x,y.y]},a.scale=function(b){return arguments.length?(y={x:y.x,y:y.y,k:+b},f(),a):y.k},a.scaleExtent=function(b){return arguments.length?(A=null==b?Lh:[+b[0],+b[1]],a):A},a.center=function(b){return arguments.length?(r=b&&[+b[0],+b[1]],a):r},a.size=function(b){return arguments.length?(z=b&&[+b[0],+b[1]],a):z},a.x=function(b){return arguments.length?(v=b,u=b.copy(),y={x:0,y:0,k:1},a):v},a.y=function(b){return arguments.length?(x=b,w=b.copy(),y={x:0,y:0,k:1},a):x},Wg.rebind(a,F,"on")};var Kh,Lh=[0,1/0],Mh="onwheel"in Zg?(Kh=function(){return-Wg.event.deltaY*(Wg.event.deltaMode?120:1)},"wheel"):"onmousewheel"in Zg?(Kh=function(){return Wg.event.wheelDelta},"mousewheel"):(Kh=function(){return-Wg.event.detail},"MozMousePixelScroll");T.prototype.toString=function(){return this.rgb()+""},Wg.hsl=function(a,b,c){return 1===arguments.length?a instanceof V?U(a.h,a.s,a.l):kb(""+a,lb,U):U(+a,+b,+c)};var Nh=V.prototype=new T;Nh.brighter=function(a){return a=Math.pow(.7,arguments.length?a:1),U(this.h,this.s,this.l/a)},Nh.darker=function(a){return a=Math.pow(.7,arguments.length?a:1),U(this.h,this.s,a*this.l)},Nh.rgb=function(){return W(this.h,this.s,this.l)},Wg.hcl=function(a,b,c){return 1===arguments.length?a instanceof Y?X(a.h,a.c,a.l):a instanceof _?bb(a.l,a.a,a.b):bb((a=mb((a=Wg.rgb(a)).r,a.g,a.b)).l,a.a,a.b):X(+a,+b,+c)};var Oh=Y.prototype=new T;Oh.brighter=function(a){return X(this.h,this.c,Math.min(100,this.l+Ph*(arguments.length?a:1)))},Oh.darker=function(a){return X(this.h,this.c,Math.max(0,this.l-Ph*(arguments.length?a:1)))},Oh.rgb=function(){return Z(this.h,this.c,this.l).rgb()},Wg.lab=function(a,b,c){return 1===arguments.length?a instanceof _?$(a.l,a.a,a.b):a instanceof Y?Z(a.l,a.c,a.h):mb((a=Wg.rgb(a)).r,a.g,a.b):$(+a,+b,+c)};var Ph=18,Qh=.95047,Rh=1,Sh=1.08883,Th=_.prototype=new T;Th.brighter=function(a){return $(Math.min(100,this.l+Ph*(arguments.length?a:1)),this.a,this.b)},Th.darker=function(a){return $(Math.max(0,this.l-Ph*(arguments.length?a:1)),this.a,this.b)},Th.rgb=function(){return ab(this.l,this.a,this.b)},Wg.rgb=function(a,b,c){return 1===arguments.length?a instanceof ib?hb(a.r,a.g,a.b):kb(""+a,hb,W):hb(~~a,~~b,~~c)};var Uh=ib.prototype=new T;Uh.brighter=function(a){a=Math.pow(.7,arguments.length?a:1);var b=this.r,c=this.g,d=this.b,e=30;return b||c||d?(b&&e>b&&(b=e),c&&e>c&&(c=e),d&&e>d&&(d=e),hb(Math.min(255,~~(b/a)),Math.min(255,~~(c/a)),Math.min(255,~~(d/a)))):hb(e,e,e)},Uh.darker=function(a){return a=Math.pow(.7,arguments.length?a:1),hb(~~(a*this.r),~~(a*this.g),~~(a*this.b))},Uh.hsl=function(){return lb(this.r,this.g,this.b)},Uh.toString=function(){return"#"+jb(this.r)+jb(this.g)+jb(this.b)};var Vh=Wg.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});Vh.forEach(function(a,b){Vh.set(a,fb(b))}),Wg.functor=pb,Wg.xhr=rb(qb),Wg.dsv=function(a,b){function c(a,c,f){arguments.length<3&&(f=c,c=null);var g=sb(a,b,null==c?d:e(c),f);return g.row=function(a){return arguments.length?g.response(null==(c=a)?d:e(a)):c},g}function d(a){return c.parse(a.responseText)}function e(a){return function(b){return c.parse(b.responseText,a)}}function g(b){return b.map(h).join(a)}function h(a){return i.test(a)?'"'+a.replace(/\"/g,'""')+'"':a}var i=new RegExp('["'+a+"\n]"),j=a.charCodeAt(0);return c.parse=function(a,b){var d;return c.parseRows(a,function(a,c){if(d)return d(a,c-1);var e=new Function("d","return {"+a.map(function(a,b){return JSON.stringify(a)+": d["+b+"]"}).join(",")+"}");d=b?function(a,c){return b(e(a),c)}:e})},c.parseRows=function(a,b){function c(){if(k>=i)return g;if(e)return e=!1,f;var b=k;if(34===a.charCodeAt(b)){for(var c=b;c++<i;)if(34===a.charCodeAt(c)){if(34!==a.charCodeAt(c+1))break;++c}k=c+2;var d=a.charCodeAt(c+1);return 13===d?(e=!0,10===a.charCodeAt(c+2)&&++k):10===d&&(e=!0),a.substring(b+1,c).replace(/""/g,'"')}for(;i>k;){var d=a.charCodeAt(k++),h=1;if(10===d)e=!0;else if(13===d)e=!0,10===a.charCodeAt(k)&&(++k,++h);else if(d!==j)continue;return a.substring(b,k-h)}return a.substring(b)}for(var d,e,f={},g={},h=[],i=a.length,k=0,l=0;(d=c())!==g;){for(var m=[];d!==f&&d!==g;)m.push(d),d=c();(!b||(m=b(m,l++)))&&h.push(m)}return h},c.format=function(b){if(Array.isArray(b[0]))return c.formatRows(b);var d=new f,e=[];return b.forEach(function(a){for(var b in a)d.has(b)||e.push(d.add(b))}),[e.map(h).join(a)].concat(b.map(function(b){return e.map(function(a){return h(b[a])}).join(a)})).join("\n")},c.formatRows=function(a){return a.map(g).join("\n")},c},Wg.csv=Wg.dsv(",","text/csv"),Wg.tsv=Wg.dsv("	","text/tab-separated-values");var Wh,Xh,Yh,Zh,$h,_h=_g[h(_g,"requestAnimationFrame")]||function(a){setTimeout(a,17)};Wg.timer=function(a,b,c){var d=arguments.length;2>d&&(b=0),3>d&&(c=Date.now());var e=c+b,f={c:a,t:e,f:!1,n:null};Xh?Xh.n=f:Wh=f,Xh=f,Yh||(Zh=clearTimeout(Zh),Yh=1,_h(ub))},Wg.timer.flush=function(){vb(),wb()};var ai=".",bi=",",ci=[3,3],di="$",ei=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"].map(xb);Wg.formatPrefix=function(a,b){var c=0;return a&&(0>a&&(a*=-1),b&&(a=Wg.round(a,yb(a,b))),c=1+Math.floor(1e-12+Math.log(a)/Math.LN10),c=Math.max(-24,Math.min(24,3*Math.floor((0>=c?c+1:c-1)/3)))),ei[8+c/3]},Wg.round=function(a,b){return b?Math.round(a*(b=Math.pow(10,b)))/b:Math.round(a)},Wg.format=function(a){var b=fi.exec(a),c=b[1]||" ",d=b[2]||">",e=b[3]||"",f=b[4]||"",g=b[5],h=+b[6],i=b[7],j=b[8],k=b[9],l=1,m="",n=!1;switch(j&&(j=+j.substring(1)),(g||"0"===c&&"="===d)&&(g=c="0",d="=",i&&(h-=Math.floor((h-1)/4))),k){case"n":i=!0,k="g";break;case"%":l=100,m="%",k="f";break;case"p":l=100,m="%",k="r";break;case"b":case"o":case"x":case"X":"#"===f&&(f="0"+k.toLowerCase());case"c":case"d":n=!0,j=0;break;case"s":l=-1,k="r"}"#"===f?f="":"$"===f&&(f=di),"r"!=k||j||(k="g"),null!=j&&("g"==k?j=Math.max(1,Math.min(21,j)):("e"==k||"f"==k)&&(j=Math.max(0,Math.min(20,j)))),k=gi.get(k)||zb;var o=g&&i;return function(a){if(n&&a%1)return"";var b=0>a||0===a&&0>1/a?(a=-a,"-"):e;if(0>l){var p=Wg.formatPrefix(a,j);a=p.scale(a),m=p.symbol}else a*=l;a=k(a,j);var q=a.lastIndexOf("."),r=0>q?a:a.substring(0,q),s=0>q?"":ai+a.substring(q+1);!g&&i&&(r=hi(r));var t=f.length+r.length+s.length+(o?0:b.length),u=h>t?new Array(t=h-t+1).join(c):"";return o&&(r=hi(u+r)),b+=f,a=r+s,("<"===d?b+a+u:">"===d?u+b+a:"^"===d?u.substring(0,t>>=1)+b+a+u.substring(t):b+(o?a:u+a))+m}};var fi=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,gi=Wg.map({b:function(a){return a.toString(2)},c:function(a){return String.fromCharCode(a)},o:function(a){return a.toString(8)},x:function(a){return a.toString(16)},X:function(a){return a.toString(16).toUpperCase()},g:function(a,b){return a.toPrecision(b)},e:function(a,b){return a.toExponential(b)},f:function(a,b){return a.toFixed(b)},r:function(a,b){return(a=Wg.round(a,yb(a,b))).toFixed(Math.max(0,Math.min(20,yb(a*(1+1e-15),b))))}}),hi=qb;if(ci){var ii=ci.length;hi=function(a){for(var b=a.length,c=[],d=0,e=ci[0];b>0&&e>0;)c.push(a.substring(b-=e,b+e)),e=ci[d=(d+1)%ii];return c.reverse().join(bi)}}Wg.geo={},Ab.prototype={s:0,t:0,add:function(a){Bb(a,this.t,ji),Bb(ji.s,this.s,this),this.s?this.t+=ji.t:this.s=ji.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var ji=new Ab;Wg.geo.stream=function(a,b){a&&ki.hasOwnProperty(a.type)?ki[a.type](a,b):Cb(a,b)};var ki={Feature:function(a,b){Cb(a.geometry,b)},FeatureCollection:function(a,b){for(var c=a.features,d=-1,e=c.length;++d<e;)Cb(c[d].geometry,b)}},li={Sphere:function(a,b){b.sphere()},Point:function(a,b){a=a.coordinates,b.point(a[0],a[1],a[2])},MultiPoint:function(a,b){for(var c=a.coordinates,d=-1,e=c.length;++d<e;)a=c[d],b.point(a[0],a[1],a[2])},LineString:function(a,b){Db(a.coordinates,b,0)},MultiLineString:function(a,b){for(var c=a.coordinates,d=-1,e=c.length;++d<e;)Db(c[d],b,0)},Polygon:function(a,b){Eb(a.coordinates,b)},MultiPolygon:function(a,b){for(var c=a.coordinates,d=-1,e=c.length;++d<e;)Eb(c[d],b)},GeometryCollection:function(a,b){for(var c=a.geometries,d=-1,e=c.length;++d<e;)Cb(c[d],b)}};Wg.geo.area=function(a){return mi=0,Wg.geo.stream(a,oi),mi};var mi,ni=new Ab,oi={sphere:function(){mi+=4*Ah},point:i,lineStart:i,lineEnd:i,polygonStart:function(){ni.reset(),oi.lineStart=Fb},polygonEnd:function(){var a=2*ni;mi+=0>a?4*Ah+a:a,oi.lineStart=oi.lineEnd=oi.point=i}};Wg.geo.bounds=function(){function a(a,b){t.push(u=[k=a,m=a]),l>b&&(l=b),b>n&&(n=b)}function b(b,c){var d=Gb([b*Fh,c*Fh]);if(r){var e=Ib(r,d),f=[e[1],-e[0],0],g=Ib(f,e);Lb(g),g=Mb(g);var i=b-o,j=i>0?1:-1,p=g[0]*Gh*j,q=ih(i)>180;if(q^(p>j*o&&j*b>p)){var s=g[1]*Gh;s>n&&(n=s)}else if(p=(p+360)%360-180,q^(p>j*o&&j*b>p)){var s=-g[1]*Gh;l>s&&(l=s)}else l>c&&(l=c),c>n&&(n=c);q?o>b?h(k,b)>h(k,m)&&(m=b):h(b,m)>h(k,m)&&(k=b):m>=k?(k>b&&(k=b),b>m&&(m=b)):b>o?h(k,b)>h(k,m)&&(m=b):h(b,m)>h(k,m)&&(k=b)}else a(b,c);r=d,o=b}function c(){v.point=b}function d(){u[0]=k,u[1]=m,v.point=a,r=null}function e(a,c){if(r){var d=a-o;s+=ih(d)>180?d+(d>0?360:-360):d}else p=a,q=c;oi.point(a,c),b(a,c)}function f(){oi.lineStart()}function g(){e(p,q),oi.lineEnd(),ih(s)>Dh&&(k=-(m=180)),u[0]=k,u[1]=m,r=null}function h(a,b){return(b-=a)<0?b+360:b}function i(a,b){return a[0]-b[0]}function j(a,b){return b[0]<=b[1]?b[0]<=a&&a<=b[1]:a<b[0]||b[1]<a}var k,l,m,n,o,p,q,r,s,t,u,v={point:a,lineStart:c,lineEnd:d,polygonStart:function(){v.point=e,v.lineStart=f,v.lineEnd=g,s=0,oi.polygonStart()},polygonEnd:function(){oi.polygonEnd(),v.point=a,v.lineStart=c,v.lineEnd=d,0>ni?(k=-(m=180),l=-(n=90)):s>Dh?n=90:-Dh>s&&(l=-90),u[0]=k,u[1]=m}};return function(a){n=m=-(k=l=1/0),t=[],Wg.geo.stream(a,v);var b=t.length;if(b){t.sort(i);for(var c,d=1,e=t[0],f=[e];b>d;++d)c=t[d],j(c[0],e)||j(c[1],e)?(h(e[0],c[1])>h(e[0],e[1])&&(e[1]=c[1]),h(c[0],e[1])>h(e[0],e[1])&&(e[0]=c[0])):f.push(e=c);for(var g,c,o=-1/0,b=f.length-1,d=0,e=f[b];b>=d;e=c,++d)c=f[d],(g=h(e[1],c[0]))>o&&(o=g,k=c[0],m=e[1])}return t=u=null,1/0===k||1/0===l?[[0/0,0/0],[0/0,0/0]]:[[k,l],[m,n]]}}(),Wg.geo.centroid=function(a){pi=qi=ri=si=ti=ui=vi=wi=xi=yi=zi=0,Wg.geo.stream(a,Ai);var b=xi,c=yi,d=zi,e=b*b+c*c+d*d;return Eh>e&&(b=ui,c=vi,d=wi,Dh>qi&&(b=ri,c=si,d=ti),e=b*b+c*c+d*d,Eh>e)?[0/0,0/0]:[Math.atan2(c,b)*Gh,O(d/Math.sqrt(e))*Gh]};var pi,qi,ri,si,ti,ui,vi,wi,xi,yi,zi,Ai={sphere:i,point:Ob,lineStart:Qb,lineEnd:Rb,polygonStart:function(){Ai.lineStart=Sb},polygonEnd:function(){Ai.lineStart=Qb}},Bi=Xb(Tb,ac,cc,[-Ah,-Ah/2]),Ci=1e9;Wg.geo.clipExtent=function(){var a,b,c,d,e,f,g={stream:function(a){return e&&(e.valid=!1),e=f(a),e.valid=!0,e},extent:function(h){return arguments.length?(f=fc(a=+h[0][0],b=+h[0][1],c=+h[1][0],d=+h[1][1]),e&&(e.valid=!1,e=null),g):[[a,b],[c,d]]}};return g.extent([[0,0],[960,500]])},(Wg.geo.conicEqualArea=function(){return hc(ic)}).raw=ic,Wg.geo.albers=function(){return Wg.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},Wg.geo.albersUsa=function(){function a(a){var f=a[0],g=a[1];return b=null,c(f,g),b||(d(f,g),b)||e(f,g),b}var b,c,d,e,f=Wg.geo.albers(),g=Wg.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),h=Wg.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),i={point:function(a,c){b=[a,c]}};return a.invert=function(a){var b=f.scale(),c=f.translate(),d=(a[0]-c[0])/b,e=(a[1]-c[1])/b;return(e>=.12&&.234>e&&d>=-.425&&-.214>d?g:e>=.166&&.234>e&&d>=-.214&&-.115>d?h:f).invert(a)},a.stream=function(a){var b=f.stream(a),c=g.stream(a),d=h.stream(a);return{point:function(a,e){b.point(a,e),c.point(a,e),d.point(a,e)},sphere:function(){b.sphere(),c.sphere(),d.sphere()},lineStart:function(){b.lineStart(),c.lineStart(),d.lineStart()},lineEnd:function(){b.lineEnd(),c.lineEnd(),d.lineEnd()},polygonStart:function(){b.polygonStart(),c.polygonStart(),d.polygonStart()},polygonEnd:function(){b.polygonEnd(),c.polygonEnd(),d.polygonEnd()}}},a.precision=function(b){return arguments.length?(f.precision(b),g.precision(b),h.precision(b),a):f.precision()},a.scale=function(b){return arguments.length?(f.scale(b),g.scale(.35*b),h.scale(b),a.translate(f.translate())):f.scale()},a.translate=function(b){if(!arguments.length)return f.translate();var j=f.scale(),k=+b[0],l=+b[1];return c=f.translate(b).clipExtent([[k-.455*j,l-.238*j],[k+.455*j,l+.238*j]]).stream(i).point,d=g.translate([k-.307*j,l+.201*j]).clipExtent([[k-.425*j+Dh,l+.12*j+Dh],[k-.214*j-Dh,l+.234*j-Dh]]).stream(i).point,e=h.translate([k-.205*j,l+.212*j]).clipExtent([[k-.214*j+Dh,l+.166*j+Dh],[k-.115*j-Dh,l+.234*j-Dh]]).stream(i).point,a},a.scale(1070)};var Di,Ei,Fi,Gi,Hi,Ii,Ji={point:i,lineStart:i,lineEnd:i,polygonStart:function(){Ei=0,Ji.lineStart=jc},polygonEnd:function(){Ji.lineStart=Ji.lineEnd=Ji.point=i,Di+=ih(Ei/2)}},Ki={point:kc,lineStart:i,lineEnd:i,polygonStart:i,polygonEnd:i},Li={point:nc,lineStart:oc,lineEnd:pc,polygonStart:function(){Li.lineStart=qc},polygonEnd:function(){Li.point=nc,Li.lineStart=oc,Li.lineEnd=pc}};Wg.geo.path=function(){function a(a){return a&&("function"==typeof h&&f.pointRadius(+h.apply(this,arguments)),g&&g.valid||(g=e(f)),Wg.geo.stream(a,g)),f.result()}function b(){return g=null,a}var c,d,e,f,g,h=4.5;return a.area=function(a){return Di=0,Wg.geo.stream(a,e(Ji)),Di},a.centroid=function(a){return ri=si=ti=ui=vi=wi=xi=yi=zi=0,Wg.geo.stream(a,e(Li)),zi?[xi/zi,yi/zi]:wi?[ui/wi,vi/wi]:ti?[ri/ti,si/ti]:[0/0,0/0]},a.bounds=function(a){return Hi=Ii=-(Fi=Gi=1/0),Wg.geo.stream(a,e(Ki)),[[Fi,Gi],[Hi,Ii]]},a.projection=function(a){return arguments.length?(e=(c=a)?a.stream||tc(a):qb,b()):c},a.context=function(a){return arguments.length?(f=null==(d=a)?new lc:new rc(a),"function"!=typeof h&&f.pointRadius(h),b()):d},a.pointRadius=function(b){return arguments.length?(h="function"==typeof b?b:(f.pointRadius(+b),+b),a):h},a.projection(Wg.geo.albersUsa()).context(null)},Wg.geo.transform=function(a){return{stream:function(b){var c=new uc(b);for(var d in a)c[d]=a[d];return c}}},uc.prototype={point:function(a,b){this.stream.point(a,b)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},Wg.geo.projection=wc,Wg.geo.projectionMutator=xc,(Wg.geo.equirectangular=function(){return wc(zc)}).raw=zc.invert=zc,Wg.geo.rotation=function(a){function b(b){return b=a(b[0]*Fh,b[1]*Fh),b[0]*=Gh,b[1]*=Gh,b}return a=Bc(a[0]%360*Fh,a[1]*Fh,a.length>2?a[2]*Fh:0),b.invert=function(b){return b=a.invert(b[0]*Fh,b[1]*Fh),b[0]*=Gh,b[1]*=Gh,b},b},Ac.invert=zc,Wg.geo.circle=function(){function a(){var a="function"==typeof d?d.apply(this,arguments):d,b=Bc(-a[0]*Fh,-a[1]*Fh,0).invert,e=[];return c(null,null,1,{point:function(a,c){e.push(a=b(a,c)),a[0]*=Gh,a[1]*=Gh}}),{type:"Polygon",coordinates:[e]}}var b,c,d=[0,0],e=6;return a.origin=function(b){return arguments.length?(d=b,a):d},a.angle=function(d){return arguments.length?(c=Fc((b=+d)*Fh,e*Fh),a):b},a.precision=function(d){return arguments.length?(c=Fc(b*Fh,(e=+d)*Fh),a):e},a.angle(90)},Wg.geo.distance=function(a,b){var c,d=(b[0]-a[0])*Fh,e=a[1]*Fh,f=b[1]*Fh,g=Math.sin(d),h=Math.cos(d),i=Math.sin(e),j=Math.cos(e),k=Math.sin(f),l=Math.cos(f);return Math.atan2(Math.sqrt((c=l*g)*c+(c=j*k-i*l*h)*c),i*k+j*l*h)},Wg.geo.graticule=function(){function a(){return{type:"MultiLineString",coordinates:b()}}function b(){return Wg.range(Math.ceil(f/q)*q,e,q).map(m).concat(Wg.range(Math.ceil(j/r)*r,i,r).map(n)).concat(Wg.range(Math.ceil(d/o)*o,c,o).filter(function(a){return ih(a%q)>Dh}).map(k)).concat(Wg.range(Math.ceil(h/p)*p,g,p).filter(function(a){return ih(a%r)>Dh}).map(l))}var c,d,e,f,g,h,i,j,k,l,m,n,o=10,p=o,q=90,r=360,s=2.5;return a.lines=function(){return b().map(function(a){return{type:"LineString",coordinates:a}})},a.outline=function(){return{type:"Polygon",coordinates:[m(f).concat(n(i).slice(1),m(e).reverse().slice(1),n(j).reverse().slice(1))]}},a.extent=function(b){return arguments.length?a.majorExtent(b).minorExtent(b):a.minorExtent()},a.majorExtent=function(b){return arguments.length?(f=+b[0][0],e=+b[1][0],j=+b[0][1],i=+b[1][1],f>e&&(b=f,f=e,e=b),j>i&&(b=j,j=i,i=b),a.precision(s)):[[f,j],[e,i]]},a.minorExtent=function(b){return arguments.length?(d=+b[0][0],c=+b[1][0],h=+b[0][1],g=+b[1][1],d>c&&(b=d,d=c,c=b),h>g&&(b=h,h=g,g=b),a.precision(s)):[[d,h],[c,g]]},a.step=function(b){return arguments.length?a.majorStep(b).minorStep(b):a.minorStep()},a.majorStep=function(b){return arguments.length?(q=+b[0],r=+b[1],a):[q,r]},a.minorStep=function(b){return arguments.length?(o=+b[0],p=+b[1],a):[o,p]},a.precision=function(b){return arguments.length?(s=+b,k=Hc(h,g,90),l=Ic(d,c,s),m=Hc(j,i,90),n=Ic(f,e,s),a):s},a.majorExtent([[-180,-90+Dh],[180,90-Dh]]).minorExtent([[-180,-80-Dh],[180,80+Dh]])},Wg.geo.greatArc=function(){function a(){return{type:"LineString",coordinates:[b||d.apply(this,arguments),c||e.apply(this,arguments)]}}var b,c,d=Jc,e=Kc;return a.distance=function(){return Wg.geo.distance(b||d.apply(this,arguments),c||e.apply(this,arguments))},a.source=function(c){return arguments.length?(d=c,b="function"==typeof c?null:c,a):d},a.target=function(b){return arguments.length?(e=b,c="function"==typeof b?null:b,a):e},a.precision=function(){return arguments.length?a:0},a},Wg.geo.interpolate=function(a,b){return Lc(a[0]*Fh,a[1]*Fh,b[0]*Fh,b[1]*Fh)},Wg.geo.length=function(a){return Mi=0,Wg.geo.stream(a,Ni),Mi};var Mi,Ni={sphere:i,point:i,lineStart:Mc,lineEnd:i,polygonStart:i,polygonEnd:i},Oi=Nc(function(a){return Math.sqrt(2/(1+a))},function(a){return 2*Math.asin(a/2)});(Wg.geo.azimuthalEqualArea=function(){return wc(Oi)}).raw=Oi;var Pi=Nc(function(a){var b=Math.acos(a);return b&&b/Math.sin(b)},qb);(Wg.geo.azimuthalEquidistant=function(){return wc(Pi)}).raw=Pi,(Wg.geo.conicConformal=function(){return hc(Oc)}).raw=Oc,(Wg.geo.conicEquidistant=function(){return hc(Pc)}).raw=Pc;var Qi=Nc(function(a){return 1/a},Math.atan);(Wg.geo.gnomonic=function(){return wc(Qi)}).raw=Qi,Qc.invert=function(a,b){return[a,2*Math.atan(Math.exp(b))-Ch]},(Wg.geo.mercator=function(){return Rc(Qc)}).raw=Qc;var Ri=Nc(function(){return 1},Math.asin);(Wg.geo.orthographic=function(){return wc(Ri)}).raw=Ri;var Si=Nc(function(a){return 1/(1+a)},function(a){return 2*Math.atan(a)});(Wg.geo.stereographic=function(){return wc(Si)}).raw=Si,Sc.invert=function(a,b){return[-b,2*Math.atan(Math.exp(a))-Ch]},(Wg.geo.transverseMercator=function(){var a=Rc(Sc),b=a.center,c=a.rotate;return a.center=function(a){return a?b([-a[1],a[0]]):(a=b(),[-a[1],a[0]])},a.rotate=function(a){return a?c([a[0],a[1],a.length>2?a[2]+90:90]):(a=c(),[a[0],a[1],a[2]-90])},a.rotate([0,0])}).raw=Sc,Wg.geom={},Wg.geom.hull=function(a){function b(a){if(a.length<3)return[];var b,e,f,g,h,i,j,k,l,m,n,o,p=pb(c),q=pb(d),r=a.length,s=r-1,t=[],u=[],v=0;if(p===Tc&&d===Uc)b=a;else for(f=0,b=[];r>f;++f)b.push([+p.call(this,e=a[f],f),+q.call(this,e,f)]);for(f=1;r>f;++f)(b[f][1]<b[v][1]||b[f][1]==b[v][1]&&b[f][0]<b[v][0])&&(v=f);for(f=0;r>f;++f)f!==v&&(i=b[f][1]-b[v][1],h=b[f][0]-b[v][0],t.push({angle:Math.atan2(i,h),index:f}));for(t.sort(function(a,b){return a.angle-b.angle}),n=t[0].angle,m=t[0].index,l=0,f=1;s>f;++f){if(g=t[f].index,n==t[f].angle){if(h=b[m][0]-b[v][0],i=b[m][1]-b[v][1],j=b[g][0]-b[v][0],k=b[g][1]-b[v][1],h*h+i*i>=j*j+k*k){t[f].index=-1;continue}t[l].index=-1}n=t[f].angle,l=f,m=g}for(u.push(v),f=0,g=0;2>f;++g)t[g].index>-1&&(u.push(t[g].index),f++);for(o=u.length;s>g;++g)if(!(t[g].index<0)){for(;!Vc(u[o-2],u[o-1],t[g].index,b);)--o;u[o++]=t[g].index}var w=[];for(f=o-1;f>=0;--f)w.push(a[u[f]]);return w}var c=Tc,d=Uc;return arguments.length?b(a):(b.x=function(a){return arguments.length?(c=a,b):c},b.y=function(a){return arguments.length?(d=a,b):d},b)},Wg.geom.polygon=function(a){return nh(a,Ti),a};var Ti=Wg.geom.polygon.prototype=[];Ti.area=function(){for(var a,b=-1,c=this.length,d=this[c-1],e=0;++b<c;)a=d,d=this[b],e+=a[1]*d[0]-a[0]*d[1];return.5*e},Ti.centroid=function(a){var b,c,d=-1,e=this.length,f=0,g=0,h=this[e-1];for(arguments.length||(a=-1/(6*this.area()));++d<e;)b=h,h=this[d],c=b[0]*h[1]-h[0]*b[1],f+=(b[0]+h[0])*c,g+=(b[1]+h[1])*c;return[f*a,g*a]},Ti.clip=function(a){for(var b,c,d,e,f,g,h=Yc(a),i=-1,j=this.length-Yc(this),k=this[j-1];++i<j;){for(b=a.slice(),a.length=0,e=this[i],f=b[(d=b.length-h)-1],c=-1;++c<d;)g=b[c],Wc(g,k,e)?(Wc(f,k,e)||a.push(Xc(f,g,k,e)),a.push(g)):Wc(f,k,e)&&a.push(Xc(f,g,k,e)),f=g;h&&a.push(a[0]),k=e}return a};var Ui,Vi,Wi,Xi,Yi,Zi=[],$i=[];ed.prototype.prepare=function(){for(var a,b=this.edges,c=b.length;c--;)a=b[c].edge,a.b&&a.a||b.splice(c,1);return b.sort(gd),b.length},qd.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},rd.prototype={insert:function(a,b){var c,d,e;if(a){if(b.P=a,b.N=a.N,a.N&&(a.N.P=b),a.N=b,a.R){for(a=a.R;a.L;)a=a.L;a.L=b}else a.R=b;c=a}else this._?(a=vd(this._),b.P=null,b.N=a,a.P=a.L=b,c=a):(b.P=b.N=null,this._=b,c=null);for(b.L=b.R=null,b.U=c,b.C=!0,a=b;c&&c.C;)d=c.U,c===d.L?(e=d.R,e&&e.C?(c.C=e.C=!1,d.C=!0,a=d):(a===c.R&&(td(this,c),a=c,c=a.U),c.C=!1,d.C=!0,ud(this,d))):(e=d.L,e&&e.C?(c.C=e.C=!1,d.C=!0,a=d):(a===c.L&&(ud(this,c),a=c,c=a.U),c.C=!1,d.C=!0,td(this,d))),c=a.U;this._.C=!1},remove:function(a){a.N&&(a.N.P=a.P),a.P&&(a.P.N=a.N),a.N=a.P=null;var b,c,d,e=a.U,f=a.L,g=a.R;if(c=f?g?vd(g):f:g,e?e.L===a?e.L=c:e.R=c:this._=c,f&&g?(d=c.C,c.C=a.C,c.L=f,f.U=c,c!==g?(e=c.U,c.U=a.U,a=c.R,e.L=a,c.R=g,g.U=c):(c.U=e,e=c,a=c.R)):(d=a.C,a=c),a&&(a.U=e),!d){if(a&&a.C)return void(a.C=!1);do{if(a===this._)break;if(a===e.L){if(b=e.R,b.C&&(b.C=!1,e.C=!0,td(this,e),b=e.R),b.L&&b.L.C||b.R&&b.R.C){b.R&&b.R.C||(b.L.C=!1,b.C=!0,ud(this,b),b=e.R),b.C=e.C,e.C=b.R.C=!1,td(this,e),a=this._;break}}else if(b=e.L,b.C&&(b.C=!1,e.C=!0,ud(this,e),b=e.L),b.L&&b.L.C||b.R&&b.R.C){b.L&&b.L.C||(b.R.C=!1,b.C=!0,td(this,b),b=e.L),b.C=e.C,e.C=b.L.C=!1,ud(this,e),a=this._;break}b.C=!0,a=e,e=e.U}while(!a.C);a&&(a.C=!1)}}},Wg.geom.voronoi=function(a){function b(a){var b=new Array(a.length),d=h[0][0],e=h[0][1],f=h[1][0],g=h[1][1];return wd(c(a),h).cells.forEach(function(c,h){var i=c.edges,j=c.site,k=b[h]=i.length?i.map(function(a){var b=a.start();return[b.x,b.y]}):j.x>=d&&j.x<=f&&j.y>=e&&j.y<=g?[[d,g],[f,g],[f,e],[d,e]]:[];k.point=a[h]}),b}function c(a){return a.map(function(a,b){return{x:Math.round(f(a,b)/Dh)*Dh,y:Math.round(g(a,b)/Dh)*Dh,i:b}})}var d=Tc,e=Uc,f=d,g=e,h=_i;return a?b(a):(b.links=function(a){return wd(c(a)).edges.filter(function(a){return a.l&&a.r}).map(function(b){return{source:a[b.l.i],target:a[b.r.i]}})},b.triangles=function(a){var b=[];return wd(c(a)).cells.forEach(function(c,d){for(var e,f,g=c.site,h=c.edges.sort(gd),i=-1,j=h.length,k=h[j-1].edge,l=k.l===g?k.r:k.l;++i<j;)e=k,f=l,k=h[i].edge,l=k.l===g?k.r:k.l,d<f.i&&d<l.i&&yd(g,f,l)<0&&b.push([a[d],a[f.i],a[l.i]])}),b},b.x=function(a){return arguments.length?(f=pb(d=a),b):d},b.y=function(a){return arguments.length?(g=pb(e=a),b):e},b.clipExtent=function(a){return arguments.length?(h=null==a?_i:a,b):h===_i?null:h},b.size=function(a){return arguments.length?b.clipExtent(a&&[[0,0],a]):h===_i?null:h&&h[1]},b)};var _i=[[-1e6,-1e6],[1e6,1e6]];Wg.geom.delaunay=function(a){return Wg.geom.voronoi().triangles(a)},Wg.geom.quadtree=function(a,b,c,d,e){function f(a){function f(a,b,c,d,e,f,g,h){if(!isNaN(c)&&!isNaN(d))if(a.leaf){var i=a.x,k=a.y;if(null!=i)if(ih(i-c)+ih(k-d)<.01)j(a,b,c,d,e,f,g,h);else{var l=a.point;a.x=a.y=a.point=null,j(a,l,i,k,e,f,g,h),j(a,b,c,d,e,f,g,h)}else a.x=c,a.y=d,a.point=b}else j(a,b,c,d,e,f,g,h)}function j(a,b,c,d,e,g,h,i){var j=.5*(e+h),k=.5*(g+i),l=c>=j,m=d>=k,n=(m<<1)+l;a.leaf=!1,a=a.nodes[n]||(a.nodes[n]=Bd()),l?e=j:h=j,m?g=k:i=k,f(a,b,c,d,e,g,h,i)}var k,l,m,n,o,p,q,r,s,t=pb(h),u=pb(i);if(null!=b)p=b,q=c,r=d,s=e;else if(r=s=-(p=q=1/0),l=[],m=[],o=a.length,g)for(n=0;o>n;++n)k=a[n],k.x<p&&(p=k.x),k.y<q&&(q=k.y),k.x>r&&(r=k.x),k.y>s&&(s=k.y),l.push(k.x),m.push(k.y);else for(n=0;o>n;++n){var v=+t(k=a[n],n),w=+u(k,n);p>v&&(p=v),q>w&&(q=w),v>r&&(r=v),w>s&&(s=w),l.push(v),m.push(w)}var x=r-p,y=s-q;x>y?s=q+x:r=p+y;var z=Bd();if(z.add=function(a){f(z,a,+t(a,++n),+u(a,n),p,q,r,s)},z.visit=function(a){Cd(a,z,p,q,r,s)},n=-1,null==b){for(;++n<o;)f(z,a[n],l[n],m[n],p,q,r,s);--n}else a.forEach(z.add);return l=m=a=k=null,z}var g,h=Tc,i=Uc;return(g=arguments.length)?(h=zd,i=Ad,3===g&&(e=c,d=b,c=b=0),f(a)):(f.x=function(a){return arguments.length?(h=a,f):h},f.y=function(a){return arguments.length?(i=a,f):i},f.extent=function(a){return arguments.length?(null==a?b=c=d=e=null:(b=+a[0][0],c=+a[0][1],d=+a[1][0],e=+a[1][1]),f):null==b?null:[[b,c],[d,e]]},f.size=function(a){return arguments.length?(null==a?b=c=d=e=null:(b=c=0,d=+a[0],e=+a[1]),f):null==b?null:[d-b,e-c]},f)},Wg.interpolateRgb=Dd,Wg.interpolateObject=Ed,Wg.interpolateNumber=Fd,Wg.interpolateString=Gd;var aj=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;Wg.interpolate=Hd,Wg.interpolators=[function(a,b){var c=typeof b;return("string"===c?Vh.has(b)||/^(#|rgb\(|hsl\()/.test(b)?Dd:Gd:b instanceof T?Dd:"object"===c?Array.isArray(b)?Id:Ed:Fd)(a,b)}],Wg.interpolateArray=Id;var bj=function(){return qb},cj=Wg.map({linear:bj,poly:Pd,quad:function(){return Md},cubic:function(){return Nd},sin:function(){return Qd},exp:function(){return Rd},circle:function(){return Sd},elastic:Td,back:Ud,bounce:function(){return Vd}}),dj=Wg.map({"in":qb,out:Kd,"in-out":Ld,"out-in":function(a){return Ld(Kd(a))}});Wg.ease=function(a){var b=a.indexOf("-"),c=b>=0?a.substring(0,b):a,d=b>=0?a.substring(b+1):"in";return c=cj.get(c)||bj,d=dj.get(d)||qb,Jd(d(c.apply(null,Xg.call(arguments,1))))},Wg.interpolateHcl=Wd,Wg.interpolateHsl=Xd,Wg.interpolateLab=Yd,Wg.interpolateRound=Zd,Wg.transform=function(a){var b=Zg.createElementNS(Wg.ns.prefix.svg,"g");return(Wg.transform=function(a){if(null!=a){b.setAttribute("transform",a);var c=b.transform.baseVal.consolidate()}return new $d(c?c.matrix:ej)})(a)},$d.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var ej={a:1,b:0,c:0,d:1,e:0,f:0};Wg.interpolateTransform=ce,Wg.layout={},Wg.layout.bundle=function(){return function(a){for(var b=[],c=-1,d=a.length;++c<d;)b.push(fe(a[c]));return b}},Wg.layout.chord=function(){function a(){var a,j,l,m,n,o={},p=[],q=Wg.range(f),r=[];for(c=[],d=[],a=0,m=-1;++m<f;){for(j=0,n=-1;++n<f;)j+=e[m][n];p.push(j),r.push(Wg.range(f)),a+=j}for(g&&q.sort(function(a,b){return g(p[a],p[b])}),h&&r.forEach(function(a,b){a.sort(function(a,c){return h(e[b][a],e[b][c])})}),a=(Bh-k*f)/a,j=0,m=-1;++m<f;){for(l=j,n=-1;++n<f;){var s=q[m],t=r[s][n],u=e[s][t],v=j,w=j+=u*a;o[s+"-"+t]={index:s,subindex:t,startAngle:v,endAngle:w,value:u}}d[s]={index:s,startAngle:l,endAngle:j,value:(j-l)/a},j+=k}for(m=-1;++m<f;)for(n=m-1;++n<f;){var x=o[m+"-"+n],y=o[n+"-"+m];(x.value||y.value)&&c.push(x.value<y.value?{source:y,target:x}:{source:x,target:y})}i&&b()}function b(){c.sort(function(a,b){return i((a.source.value+a.target.value)/2,(b.source.value+b.target.value)/2)
-})}var c,d,e,f,g,h,i,j={},k=0;return j.matrix=function(a){return arguments.length?(f=(e=a)&&e.length,c=d=null,j):e},j.padding=function(a){return arguments.length?(k=a,c=d=null,j):k},j.sortGroups=function(a){return arguments.length?(g=a,c=d=null,j):g},j.sortSubgroups=function(a){return arguments.length?(h=a,c=null,j):h},j.sortChords=function(a){return arguments.length?(i=a,c&&b(),j):i},j.chords=function(){return c||a(),c},j.groups=function(){return d||a(),d},j},Wg.layout.force=function(){function a(a){return function(b,c,d,e){if(b.point!==a){var f=b.cx-a.x,g=b.cy-a.y,h=1/Math.sqrt(f*f+g*g);if(p>(e-c)*h){var i=b.charge*h*h;return a.px-=f*i,a.py-=g*i,!0}if(b.point&&isFinite(h)){var i=b.pointCharge*h*h;a.px-=f*i,a.py-=g*i}}return!b.charge}}function b(a){a.px=Wg.event.x,a.py=Wg.event.y,h.resume()}var c,d,e,f,g,h={},i=Wg.dispatch("start","tick","end"),j=[1,1],k=.9,l=fj,m=gj,n=-30,o=.1,p=.8,q=[],r=[];return h.tick=function(){if((d*=.99)<.005)return i.end({type:"end",alpha:d=0}),!0;var b,c,h,l,m,p,s,t,u,v=q.length,w=r.length;for(c=0;w>c;++c)h=r[c],l=h.source,m=h.target,t=m.x-l.x,u=m.y-l.y,(p=t*t+u*u)&&(p=d*f[c]*((p=Math.sqrt(p))-e[c])/p,t*=p,u*=p,m.x-=t*(s=l.weight/(m.weight+l.weight)),m.y-=u*s,l.x+=t*(s=1-s),l.y+=u*s);if((s=d*o)&&(t=j[0]/2,u=j[1]/2,c=-1,s))for(;++c<v;)h=q[c],h.x+=(t-h.x)*s,h.y+=(u-h.y)*s;if(n)for(me(b=Wg.geom.quadtree(q),d,g),c=-1;++c<v;)(h=q[c]).fixed||b.visit(a(h));for(c=-1;++c<v;)h=q[c],h.fixed?(h.x=h.px,h.y=h.py):(h.x-=(h.px-(h.px=h.x))*k,h.y-=(h.py-(h.py=h.y))*k);i.tick({type:"tick",alpha:d})},h.nodes=function(a){return arguments.length?(q=a,h):q},h.links=function(a){return arguments.length?(r=a,h):r},h.size=function(a){return arguments.length?(j=a,h):j},h.linkDistance=function(a){return arguments.length?(l="function"==typeof a?a:+a,h):l},h.distance=h.linkDistance,h.linkStrength=function(a){return arguments.length?(m="function"==typeof a?a:+a,h):m},h.friction=function(a){return arguments.length?(k=+a,h):k},h.charge=function(a){return arguments.length?(n="function"==typeof a?a:+a,h):n},h.gravity=function(a){return arguments.length?(o=+a,h):o},h.theta=function(a){return arguments.length?(p=+a,h):p},h.alpha=function(a){return arguments.length?(a=+a,d?d=a>0?a:0:a>0&&(i.start({type:"start",alpha:d=a}),Wg.timer(h.tick)),h):d},h.start=function(){function a(a,d){if(!c){for(c=new Array(i),h=0;i>h;++h)c[h]=[];for(h=0;j>h;++h){var e=r[h];c[e.source.index].push(e.target),c[e.target.index].push(e.source)}}for(var f,g=c[b],h=-1,j=g.length;++h<j;)if(!isNaN(f=g[h][a]))return f;return Math.random()*d}var b,c,d,i=q.length,k=r.length,o=j[0],p=j[1];for(b=0;i>b;++b)(d=q[b]).index=b,d.weight=0;for(b=0;k>b;++b)d=r[b],"number"==typeof d.source&&(d.source=q[d.source]),"number"==typeof d.target&&(d.target=q[d.target]),++d.source.weight,++d.target.weight;for(b=0;i>b;++b)d=q[b],isNaN(d.x)&&(d.x=a("x",o)),isNaN(d.y)&&(d.y=a("y",p)),isNaN(d.px)&&(d.px=d.x),isNaN(d.py)&&(d.py=d.y);if(e=[],"function"==typeof l)for(b=0;k>b;++b)e[b]=+l.call(this,r[b],b);else for(b=0;k>b;++b)e[b]=l;if(f=[],"function"==typeof m)for(b=0;k>b;++b)f[b]=+m.call(this,r[b],b);else for(b=0;k>b;++b)f[b]=m;if(g=[],"function"==typeof n)for(b=0;i>b;++b)g[b]=+n.call(this,q[b],b);else for(b=0;i>b;++b)g[b]=n;return h.resume()},h.resume=function(){return h.alpha(.1)},h.stop=function(){return h.alpha(0)},h.drag=function(){return c||(c=Wg.behavior.drag().origin(qb).on("dragstart.force",ie).on("drag.force",b).on("dragend.force",je)),arguments.length?void this.on("mouseover.force",ke).on("mouseout.force",le).call(c):c},Wg.rebind(h,i,"on")};var fj=20,gj=1;Wg.layout.hierarchy=function(){function a(b,g,h){var i=e.call(c,b,g);if(b.depth=g,h.push(b),i&&(j=i.length)){for(var j,k,l=-1,m=b.children=new Array(j),n=0,o=g+1;++l<j;)k=m[l]=a(i[l],o,h),k.parent=b,n+=k.value;d&&m.sort(d),f&&(b.value=n)}else delete b.children,f&&(b.value=+f.call(c,b,g)||0);return b}function b(a,d){var e=a.children,g=0;if(e&&(h=e.length))for(var h,i=-1,j=d+1;++i<h;)g+=b(e[i],j);else f&&(g=+f.call(c,a,d)||0);return f&&(a.value=g),g}function c(b){var c=[];return a(b,0,c),c}var d=qe,e=oe,f=pe;return c.sort=function(a){return arguments.length?(d=a,c):d},c.children=function(a){return arguments.length?(e=a,c):e},c.value=function(a){return arguments.length?(f=a,c):f},c.revalue=function(a){return b(a,0),a},c},Wg.layout.partition=function(){function a(b,c,d,e){var f=b.children;if(b.x=c,b.y=b.depth*e,b.dx=d,b.dy=e,f&&(g=f.length)){var g,h,i,j=-1;for(d=b.value?d/b.value:0;++j<g;)a(h=f[j],c,i=h.value*d,e),c+=i}}function b(a){var c=a.children,d=0;if(c&&(e=c.length))for(var e,f=-1;++f<e;)d=Math.max(d,b(c[f]));return 1+d}function c(c,f){var g=d.call(this,c,f);return a(g[0],0,e[0],e[1]/b(g[0])),g}var d=Wg.layout.hierarchy(),e=[1,1];return c.size=function(a){return arguments.length?(e=a,c):e},ne(c,d)},Wg.layout.pie=function(){function a(f){var g=f.map(function(c,d){return+b.call(a,c,d)}),h=+("function"==typeof d?d.apply(this,arguments):d),i=(("function"==typeof e?e.apply(this,arguments):e)-h)/Wg.sum(g),j=Wg.range(f.length);null!=c&&j.sort(c===hj?function(a,b){return g[b]-g[a]}:function(a,b){return c(f[a],f[b])});var k=[];return j.forEach(function(a){var b;k[a]={data:f[a],value:b=g[a],startAngle:h,endAngle:h+=b*i}}),k}var b=Number,c=hj,d=0,e=Bh;return a.value=function(c){return arguments.length?(b=c,a):b},a.sort=function(b){return arguments.length?(c=b,a):c},a.startAngle=function(b){return arguments.length?(d=b,a):d},a.endAngle=function(b){return arguments.length?(e=b,a):e},a};var hj={};Wg.layout.stack=function(){function a(h,i){var j=h.map(function(c,d){return b.call(a,c,d)}),k=j.map(function(b){return b.map(function(b,c){return[f.call(a,b,c),g.call(a,b,c)]})}),l=c.call(a,k,i);j=Wg.permute(j,l),k=Wg.permute(k,l);var m,n,o,p=d.call(a,k,i),q=j.length,r=j[0].length;for(n=0;r>n;++n)for(e.call(a,j[0][n],o=p[n],k[0][n][1]),m=1;q>m;++m)e.call(a,j[m][n],o+=k[m-1][n][1],k[m][n][1]);return h}var b=qb,c=ve,d=we,e=ue,f=se,g=te;return a.values=function(c){return arguments.length?(b=c,a):b},a.order=function(b){return arguments.length?(c="function"==typeof b?b:ij.get(b)||ve,a):c},a.offset=function(b){return arguments.length?(d="function"==typeof b?b:jj.get(b)||we,a):d},a.x=function(b){return arguments.length?(f=b,a):f},a.y=function(b){return arguments.length?(g=b,a):g},a.out=function(b){return arguments.length?(e=b,a):e},a};var ij=Wg.map({"inside-out":function(a){var b,c,d=a.length,e=a.map(xe),f=a.map(ye),g=Wg.range(d).sort(function(a,b){return e[a]-e[b]}),h=0,i=0,j=[],k=[];for(b=0;d>b;++b)c=g[b],i>h?(h+=f[c],j.push(c)):(i+=f[c],k.push(c));return k.reverse().concat(j)},reverse:function(a){return Wg.range(a.length).reverse()},"default":ve}),jj=Wg.map({silhouette:function(a){var b,c,d,e=a.length,f=a[0].length,g=[],h=0,i=[];for(c=0;f>c;++c){for(b=0,d=0;e>b;b++)d+=a[b][c][1];d>h&&(h=d),g.push(d)}for(c=0;f>c;++c)i[c]=(h-g[c])/2;return i},wiggle:function(a){var b,c,d,e,f,g,h,i,j,k=a.length,l=a[0],m=l.length,n=[];for(n[0]=i=j=0,c=1;m>c;++c){for(b=0,e=0;k>b;++b)e+=a[b][c][1];for(b=0,f=0,h=l[c][0]-l[c-1][0];k>b;++b){for(d=0,g=(a[b][c][1]-a[b][c-1][1])/(2*h);b>d;++d)g+=(a[d][c][1]-a[d][c-1][1])/h;f+=g*a[b][c][1]}n[c]=i-=e?f/e*h:0,j>i&&(j=i)}for(c=0;m>c;++c)n[c]-=j;return n},expand:function(a){var b,c,d,e=a.length,f=a[0].length,g=1/e,h=[];for(c=0;f>c;++c){for(b=0,d=0;e>b;b++)d+=a[b][c][1];if(d)for(b=0;e>b;b++)a[b][c][1]/=d;else for(b=0;e>b;b++)a[b][c][1]=g}for(c=0;f>c;++c)h[c]=0;return h},zero:we});Wg.layout.histogram=function(){function a(a,f){for(var g,h,i=[],j=a.map(c,this),k=d.call(this,j,f),l=e.call(this,k,j,f),f=-1,m=j.length,n=l.length-1,o=b?1:1/m;++f<n;)g=i[f]=[],g.dx=l[f+1]-(g.x=l[f]),g.y=0;if(n>0)for(f=-1;++f<m;)h=j[f],h>=k[0]&&h<=k[1]&&(g=i[Wg.bisect(l,h,1,n)-1],g.y+=o,g.push(a[f]));return i}var b=!0,c=Number,d=Ce,e=Ae;return a.value=function(b){return arguments.length?(c=b,a):c},a.range=function(b){return arguments.length?(d=pb(b),a):d},a.bins=function(b){return arguments.length?(e="number"==typeof b?function(a){return Be(a,b)}:pb(b),a):e},a.frequency=function(c){return arguments.length?(b=!!c,a):b},a},Wg.layout.tree=function(){function a(a,f){function g(a,b){var d=a.children,e=a._tree;if(d&&(f=d.length)){for(var f,h,j,k=d[0],l=k,m=-1;++m<f;)j=d[m],g(j,h),l=i(j,h,l),h=j;Le(a);var n=.5*(k._tree.prelim+j._tree.prelim);b?(e.prelim=b._tree.prelim+c(a,b),e.mod=e.prelim-n):e.prelim=n}else b&&(e.prelim=b._tree.prelim+c(a,b))}function h(a,b){a.x=a._tree.prelim+b;var c=a.children;if(c&&(d=c.length)){var d,e=-1;for(b+=a._tree.mod;++e<d;)h(c[e],b)}}function i(a,b,d){if(b){for(var e,f=a,g=a,h=b,i=a.parent.children[0],j=f._tree.mod,k=g._tree.mod,l=h._tree.mod,m=i._tree.mod;h=Fe(h),f=Ee(f),h&&f;)i=Ee(i),g=Fe(g),g._tree.ancestor=a,e=h._tree.prelim+l-f._tree.prelim-j+c(h,f),e>0&&(Me(Ne(h,a,d),a,e),j+=e,k+=e),l+=h._tree.mod,j+=f._tree.mod,m+=i._tree.mod,k+=g._tree.mod;h&&!Fe(g)&&(g._tree.thread=h,g._tree.mod+=l-k),f&&!Ee(i)&&(i._tree.thread=f,i._tree.mod+=j-m,d=a)}return d}var j=b.call(this,a,f),k=j[0];Ke(k,function(a,b){a._tree={ancestor:a,prelim:0,mod:0,change:0,shift:0,number:b?b._tree.number+1:0}}),g(k),h(k,-k._tree.prelim);var l=Ge(k,Ie),m=Ge(k,He),n=Ge(k,Je),o=l.x-c(l,m)/2,p=m.x+c(m,l)/2,q=n.depth||1;return Ke(k,e?function(a){a.x*=d[0],a.y=a.depth*d[1],delete a._tree}:function(a){a.x=(a.x-o)/(p-o)*d[0],a.y=a.depth/q*d[1],delete a._tree}),j}var b=Wg.layout.hierarchy().sort(null).value(null),c=De,d=[1,1],e=!1;return a.separation=function(b){return arguments.length?(c=b,a):c},a.size=function(b){return arguments.length?(e=null==(d=b),a):e?null:d},a.nodeSize=function(b){return arguments.length?(e=null!=(d=b),a):e?d:null},ne(a,b)},Wg.layout.pack=function(){function a(a,f){var g=c.call(this,a,f),h=g[0],i=e[0],j=e[1],k=null==b?Math.sqrt:"function"==typeof b?b:function(){return b};if(h.x=h.y=0,Ke(h,function(a){a.r=+k(a.value)}),Ke(h,Se),d){var l=d*(b?1:Math.max(2*h.r/i,2*h.r/j))/2;Ke(h,function(a){a.r+=l}),Ke(h,Se),Ke(h,function(a){a.r-=l})}return Ve(h,i/2,j/2,b?1:1/Math.max(2*h.r/i,2*h.r/j)),g}var b,c=Wg.layout.hierarchy().sort(Oe),d=0,e=[1,1];return a.size=function(b){return arguments.length?(e=b,a):e},a.radius=function(c){return arguments.length?(b=null==c||"function"==typeof c?c:+c,a):b},a.padding=function(b){return arguments.length?(d=+b,a):d},ne(a,c)},Wg.layout.cluster=function(){function a(a,f){var g,h=b.call(this,a,f),i=h[0],j=0;Ke(i,function(a){var b=a.children;b&&b.length?(a.x=Ye(b),a.y=Xe(b)):(a.x=g?j+=c(a,g):0,a.y=0,g=a)});var k=Ze(i),l=$e(i),m=k.x-c(k,l)/2,n=l.x+c(l,k)/2;return Ke(i,e?function(a){a.x=(a.x-i.x)*d[0],a.y=(i.y-a.y)*d[1]}:function(a){a.x=(a.x-m)/(n-m)*d[0],a.y=(1-(i.y?a.y/i.y:1))*d[1]}),h}var b=Wg.layout.hierarchy().sort(null).value(null),c=De,d=[1,1],e=!1;return a.separation=function(b){return arguments.length?(c=b,a):c},a.size=function(b){return arguments.length?(e=null==(d=b),a):e?null:d},a.nodeSize=function(b){return arguments.length?(e=null!=(d=b),a):e?d:null},ne(a,b)},Wg.layout.treemap=function(){function a(a,b){for(var c,d,e=-1,f=a.length;++e<f;)d=(c=a[e]).value*(0>b?0:b),c.area=isNaN(d)||0>=d?0:d}function b(c){var f=c.children;if(f&&f.length){var g,h,i,j=l(c),k=[],m=f.slice(),o=1/0,p="slice"===n?j.dx:"dice"===n?j.dy:"slice-dice"===n?1&c.depth?j.dy:j.dx:Math.min(j.dx,j.dy);for(a(m,j.dx*j.dy/c.value),k.area=0;(i=m.length)>0;)k.push(g=m[i-1]),k.area+=g.area,"squarify"!==n||(h=d(k,p))<=o?(m.pop(),o=h):(k.area-=k.pop().area,e(k,p,j,!1),p=Math.min(j.dx,j.dy),k.length=k.area=0,o=1/0);k.length&&(e(k,p,j,!0),k.length=k.area=0),f.forEach(b)}}function c(b){var d=b.children;if(d&&d.length){var f,g=l(b),h=d.slice(),i=[];for(a(h,g.dx*g.dy/b.value),i.area=0;f=h.pop();)i.push(f),i.area+=f.area,null!=f.z&&(e(i,f.z?g.dx:g.dy,g,!h.length),i.length=i.area=0);d.forEach(c)}}function d(a,b){for(var c,d=a.area,e=0,f=1/0,g=-1,h=a.length;++g<h;)(c=a[g].area)&&(f>c&&(f=c),c>e&&(e=c));return d*=d,b*=b,d?Math.max(b*e*o/d,d/(b*f*o)):1/0}function e(a,b,c,d){var e,f=-1,g=a.length,h=c.x,j=c.y,k=b?i(a.area/b):0;if(b==c.dx){for((d||k>c.dy)&&(k=c.dy);++f<g;)e=a[f],e.x=h,e.y=j,e.dy=k,h+=e.dx=Math.min(c.x+c.dx-h,k?i(e.area/k):0);e.z=!0,e.dx+=c.x+c.dx-h,c.y+=k,c.dy-=k}else{for((d||k>c.dx)&&(k=c.dx);++f<g;)e=a[f],e.x=h,e.y=j,e.dx=k,j+=e.dy=Math.min(c.y+c.dy-j,k?i(e.area/k):0);e.z=!1,e.dy+=c.y+c.dy-j,c.x+=k,c.dx-=k}}function f(d){var e=g||h(d),f=e[0];return f.x=0,f.y=0,f.dx=j[0],f.dy=j[1],g&&h.revalue(f),a([f],f.dx*f.dy/f.value),(g?c:b)(f),m&&(g=e),e}var g,h=Wg.layout.hierarchy(),i=Math.round,j=[1,1],k=null,l=_e,m=!1,n="squarify",o=.5*(1+Math.sqrt(5));return f.size=function(a){return arguments.length?(j=a,f):j},f.padding=function(a){function b(b){var c=a.call(f,b,b.depth);return null==c?_e(b):af(b,"number"==typeof c?[c,c,c,c]:c)}function c(b){return af(b,a)}if(!arguments.length)return k;var d;return l=null==(k=a)?_e:"function"==(d=typeof a)?b:"number"===d?(a=[a,a,a,a],c):c,f},f.round=function(a){return arguments.length?(i=a?Math.round:Number,f):i!=Number},f.sticky=function(a){return arguments.length?(m=a,g=null,f):m},f.ratio=function(a){return arguments.length?(o=a,f):o},f.mode=function(a){return arguments.length?(n=a+"",f):n},ne(f,h)},Wg.random={normal:function(a,b){var c=arguments.length;return 2>c&&(b=1),1>c&&(a=0),function(){var c,d,e;do c=2*Math.random()-1,d=2*Math.random()-1,e=c*c+d*d;while(!e||e>1);return a+b*c*Math.sqrt(-2*Math.log(e)/e)}},logNormal:function(){var a=Wg.random.normal.apply(Wg,arguments);return function(){return Math.exp(a())}},bates:function(a){var b=Wg.random.irwinHall(a);return function(){return b()/a}},irwinHall:function(a){return function(){for(var b=0,c=0;a>c;c++)b+=Math.random();return b}}},Wg.scale={};var kj={floor:qb,ceil:qb};Wg.scale.linear=function(){return hf([0,1],[0,1],Hd,!1)};var lj={s:1,g:1,p:1,r:1,e:1};Wg.scale.log=function(){return qf(Wg.scale.linear().domain([0,1]),10,!0,[1,10])};var mj=Wg.format(".0e"),nj={floor:function(a){return-Math.ceil(-a)},ceil:function(a){return-Math.floor(-a)}};Wg.scale.pow=function(){return rf(Wg.scale.linear(),1,[0,1])},Wg.scale.sqrt=function(){return Wg.scale.pow().exponent(.5)},Wg.scale.ordinal=function(){return tf([],{t:"range",a:[[]]})},Wg.scale.category10=function(){return Wg.scale.ordinal().range(oj)},Wg.scale.category20=function(){return Wg.scale.ordinal().range(pj)},Wg.scale.category20b=function(){return Wg.scale.ordinal().range(qj)},Wg.scale.category20c=function(){return Wg.scale.ordinal().range(rj)};var oj=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(gb),pj=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(gb),qj=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(gb),rj=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(gb);Wg.scale.quantile=function(){return uf([],[])},Wg.scale.quantize=function(){return vf(0,1,[0,1])},Wg.scale.threshold=function(){return wf([.5],[0,1])},Wg.scale.identity=function(){return xf([0,1])},Wg.svg={},Wg.svg.arc=function(){function a(){var a=b.apply(this,arguments),f=c.apply(this,arguments),g=d.apply(this,arguments)+sj,h=e.apply(this,arguments)+sj,i=(g>h&&(i=g,g=h,h=i),h-g),j=Ah>i?"0":"1",k=Math.cos(g),l=Math.sin(g),m=Math.cos(h),n=Math.sin(h);return i>=tj?a?"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+-f+"A"+f+","+f+" 0 1,1 0,"+f+"M0,"+a+"A"+a+","+a+" 0 1,0 0,"+-a+"A"+a+","+a+" 0 1,0 0,"+a+"Z":"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+-f+"A"+f+","+f+" 0 1,1 0,"+f+"Z":a?"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L"+a*m+","+a*n+"A"+a+","+a+" 0 "+j+",0 "+a*k+","+a*l+"Z":"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L0,0Z"}var b=yf,c=zf,d=Af,e=Bf;return a.innerRadius=function(c){return arguments.length?(b=pb(c),a):b},a.outerRadius=function(b){return arguments.length?(c=pb(b),a):c},a.startAngle=function(b){return arguments.length?(d=pb(b),a):d},a.endAngle=function(b){return arguments.length?(e=pb(b),a):e},a.centroid=function(){var a=(b.apply(this,arguments)+c.apply(this,arguments))/2,f=(d.apply(this,arguments)+e.apply(this,arguments))/2+sj;return[Math.cos(f)*a,Math.sin(f)*a]},a};var sj=-Ch,tj=Bh-Dh;Wg.svg.line=function(){return Cf(qb)};var uj=Wg.map({linear:Df,"linear-closed":Ef,step:Ff,"step-before":Gf,"step-after":Hf,basis:Nf,"basis-open":Of,"basis-closed":Pf,bundle:Qf,cardinal:Kf,"cardinal-open":If,"cardinal-closed":Jf,monotone:Wf});uj.forEach(function(a,b){b.key=a,b.closed=/-closed$/.test(a)});var vj=[0,2/3,1/3,0],wj=[0,1/3,2/3,0],xj=[0,1/6,2/3,1/6];Wg.svg.line.radial=function(){var a=Cf(Xf);return a.radius=a.x,delete a.x,a.angle=a.y,delete a.y,a},Gf.reverse=Hf,Hf.reverse=Gf,Wg.svg.area=function(){return Yf(qb)},Wg.svg.area.radial=function(){var a=Yf(Xf);return a.radius=a.x,delete a.x,a.innerRadius=a.x0,delete a.x0,a.outerRadius=a.x1,delete a.x1,a.angle=a.y,delete a.y,a.startAngle=a.y0,delete a.y0,a.endAngle=a.y1,delete a.y1,a},Wg.svg.chord=function(){function a(a,h){var i=b(this,f,a,h),j=b(this,g,a,h);return"M"+i.p0+d(i.r,i.p1,i.a1-i.a0)+(c(i,j)?e(i.r,i.p1,i.r,i.p0):e(i.r,i.p1,j.r,j.p0)+d(j.r,j.p1,j.a1-j.a0)+e(j.r,j.p1,i.r,i.p0))+"Z"}function b(a,b,c,d){var e=b.call(a,c,d),f=h.call(a,e,d),g=i.call(a,e,d)+sj,k=j.call(a,e,d)+sj;return{r:f,a0:g,a1:k,p0:[f*Math.cos(g),f*Math.sin(g)],p1:[f*Math.cos(k),f*Math.sin(k)]}}function c(a,b){return a.a0==b.a0&&a.a1==b.a1}function d(a,b,c){return"A"+a+","+a+" 0 "+ +(c>Ah)+",1 "+b}function e(a,b,c,d){return"Q 0,0 "+d}var f=Jc,g=Kc,h=Zf,i=Af,j=Bf;return a.radius=function(b){return arguments.length?(h=pb(b),a):h},a.source=function(b){return arguments.length?(f=pb(b),a):f},a.target=function(b){return arguments.length?(g=pb(b),a):g},a.startAngle=function(b){return arguments.length?(i=pb(b),a):i},a.endAngle=function(b){return arguments.length?(j=pb(b),a):j},a},Wg.svg.diagonal=function(){function a(a,e){var f=b.call(this,a,e),g=c.call(this,a,e),h=(f.y+g.y)/2,i=[f,{x:f.x,y:h},{x:g.x,y:h},g];return i=i.map(d),"M"+i[0]+"C"+i[1]+" "+i[2]+" "+i[3]}var b=Jc,c=Kc,d=$f;return a.source=function(c){return arguments.length?(b=pb(c),a):b},a.target=function(b){return arguments.length?(c=pb(b),a):c},a.projection=function(b){return arguments.length?(d=b,a):d},a},Wg.svg.diagonal.radial=function(){var a=Wg.svg.diagonal(),b=$f,c=a.projection;return a.projection=function(a){return arguments.length?c(_f(b=a)):b},a},Wg.svg.symbol=function(){function a(a,d){return(yj.get(b.call(this,a,d))||cg)(c.call(this,a,d))}var b=bg,c=ag;return a.type=function(c){return arguments.length?(b=pb(c),a):b},a.size=function(b){return arguments.length?(c=pb(b),a):c},a};var yj=Wg.map({circle:cg,cross:function(a){var b=Math.sqrt(a/5)/2;return"M"+-3*b+","+-b+"H"+-b+"V"+-3*b+"H"+b+"V"+-b+"H"+3*b+"V"+b+"H"+b+"V"+3*b+"H"+-b+"V"+b+"H"+-3*b+"Z"},diamond:function(a){var b=Math.sqrt(a/(2*Cj)),c=b*Cj;return"M0,"+-b+"L"+c+",0 0,"+b+" "+-c+",0Z"},square:function(a){var b=Math.sqrt(a)/2;return"M"+-b+","+-b+"L"+b+","+-b+" "+b+","+b+" "+-b+","+b+"Z"},"triangle-down":function(a){var b=Math.sqrt(a/Bj),c=b*Bj/2;return"M0,"+c+"L"+b+","+-c+" "+-b+","+-c+"Z"},"triangle-up":function(a){var b=Math.sqrt(a/Bj),c=b*Bj/2;return"M0,"+-c+"L"+b+","+c+" "+-b+","+c+"Z"}});Wg.svg.symbolTypes=yj.keys();var zj,Aj,Bj=Math.sqrt(3),Cj=Math.tan(30*Fh),Dj=[],Ej=0;Dj.call=sh.call,Dj.empty=sh.empty,Dj.node=sh.node,Dj.size=sh.size,Wg.transition=function(a){return arguments.length?zj?a.transition():a:vh.transition()},Wg.transition.prototype=Dj,Dj.select=function(a){var b,c,d,e=this.id,f=[];a=p(a);for(var g=-1,h=this.length;++g<h;){f.push(b=[]);for(var i=this[g],j=-1,k=i.length;++j<k;)(d=i[j])&&(c=a.call(d,d.__data__,j,g))?("__data__"in d&&(c.__data__=d.__data__),gg(c,j,e,d.__transition__[e]),b.push(c)):b.push(null)}return dg(f,e)},Dj.selectAll=function(a){var b,c,d,e,f,g=this.id,h=[];a=q(a);for(var i=-1,j=this.length;++i<j;)for(var k=this[i],l=-1,m=k.length;++l<m;)if(d=k[l]){f=d.__transition__[g],c=a.call(d,d.__data__,l,i),h.push(b=[]);for(var n=-1,o=c.length;++n<o;)(e=c[n])&&gg(e,n,g,f),b.push(e)}return dg(h,g)},Dj.filter=function(a){var b,c,d,e=[];"function"!=typeof a&&(a=B(a));for(var f=0,g=this.length;g>f;f++){e.push(b=[]);for(var c=this[f],h=0,i=c.length;i>h;h++)(d=c[h])&&a.call(d,d.__data__,h,f)&&b.push(d)}return dg(e,this.id)},Dj.tween=function(a,b){var c=this.id;return arguments.length<2?this.node().__transition__[c].tween.get(a):D(this,null==b?function(b){b.__transition__[c].tween.remove(a)}:function(d){d.__transition__[c].tween.set(a,b)})},Dj.attr=function(a,b){function c(){this.removeAttribute(h)}function d(){this.removeAttributeNS(h.space,h.local)}function e(a){return null==a?c:(a+="",function(){var b,c=this.getAttribute(h);return c!==a&&(b=g(c,a),function(a){this.setAttribute(h,b(a))})})}function f(a){return null==a?d:(a+="",function(){var b,c=this.getAttributeNS(h.space,h.local);return c!==a&&(b=g(c,a),function(a){this.setAttributeNS(h.space,h.local,b(a))})})}if(arguments.length<2){for(b in a)this.attr(b,a[b]);return this}var g="transform"==a?ce:Hd,h=Wg.ns.qualify(a);return eg(this,"attr."+a,b,h.local?f:e)},Dj.attrTween=function(a,b){function c(a,c){var d=b.call(this,a,c,this.getAttribute(e));return d&&function(a){this.setAttribute(e,d(a))}}function d(a,c){var d=b.call(this,a,c,this.getAttributeNS(e.space,e.local));return d&&function(a){this.setAttributeNS(e.space,e.local,d(a))}}var e=Wg.ns.qualify(a);return this.tween("attr."+a,e.local?d:c)},Dj.style=function(a,b,c){function d(){this.style.removeProperty(a)}function e(b){return null==b?d:(b+="",function(){var d,e=_g.getComputedStyle(this,null).getPropertyValue(a);return e!==b&&(d=Hd(e,b),function(b){this.style.setProperty(a,d(b),c)})})}var f=arguments.length;if(3>f){if("string"!=typeof a){2>f&&(b="");for(c in a)this.style(c,a[c],b);return this}c=""}return eg(this,"style."+a,b,e)},Dj.styleTween=function(a,b,c){function d(d,e){var f=b.call(this,d,e,_g.getComputedStyle(this,null).getPropertyValue(a));return f&&function(b){this.style.setProperty(a,f(b),c)}}return arguments.length<3&&(c=""),this.tween("style."+a,d)},Dj.text=function(a){return eg(this,"text",a,fg)},Dj.remove=function(){return this.each("end.transition",function(){var a;this.__transition__.count<2&&(a=this.parentNode)&&a.removeChild(this)})},Dj.ease=function(a){var b=this.id;return arguments.length<1?this.node().__transition__[b].ease:("function"!=typeof a&&(a=Wg.ease.apply(Wg,arguments)),D(this,function(c){c.__transition__[b].ease=a}))},Dj.delay=function(a){var b=this.id;return D(this,"function"==typeof a?function(c,d,e){c.__transition__[b].delay=+a.call(c,c.__data__,d,e)}:(a=+a,function(c){c.__transition__[b].delay=a}))},Dj.duration=function(a){var b=this.id;return D(this,"function"==typeof a?function(c,d,e){c.__transition__[b].duration=Math.max(1,a.call(c,c.__data__,d,e))}:(a=Math.max(1,a),function(c){c.__transition__[b].duration=a}))},Dj.each=function(a,b){var c=this.id;if(arguments.length<2){var d=Aj,e=zj;zj=c,D(this,function(b,d,e){Aj=b.__transition__[c],a.call(b,b.__data__,d,e)}),Aj=d,zj=e}else D(this,function(d){var e=d.__transition__[c];(e.event||(e.event=Wg.dispatch("start","end"))).on(a,b)});return this},Dj.transition=function(){for(var a,b,c,d,e=this.id,f=++Ej,g=[],h=0,i=this.length;i>h;h++){g.push(a=[]);for(var b=this[h],j=0,k=b.length;k>j;j++)(c=b[j])&&(d=Object.create(c.__transition__[e]),d.delay+=d.duration,gg(c,j,f,d)),a.push(c)}return dg(g,f)},Wg.svg.axis=function(){function a(a){a.each(function(){var a,j=Wg.select(this),k=this.__chart__||c,l=this.__chart__=c.copy(),m=null==i?l.ticks?l.ticks.apply(l,h):l.domain():i,n=null==b?l.tickFormat?l.tickFormat.apply(l,h):qb:b,o=j.selectAll(".tick").data(m,l),p=o.enter().insert("g",".domain").attr("class","tick").style("opacity",Dh),q=Wg.transition(o.exit()).style("opacity",Dh).remove(),r=Wg.transition(o).style("opacity",1),s=cf(l),t=j.selectAll(".domain").data([0]),u=(t.enter().append("path").attr("class","domain"),Wg.transition(t));p.append("line"),p.append("text");var v=p.select("line"),w=r.select("line"),x=o.select("text").text(n),y=p.select("text"),z=r.select("text");switch(d){case"bottom":a=hg,v.attr("y2",e),y.attr("y",Math.max(e,0)+g),w.attr("x2",0).attr("y2",e),z.attr("x",0).attr("y",Math.max(e,0)+g),x.attr("dy",".71em").style("text-anchor","middle"),u.attr("d","M"+s[0]+","+f+"V0H"+s[1]+"V"+f);break;case"top":a=hg,v.attr("y2",-e),y.attr("y",-(Math.max(e,0)+g)),w.attr("x2",0).attr("y2",-e),z.attr("x",0).attr("y",-(Math.max(e,0)+g)),x.attr("dy","0em").style("text-anchor","middle"),u.attr("d","M"+s[0]+","+-f+"V0H"+s[1]+"V"+-f);break;case"left":a=ig,v.attr("x2",-e),y.attr("x",-(Math.max(e,0)+g)),w.attr("x2",-e).attr("y2",0),z.attr("x",-(Math.max(e,0)+g)).attr("y",0),x.attr("dy",".32em").style("text-anchor","end"),u.attr("d","M"+-f+","+s[0]+"H0V"+s[1]+"H"+-f);break;case"right":a=ig,v.attr("x2",e),y.attr("x",Math.max(e,0)+g),w.attr("x2",e).attr("y2",0),z.attr("x",Math.max(e,0)+g).attr("y",0),x.attr("dy",".32em").style("text-anchor","start"),u.attr("d","M"+f+","+s[0]+"H0V"+s[1]+"H"+f)}if(l.rangeBand){var A=l,B=A.rangeBand()/2;k=l=function(a){return A(a)+B}}else k.rangeBand?k=l:q.call(a,l);p.call(a,k),r.call(a,l)})}var b,c=Wg.scale.linear(),d=Fj,e=6,f=6,g=3,h=[10],i=null;return a.scale=function(b){return arguments.length?(c=b,a):c},a.orient=function(b){return arguments.length?(d=b in Gj?b+"":Fj,a):d},a.ticks=function(){return arguments.length?(h=arguments,a):h},a.tickValues=function(b){return arguments.length?(i=b,a):i},a.tickFormat=function(c){return arguments.length?(b=c,a):b},a.tickSize=function(b){var c=arguments.length;return c?(e=+b,f=+arguments[c-1],a):e},a.innerTickSize=function(b){return arguments.length?(e=+b,a):e},a.outerTickSize=function(b){return arguments.length?(f=+b,a):f},a.tickPadding=function(b){return arguments.length?(g=+b,a):g},a.tickSubdivide=function(){return arguments.length&&a},a};var Fj="bottom",Gj={top:1,right:1,bottom:1,left:1};Wg.svg.brush=function(){function a(f){f.each(function(){var f=Wg.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",e).on("touchstart.brush",e),g=f.selectAll(".background").data([0]);g.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),f.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var h=f.selectAll(".resize").data(q,qb);h.exit().remove(),h.enter().append("g").attr("class",function(a){return"resize "+a}).style("cursor",function(a){return Hj[a]}).append("rect").attr("x",function(a){return/[ew]$/.test(a)?-3:null}).attr("y",function(a){return/^[ns]/.test(a)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),h.style("display",a.empty()?"none":null);var k,l=Wg.transition(f),m=Wg.transition(g);i&&(k=cf(i),m.attr("x",k[0]).attr("width",k[1]-k[0]),c(l)),j&&(k=cf(j),m.attr("y",k[0]).attr("height",k[1]-k[0]),d(l)),b(l)})}function b(a){a.selectAll(".resize").attr("transform",function(a){return"translate("+k[+/e$/.test(a)]+","+m[+/^s/.test(a)]+")"})}function c(a){a.select(".extent").attr("x",k[0]),a.selectAll(".extent,.n>rect,.s>rect").attr("width",k[1]-k[0])}function d(a){a.select(".extent").attr("y",m[0]),a.selectAll(".extent,.e>rect,.w>rect").attr("height",m[1]-m[0])}function e(){function e(){32==Wg.event.keyCode&&(C||(t=null,E[0]-=k[1],E[1]-=m[1],C=2),l())}function n(){32==Wg.event.keyCode&&2==C&&(E[0]+=k[1],E[1]+=m[1],C=0,l())}function q(){var a=Wg.mouse(v),e=!1;u&&(a[0]+=u[0],a[1]+=u[1]),C||(Wg.event.altKey?(t||(t=[(k[0]+k[1])/2,(m[0]+m[1])/2]),E[0]=k[+(a[0]<t[0])],E[1]=m[+(a[1]<t[1])]):t=null),A&&r(a,i,0)&&(c(y),e=!0),B&&r(a,j,1)&&(d(y),e=!0),e&&(b(y),x({type:"brush",mode:C?"move":"resize"}))}function r(a,b,c){var d,e,h=cf(b),i=h[0],j=h[1],l=E[c],n=c?m:k,q=n[1]-n[0];return C&&(i-=l,j-=q+l),d=(c?p:o)?Math.max(i,Math.min(j,a[c])):a[c],C?e=(d+=l)+q:(t&&(l=Math.max(i,Math.min(j,2*t[c]-d))),d>l?(e=d,d=l):e=l),n[0]!=d||n[1]!=e?(c?g=null:f=null,n[0]=d,n[1]=e,!0):void 0}function s(){q(),y.style("pointer-events","all").selectAll(".resize").style("display",a.empty()?"none":null),Wg.select("body").style("cursor",null),F.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),D(),x({type:"brushend"})}var t,u,v=this,w=Wg.select(Wg.event.target),x=h.of(v,arguments),y=Wg.select(v),z=w.datum(),A=!/^(n|s)$/.test(z)&&i,B=!/^(e|w)$/.test(z)&&j,C=w.classed("extent"),D=K(),E=Wg.mouse(v),F=Wg.select(_g).on("keydown.brush",e).on("keyup.brush",n);if(Wg.event.changedTouches?F.on("touchmove.brush",q).on("touchend.brush",s):F.on("mousemove.brush",q).on("mouseup.brush",s),y.interrupt().selectAll("*").interrupt(),C)E[0]=k[0]-E[0],E[1]=m[0]-E[1];else if(z){var G=+/w$/.test(z),H=+/^n/.test(z);u=[k[1-G]-E[0],m[1-H]-E[1]],E[0]=k[G],E[1]=m[H]}else Wg.event.altKey&&(t=E.slice());y.style("pointer-events","none").selectAll(".resize").style("display",null),Wg.select("body").style("cursor",w.style("cursor")),x({type:"brushstart"}),q()}var f,g,h=n(a,"brushstart","brush","brushend"),i=null,j=null,k=[0,0],m=[0,0],o=!0,p=!0,q=Ij[0];return a.event=function(a){a.each(function(){var a=h.of(this,arguments),b={x:k,y:m,i:f,j:g},c=this.__chart__||b;this.__chart__=b,zj?Wg.select(this).transition().each("start.brush",function(){f=c.i,g=c.j,k=c.x,m=c.y,a({type:"brushstart"})}).tween("brush:brush",function(){var c=Id(k,b.x),d=Id(m,b.y);return f=g=null,function(e){k=b.x=c(e),m=b.y=d(e),a({type:"brush",mode:"resize"})}}).each("end.brush",function(){f=b.i,g=b.j,a({type:"brush",mode:"resize"}),a({type:"brushend"})}):(a({type:"brushstart"}),a({type:"brush",mode:"resize"}),a({type:"brushend"}))})},a.x=function(b){return arguments.length?(i=b,q=Ij[!i<<1|!j],a):i},a.y=function(b){return arguments.length?(j=b,q=Ij[!i<<1|!j],a):j},a.clamp=function(b){return arguments.length?(i&&j?(o=!!b[0],p=!!b[1]):i?o=!!b:j&&(p=!!b),a):i&&j?[o,p]:i?o:j?p:null},a.extent=function(b){var c,d,e,h,l;return arguments.length?(i&&(c=b[0],d=b[1],j&&(c=c[0],d=d[0]),f=[c,d],i.invert&&(c=i(c),d=i(d)),c>d&&(l=c,c=d,d=l),(c!=k[0]||d!=k[1])&&(k=[c,d])),j&&(e=b[0],h=b[1],i&&(e=e[1],h=h[1]),g=[e,h],j.invert&&(e=j(e),h=j(h)),e>h&&(l=e,e=h,h=l),(e!=m[0]||h!=m[1])&&(m=[e,h])),a):(i&&(f?(c=f[0],d=f[1]):(c=k[0],d=k[1],i.invert&&(c=i.invert(c),d=i.invert(d)),c>d&&(l=c,c=d,d=l))),j&&(g?(e=g[0],h=g[1]):(e=m[0],h=m[1],j.invert&&(e=j.invert(e),h=j.invert(h)),e>h&&(l=e,e=h,h=l))),i&&j?[[c,e],[d,h]]:i?[c,d]:j&&[e,h])},a.clear=function(){return a.empty()||(k=[0,0],m=[0,0],f=g=null),a},a.empty=function(){return!!i&&k[0]==k[1]||!!j&&m[0]==m[1]},Wg.rebind(a,h,"on")};var Hj={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Ij=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Jj=Wg.time={},Kj=Date,Lj=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];jg.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){Mj.setUTCDate.apply(this._,arguments)},setDay:function(){Mj.setUTCDay.apply(this._,arguments)},setFullYear:function(){Mj.setUTCFullYear.apply(this._,arguments)},setHours:function(){Mj.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){Mj.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){Mj.setUTCMinutes.apply(this._,arguments)},setMonth:function(){Mj.setUTCMonth.apply(this._,arguments)},setSeconds:function(){Mj.setUTCSeconds.apply(this._,arguments)
-},setTime:function(){Mj.setTime.apply(this._,arguments)}};var Mj=Date.prototype,Nj="%a %b %e %X %Y",Oj="%m/%d/%Y",Pj="%H:%M:%S",Qj=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Rj=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],Sj=["January","February","March","April","May","June","July","August","September","October","November","December"],Tj=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];Jj.year=kg(function(a){return a=Jj.day(a),a.setMonth(0,1),a},function(a,b){a.setFullYear(a.getFullYear()+b)},function(a){return a.getFullYear()}),Jj.years=Jj.year.range,Jj.years.utc=Jj.year.utc.range,Jj.day=kg(function(a){var b=new Kj(2e3,0);return b.setFullYear(a.getFullYear(),a.getMonth(),a.getDate()),b},function(a,b){a.setDate(a.getDate()+b)},function(a){return a.getDate()-1}),Jj.days=Jj.day.range,Jj.days.utc=Jj.day.utc.range,Jj.dayOfYear=function(a){var b=Jj.year(a);return Math.floor((a-b-6e4*(a.getTimezoneOffset()-b.getTimezoneOffset()))/864e5)},Lj.forEach(function(a,b){a=a.toLowerCase(),b=7-b;var c=Jj[a]=kg(function(a){return(a=Jj.day(a)).setDate(a.getDate()-(a.getDay()+b)%7),a},function(a,b){a.setDate(a.getDate()+7*Math.floor(b))},function(a){var c=Jj.year(a).getDay();return Math.floor((Jj.dayOfYear(a)+(c+b)%7)/7)-(c!==b)});Jj[a+"s"]=c.range,Jj[a+"s"].utc=c.utc.range,Jj[a+"OfYear"]=function(a){var c=Jj.year(a).getDay();return Math.floor((Jj.dayOfYear(a)+(c+b)%7)/7)}}),Jj.week=Jj.sunday,Jj.weeks=Jj.sunday.range,Jj.weeks.utc=Jj.sunday.utc.range,Jj.weekOfYear=Jj.sundayOfYear,Jj.format=mg;var Uj=og(Qj),Vj=pg(Qj),Wj=og(Rj),Xj=pg(Rj),Yj=og(Sj),Zj=pg(Sj),$j=og(Tj),_j=pg(Tj),ak=/^%/,bk={"-":"",_:" ",0:"0"},ck={a:function(a){return Rj[a.getDay()]},A:function(a){return Qj[a.getDay()]},b:function(a){return Tj[a.getMonth()]},B:function(a){return Sj[a.getMonth()]},c:mg(Nj),d:function(a,b){return qg(a.getDate(),b,2)},e:function(a,b){return qg(a.getDate(),b,2)},H:function(a,b){return qg(a.getHours(),b,2)},I:function(a,b){return qg(a.getHours()%12||12,b,2)},j:function(a,b){return qg(1+Jj.dayOfYear(a),b,3)},L:function(a,b){return qg(a.getMilliseconds(),b,3)},m:function(a,b){return qg(a.getMonth()+1,b,2)},M:function(a,b){return qg(a.getMinutes(),b,2)},p:function(a){return a.getHours()>=12?"PM":"AM"},S:function(a,b){return qg(a.getSeconds(),b,2)},U:function(a,b){return qg(Jj.sundayOfYear(a),b,2)},w:function(a){return a.getDay()},W:function(a,b){return qg(Jj.mondayOfYear(a),b,2)},x:mg(Oj),X:mg(Pj),y:function(a,b){return qg(a.getFullYear()%100,b,2)},Y:function(a,b){return qg(a.getFullYear()%1e4,b,4)},Z:Ng,"%":function(){return"%"}},dk={a:rg,A:sg,b:wg,B:xg,c:yg,d:Gg,e:Gg,H:Ig,I:Ig,j:Hg,L:Lg,m:Fg,M:Jg,p:Mg,S:Kg,U:ug,w:tg,W:vg,x:zg,X:Ag,y:Cg,Y:Bg,Z:Dg,"%":Og},ek=/^\s*\d+/,fk=Wg.map({am:0,pm:1});mg.utc=Pg;var gk=Pg("%Y-%m-%dT%H:%M:%S.%LZ");mg.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?Qg:gk,Qg.parse=function(a){var b=new Date(a);return isNaN(b)?null:b},Qg.toString=gk.toString,Jj.second=kg(function(a){return new Kj(1e3*Math.floor(a/1e3))},function(a,b){a.setTime(a.getTime()+1e3*Math.floor(b))},function(a){return a.getSeconds()}),Jj.seconds=Jj.second.range,Jj.seconds.utc=Jj.second.utc.range,Jj.minute=kg(function(a){return new Kj(6e4*Math.floor(a/6e4))},function(a,b){a.setTime(a.getTime()+6e4*Math.floor(b))},function(a){return a.getMinutes()}),Jj.minutes=Jj.minute.range,Jj.minutes.utc=Jj.minute.utc.range,Jj.hour=kg(function(a){var b=a.getTimezoneOffset()/60;return new Kj(36e5*(Math.floor(a/36e5-b)+b))},function(a,b){a.setTime(a.getTime()+36e5*Math.floor(b))},function(a){return a.getHours()}),Jj.hours=Jj.hour.range,Jj.hours.utc=Jj.hour.utc.range,Jj.month=kg(function(a){return a=Jj.day(a),a.setDate(1),a},function(a,b){a.setMonth(a.getMonth()+b)},function(a){return a.getMonth()}),Jj.months=Jj.month.range,Jj.months.utc=Jj.month.utc.range;var hk=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],ik=[[Jj.second,1],[Jj.second,5],[Jj.second,15],[Jj.second,30],[Jj.minute,1],[Jj.minute,5],[Jj.minute,15],[Jj.minute,30],[Jj.hour,1],[Jj.hour,3],[Jj.hour,6],[Jj.hour,12],[Jj.day,1],[Jj.day,2],[Jj.week,1],[Jj.month,1],[Jj.month,3],[Jj.year,1]],jk=[[mg("%Y"),Tb],[mg("%B"),function(a){return a.getMonth()}],[mg("%b %d"),function(a){return 1!=a.getDate()}],[mg("%a %d"),function(a){return a.getDay()&&1!=a.getDate()}],[mg("%I %p"),function(a){return a.getHours()}],[mg("%I:%M"),function(a){return a.getMinutes()}],[mg(":%S"),function(a){return a.getSeconds()}],[mg(".%L"),function(a){return a.getMilliseconds()}]],kk=Tg(jk);ik.year=Jj.year,Jj.scale=function(){return Rg(Wg.scale.linear(),ik,kk)};var lk={range:function(a,b,c){return Wg.range(+a,+b,c).map(Sg)},floor:qb,ceil:qb},mk=ik.map(function(a){return[a[0].utc,a[1]]}),nk=[[Pg("%Y"),Tb],[Pg("%B"),function(a){return a.getUTCMonth()}],[Pg("%b %d"),function(a){return 1!=a.getUTCDate()}],[Pg("%a %d"),function(a){return a.getUTCDay()&&1!=a.getUTCDate()}],[Pg("%I %p"),function(a){return a.getUTCHours()}],[Pg("%I:%M"),function(a){return a.getUTCMinutes()}],[Pg(":%S"),function(a){return a.getUTCSeconds()}],[Pg(".%L"),function(a){return a.getUTCMilliseconds()}]],ok=Tg(nk);return mk.year=Jj.year.utc,Jj.scale.utc=function(){return Rg(Wg.scale.linear(),mk,ok)},Wg.text=rb(function(a){return a.responseText}),Wg.json=function(a,b){return sb(a,"application/json",Ug,b)},Wg.html=function(a,b){return sb(a,"text/html",Vg,b)},Wg.xml=rb(function(a){return a.responseXML}),Wg}(),function(a,b){"object"==typeof exports?module.exports=b(require("./punycode"),require("./IPv6"),require("./SecondLevelDomains")):"function"==typeof define&&define.amd?define(["./punycode","./IPv6","./SecondLevelDomains"],b):a.URI=b(a.punycode,a.IPv6,a.SecondLevelDomains,a)}(this,function(a,b,c,d){"use strict";function e(a,b){return this instanceof e?(void 0===a&&(a="undefined"!=typeof location?location.href+"":""),this.href(a),void 0!==b?this.absoluteTo(b):this):new e(a,b)}function f(a){return a.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function g(a){return void 0===a?"Undefined":String(Object.prototype.toString.call(a)).slice(8,-1)}function h(a){return"Array"===g(a)}function i(a,b){var c,d,e={};if(h(b))for(c=0,d=b.length;d>c;c++)e[b[c]]=!0;else e[b]=!0;for(c=0,d=a.length;d>c;c++)void 0!==e[a[c]]&&(a.splice(c,1),d--,c--);return a}function j(a,b){var c,d;if(h(b)){for(c=0,d=b.length;d>c;c++)if(!j(a,b[c]))return!1;return!0}var e=g(b);for(c=0,d=a.length;d>c;c++)if("RegExp"===e){if("string"==typeof a[c]&&a[c].match(b))return!0}else if(a[c]===b)return!0;return!1}function k(a,b){if(!h(a)||!h(b))return!1;if(a.length!==b.length)return!1;a.sort(),b.sort();for(var c=0,d=a.length;d>c;c++)if(a[c]!==b[c])return!1;return!0}function l(a){return escape(a)}function m(a){return encodeURIComponent(a).replace(/[!'()*]/g,l).replace(/\*/g,"%2A")}var n=d&&d.URI,o=e.prototype,p=Object.prototype.hasOwnProperty;e._parts=function(){return{protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null,query:null,fragment:null,duplicateQueryParameters:e.duplicateQueryParameters,escapeQuerySpace:e.escapeQuerySpace}},e.duplicateQueryParameters=!1,e.escapeQuerySpace=!0,e.protocol_expression=/^[a-z][a-z0-9-+-]*$/i,e.idn_expression=/[^a-z0-9\.-]/i,e.punycode_expression=/(xn--)/i,e.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,e.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,e.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi,e.defaultPorts={http:"80",https:"443",ftp:"21",gopher:"70",ws:"80",wss:"443"},e.invalid_hostname_characters=/[^a-zA-Z0-9\.-]/,e.domAttributes={a:"href",blockquote:"cite",link:"href",base:"href",script:"src",form:"action",img:"src",area:"href",iframe:"src",embed:"src",source:"src",track:"src",input:"src"},e.getDomAttribute=function(a){if(!a||!a.nodeName)return void 0;var b=a.nodeName.toLowerCase();return"input"===b&&"image"!==a.type?void 0:e.domAttributes[b]},e.encode=m,e.decode=decodeURIComponent,e.iso8859=function(){e.encode=escape,e.decode=unescape},e.unicode=function(){e.encode=m,e.decode=decodeURIComponent},e.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/gi,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/gi,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}}},e.encodeQuery=function(a,b){var c=e.encode(a+"");return b?c.replace(/%20/g,"+"):c},e.decodeQuery=function(a,b){a+="";try{return e.decode(b?a.replace(/\+/g,"%20"):a)}catch(c){return a}},e.recodePath=function(a){for(var b=(a+"").split("/"),c=0,d=b.length;d>c;c++)b[c]=e.encodePathSegment(e.decode(b[c]));return b.join("/")},e.decodePath=function(a){for(var b=(a+"").split("/"),c=0,d=b.length;d>c;c++)b[c]=e.decodePathSegment(b[c]);return b.join("/")};var q,r={encode:"encode",decode:"decode"},s=function(a,b){return function(c){return e[b](c+"").replace(e.characters[a][b].expression,function(c){return e.characters[a][b].map[c]})}};for(q in r)e[q+"PathSegment"]=s("pathname",r[q]);e.encodeReserved=s("reserved","encode"),e.parse=function(a,b){var c;return b||(b={}),c=a.indexOf("#"),c>-1&&(b.fragment=a.substring(c+1)||null,a=a.substring(0,c)),c=a.indexOf("?"),c>-1&&(b.query=a.substring(c+1)||null,a=a.substring(0,c)),"//"===a.substring(0,2)?(b.protocol=null,a=a.substring(2),a=e.parseAuthority(a,b)):(c=a.indexOf(":"),c>-1&&(b.protocol=a.substring(0,c)||null,b.protocol&&!b.protocol.match(e.protocol_expression)?b.protocol=void 0:"file"===b.protocol?a=a.substring(c+3):"//"===a.substring(c+1,c+3)?(a=a.substring(c+3),a=e.parseAuthority(a,b)):(a=a.substring(c+1),b.urn=!0))),b.path=a,b},e.parseHost=function(a,b){var c,d,e=a.indexOf("/");return-1===e&&(e=a.length),"["===a.charAt(0)?(c=a.indexOf("]"),b.hostname=a.substring(1,c)||null,b.port=a.substring(c+2,e)||null):a.indexOf(":")!==a.lastIndexOf(":")?(b.hostname=a.substring(0,e)||null,b.port=null):(d=a.substring(0,e).split(":"),b.hostname=d[0]||null,b.port=d[1]||null),b.hostname&&"/"!==a.substring(e).charAt(0)&&(e++,a="/"+a),a.substring(e)||"/"},e.parseAuthority=function(a,b){return a=e.parseUserinfo(a,b),e.parseHost(a,b)},e.parseUserinfo=function(a,b){var c,d=a.indexOf("/"),f=d>-1?a.lastIndexOf("@",d):a.indexOf("@");return f>-1&&(-1===d||d>f)?(c=a.substring(0,f).split(":"),b.username=c[0]?e.decode(c[0]):null,c.shift(),b.password=c[0]?e.decode(c.join(":")):null,a=a.substring(f+1)):(b.username=null,b.password=null),a},e.parseQuery=function(a,b){if(!a)return{};if(a=a.replace(/&+/g,"&").replace(/^\?*&*|&+$/g,""),!a)return{};for(var c,d,f,g={},h=a.split("&"),i=h.length,j=0;i>j;j++)c=h[j].split("="),d=e.decodeQuery(c.shift(),b),f=c.length?e.decodeQuery(c.join("="),b):null,g[d]?("string"==typeof g[d]&&(g[d]=[g[d]]),g[d].push(f)):g[d]=f;return g},e.build=function(a){var b="";return a.protocol&&(b+=a.protocol+":"),a.urn||!b&&!a.hostname||(b+="//"),b+=e.buildAuthority(a)||"","string"==typeof a.path&&("/"!==a.path.charAt(0)&&"string"==typeof a.hostname&&(b+="/"),b+=a.path),"string"==typeof a.query&&a.query&&(b+="?"+a.query),"string"==typeof a.fragment&&a.fragment&&(b+="#"+a.fragment),b},e.buildHost=function(a){var b="";return a.hostname?(e.ip6_expression.test(a.hostname)?b+=a.port?"["+a.hostname+"]:"+a.port:a.hostname:(b+=a.hostname,a.port&&(b+=":"+a.port)),b):""},e.buildAuthority=function(a){return e.buildUserinfo(a)+e.buildHost(a)},e.buildUserinfo=function(a){var b="";return a.username&&(b+=e.encode(a.username),a.password&&(b+=":"+e.encode(a.password)),b+="@"),b},e.buildQuery=function(a,b,c){var d,f,g,i,j="";for(f in a)if(p.call(a,f)&&f)if(h(a[f]))for(d={},g=0,i=a[f].length;i>g;g++)void 0!==a[f][g]&&void 0===d[a[f][g]+""]&&(j+="&"+e.buildQueryParameter(f,a[f][g],c),b!==!0&&(d[a[f][g]+""]=!0));else void 0!==a[f]&&(j+="&"+e.buildQueryParameter(f,a[f],c));return j.substring(1)},e.buildQueryParameter=function(a,b,c){return e.encodeQuery(a,c)+(null!==b?"="+e.encodeQuery(b,c):"")},e.addQuery=function(a,b,c){if("object"==typeof b)for(var d in b)p.call(b,d)&&e.addQuery(a,d,b[d]);else{if("string"!=typeof b)throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");if(void 0===a[b])return void(a[b]=c);"string"==typeof a[b]&&(a[b]=[a[b]]),h(c)||(c=[c]),a[b]=a[b].concat(c)}},e.removeQuery=function(a,b,c){var d,f,g;if(h(b))for(d=0,f=b.length;f>d;d++)a[b[d]]=void 0;else if("object"==typeof b)for(g in b)p.call(b,g)&&e.removeQuery(a,g,b[g]);else{if("string"!=typeof b)throw new TypeError("URI.addQuery() accepts an object, string as the first parameter");void 0!==c?a[b]===c?a[b]=void 0:h(a[b])&&(a[b]=i(a[b],c)):a[b]=void 0}},e.hasQuery=function(a,b,c,d){if("object"==typeof b){for(var f in b)if(p.call(b,f)&&!e.hasQuery(a,f,b[f]))return!1;return!0}if("string"!=typeof b)throw new TypeError("URI.hasQuery() accepts an object, string as the name parameter");switch(g(c)){case"Undefined":return b in a;case"Boolean":var i=Boolean(h(a[b])?a[b].length:a[b]);return c===i;case"Function":return!!c(a[b],b,a);case"Array":if(!h(a[b]))return!1;var l=d?j:k;return l(a[b],c);case"RegExp":return h(a[b])?d?j(a[b],c):!1:Boolean(a[b]&&a[b].match(c));case"Number":c=String(c);case"String":return h(a[b])?d?j(a[b],c):!1:a[b]===c;default:throw new TypeError("URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter")}},e.commonPath=function(a,b){var c,d=Math.min(a.length,b.length);for(c=0;d>c;c++)if(a.charAt(c)!==b.charAt(c)){c--;break}return 1>c?a.charAt(0)===b.charAt(0)&&"/"===a.charAt(0)?"/":"":(("/"!==a.charAt(c)||"/"!==b.charAt(c))&&(c=a.substring(0,c).lastIndexOf("/")),a.substring(0,c+1))},e.withinString=function(a,b){return a.replace(e.find_uri_expression,b)},e.ensureValidHostname=function(b){if(b.match(e.invalid_hostname_characters)){if(!a)throw new TypeError("Hostname '"+b+"' contains characters other than [A-Z0-9.-] and Punycode.js is not available");if(a.toASCII(b).match(e.invalid_hostname_characters))throw new TypeError("Hostname '"+b+"' contains characters other than [A-Z0-9.-]")}},e.noConflict=function(a){if(a){var c={URI:this.noConflict()};return URITemplate&&"function"==typeof URITemplate.noConflict&&(c.URITemplate=URITemplate.noConflict()),b&&"function"==typeof b.noConflict&&(c.IPv6=b.noConflict()),SecondLevelDomains&&"function"==typeof SecondLevelDomains.noConflict&&(c.SecondLevelDomains=SecondLevelDomains.noConflict()),c}return d.URI===this&&(d.URI=n),this},o.build=function(a){return a===!0?this._deferred_build=!0:(void 0===a||this._deferred_build)&&(this._string=e.build(this._parts),this._deferred_build=!1),this},o.clone=function(){return new e(this)},o.valueOf=o.toString=function(){return this.build(!1)._string},r={protocol:"protocol",username:"username",password:"password",hostname:"hostname",port:"port"},s=function(a){return function(b,c){return void 0===b?this._parts[a]||"":(this._parts[a]=b||null,this.build(!c),this)}};for(q in r)o[q]=s(r[q]);r={query:"?",fragment:"#"},s=function(a,b){return function(c,d){return void 0===c?this._parts[a]||"":(null!==c&&(c+="",c.charAt(0)===b&&(c=c.substring(1))),this._parts[a]=c,this.build(!d),this)}};for(q in r)o[q]=s(q,r[q]);r={search:["?","query"],hash:["#","fragment"]},s=function(a,b){return function(c,d){var e=this[a](c,d);return"string"==typeof e&&e.length?b+e:e}};for(q in r)o[q]=s(r[q][1],r[q][0]);o.pathname=function(a,b){if(void 0===a||a===!0){var c=this._parts.path||(this._parts.hostname?"/":"");return a?e.decodePath(c):c}return this._parts.path=a?e.recodePath(a):"/",this.build(!b),this},o.path=o.pathname,o.href=function(a,b){var c;if(void 0===a)return this.toString();this._string="",this._parts=e._parts();var d=a instanceof e,f="object"==typeof a&&(a.hostname||a.path||a.pathname);if(a.nodeName){var g=e.getDomAttribute(a);a=a[g]||"",f=!1}if(!d&&f&&void 0!==a.pathname&&(a=a.toString()),"string"==typeof a)this._parts=e.parse(a,this._parts);else{if(!d&&!f)throw new TypeError("invalid input");var h=d?a._parts:a;for(c in h)p.call(this._parts,c)&&(this._parts[c]=h[c])}return this.build(!b),this},o.is=function(a){var b=!1,d=!1,f=!1,g=!1,h=!1,i=!1,j=!1,k=!this._parts.urn;switch(this._parts.hostname&&(k=!1,d=e.ip4_expression.test(this._parts.hostname),f=e.ip6_expression.test(this._parts.hostname),b=d||f,g=!b,h=g&&c&&c.has(this._parts.hostname),i=g&&e.idn_expression.test(this._parts.hostname),j=g&&e.punycode_expression.test(this._parts.hostname)),a.toLowerCase()){case"relative":return k;case"absolute":return!k;case"domain":case"name":return g;case"sld":return h;case"ip":return b;case"ip4":case"ipv4":case"inet4":return d;case"ip6":case"ipv6":case"inet6":return f;case"idn":return i;case"url":return!this._parts.urn;case"urn":return!!this._parts.urn;case"punycode":return j}return null};var t=o.protocol,u=o.port,v=o.hostname;o.protocol=function(a,b){if(void 0!==a&&a&&(a=a.replace(/:(\/\/)?$/,""),a.match(/[^a-zA-z0-9\.+-]/)))throw new TypeError("Protocol '"+a+"' contains characters other than [A-Z0-9.+-]");return t.call(this,a,b)},o.scheme=o.protocol,o.port=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0!==a&&(0===a&&(a=null),a&&(a+="",":"===a.charAt(0)&&(a=a.substring(1)),a.match(/[^0-9]/))))throw new TypeError("Port '"+a+"' contains characters other than [0-9]");return u.call(this,a,b)},o.hostname=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0!==a){var c={};e.parseHost(a,c),a=c.hostname}return v.call(this,a,b)},o.host=function(a,b){return this._parts.urn?void 0===a?"":this:void 0===a?this._parts.hostname?e.buildHost(this._parts):"":(e.parseHost(a,this._parts),this.build(!b),this)},o.authority=function(a,b){return this._parts.urn?void 0===a?"":this:void 0===a?this._parts.hostname?e.buildAuthority(this._parts):"":(e.parseAuthority(a,this._parts),this.build(!b),this)},o.userinfo=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0===a){if(!this._parts.username)return"";var c=e.buildUserinfo(this._parts);return c.substring(0,c.length-1)}return"@"!==a[a.length-1]&&(a+="@"),e.parseUserinfo(a,this._parts),this.build(!b),this},o.resource=function(a,b){var c;return void 0===a?this.path()+this.search()+this.hash():(c=e.parse(a),this._parts.path=c.path,this._parts.query=c.query,this._parts.fragment=c.fragment,this.build(!b),this)},o.subdomain=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0===a){if(!this._parts.hostname||this.is("IP"))return"";var c=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,c)||""}var d=this._parts.hostname.length-this.domain().length,g=this._parts.hostname.substring(0,d),h=new RegExp("^"+f(g));return a&&"."!==a.charAt(a.length-1)&&(a+="."),a&&e.ensureValidHostname(a),this._parts.hostname=this._parts.hostname.replace(h,a),this.build(!b),this},o.domain=function(a,b){if(this._parts.urn)return void 0===a?"":this;if("boolean"==typeof a&&(b=a,a=void 0),void 0===a){if(!this._parts.hostname||this.is("IP"))return"";var c=this._parts.hostname.match(/\./g);if(c&&c.length<2)return this._parts.hostname;var d=this._parts.hostname.length-this.tld(b).length-1;return d=this._parts.hostname.lastIndexOf(".",d-1)+1,this._parts.hostname.substring(d)||""}if(!a)throw new TypeError("cannot set domain empty");if(e.ensureValidHostname(a),!this._parts.hostname||this.is("IP"))this._parts.hostname=a;else{var g=new RegExp(f(this.domain())+"$");this._parts.hostname=this._parts.hostname.replace(g,a)}return this.build(!b),this},o.tld=function(a,b){if(this._parts.urn)return void 0===a?"":this;if("boolean"==typeof a&&(b=a,a=void 0),void 0===a){if(!this._parts.hostname||this.is("IP"))return"";var d=this._parts.hostname.lastIndexOf("."),e=this._parts.hostname.substring(d+1);return b!==!0&&c&&c.list[e.toLowerCase()]?c.get(this._parts.hostname)||e:e}var g;if(!a)throw new TypeError("cannot set TLD empty");if(a.match(/[^a-zA-Z0-9-]/)){if(!c||!c.is(a))throw new TypeError("TLD '"+a+"' contains characters other than [A-Z0-9]");g=new RegExp(f(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(g,a)}else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");g=new RegExp(f(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(g,a)}return this.build(!b),this},o.directory=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0===a||a===!0){if(!this._parts.path&&!this._parts.hostname)return"";if("/"===this._parts.path)return"/";var c=this._parts.path.length-this.filename().length-1,d=this._parts.path.substring(0,c)||(this._parts.hostname?"/":"");return a?e.decodePath(d):d}var g=this._parts.path.length-this.filename().length,h=this._parts.path.substring(0,g),i=new RegExp("^"+f(h));return this.is("relative")||(a||(a="/"),"/"!==a.charAt(0)&&(a="/"+a)),a&&"/"!==a.charAt(a.length-1)&&(a+="/"),a=e.recodePath(a),this._parts.path=this._parts.path.replace(i,a),this.build(!b),this},o.filename=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0===a||a===!0){if(!this._parts.path||"/"===this._parts.path)return"";var c=this._parts.path.lastIndexOf("/"),d=this._parts.path.substring(c+1);return a?e.decodePathSegment(d):d}var g=!1;"/"===a.charAt(0)&&(a=a.substring(1)),a.match(/\.?\//)&&(g=!0);var h=new RegExp(f(this.filename())+"$");return a=e.recodePath(a),this._parts.path=this._parts.path.replace(h,a),g?this.normalizePath(b):this.build(!b),this},o.suffix=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0===a||a===!0){if(!this._parts.path||"/"===this._parts.path)return"";var c,d,g=this.filename(),h=g.lastIndexOf(".");return-1===h?"":(c=g.substring(h+1),d=/^[a-z0-9%]+$/i.test(c)?c:"",a?e.decodePathSegment(d):d)}"."===a.charAt(0)&&(a=a.substring(1));var i,j=this.suffix();if(j)i=new RegExp(a?f(j)+"$":f("."+j)+"$");else{if(!a)return this;this._parts.path+="."+e.recodePath(a)}return i&&(a=e.recodePath(a),this._parts.path=this._parts.path.replace(i,a)),this.build(!b),this},o.segment=function(a,b,c){var d=this._parts.urn?":":"/",e=this.path(),f="/"===e.substring(0,1),g=e.split(d);if(void 0!==a&&"number"!=typeof a&&(c=b,b=a,a=void 0),void 0!==a&&"number"!=typeof a)throw new Error("Bad segment '"+a+"', must be 0-based integer");if(f&&g.shift(),0>a&&(a=Math.max(g.length+a,0)),void 0===b)return void 0===a?g:g[a];if(null===a||void 0===g[a])if(h(b)){g=[];for(var i=0,j=b.length;j>i;i++)(b[i].length||g.length&&g[g.length-1].length)&&(g.length&&!g[g.length-1].length&&g.pop(),g.push(b[i]))}else(b||"string"==typeof b)&&(""===g[g.length-1]?g[g.length-1]=b:g.push(b));else b||"string"==typeof b&&b.length?g[a]=b:g.splice(a,1);return f&&g.unshift(""),this.path(g.join(d),c)},o.segmentCoded=function(a,b,c){var d,f,g;if("number"!=typeof a&&(c=b,b=a,a=void 0),void 0===b){if(d=this.segment(a,b,c),h(d))for(f=0,g=d.length;g>f;f++)d[f]=e.decode(d[f]);else d=void 0!==d?e.decode(d):void 0;return d}if(h(b))for(f=0,g=b.length;g>f;f++)b[f]=e.decode(b[f]);else b="string"==typeof b?e.encode(b):b;return this.segment(a,b,c)};var w=o.query;return o.query=function(a,b){if(a===!0)return e.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if("function"==typeof a){var c=e.parseQuery(this._parts.query,this._parts.escapeQuerySpace),d=a.call(this,c);return this._parts.query=e.buildQuery(d||c,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!b),this}return void 0!==a&&"string"!=typeof a?(this._parts.query=e.buildQuery(a,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!b),this):w.call(this,a,b)},o.setQuery=function(a,b,c){var d=e.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if("object"==typeof a)for(var f in a)p.call(a,f)&&(d[f]=a[f]);else{if("string"!=typeof a)throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");d[a]=void 0!==b?b:null}return this._parts.query=e.buildQuery(d,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),"string"!=typeof a&&(c=b),this.build(!c),this},o.addQuery=function(a,b,c){var d=e.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return e.addQuery(d,a,void 0===b?null:b),this._parts.query=e.buildQuery(d,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),"string"!=typeof a&&(c=b),this.build(!c),this},o.removeQuery=function(a,b,c){var d=e.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return e.removeQuery(d,a,b),this._parts.query=e.buildQuery(d,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),"string"!=typeof a&&(c=b),this.build(!c),this},o.hasQuery=function(a,b,c){var d=e.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return e.hasQuery(d,a,b,c)},o.setSearch=o.setQuery,o.addSearch=o.addQuery,o.removeSearch=o.removeQuery,o.hasSearch=o.hasQuery,o.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizeQuery(!1).normalizeFragment(!1).build():this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()},o.normalizeProtocol=function(a){return"string"==typeof this._parts.protocol&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!a)),this},o.normalizeHostname=function(c){return this._parts.hostname&&(this.is("IDN")&&a?this._parts.hostname=a.toASCII(this._parts.hostname):this.is("IPv6")&&b&&(this._parts.hostname=b.best(this._parts.hostname)),this._parts.hostname=this._parts.hostname.toLowerCase(),this.build(!c)),this},o.normalizePort=function(a){return"string"==typeof this._parts.protocol&&this._parts.port===e.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!a)),this},o.normalizePath=function(a){if(this._parts.urn)return this;if(!this._parts.path||"/"===this._parts.path)return this;var b,c,d,f=this._parts.path;for("/"!==f.charAt(0)&&(b=!0,f="/"+f),f=f.replace(/(\/(\.\/)+)|(\/\.$)/g,"/").replace(/\/{2,}/g,"/");;){if(c=f.indexOf("/../"),-1===c)break;if(0===c){f=f.substring(3);break}d=f.substring(0,c).lastIndexOf("/"),-1===d&&(d=c),f=f.substring(0,d)+f.substring(c+3)}return b&&this.is("relative")&&(f=f.substring(1)),f=e.recodePath(f),this._parts.path=f,this.build(!a),this},o.normalizePathname=o.normalizePath,o.normalizeQuery=function(a){return"string"==typeof this._parts.query&&(this._parts.query.length?this.query(e.parseQuery(this._parts.query,this._parts.escapeQuerySpace)):this._parts.query=null,this.build(!a)),this},o.normalizeFragment=function(a){return this._parts.fragment||(this._parts.fragment=null,this.build(!a)),this},o.normalizeSearch=o.normalizeQuery,o.normalizeHash=o.normalizeFragment,o.iso8859=function(){var a=e.encode,b=e.decode;return e.encode=escape,e.decode=decodeURIComponent,this.normalize(),e.encode=a,e.decode=b,this},o.unicode=function(){var a=e.encode,b=e.decode;return e.encode=m,e.decode=unescape,this.normalize(),e.encode=a,e.decode=b,this},o.readable=function(){var b=this.clone();b.username("").password("").normalize();var c="";if(b._parts.protocol&&(c+=b._parts.protocol+"://"),b._parts.hostname&&(b.is("punycode")&&a?(c+=a.toUnicode(b._parts.hostname),b._parts.port&&(c+=":"+b._parts.port)):c+=b.host()),b._parts.hostname&&b._parts.path&&"/"!==b._parts.path.charAt(0)&&(c+="/"),c+=b.path(!0),b._parts.query){for(var d="",f=0,g=b._parts.query.split("&"),h=g.length;h>f;f++){var i=(g[f]||"").split("=");d+="&"+e.decodeQuery(i[0],this._parts.escapeQuerySpace).replace(/&/g,"%26"),void 0!==i[1]&&(d+="="+e.decodeQuery(i[1],this._parts.escapeQuerySpace).replace(/&/g,"%26"))}c+="?"+d.substring(1)}return c+=e.decodeQuery(b.hash(),!0)},o.absoluteTo=function(a){var b,c,d,f=this.clone(),g=["protocol","username","password","hostname","port"];if(this._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(a instanceof e||(a=new e(a)),f._parts.protocol||(f._parts.protocol=a._parts.protocol),this._parts.hostname)return f;for(c=0;d=g[c];c++)f._parts[d]=a._parts[d];for(g=["query","path"],c=0;d=g[c];c++)!f._parts[d]&&a._parts[d]&&(f._parts[d]=a._parts[d]);return"/"!==f.path().charAt(0)&&(b=a.directory(),f._parts.path=(b?b+"/":"")+f._parts.path,f.normalizePath()),f.build(),f},o.relativeTo=function(a){var b,c,d,f,g,h=this.clone().normalize();if(h._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(a=new e(a).normalize(),b=h._parts,c=a._parts,f=h.path(),g=a.path(),"/"!==f.charAt(0))throw new Error("URI is already relative");if("/"!==g.charAt(0))throw new Error("Cannot calculate a URI relative to another relative URI");if(b.protocol===c.protocol&&(b.protocol=null),b.username!==c.username||b.password!==c.password)return h.build();if(null!==b.protocol||null!==b.username||null!==b.password)return h.build();if(b.hostname!==c.hostname||b.port!==c.port)return h.build();if(b.hostname=null,b.port=null,f===g)return b.path="",h.build();if(d=e.commonPath(h.path(),a.path()),!d)return h.build();var i=c.path.substring(d.length).replace(/[^\/]*$/,"").replace(/.*?\//g,"../");return b.path=i+b.path.substring(d.length),h.build()},o.equals=function(a){var b,c,d,f=this.clone(),g=new e(a),i={},j={},l={};if(f.normalize(),g.normalize(),f.toString()===g.toString())return!0;if(b=f.query(),c=g.query(),f.query(""),g.query(""),f.toString()!==g.toString())return!1;if(b.length!==c.length)return!1;i=e.parseQuery(b,this._parts.escapeQuerySpace),j=e.parseQuery(c,this._parts.escapeQuerySpace);for(d in i)if(p.call(i,d)){if(h(i[d])){if(!k(i[d],j[d]))return!1}else if(i[d]!==j[d])return!1;l[d]=!0}for(d in j)if(p.call(j,d)&&!l[d])return!1;return!0},o.duplicateQueryParameters=function(a){return this._parts.duplicateQueryParameters=!!a,this},o.escapeQuerySpace=function(a){return this._parts.escapeQuerySpace=!!a,this},e}),function(){function a(a,b,c){null!=a&&("number"==typeof a?this.fromNumber(a,b,c):null==b&&"string"!=typeof a?this.fromString(a,256):this.fromString(a,b))}function b(){return new a(null)}function c(a,b,c,d,e,f){for(;--f>=0;){var g=b*this[a++]+c[d]+e;e=Math.floor(g/67108864),c[d++]=67108863&g}return e}function d(a,b,c,d,e,f){for(var g=32767&b,h=b>>15;--f>=0;){var i=32767&this[a],j=this[a++]>>15,k=h*i+j*g;i=g*i+((32767&k)<<15)+c[d]+(1073741823&e),e=(i>>>30)+(k>>>15)+h*j+(e>>>30),c[d++]=1073741823&i}return e}function e(a,b,c,d,e,f){for(var g=16383&b,h=b>>14;--f>=0;){var i=16383&this[a],j=this[a++]>>14,k=h*i+j*g;i=g*i+((16383&k)<<14)+c[d]+e,e=(i>>28)+(k>>14)+h*j,c[d++]=268435455&i}return e}function f(a){return fc.charAt(a)}function g(a,b){var c=gc[a.charCodeAt(b)];return null==c?-1:c}function h(a){for(var b=this.t-1;b>=0;--b)a[b]=this[b];a.t=this.t,a.s=this.s}function i(a){this.t=1,this.s=0>a?-1:0,a>0?this[0]=a:-1>a?this[0]=a+DV:this.t=0}function j(a){var c=b();return c.fromInt(a),c
-}function k(b,c){var d;if(16==c)d=4;else if(8==c)d=3;else if(256==c)d=8;else if(2==c)d=1;else if(32==c)d=5;else{if(4!=c)return void this.fromRadix(b,c);d=2}this.t=0,this.s=0;for(var e=b.length,f=!1,h=0;--e>=0;){var i=8==d?255&b[e]:g(b,e);0>i?"-"==b.charAt(e)&&(f=!0):(f=!1,0==h?this[this.t++]=i:h+d>this.DB?(this[this.t-1]|=(i&(1<<this.DB-h)-1)<<h,this[this.t++]=i>>this.DB-h):this[this.t-1]|=i<<h,h+=d,h>=this.DB&&(h-=this.DB))}8==d&&0!=(128&b[0])&&(this.s=-1,h>0&&(this[this.t-1]|=(1<<this.DB-h)-1<<h)),this.clamp(),f&&a.ZERO.subTo(this,this)}function l(){for(var a=this.s&this.DM;this.t>0&&this[this.t-1]==a;)--this.t}function m(a){if(this.s<0)return"-"+this.negate().toString(a);var b;if(16==a)b=4;else if(8==a)b=3;else if(2==a)b=1;else if(32==a)b=5;else{if(4!=a)return this.toRadix(a);b=2}var c,d=(1<<b)-1,e=!1,g="",h=this.t,i=this.DB-h*this.DB%b;if(h-->0)for(i<this.DB&&(c=this[h]>>i)>0&&(e=!0,g=f(c));h>=0;)b>i?(c=(this[h]&(1<<i)-1)<<b-i,c|=this[--h]>>(i+=this.DB-b)):(c=this[h]>>(i-=b)&d,0>=i&&(i+=this.DB,--h)),c>0&&(e=!0),e&&(g+=f(c));return e?g:"0"}function n(){var c=b();return a.ZERO.subTo(this,c),c}function o(){return this.s<0?this.negate():this}function p(a){var b=this.s-a.s;if(0!=b)return b;var c=this.t;if(b=c-a.t,0!=b)return this.s<0?-b:b;for(;--c>=0;)if(0!=(b=this[c]-a[c]))return b;return 0}function q(a){var b,c=1;return 0!=(b=a>>>16)&&(a=b,c+=16),0!=(b=a>>8)&&(a=b,c+=8),0!=(b=a>>4)&&(a=b,c+=4),0!=(b=a>>2)&&(a=b,c+=2),0!=(b=a>>1)&&(a=b,c+=1),c}function r(){return this.t<=0?0:this.DB*(this.t-1)+q(this[this.t-1]^this.s&this.DM)}function s(a,b){var c;for(c=this.t-1;c>=0;--c)b[c+a]=this[c];for(c=a-1;c>=0;--c)b[c]=0;b.t=this.t+a,b.s=this.s}function t(a,b){for(var c=a;c<this.t;++c)b[c-a]=this[c];b.t=Math.max(this.t-a,0),b.s=this.s}function u(a,b){var c,d=a%this.DB,e=this.DB-d,f=(1<<e)-1,g=Math.floor(a/this.DB),h=this.s<<d&this.DM;for(c=this.t-1;c>=0;--c)b[c+g+1]=this[c]>>e|h,h=(this[c]&f)<<d;for(c=g-1;c>=0;--c)b[c]=0;b[g]=h,b.t=this.t+g+1,b.s=this.s,b.clamp()}function v(a,b){b.s=this.s;var c=Math.floor(a/this.DB);if(c>=this.t)return void(b.t=0);var d=a%this.DB,e=this.DB-d,f=(1<<d)-1;b[0]=this[c]>>d;for(var g=c+1;g<this.t;++g)b[g-c-1]|=(this[g]&f)<<e,b[g-c]=this[g]>>d;d>0&&(b[this.t-c-1]|=(this.s&f)<<e),b.t=this.t-c,b.clamp()}function w(a,b){for(var c=0,d=0,e=Math.min(a.t,this.t);e>c;)d+=this[c]-a[c],b[c++]=d&this.DM,d>>=this.DB;if(a.t<this.t){for(d-=a.s;c<this.t;)d+=this[c],b[c++]=d&this.DM,d>>=this.DB;d+=this.s}else{for(d+=this.s;c<a.t;)d-=a[c],b[c++]=d&this.DM,d>>=this.DB;d-=a.s}b.s=0>d?-1:0,-1>d?b[c++]=this.DV+d:d>0&&(b[c++]=d),b.t=c,b.clamp()}function x(b,c){var d=this.abs(),e=b.abs(),f=d.t;for(c.t=f+e.t;--f>=0;)c[f]=0;for(f=0;f<e.t;++f)c[f+d.t]=d.am(0,e[f],c,f,0,d.t);c.s=0,c.clamp(),this.s!=b.s&&a.ZERO.subTo(c,c)}function y(a){for(var b=this.abs(),c=a.t=2*b.t;--c>=0;)a[c]=0;for(c=0;c<b.t-1;++c){var d=b.am(c,b[c],a,2*c,0,1);(a[c+b.t]+=b.am(c+1,2*b[c],a,2*c+1,d,b.t-c-1))>=b.DV&&(a[c+b.t]-=b.DV,a[c+b.t+1]=1)}a.t>0&&(a[a.t-1]+=b.am(c,b[c],a,2*c,0,1)),a.s=0,a.clamp()}function z(c,d,e){var f=c.abs();if(!(f.t<=0)){var g=this.abs();if(g.t<f.t)return null!=d&&d.fromInt(0),void(null!=e&&this.copyTo(e));null==e&&(e=b());var h=b(),i=this.s,j=c.s,k=this.DB-q(f[f.t-1]);k>0?(f.lShiftTo(k,h),g.lShiftTo(k,e)):(f.copyTo(h),g.copyTo(e));var l=h.t,m=h[l-1];if(0!=m){var n=m*(1<<this.F1)+(l>1?h[l-2]>>this.F2:0),o=this.FV/n,p=(1<<this.F1)/n,r=1<<this.F2,s=e.t,t=s-l,u=null==d?b():d;for(h.dlShiftTo(t,u),e.compareTo(u)>=0&&(e[e.t++]=1,e.subTo(u,e)),a.ONE.dlShiftTo(l,u),u.subTo(h,h);h.t<l;)h[h.t++]=0;for(;--t>=0;){var v=e[--s]==m?this.DM:Math.floor(e[s]*o+(e[s-1]+r)*p);if((e[s]+=h.am(0,v,e,t,0,l))<v)for(h.dlShiftTo(t,u),e.subTo(u,e);e[s]<--v;)e.subTo(u,e)}null!=d&&(e.drShiftTo(l,d),i!=j&&a.ZERO.subTo(d,d)),e.t=l,e.clamp(),k>0&&e.rShiftTo(k,e),0>i&&a.ZERO.subTo(e,e)}}}function A(c){var d=b();return this.abs().divRemTo(c,null,d),this.s<0&&d.compareTo(a.ZERO)>0&&c.subTo(d,d),d}function B(a){this.m=a}function C(a){return a.s<0||a.compareTo(this.m)>=0?a.mod(this.m):a}function D(a){return a}function E(a){a.divRemTo(this.m,null,a)}function F(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function G(a,b){a.squareTo(b),this.reduce(b)}function H(){if(this.t<1)return 0;var a=this[0];if(0==(1&a))return 0;var b=3&a;return b=b*(2-(15&a)*b)&15,b=b*(2-(255&a)*b)&255,b=b*(2-((65535&a)*b&65535))&65535,b=b*(2-a*b%this.DV)%this.DV,b>0?this.DV-b:-b}function I(a){this.m=a,this.mp=a.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<a.DB-15)-1,this.mt2=2*a.t}function J(c){var d=b();return c.abs().dlShiftTo(this.m.t,d),d.divRemTo(this.m,null,d),c.s<0&&d.compareTo(a.ZERO)>0&&this.m.subTo(d,d),d}function K(a){var c=b();return a.copyTo(c),this.reduce(c),c}function L(a){for(;a.t<=this.mt2;)a[a.t++]=0;for(var b=0;b<this.m.t;++b){var c=32767&a[b],d=c*this.mpl+((c*this.mph+(a[b]>>15)*this.mpl&this.um)<<15)&a.DM;for(c=b+this.m.t,a[c]+=this.m.am(0,d,a,b,0,this.m.t);a[c]>=a.DV;)a[c]-=a.DV,a[++c]++}a.clamp(),a.drShiftTo(this.m.t,a),a.compareTo(this.m)>=0&&a.subTo(this.m,a)}function M(a,b){a.squareTo(b),this.reduce(b)}function N(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function O(){return 0==(this.t>0?1&this[0]:this.s)}function P(c,d){if(c>4294967295||1>c)return a.ONE;var e=b(),f=b(),g=d.convert(this),h=q(c)-1;for(g.copyTo(e);--h>=0;)if(d.sqrTo(e,f),(c&1<<h)>0)d.mulTo(f,g,e);else{var i=e;e=f,f=i}return d.revert(e)}function Q(a,b){var c;return c=256>a||b.isEven()?new B(b):new I(b),this.exp(a,c)}function R(){var a=b();return this.copyTo(a),a}function S(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]}function T(){return 0==this.t?this.s:this[0]<<24>>24}function U(){return 0==this.t?this.s:this[0]<<16>>16}function V(a){return Math.floor(Math.LN2*this.DB/Math.log(a))}function W(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1}function X(a){if(null==a&&(a=10),0==this.signum()||2>a||a>36)return"0";var c=this.chunkSize(a),d=Math.pow(a,c),e=j(d),f=b(),g=b(),h="";for(this.divRemTo(e,f,g);f.signum()>0;)h=(d+g.intValue()).toString(a).substr(1)+h,f.divRemTo(e,f,g);return g.intValue().toString(a)+h}function Y(b,c){this.fromInt(0),null==c&&(c=10);for(var d=this.chunkSize(c),e=Math.pow(c,d),f=!1,h=0,i=0,j=0;j<b.length;++j){var k=g(b,j);0>k?"-"==b.charAt(j)&&0==this.signum()&&(f=!0):(i=c*i+k,++h>=d&&(this.dMultiply(e),this.dAddOffset(i,0),h=0,i=0))}h>0&&(this.dMultiply(Math.pow(c,h)),this.dAddOffset(i,0)),f&&a.ZERO.subTo(this,this)}function Z(b,c,d){if("number"==typeof c)if(2>b)this.fromInt(1);else for(this.fromNumber(b,d),this.testBit(b-1)||this.bitwiseTo(a.ONE.shiftLeft(b-1),fb,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(c);)this.dAddOffset(2,0),this.bitLength()>b&&this.subTo(a.ONE.shiftLeft(b-1),this);else{var e=new Array,f=7&b;e.length=(b>>3)+1,c.nextBytes(e),f>0?e[0]&=(1<<f)-1:e[0]=0,this.fromString(e,256)}}function $(){var a=this.t,b=new Array;b[0]=this.s;var c,d=this.DB-a*this.DB%8,e=0;if(a-->0)for(d<this.DB&&(c=this[a]>>d)!=(this.s&this.DM)>>d&&(b[e++]=c|this.s<<this.DB-d);a>=0;)8>d?(c=(this[a]&(1<<d)-1)<<8-d,c|=this[--a]>>(d+=this.DB-8)):(c=this[a]>>(d-=8)&255,0>=d&&(d+=this.DB,--a)),0!=(128&c)&&(c|=-256),0==e&&(128&this.s)!=(128&c)&&++e,(e>0||c!=this.s)&&(b[e++]=c);return b}function _(a){return 0==this.compareTo(a)}function ab(a){return this.compareTo(a)<0?this:a}function bb(a){return this.compareTo(a)>0?this:a}function cb(a,b,c){var d,e,f=Math.min(a.t,this.t);for(d=0;f>d;++d)c[d]=b(this[d],a[d]);if(a.t<this.t){for(e=a.s&this.DM,d=f;d<this.t;++d)c[d]=b(this[d],e);c.t=this.t}else{for(e=this.s&this.DM,d=f;d<a.t;++d)c[d]=b(e,a[d]);c.t=a.t}c.s=b(this.s,a.s),c.clamp()}function db(a,b){return a&b}function eb(a){var c=b();return this.bitwiseTo(a,db,c),c}function fb(a,b){return a|b}function gb(a){var c=b();return this.bitwiseTo(a,fb,c),c}function hb(a,b){return a^b}function ib(a){var c=b();return this.bitwiseTo(a,hb,c),c}function jb(a,b){return a&~b}function kb(a){var c=b();return this.bitwiseTo(a,jb,c),c}function lb(){for(var a=b(),c=0;c<this.t;++c)a[c]=this.DM&~this[c];return a.t=this.t,a.s=~this.s,a}function mb(a){var c=b();return 0>a?this.rShiftTo(-a,c):this.lShiftTo(a,c),c}function nb(a){var c=b();return 0>a?this.lShiftTo(-a,c):this.rShiftTo(a,c),c}function ob(a){if(0==a)return-1;var b=0;return 0==(65535&a)&&(a>>=16,b+=16),0==(255&a)&&(a>>=8,b+=8),0==(15&a)&&(a>>=4,b+=4),0==(3&a)&&(a>>=2,b+=2),0==(1&a)&&++b,b}function pb(){for(var a=0;a<this.t;++a)if(0!=this[a])return a*this.DB+ob(this[a]);return this.s<0?this.t*this.DB:-1}function qb(a){for(var b=0;0!=a;)a&=a-1,++b;return b}function rb(){for(var a=0,b=this.s&this.DM,c=0;c<this.t;++c)a+=qb(this[c]^b);return a}function sb(a){var b=Math.floor(a/this.DB);return b>=this.t?0!=this.s:0!=(this[b]&1<<a%this.DB)}function tb(b,c){var d=a.ONE.shiftLeft(b);return this.bitwiseTo(d,c,d),d}function ub(a){return this.changeBit(a,fb)}function vb(a){return this.changeBit(a,jb)}function wb(a){return this.changeBit(a,hb)}function xb(a,b){for(var c=0,d=0,e=Math.min(a.t,this.t);e>c;)d+=this[c]+a[c],b[c++]=d&this.DM,d>>=this.DB;if(a.t<this.t){for(d+=a.s;c<this.t;)d+=this[c],b[c++]=d&this.DM,d>>=this.DB;d+=this.s}else{for(d+=this.s;c<a.t;)d+=a[c],b[c++]=d&this.DM,d>>=this.DB;d+=a.s}b.s=0>d?-1:0,d>0?b[c++]=d:-1>d&&(b[c++]=this.DV+d),b.t=c,b.clamp()}function yb(a){var c=b();return this.addTo(a,c),c}function zb(a){var c=b();return this.subTo(a,c),c}function Ab(a){var c=b();return this.multiplyTo(a,c),c}function Bb(){var a=b();return this.squareTo(a),a}function Cb(a){var c=b();return this.divRemTo(a,c,null),c}function Db(a){var c=b();return this.divRemTo(a,null,c),c}function Eb(a){var c=b(),d=b();return this.divRemTo(a,c,d),new Array(c,d)}function Fb(a){this[this.t]=this.am(0,a-1,this,0,0,this.t),++this.t,this.clamp()}function Gb(a,b){if(0!=a){for(;this.t<=b;)this[this.t++]=0;for(this[b]+=a;this[b]>=this.DV;)this[b]-=this.DV,++b>=this.t&&(this[this.t++]=0),++this[b]}}function Hb(){}function Ib(a){return a}function Jb(a,b,c){a.multiplyTo(b,c)}function Kb(a,b){a.squareTo(b)}function Lb(a){return this.exp(a,new Hb)}function Mb(a,b,c){var d=Math.min(this.t+a.t,b);for(c.s=0,c.t=d;d>0;)c[--d]=0;var e;for(e=c.t-this.t;e>d;++d)c[d+this.t]=this.am(0,a[d],c,d,0,this.t);for(e=Math.min(a.t,b);e>d;++d)this.am(0,a[d],c,d,0,b-d);c.clamp()}function Nb(a,b,c){--b;var d=c.t=this.t+a.t-b;for(c.s=0;--d>=0;)c[d]=0;for(d=Math.max(b-this.t,0);d<a.t;++d)c[this.t+d-b]=this.am(b-d,a[d],c,0,0,this.t+d-b);c.clamp(),c.drShiftTo(1,c)}function Ob(c){this.r2=b(),this.q3=b(),a.ONE.dlShiftTo(2*c.t,this.r2),this.mu=this.r2.divide(c),this.m=c}function Pb(a){if(a.s<0||a.t>2*this.m.t)return a.mod(this.m);if(a.compareTo(this.m)<0)return a;var c=b();return a.copyTo(c),this.reduce(c),c}function Qb(a){return a}function Rb(a){for(a.drShiftTo(this.m.t-1,this.r2),a.t>this.m.t+1&&(a.t=this.m.t+1,a.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);a.compareTo(this.r2)<0;)a.dAddOffset(1,this.m.t+1);for(a.subTo(this.r2,a);a.compareTo(this.m)>=0;)a.subTo(this.m,a)}function Sb(a,b){a.squareTo(b),this.reduce(b)}function Tb(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function Ub(a,c){var d,e,f=a.bitLength(),g=j(1);if(0>=f)return g;d=18>f?1:48>f?3:144>f?4:768>f?5:6,e=8>f?new B(c):c.isEven()?new Ob(c):new I(c);var h=new Array,i=3,k=d-1,l=(1<<d)-1;if(h[1]=e.convert(this),d>1){var m=b();for(e.sqrTo(h[1],m);l>=i;)h[i]=b(),e.mulTo(m,h[i-2],h[i]),i+=2}var n,o,p=a.t-1,r=!0,s=b();for(f=q(a[p])-1;p>=0;){for(f>=k?n=a[p]>>f-k&l:(n=(a[p]&(1<<f+1)-1)<<k-f,p>0&&(n|=a[p-1]>>this.DB+f-k)),i=d;0==(1&n);)n>>=1,--i;if((f-=i)<0&&(f+=this.DB,--p),r)h[n].copyTo(g),r=!1;else{for(;i>1;)e.sqrTo(g,s),e.sqrTo(s,g),i-=2;i>0?e.sqrTo(g,s):(o=g,g=s,s=o),e.mulTo(s,h[n],g)}for(;p>=0&&0==(a[p]&1<<f);)e.sqrTo(g,s),o=g,g=s,s=o,--f<0&&(f=this.DB-1,--p)}return e.revert(g)}function Vb(a){var b=this.s<0?this.negate():this.clone(),c=a.s<0?a.negate():a.clone();if(b.compareTo(c)<0){var d=b;b=c,c=d}var e=b.getLowestSetBit(),f=c.getLowestSetBit();if(0>f)return b;for(f>e&&(f=e),f>0&&(b.rShiftTo(f,b),c.rShiftTo(f,c));b.signum()>0;)(e=b.getLowestSetBit())>0&&b.rShiftTo(e,b),(e=c.getLowestSetBit())>0&&c.rShiftTo(e,c),b.compareTo(c)>=0?(b.subTo(c,b),b.rShiftTo(1,b)):(c.subTo(b,c),c.rShiftTo(1,c));return f>0&&c.lShiftTo(f,c),c}function Wb(a){if(0>=a)return 0;var b=this.DV%a,c=this.s<0?a-1:0;if(this.t>0)if(0==b)c=this[0]%a;else for(var d=this.t-1;d>=0;--d)c=(b*c+this[d])%a;return c}function Xb(b){var c=b.isEven();if(this.isEven()&&c||0==b.signum())return a.ZERO;for(var d=b.clone(),e=this.clone(),f=j(1),g=j(0),h=j(0),i=j(1);0!=d.signum();){for(;d.isEven();)d.rShiftTo(1,d),c?(f.isEven()&&g.isEven()||(f.addTo(this,f),g.subTo(b,g)),f.rShiftTo(1,f)):g.isEven()||g.subTo(b,g),g.rShiftTo(1,g);for(;e.isEven();)e.rShiftTo(1,e),c?(h.isEven()&&i.isEven()||(h.addTo(this,h),i.subTo(b,i)),h.rShiftTo(1,h)):i.isEven()||i.subTo(b,i),i.rShiftTo(1,i);d.compareTo(e)>=0?(d.subTo(e,d),c&&f.subTo(h,f),g.subTo(i,g)):(e.subTo(d,e),c&&h.subTo(f,h),i.subTo(g,i))}return 0!=e.compareTo(a.ONE)?a.ZERO:i.compareTo(b)>=0?i.subtract(b):i.signum()<0?(i.addTo(b,i),i.signum()<0?i.add(b):i):i}function Yb(a){var b,c=this.abs();if(1==c.t&&c[0]<=hc[hc.length-1]){for(b=0;b<hc.length;++b)if(c[0]==hc[b])return!0;return!1}if(c.isEven())return!1;for(b=1;b<hc.length;){for(var d=hc[b],e=b+1;e<hc.length&&ic>d;)d*=hc[e++];for(d=c.modInt(d);e>b;)if(d%hc[b++]==0)return!1}return c.millerRabin(a)}function Zb(c){var d=this.subtract(a.ONE),e=d.getLowestSetBit();if(0>=e)return!1;var f=d.shiftRight(e);c=c+1>>1,c>hc.length&&(c=hc.length);for(var g=b(),h=0;c>h;++h){g.fromInt(hc[Math.floor(Math.random()*hc.length)]);var i=g.modPow(f,this);if(0!=i.compareTo(a.ONE)&&0!=i.compareTo(d)){for(var j=1;j++<e&&0!=i.compareTo(d);)if(i=i.modPowInt(2,this),0==i.compareTo(a.ONE))return!1;if(0!=i.compareTo(d))return!1}}return!0}var $b,_b=0xdeadbeefcafe,ac=15715070==(16777215&_b),bc="undefined"!=typeof navigator;bc&&ac&&"Microsoft Internet Explorer"==navigator.appName?(a.prototype.am=d,$b=30):bc&&ac&&"Netscape"!=navigator.appName?(a.prototype.am=c,$b=26):(a.prototype.am=e,$b=28),a.prototype.DB=$b,a.prototype.DM=(1<<$b)-1,a.prototype.DV=1<<$b;var cc=52;a.prototype.FV=Math.pow(2,cc),a.prototype.F1=cc-$b,a.prototype.F2=2*$b-cc;var dc,ec,fc="0123456789abcdefghijklmnopqrstuvwxyz",gc=new Array;for(dc="0".charCodeAt(0),ec=0;9>=ec;++ec)gc[dc++]=ec;for(dc="a".charCodeAt(0),ec=10;36>ec;++ec)gc[dc++]=ec;for(dc="A".charCodeAt(0),ec=10;36>ec;++ec)gc[dc++]=ec;B.prototype.convert=C,B.prototype.revert=D,B.prototype.reduce=E,B.prototype.mulTo=F,B.prototype.sqrTo=G,I.prototype.convert=J,I.prototype.revert=K,I.prototype.reduce=L,I.prototype.mulTo=N,I.prototype.sqrTo=M,a.prototype.copyTo=h,a.prototype.fromInt=i,a.prototype.fromString=k,a.prototype.clamp=l,a.prototype.dlShiftTo=s,a.prototype.drShiftTo=t,a.prototype.lShiftTo=u,a.prototype.rShiftTo=v,a.prototype.subTo=w,a.prototype.multiplyTo=x,a.prototype.squareTo=y,a.prototype.divRemTo=z,a.prototype.invDigit=H,a.prototype.isEven=O,a.prototype.exp=P,a.prototype.toString=m,a.prototype.negate=n,a.prototype.abs=o,a.prototype.compareTo=p,a.prototype.bitLength=r,a.prototype.mod=A,a.prototype.modPowInt=Q,a.ZERO=j(0),a.ONE=j(1),Hb.prototype.convert=Ib,Hb.prototype.revert=Ib,Hb.prototype.mulTo=Jb,Hb.prototype.sqrTo=Kb,Ob.prototype.convert=Pb,Ob.prototype.revert=Qb,Ob.prototype.reduce=Rb,Ob.prototype.mulTo=Tb,Ob.prototype.sqrTo=Sb;var hc=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],ic=(1<<26)/hc[hc.length-1];a.prototype.chunkSize=V,a.prototype.toRadix=X,a.prototype.fromRadix=Y,a.prototype.fromNumber=Z,a.prototype.bitwiseTo=cb,a.prototype.changeBit=tb,a.prototype.addTo=xb,a.prototype.dMultiply=Fb,a.prototype.dAddOffset=Gb,a.prototype.multiplyLowerTo=Mb,a.prototype.multiplyUpperTo=Nb,a.prototype.modInt=Wb,a.prototype.millerRabin=Zb,a.prototype.clone=R,a.prototype.intValue=S,a.prototype.byteValue=T,a.prototype.shortValue=U,a.prototype.signum=W,a.prototype.toByteArray=$,a.prototype.equals=_,a.prototype.min=ab,a.prototype.max=bb,a.prototype.and=eb,a.prototype.or=gb,a.prototype.xor=ib,a.prototype.andNot=kb,a.prototype.not=lb,a.prototype.shiftLeft=mb,a.prototype.shiftRight=nb,a.prototype.getLowestSetBit=pb,a.prototype.bitCount=rb,a.prototype.testBit=sb,a.prototype.setBit=ub,a.prototype.clearBit=vb,a.prototype.flipBit=wb,a.prototype.add=yb,a.prototype.subtract=zb,a.prototype.multiply=Ab,a.prototype.divide=Cb,a.prototype.remainder=Db,a.prototype.divideAndRemainder=Eb,a.prototype.modPow=Ub,a.prototype.modInverse=Xb,a.prototype.pow=Lb,a.prototype.gcd=Vb,a.prototype.isProbablePrime=Yb,a.prototype.square=Bb,"undefined"!=typeof exports?exports=module.exports=a:this.BigInteger=a}.call(this),function(a){var b,c,d,e=a(window),f={jqueryui:{container:"ui-widget ui-widget-content ui-corner-all",notice:"ui-state-highlight",notice_icon:"ui-icon ui-icon-info",info:"",info_icon:"ui-icon ui-icon-info",success:"ui-state-default",success_icon:"ui-icon ui-icon-circle-check",error:"ui-state-error",error_icon:"ui-icon ui-icon-alert",closer:"ui-icon ui-icon-close",pin_up:"ui-icon ui-icon-pin-w",pin_down:"ui-icon ui-icon-pin-s",hi_menu:"ui-state-default ui-corner-bottom",hi_btn:"ui-state-default ui-corner-all",hi_btnhov:"ui-state-hover",hi_hnd:"ui-icon ui-icon-grip-dotted-horizontal"},bootstrap:{container:"alert",notice:"",notice_icon:"icon-exclamation-sign",info:"alert-info",info_icon:"icon-info-sign",success:"alert-success",success_icon:"icon-ok-sign",error:"alert-error",error_icon:"icon-warning-sign",closer:"icon-remove",pin_up:"icon-pause",pin_down:"icon-play",hi_menu:"well",hi_btn:"btn",hi_btnhov:"",hi_hnd:"icon-chevron-down"}},g=function(){d=a("body"),e=a(window),e.bind("resize",function(){c&&clearTimeout(c),c=setTimeout(a.pnotify_position_all,10)})};document.body?g():a(g),a.extend({pnotify_remove_all:function(){var b=e.data("pnotify");b&&b.length&&a.each(b,function(){this.pnotify_remove&&this.pnotify_remove()})},pnotify_position_all:function(){c&&clearTimeout(c),c=null;var b=e.data("pnotify");b&&b.length&&(a.each(b,function(){var a=this.opts.stack;a&&(a.nextpos1=a.firstpos1,a.nextpos2=a.firstpos2,a.addpos2=0,a.animation=!0)}),a.each(b,function(){this.pnotify_position()}))},pnotify:function(g){var h,i;"object"!=typeof g?(i=a.extend({},a.pnotify.defaults),i.text=g):i=a.extend({},a.pnotify.defaults,g);for(var j in i)"string"==typeof j&&j.match(/^pnotify_/)&&(i[j.replace(/^pnotify_/,"")]=i[j]);if(i.before_init&&i.before_init(i)===!1)return null;var k,m=function(b,c){o.css("display","none");var d=document.elementFromPoint(b.clientX,b.clientY);o.css("display","block");var e=a(d),f=e.css("cursor");o.css("cursor","auto"!=f?f:"default"),k&&k.get(0)==d||(k&&(l.call(k.get(0),"mouseleave",b.originalEvent),l.call(k.get(0),"mouseout",b.originalEvent)),l.call(d,"mouseenter",b.originalEvent),l.call(d,"mouseover",b.originalEvent)),l.call(d,c,b.originalEvent),k=e},n=f[i.styling],o=a("<div />",{"class":"ui-pnotify "+i.addclass,css:{display:"none"},mouseenter:function(a){i.nonblock&&a.stopPropagation(),i.mouse_reset&&"out"==h&&(o.stop(!0),h="in",o.css("height","auto").animate({width:i.width,opacity:i.nonblock?i.nonblock_opacity:i.opacity},"fast")),i.nonblock&&o.animate({opacity:i.nonblock_opacity},"fast"),i.hide&&i.mouse_reset&&o.pnotify_cancel_remove(),i.sticker&&!i.nonblock&&o.sticker.trigger("pnotify_icon").css("visibility","visible"),i.closer&&!i.nonblock&&o.closer.css("visibility","visible")},mouseleave:function(b){i.nonblock&&b.stopPropagation(),k=null,o.css("cursor","auto"),i.nonblock&&"out"!=h&&o.animate({opacity:i.opacity},"fast"),i.hide&&i.mouse_reset&&o.pnotify_queue_remove(),i.sticker_hover&&o.sticker.css("visibility","hidden"),i.closer_hover&&o.closer.css("visibility","hidden"),a.pnotify_position_all()},mouseover:function(a){i.nonblock&&a.stopPropagation()},mouseout:function(a){i.nonblock&&a.stopPropagation()},mousemove:function(a){i.nonblock&&(a.stopPropagation(),m(a,"onmousemove"))},mousedown:function(a){i.nonblock&&(a.stopPropagation(),a.preventDefault(),m(a,"onmousedown"))},mouseup:function(a){i.nonblock&&(a.stopPropagation(),a.preventDefault(),m(a,"onmouseup"))},click:function(a){i.nonblock&&(a.stopPropagation(),m(a,"onclick"))},dblclick:function(a){i.nonblock&&(a.stopPropagation(),m(a,"ondblclick"))}});o.opts=i,o.container=a("<div />",{"class":n.container+" ui-pnotify-container "+("error"==i.type?n.error:"info"==i.type?n.info:"success"==i.type?n.success:n.notice)}).appendTo(o),""!=i.cornerclass&&o.container.removeClass("ui-corner-all").addClass(i.cornerclass),i.shadow&&o.container.addClass("ui-pnotify-shadow"),o.pnotify_version="1.2.0",o.pnotify=function(b){var c=i;"string"==typeof b?i.text=b:i=a.extend({},i,b);for(var d in i)"string"==typeof d&&d.match(/^pnotify_/)&&(i[d.replace(/^pnotify_/,"")]=i[d]);return o.opts=i,i.cornerclass!=c.cornerclass&&o.container.removeClass("ui-corner-all").addClass(i.cornerclass),i.shadow!=c.shadow&&(i.shadow?o.container.addClass("ui-pnotify-shadow"):o.container.removeClass("ui-pnotify-shadow")),i.addclass===!1?o.removeClass(c.addclass):i.addclass!==c.addclass&&o.removeClass(c.addclass).addClass(i.addclass),i.title===!1?o.title_container.slideUp("fast"):i.title!==c.title&&(i.title_escape?o.title_container.text(i.title).slideDown(200):o.title_container.html(i.title).slideDown(200)),i.text===!1?o.text_container.slideUp("fast"):i.text!==c.text&&(i.text_escape?o.text_container.text(i.text).slideDown(200):o.text_container.html(i.insert_brs?String(i.text).replace(/\n/g,"<br />"):i.text).slideDown(200)),o.pnotify_history=i.history,o.pnotify_hide=i.hide,i.type!=c.type&&o.container.removeClass(n.error+" "+n.notice+" "+n.success+" "+n.info).addClass("error"==i.type?n.error:"info"==i.type?n.info:"success"==i.type?n.success:n.notice),(i.icon!==c.icon||i.icon===!0&&i.type!=c.type)&&(o.container.find("div.ui-pnotify-icon").remove(),i.icon!==!1&&a("<div />",{"class":"ui-pnotify-icon"}).append(a("<span />",{"class":i.icon===!0?"error"==i.type?n.error_icon:"info"==i.type?n.info_icon:"success"==i.type?n.success_icon:n.notice_icon:i.icon})).prependTo(o.container)),i.width!==c.width&&o.animate({width:i.width}),i.min_height!==c.min_height&&o.container.animate({minHeight:i.min_height}),i.opacity!==c.opacity&&o.fadeTo(i.animate_speed,i.opacity),!i.closer||i.nonblock?o.closer.css("display","none"):o.closer.css("display","block"),!i.sticker||i.nonblock?o.sticker.css("display","none"):o.sticker.css("display","block"),o.sticker.trigger("pnotify_icon"),i.sticker_hover?o.sticker.css("visibility","hidden"):i.nonblock||o.sticker.css("visibility","visible"),i.closer_hover?o.closer.css("visibility","hidden"):i.nonblock||o.closer.css("visibility","visible"),i.hide?c.hide||o.pnotify_queue_remove():o.pnotify_cancel_remove(),o.pnotify_queue_position(),o},o.pnotify_position=function(a){var b=o.opts.stack;if(b){b.nextpos1||(b.nextpos1=b.firstpos1),b.nextpos2||(b.nextpos2=b.firstpos2),b.addpos2||(b.addpos2=0);var c="none"==o.css("display");if(!c||a){var d,f,g,h={};switch(b.dir1){case"down":g="top";break;case"up":g="bottom";break;case"left":g="right";break;case"right":g="left"}d=parseInt(o.css(g)),isNaN(d)&&(d=0),"undefined"!=typeof b.firstpos1||c||(b.firstpos1=d,b.nextpos1=b.firstpos1);var i;switch(b.dir2){case"down":i="top";break;case"up":i="bottom";break;case"left":i="right";break;case"right":i="left"}if(f=parseInt(o.css(i)),isNaN(f)&&(f=0),"undefined"!=typeof b.firstpos2||c||(b.firstpos2=f,b.nextpos2=b.firstpos2),("down"==b.dir1&&b.nextpos1+o.height()>e.height()||"up"==b.dir1&&b.nextpos1+o.height()>e.height()||"left"==b.dir1&&b.nextpos1+o.width()>e.width()||"right"==b.dir1&&b.nextpos1+o.width()>e.width())&&(b.nextpos1=b.firstpos1,b.nextpos2+=b.addpos2+("undefined"==typeof b.spacing2?25:b.spacing2),b.addpos2=0),b.animation&&b.nextpos2<f)switch(b.dir2){case"down":h.top=b.nextpos2+"px";break;case"up":h.bottom=b.nextpos2+"px";break;case"left":h.right=b.nextpos2+"px";break;case"right":h.left=b.nextpos2+"px"}else o.css(i,b.nextpos2+"px");switch(b.dir2){case"down":case"up":o.outerHeight(!0)>b.addpos2&&(b.addpos2=o.height());break;case"left":case"right":o.outerWidth(!0)>b.addpos2&&(b.addpos2=o.width())}if(b.nextpos1)if(b.animation&&(d>b.nextpos1||h.top||h.bottom||h.right||h.left))switch(b.dir1){case"down":h.top=b.nextpos1+"px";break;case"up":h.bottom=b.nextpos1+"px";break;case"left":h.right=b.nextpos1+"px";break;case"right":h.left=b.nextpos1+"px"}else o.css(g,b.nextpos1+"px");switch((h.top||h.bottom||h.right||h.left)&&o.animate(h,{duration:500,queue:!1}),b.dir1){case"down":case"up":b.nextpos1+=o.height()+("undefined"==typeof b.spacing1?25:b.spacing1);break;case"left":case"right":b.nextpos1+=o.width()+("undefined"==typeof b.spacing1?25:b.spacing1)}}}},o.pnotify_queue_position=function(b){c&&clearTimeout(c),b||(b=10),c=setTimeout(a.pnotify_position_all,b)},o.pnotify_display=function(){o.parent().length||o.appendTo(d),i.before_open&&i.before_open(o)===!1||("top"!=i.stack.push&&o.pnotify_position(!0),"fade"==i.animation||"fade"==i.animation.effect_in?o.show().fadeTo(0,0).hide():1!=i.opacity&&o.show().fadeTo(0,i.opacity).hide(),o.animate_in(function(){i.after_open&&i.after_open(o),o.pnotify_queue_position(),i.hide&&o.pnotify_queue_remove()}))},o.pnotify_remove=function(){o.timer&&(window.clearTimeout(o.timer),o.timer=null),i.before_close&&i.before_close(o)===!1||o.animate_out(function(){i.after_close&&i.after_close(o)===!1||(o.pnotify_queue_position(),i.remove&&o.detach())})},o.animate_in=function(a){h="in";var b;b="undefined"!=typeof i.animation.effect_in?i.animation.effect_in:i.animation,"none"==b?(o.show(),a()):"show"==b?o.show(i.animate_speed,a):"fade"==b?o.show().fadeTo(i.animate_speed,i.opacity,a):"slide"==b?o.slideDown(i.animate_speed,a):"function"==typeof b?b("in",a,o):o.show(b,"object"==typeof i.animation.options_in?i.animation.options_in:{},i.animate_speed,a)},o.animate_out=function(a){h="out";var b;b="undefined"!=typeof i.animation.effect_out?i.animation.effect_out:i.animation,"none"==b?(o.hide(),a()):"show"==b?o.hide(i.animate_speed,a):"fade"==b?o.fadeOut(i.animate_speed,a):"slide"==b?o.slideUp(i.animate_speed,a):"function"==typeof b?b("out",a,o):o.hide(b,"object"==typeof i.animation.options_out?i.animation.options_out:{},i.animate_speed,a)},o.pnotify_cancel_remove=function(){o.timer&&window.clearTimeout(o.timer)},o.pnotify_queue_remove=function(){o.pnotify_cancel_remove(),o.timer=window.setTimeout(function(){o.pnotify_remove()},isNaN(i.delay)?0:i.delay)},o.closer=a("<div />",{"class":"ui-pnotify-closer",css:{cursor:"pointer",visibility:i.closer_hover?"hidden":"visible"},click:function(){o.pnotify_remove(),o.sticker.css("visibility","hidden"),o.closer.css("visibility","hidden")}}).append(a("<span />",{"class":n.closer})).appendTo(o.container),(!i.closer||i.nonblock)&&o.closer.css("display","none"),o.sticker=a("<div />",{"class":"ui-pnotify-sticker",css:{cursor:"pointer",visibility:i.sticker_hover?"hidden":"visible"},click:function(){i.hide=!i.hide,i.hide?o.pnotify_queue_remove():o.pnotify_cancel_remove(),a(this).trigger("pnotify_icon")}}).bind("pnotify_icon",function(){a(this).children().removeClass(n.pin_up+" "+n.pin_down).addClass(i.hide?n.pin_up:n.pin_down)}).append(a("<span />",{"class":n.pin_up})).appendTo(o.container),(!i.sticker||i.nonblock)&&o.sticker.css("display","none"),i.icon!==!1&&a("<div />",{"class":"ui-pnotify-icon"}).append(a("<span />",{"class":i.icon===!0?"error"==i.type?n.error_icon:"info"==i.type?n.info_icon:"success"==i.type?n.success_icon:n.notice_icon:i.icon})).prependTo(o.container),o.title_container=a("<h4 />",{"class":"ui-pnotify-title"}).appendTo(o.container),i.title===!1?o.title_container.hide():i.title_escape?o.title_container.text(i.title):o.title_container.html(i.title),o.text_container=a("<div />",{"class":"ui-pnotify-text"}).appendTo(o.container),i.text===!1?o.text_container.hide():i.text_escape?o.text_container.text(i.text):o.text_container.html(i.insert_brs?String(i.text).replace(/\n/g,"<br />"):i.text),"string"==typeof i.width&&o.css("width",i.width),"string"==typeof i.min_height&&o.container.css("min-height",i.min_height),o.pnotify_history=i.history,o.pnotify_hide=i.hide;var p=e.data("pnotify");if((null==p||"object"!=typeof p)&&(p=[]),p="top"==i.stack.push?a.merge([o],p):a.merge(p,[o]),e.data("pnotify",p),"top"==i.stack.push&&o.pnotify_queue_position(1),i.after_init&&i.after_init(o),i.history){var q=e.data("pnotify_history");if("undefined"==typeof q){q=a("<div />",{"class":"ui-pnotify-history-container "+n.hi_menu,mouseleave:function(){q.animate({top:"-"+b+"px"},{duration:100,queue:!1})}}).append(a("<div />",{"class":"ui-pnotify-history-header",text:"Redisplay"})).append(a("<button />",{"class":"ui-pnotify-history-all "+n.hi_btn,text:"All",mouseenter:function(){a(this).addClass(n.hi_btnhov)},mouseleave:function(){a(this).removeClass(n.hi_btnhov)},click:function(){return a.each(p,function(){this.pnotify_history&&(this.is(":visible")?this.pnotify_hide&&this.pnotify_queue_remove():this.pnotify_display&&this.pnotify_display())}),!1}})).append(a("<button />",{"class":"ui-pnotify-history-last "+n.hi_btn,text:"Last",mouseenter:function(){a(this).addClass(n.hi_btnhov)},mouseleave:function(){a(this).removeClass(n.hi_btnhov)},click:function(){var a,b=-1;do{if(a=-1==b?p.slice(b):p.slice(b,b+1),!a[0])break;b--}while(!a[0].pnotify_history||a[0].is(":visible"));return a[0]?(a[0].pnotify_display&&a[0].pnotify_display(),!1):!1}})).appendTo(d);var r=a("<span />",{"class":"ui-pnotify-history-pulldown "+n.hi_hnd,mouseenter:function(){q.animate({top:"0"},{duration:100,queue:!1})}}).appendTo(q);b=r.offset().top+2,q.css({top:"-"+b+"px"}),e.data("pnotify_history",q)}}return i.stack.animation=!1,o.pnotify_display(),o}});var h=/^on/,i=/^(dbl)?click$|^mouse(move|down|up|over|out|enter|leave)$|^contextmenu$/,j=/^(focus|blur|select|change|reset)$|^key(press|down|up)$/,k=/^(scroll|resize|(un)?load|abort|error)$/,l=function(b,c){var d;if(b=b.toLowerCase(),document.createEvent&&this.dispatchEvent){if(b=b.replace(h,""),b.match(i)?(a(this).offset(),d=document.createEvent("MouseEvents"),d.initMouseEvent(b,c.bubbles,c.cancelable,c.view,c.detail,c.screenX,c.screenY,c.clientX,c.clientY,c.ctrlKey,c.altKey,c.shiftKey,c.metaKey,c.button,c.relatedTarget)):b.match(j)?(d=document.createEvent("UIEvents"),d.initUIEvent(b,c.bubbles,c.cancelable,c.view,c.detail)):b.match(k)&&(d=document.createEvent("HTMLEvents"),d.initEvent(b,c.bubbles,c.cancelable)),!d)return;this.dispatchEvent(d)}else b.match(h)||(b="on"+b),d=document.createEventObject(c),this.fireEvent(b,d)};a.pnotify.defaults={title:!1,title_escape:!1,text:!1,text_escape:!1,styling:"bootstrap",addclass:"",cornerclass:"",nonblock:!1,nonblock_opacity:.2,history:!0,width:"300px",min_height:"16px",type:"notice",icon:!0,animation:"fade",animate_speed:"slow",opacity:1,shadow:!0,closer:!0,closer_hover:!0,sticker:!0,sticker_hover:!0,hide:!0,delay:8e3,mouse_reset:!0,remove:!0,insert_brs:!0,stack:{dir1:"down",dir2:"left",push:"bottom",spacing1:25,spacing2:25}}}(jQuery),function(){"use strict";function a(a,b){return Math.abs(a-b)<1e-6}var b=function(){function b(b){var d=null,e=[],f=[],g=[],h=angular.extend({},c,b),i=this,j=null;this.center=b.center,this.zoom=h.zoom,this.draggable=h.draggable,this.dragging=!1,this.selector=h.container,this.markers=[],this.options=h.options,this.draw=function(){if(null!=i.center)if(null==d)d=new google.maps.Map(i.selector,angular.extend(i.options,{center:i.center,zoom:i.zoom,draggable:i.draggable,mapTypeId:google.maps.MapTypeId.ROADMAP})),google.maps.event.addListener(d,"dragstart",function(){i.dragging=!0
-}),google.maps.event.addListener(d,"idle",function(){i.dragging=!1}),google.maps.event.addListener(d,"drag",function(){i.dragging=!0}),google.maps.event.addListener(d,"zoom_changed",function(){i.zoom=d.getZoom(),i.center=d.getCenter()}),google.maps.event.addListener(d,"center_changed",function(){i.center=d.getCenter()}),f.length&&angular.forEach(f,function(a){google.maps.event.addListener(d,a.on,a.handler)});else{google.maps.event.trigger(d,"resize");var b=d.getCenter();a(b.lat(),i.center.lat())&&a(b.lng(),i.center.lng())||d.setCenter(i.center),d.getZoom()!=i.zoom&&d.setZoom(i.zoom)}},this.fit=function(){if(d&&e.length){var a=new google.maps.LatLngBounds;angular.forEach(e,function(b){a.extend(b.getPosition())}),d.fitBounds(a)}},this.on=function(a,b){f.push({on:a,handler:b})},this.addMarker=function(a,b,c,f,g,h,k){if(null==i.findMarker(a,b)){var l=new MarkerWithLabel({position:new google.maps.LatLng(a,b),draggable:!1,raiseOnDrag:!0,map:d,labelContent:g,labelAnchor:new google.maps.Point(25,0),labelClass:"marker-label",labelStyle:{opacity:1}});if(null!=f){var m=new google.maps.InfoWindow({content:f});google.maps.event.addListener(l,"click",function(){null!=j&&j.close(),m.open(d,l),j=m})}return e.unshift(l),i.markers.unshift({lat:a,lng:b,draggable:!1,icon:c,infoWindowContent:f,label:g,url:h,thumbnail:k}),l}},this.findMarker=function(b,c){for(var d=0;d<e.length;d++){var f=e[d].getPosition();if(a(f.lat(),b)&&a(f.lng(),c))return e[d]}return null},this.findMarkerIndex=function(b,c){for(var d=0;d<e.length;d++){var f=e[d].getPosition();if(a(f.lat(),b)&&a(f.lng(),c))return d}return-1},this.addInfoWindow=function(a,b,c){var d=new google.maps.InfoWindow({content:c,position:new google.maps.LatLng(a,b)});return g.push(d),d},this.hasMarker=function(a,b){return null!==i.findMarker(a,b)},this.getMarkerInstances=function(){return e},this.removeMarkers=function(a){var b=this;angular.forEach(a,function(a){var c=a.getPosition(),d=c.lat(),f=c.lng(),g=b.findMarkerIndex(d,f);e.splice(g,1),b.markers.splice(g,1),a.setMap(null)})}}var c={zoom:8,draggable:!1,container:null};return b}(),c=angular.module("google-maps",[]);c.directive("googleMap",["$log","$timeout","$filter",function(c,d){var e=function(a){var b=a.map;self.addInfoWindow=function(a,c,d){b.addInfoWindow(a,c,d)}};return e.$inject=["$scope","$element"],{restrict:"ECA",priority:100,transclude:!0,template:"<div class='angular-google-map' ng-transclude></div>",replace:!1,scope:{center:"=center",markers:"=markers",latitude:"=latitude",longitude:"=longitude",zoom:"=zoom",refresh:"&refresh",windows:"=windows",events:"=events"},controller:e,link:function(e,f,g){if(!angular.isDefined(e.center)||!angular.isDefined(e.center.latitude)||!angular.isDefined(e.center.longitude))return void c.error("angular-google-maps: could not find a valid center property");if(!angular.isDefined(e.zoom))return void c.error("angular-google-maps: map zoom property not set");angular.element(f).addClass("angular-google-map");var h={options:{}};g.options&&(h.options=angular.fromJson(g.options));var i=new b(angular.extend(h,{container:f[0],center:new google.maps.LatLng(e.center.latitude,e.center.longitude),draggable:"true"==g.draggable,zoom:e.zoom}));if(i.on("drag",function(){var a=i.center;d(function(){e.$apply(function(){e.center.latitude=a.lat(),e.center.longitude=a.lng()})})}),i.on("zoom_changed",function(){e.zoom!=i.zoom&&d(function(){e.$apply(function(){e.zoom=i.zoom})})}),i.on("center_changed",function(){var a=i.center;d(function(){e.$apply(function(){i.dragging||(e.center.latitude=a.lat(),e.center.longitude=a.lng())})})}),angular.isDefined(e.events))for(var j in e.events)e.events.hasOwnProperty(j)&&angular.isFunction(e.events[j])&&i.on(j,function(){e.events[j].apply(e,[i,j,arguments])});"true"==g.markClick&&!function(){var a=null;i.on("click",function(b){null==a?(a={latitude:b.latLng.lat(),longitude:b.latLng.lng()},e.markers.push(a)):(a.latitude=b.latLng.lat(),a.longitude=b.latLng.lng()),d(function(){e.latitude=a.latitude,e.longitude=a.longitude,e.$apply()})})}(),e.map=i,angular.isUndefined(e.refresh())?i.draw():e.$watch("refresh()",function(a,b){a&&!b&&i.draw()}),e.$watch("markers",function(b){d(function(){angular.forEach(b,function(a){i.hasMarker(a.latitude,a.longitude)||i.addMarker(a.latitude,a.longitude,a.icon,a.infoWindow,a.label)});var c=[];angular.forEach(i.getMarkerInstances(),function(b){for(var d=b.getPosition(),f=d.lat(),g=d.lng(),h=!1,i=0;i<e.markers.length;i++){var j=e.markers[i];a(j.latitude,f)&&a(j.longitude,g)&&(h=!0)}h||c.push(b)}),c.length&&i.removeMarkers(c),"true"==g.fit&&b&&b.length>1&&i.fit()})},!0),e.$watch("center",function(a,b){a!==b&&(i.dragging||(i.center=new google.maps.LatLng(a.latitude,a.longitude),i.draw()))},!0),e.$watch("zoom",function(a,b){a!==b&&(i.zoom=a,i.draw())})}}}])}(),function(){window.visibly={q:document,p:void 0,prefixes:["webkit","ms","o","moz","khtml"],props:["VisibilityState","visibilitychange","Hidden"],m:["focus","blur"],visibleCallbacks:[],hiddenCallbacks:[],genericCallbacks:[],_callbacks:[],cachedPrefix:"",fn:null,onVisible:function(a){"function"==typeof a&&this.visibleCallbacks.push(a)},onHidden:function(a){"function"==typeof a&&this.hiddenCallbacks.push(a)},getPrefix:function(){if(!this.cachedPrefix)for(var a=0;b=this.prefixes[a++];)if(b+this.props[2]in this.q)return this.cachedPrefix=b,this.cachedPrefix},visibilityState:function(){return this._getProp(0)},hidden:function(){return this._getProp(2)},visibilitychange:function(a){"function"==typeof a&&this.genericCallbacks.push(a);var b=this.genericCallbacks.length;if(b)if(this.cachedPrefix)for(;b--;)this.genericCallbacks[b].call(this,this.visibilityState());else for(;b--;)this.genericCallbacks[b].call(this,arguments[0])},isSupported:function(){return this.cachedPrefix+this.props[2]in this.q},_getProp:function(a){return this.q[this.cachedPrefix+this.props[a]]},_execute:function(a){if(a){this._callbacks=1==a?this.visibleCallbacks:this.hiddenCallbacks;for(var b=this._callbacks.length;b--;)this._callbacks[b]()}},_visible:function(){window.visibly._execute(1),window.visibly.visibilitychange.call(window.visibly,"visible")},_hidden:function(){window.visibly._execute(2),window.visibly.visibilitychange.call(window.visibly,"hidden")},_nativeSwitch:function(){this[this._getProp(2)?"_hidden":"_visible"]()},_listen:function(){try{this.isSupported()?this.q.addEventListener(this.cachedPrefix+this.props[1],function(){window.visibly._nativeSwitch.apply(window.visibly,arguments)},1):this.q.addEventListener?(window.addEventListener(this.m[0],this._visible,1),window.addEventListener(this.m[1],this._hidden,1)):this.q.attachEvent&&(this.q.attachEvent("onfocusin",this._visible),this.q.attachEvent("onfocusout",this._hidden))}catch(a){}},init:function(){this.getPrefix(),this._listen()}},this.visibly.init()}();
\ No newline at end of file
diff --git a/web/demos/package/app/scripts/43b68137.plugins.js b/web/demos/package/app/scripts/43b68137.plugins.js
deleted file mode 100644
index c32bd00..0000000
--- a/web/demos/package/app/scripts/43b68137.plugins.js
+++ /dev/null
@@ -1,8 +0,0 @@
-!function(a,b){function c(a){var b=a.length,c=ib.type(a);return ib.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||"function"!==c&&(0===b||"number"==typeof b&&b>0&&b-1 in a)}function d(a){var b=xb[a]={};return ib.each(a.match(kb)||[],function(a,c){b[c]=!0}),b}function e(a,c,d,e){if(ib.acceptData(a)){var f,g,h=ib.expando,i="string"==typeof c,j=a.nodeType,k=j?ib.cache:a,l=j?a[h]:a[h]&&h;if(l&&k[l]&&(e||k[l].data)||!i||d!==b)return l||(j?a[h]=l=_.pop()||ib.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=ib.noop)),("object"==typeof c||"function"==typeof c)&&(e?k[l]=ib.extend(k[l],c):k[l].data=ib.extend(k[l].data,c)),f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[ib.camelCase(c)]=d),i?(g=f[c],null==g&&(g=f[ib.camelCase(c)])):g=f,g}}function f(a,b,c){if(ib.acceptData(a)){var d,e,f,g=a.nodeType,i=g?ib.cache:a,j=g?a[ib.expando]:ib.expando;if(i[j]){if(b&&(f=c?i[j]:i[j].data)){ib.isArray(b)?b=b.concat(ib.map(b,ib.camelCase)):b in f?b=[b]:(b=ib.camelCase(b),b=b in f?[b]:b.split(" "));for(d=0,e=b.length;e>d;d++)delete f[b[d]];if(!(c?h:ib.isEmptyObject)(f))return}(c||(delete i[j].data,h(i[j])))&&(g?ib.cleanData([a],!0):ib.support.deleteExpando||i!=i.window?delete i[j]:i[j]=null)}}}function g(a,c,d){if(d===b&&1===a.nodeType){var e="data-"+c.replace(zb,"-$1").toLowerCase();if(d=a.getAttribute(e),"string"==typeof d){try{d="true"===d?!0:"false"===d?!1:"null"===d?null:+d+""===d?+d:yb.test(d)?ib.parseJSON(d):d}catch(f){}ib.data(a,c,d)}else d=b}return d}function h(a){var b;for(b in a)if(("data"!==b||!ib.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function i(){return!0}function j(){return!1}function k(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}function l(a,b,c){if(b=b||0,ib.isFunction(b))return ib.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return ib.grep(a,function(a){return a===b===c});if("string"==typeof b){var d=ib.grep(a,function(a){return 1===a.nodeType});if(Rb.test(b))return ib.filter(b,d,!c);b=ib.filter(b,d)}return ib.grep(a,function(a){return ib.inArray(a,b)>=0===c})}function m(a){var b=Ub.split("|"),c=a.createDocumentFragment();if(c.createElement)for(;b.length;)c.createElement(b.pop());return c}function n(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function o(a){var b=a.getAttributeNode("type");return a.type=(b&&b.specified)+"/"+a.type,a}function p(a){var b=ec.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function q(a,b){for(var c,d=0;null!=(c=a[d]);d++)ib._data(c,"globalEval",!b||ib._data(b[d],"globalEval"))}function r(a,b){if(1===b.nodeType&&ib.hasData(a)){var c,d,e,f=ib._data(a),g=ib._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)ib.event.add(b,c,h[c][d])}g.data&&(g.data=ib.extend({},g.data))}}function s(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!ib.support.noCloneEvent&&b[ib.expando]){e=ib._data(b);for(d in e.events)ib.removeEvent(b,d,e.handle);b.removeAttribute(ib.expando)}"script"===c&&b.text!==a.text?(o(b).text=a.text,p(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),ib.support.html5Clone&&a.innerHTML&&!ib.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&bc.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}function t(a,c){var d,e,f=0,g=typeof a.getElementsByTagName!==V?a.getElementsByTagName(c||"*"):typeof a.querySelectorAll!==V?a.querySelectorAll(c||"*"):b;if(!g)for(g=[],d=a.childNodes||a;null!=(e=d[f]);f++)!c||ib.nodeName(e,c)?g.push(e):ib.merge(g,t(e,c));return c===b||c&&ib.nodeName(a,c)?ib.merge([a],g):g}function u(a){bc.test(a.type)&&(a.defaultChecked=a.checked)}function v(a,b){if(b in a)return b;for(var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=yc.length;e--;)if(b=yc[e]+c,b in a)return b;return d}function w(a,b){return a=b||a,"none"===ib.css(a,"display")||!ib.contains(a.ownerDocument,a)}function x(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=ib._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&w(d)&&(f[g]=ib._data(d,"olddisplay",B(d.nodeName)))):f[g]||(e=w(d),(c&&"none"!==c||!e)&&ib._data(d,"olddisplay",e?c:ib.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function y(a,b,c){var d=rc.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function z(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=ib.css(a,c+xc[f],!0,e)),d?("content"===c&&(g-=ib.css(a,"padding"+xc[f],!0,e)),"margin"!==c&&(g-=ib.css(a,"border"+xc[f]+"Width",!0,e))):(g+=ib.css(a,"padding"+xc[f],!0,e),"padding"!==c&&(g+=ib.css(a,"border"+xc[f]+"Width",!0,e)));return g}function A(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=kc(a),g=ib.support.boxSizing&&"border-box"===ib.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=lc(a,b,f),(0>e||null==e)&&(e=a.style[b]),sc.test(e))return e;d=g&&(ib.support.boxSizingReliable||e===a.style[b]),e=parseFloat(e)||0}return e+z(a,b,c||(g?"border":"content"),d,f)+"px"}function B(a){var b=W,c=uc[a];return c||(c=C(a,b),"none"!==c&&c||(jc=(jc||ib("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(b.documentElement),b=(jc[0].contentWindow||jc[0].contentDocument).document,b.write("<!doctype html><html><body>"),b.close(),c=C(a,b),jc.detach()),uc[a]=c),c}function C(a,b){var c=ib(b.createElement(a)).appendTo(b.body),d=ib.css(c[0],"display");return c.remove(),d}function D(a,b,c,d){var e;if(ib.isArray(b))ib.each(b,function(b,e){c||Ac.test(a)?d(a,e):D(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==ib.type(b))d(a,b);else for(e in b)D(a+"["+e+"]",b[e],c,d)}function E(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(kb)||[];if(ib.isFunction(c))for(;d=f[e++];)"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function F(a,b,c,d){function e(h){var i;return f[h]=!0,ib.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||g||f[j]?g?!(i=j):void 0:(b.dataTypes.unshift(j),e(j),!1)}),i}var f={},g=a===Rc;return e(b.dataTypes[0])||!f["*"]&&e("*")}function G(a,c){var d,e,f=ib.ajaxSettings.flatOptions||{};for(e in c)c[e]!==b&&((f[e]?a:d||(d={}))[e]=c[e]);return d&&ib.extend(!0,a,d),a}function H(a,c,d){var e,f,g,h,i=a.contents,j=a.dataTypes,k=a.responseFields;for(h in k)h in d&&(c[k[h]]=d[h]);for(;"*"===j[0];)j.shift(),f===b&&(f=a.mimeType||c.getResponseHeader("Content-Type"));if(f)for(h in i)if(i[h]&&i[h].test(f)){j.unshift(h);break}if(j[0]in d)g=j[0];else{for(h in d){if(!j[0]||a.converters[h+" "+j[0]]){g=h;break}e||(e=h)}g=g||e}return g?(g!==j[0]&&j.unshift(g),d[g]):void 0}function I(a,b){var c,d,e,f,g={},h=0,i=a.dataTypes.slice(),j=i[0];if(a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i[1])for(e in a.converters)g[e.toLowerCase()]=a.converters[e];for(;d=i[++h];)if("*"!==d){if("*"!==j&&j!==d){if(e=g[j+" "+d]||g["* "+d],!e)for(c in g)if(f=c.split(" "),f[1]===d&&(e=g[j+" "+f[0]]||g["* "+f[0]])){e===!0?e=g[c]:g[c]!==!0&&(d=f[0],i.splice(h--,0,d));break}if(e!==!0)if(e&&a["throws"])b=e(b);else try{b=e(b)}catch(k){return{state:"parsererror",error:e?k:"No conversion from "+j+" to "+d}}}j=d}return{state:"success",data:b}}function J(){try{return new a.XMLHttpRequest}catch(b){}}function K(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function L(){return setTimeout(function(){$c=b}),$c=ib.now()}function M(a,b){ib.each(b,function(b,c){for(var d=(ed[b]||[]).concat(ed["*"]),e=0,f=d.length;f>e;e++)if(d[e].call(a,b,c))return})}function N(a,b,c){var d,e,f=0,g=dd.length,h=ib.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$c||L(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:ib.extend({},b),opts:ib.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$c||L(),duration:c.duration,tweens:[],createTween:function(b,c){var d=ib.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(O(k,j.opts.specialEasing);g>f;f++)if(d=dd[f].call(j,a,k,j.opts))return d;return M(j,k),ib.isFunction(j.opts.start)&&j.opts.start.call(a,j),ib.fx.timer(ib.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function O(a,b){var c,d,e,f,g;for(e in a)if(d=ib.camelCase(e),f=b[d],c=a[e],ib.isArray(c)&&(f=c[1],c=a[e]=c[0]),e!==d&&(a[d]=c,delete a[e]),g=ib.cssHooks[d],g&&"expand"in g){c=g.expand(c),delete a[d];for(e in c)e in a||(a[e]=c[e],b[e]=f)}else b[d]=f}function P(a,b,c){var d,e,f,g,h,i,j,k,l,m=this,n=a.style,o={},p=[],q=a.nodeType&&w(a);c.queue||(k=ib._queueHooks(a,"fx"),null==k.unqueued&&(k.unqueued=0,l=k.empty.fire,k.empty.fire=function(){k.unqueued||l()}),k.unqueued++,m.always(function(){m.always(function(){k.unqueued--,ib.queue(a,"fx").length||k.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[n.overflow,n.overflowX,n.overflowY],"inline"===ib.css(a,"display")&&"none"===ib.css(a,"float")&&(ib.support.inlineBlockNeedsLayout&&"inline"!==B(a.nodeName)?n.zoom=1:n.display="inline-block")),c.overflow&&(n.overflow="hidden",ib.support.shrinkWrapBlocks||m.always(function(){n.overflow=c.overflow[0],n.overflowX=c.overflow[1],n.overflowY=c.overflow[2]}));for(e in b)if(g=b[e],ad.exec(g)){if(delete b[e],i=i||"toggle"===g,g===(q?"hide":"show"))continue;p.push(e)}if(f=p.length){h=ib._data(a,"fxshow")||ib._data(a,"fxshow",{}),"hidden"in h&&(q=h.hidden),i&&(h.hidden=!q),q?ib(a).show():m.done(function(){ib(a).hide()}),m.done(function(){var b;ib._removeData(a,"fxshow");for(b in o)ib.style(a,b,o[b])});for(e=0;f>e;e++)d=p[e],j=m.createTween(d,q?h[d]:0),o[d]=h[d]||ib.style(a,d),d in h||(h[d]=j.start,q&&(j.end=j.start,j.start="width"===d||"height"===d?1:0))}}function Q(a,b,c,d,e){return new Q.prototype.init(a,b,c,d,e)}function R(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=xc[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function S(a){return ib.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}var T,U,V=typeof b,W=a.document,X=a.location,Y=a.jQuery,Z=a.$,$={},_=[],ab="1.9.1",bb=_.concat,cb=_.push,db=_.slice,eb=_.indexOf,fb=$.toString,gb=$.hasOwnProperty,hb=ab.trim,ib=function(a,b){return new ib.fn.init(a,b,U)},jb=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,kb=/\S+/g,lb=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,mb=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,nb=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,ob=/^[\],:{}\s]*$/,pb=/(?:^|:|,)(?:\s*\[)+/g,qb=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,rb=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,sb=/^-ms-/,tb=/-([\da-z])/gi,ub=function(a,b){return b.toUpperCase()},vb=function(a){(W.addEventListener||"load"===a.type||"complete"===W.readyState)&&(wb(),ib.ready())},wb=function(){W.addEventListener?(W.removeEventListener("DOMContentLoaded",vb,!1),a.removeEventListener("load",vb,!1)):(W.detachEvent("onreadystatechange",vb),a.detachEvent("onload",vb))};ib.fn=ib.prototype={jquery:ab,constructor:ib,init:function(a,c,d){var e,f;if(!a)return this;if("string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:mb.exec(a),!e||!e[1]&&c)return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a);if(e[1]){if(c=c instanceof ib?c[0]:c,ib.merge(this,ib.parseHTML(e[1],c&&c.nodeType?c.ownerDocument||c:W,!0)),nb.test(e[1])&&ib.isPlainObject(c))for(e in c)ib.isFunction(this[e])?this[e](c[e]):this.attr(e,c[e]);return this}if(f=W.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return d.find(a);this.length=1,this[0]=f}return this.context=W,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):ib.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),ib.makeArray(a,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return db.call(this)},get:function(a){return null==a?this.toArray():0>a?this[this.length+a]:this[a]},pushStack:function(a){var b=ib.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return ib.each(this,a,b)},ready:function(a){return ib.ready.promise().done(a),this},slice:function(){return this.pushStack(db.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},map:function(a){return this.pushStack(ib.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:cb,sort:[].sort,splice:[].splice},ib.fn.init.prototype=ib.fn,ib.extend=ib.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),"object"==typeof h||ib.isFunction(h)||(h={}),j===i&&(h=this,--i);j>i;i++)if(null!=(f=arguments[i]))for(e in f)a=h[e],d=f[e],h!==d&&(k&&d&&(ib.isPlainObject(d)||(c=ib.isArray(d)))?(c?(c=!1,g=a&&ib.isArray(a)?a:[]):g=a&&ib.isPlainObject(a)?a:{},h[e]=ib.extend(k,g,d)):d!==b&&(h[e]=d));return h},ib.extend({noConflict:function(b){return a.$===ib&&(a.$=Z),b&&a.jQuery===ib&&(a.jQuery=Y),ib},isReady:!1,readyWait:1,holdReady:function(a){a?ib.readyWait++:ib.ready(!0)},ready:function(a){if(a===!0?!--ib.readyWait:!ib.isReady){if(!W.body)return setTimeout(ib.ready);ib.isReady=!0,a!==!0&&--ib.readyWait>0||(T.resolveWith(W,[ib]),ib.fn.trigger&&ib(W).trigger("ready").off("ready"))}},isFunction:function(a){return"function"===ib.type(a)},isArray:Array.isArray||function(a){return"array"===ib.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return null==a?String(a):"object"==typeof a||"function"==typeof a?$[fb.call(a)]||"object":typeof a},isPlainObject:function(a){if(!a||"object"!==ib.type(a)||a.nodeType||ib.isWindow(a))return!1;try{if(a.constructor&&!gb.call(a,"constructor")&&!gb.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||gb.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||W;var d=nb.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=ib.buildFragment([a],b,e),e&&ib(e).remove(),ib.merge([],d.childNodes))},parseJSON:function(b){return a.JSON&&a.JSON.parse?a.JSON.parse(b):null===b?b:"string"==typeof b&&(b=ib.trim(b),b&&ob.test(b.replace(qb,"@").replace(rb,"]").replace(pb,"")))?new Function("return "+b)():void ib.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||"string"!=typeof c)return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return d&&d.documentElement&&!d.getElementsByTagName("parsererror").length||ib.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&ib.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(sb,"ms-").replace(tb,ub)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,d){var e,f=0,g=a.length,h=c(a);if(d){if(h)for(;g>f&&(e=b.apply(a[f],d),e!==!1);f++);else for(f in a)if(e=b.apply(a[f],d),e===!1)break}else if(h)for(;g>f&&(e=b.call(a[f],f,a[f]),e!==!1);f++);else for(f in a)if(e=b.call(a[f],f,a[f]),e===!1)break;return a},trim:hb&&!hb.call(" ")?function(a){return null==a?"":hb.call(a)}:function(a){return null==a?"":(a+"").replace(lb,"")},makeArray:function(a,b){var d=b||[];return null!=a&&(c(Object(a))?ib.merge(d,"string"==typeof a?[a]:a):cb.call(d,a)),d},inArray:function(a,b,c){var d;if(b){if(eb)return eb.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=c.length,e=a.length,f=0;if("number"==typeof d)for(;d>f;f++)a[e++]=c[f];else for(;c[f]!==b;)a[e++]=c[f++];return a.length=e,a},grep:function(a,b,c){var d,e=[],f=0,g=a.length;for(c=!!c;g>f;f++)d=!!b(a[f],f),c!==d&&e.push(a[f]);return e},map:function(a,b,d){var e,f=0,g=a.length,h=c(a),i=[];if(h)for(;g>f;f++)e=b(a[f],f,d),null!=e&&(i[i.length]=e);else for(f in a)e=b(a[f],f,d),null!=e&&(i[i.length]=e);return bb.apply([],i)},guid:1,proxy:function(a,c){var d,e,f;return"string"==typeof c&&(f=a[c],c=a,a=f),ib.isFunction(a)?(d=db.call(arguments,2),e=function(){return a.apply(c||this,d.concat(db.call(arguments)))},e.guid=a.guid=a.guid||ib.guid++,e):b},access:function(a,c,d,e,f,g,h){var i=0,j=a.length,k=null==d;if("object"===ib.type(d)){f=!0;for(i in d)ib.access(a,c,i,d[i],!0,g,h)}else if(e!==b&&(f=!0,ib.isFunction(e)||(h=!0),k&&(h?(c.call(a,e),c=null):(k=c,c=function(a,b,c){return k.call(ib(a),c)})),c))for(;j>i;i++)c(a[i],d,h?e:e.call(a[i],i,c(a[i],d)));return f?a:k?c.call(a):j?c(a[0],d):g},now:function(){return(new Date).getTime()}}),ib.ready.promise=function(b){if(!T)if(T=ib.Deferred(),"complete"===W.readyState)setTimeout(ib.ready);else if(W.addEventListener)W.addEventListener("DOMContentLoaded",vb,!1),a.addEventListener("load",vb,!1);else{W.attachEvent("onreadystatechange",vb),a.attachEvent("onload",vb);var c=!1;try{c=null==a.frameElement&&W.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!ib.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}wb(),ib.ready()}}()}return T.promise(b)},ib.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){$["[object "+b+"]"]=b.toLowerCase()}),U=ib(W);var xb={};ib.Callbacks=function(a){a="string"==typeof a?xb[a]||d(a):ib.extend({},a);var c,e,f,g,h,i,j=[],k=!a.once&&[],l=function(b){for(e=a.memory&&b,f=!0,h=i||0,i=0,g=j.length,c=!0;j&&g>h;h++)if(j[h].apply(b[0],b[1])===!1&&a.stopOnFalse){e=!1;break}c=!1,j&&(k?k.length&&l(k.shift()):e?j=[]:m.disable())},m={add:function(){if(j){var b=j.length;!function d(b){ib.each(b,function(b,c){var e=ib.type(c);"function"===e?a.unique&&m.has(c)||j.push(c):c&&c.length&&"string"!==e&&d(c)})}(arguments),c?g=j.length:e&&(i=b,l(e))}return this},remove:function(){return j&&ib.each(arguments,function(a,b){for(var d;(d=ib.inArray(b,j,d))>-1;)j.splice(d,1),c&&(g>=d&&g--,h>=d&&h--)}),this},has:function(a){return a?ib.inArray(a,j)>-1:!(!j||!j.length)},empty:function(){return j=[],this},disable:function(){return j=k=e=b,this},disabled:function(){return!j},lock:function(){return k=b,e||m.disable(),this},locked:function(){return!k},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],!j||f&&!k||(c?k.push(b):l(b)),this},fire:function(){return m.fireWith(this,arguments),this},fired:function(){return!!f}};return m},ib.extend({Deferred:function(a){var b=[["resolve","done",ib.Callbacks("once memory"),"resolved"],["reject","fail",ib.Callbacks("once memory"),"rejected"],["notify","progress",ib.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return ib.Deferred(function(c){ib.each(b,function(b,f){var g=f[0],h=ib.isFunction(a[b])&&a[b];e[f[1]](function(){var a=h&&h.apply(this,arguments);a&&ib.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[g+"With"](this===d?c.promise():this,h?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?ib.extend(a,d):d}},e={};return d.pipe=d.then,ib.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b,c,d,e=0,f=db.call(arguments),g=f.length,h=1!==g||a&&ib.isFunction(a.promise)?g:0,i=1===h?a:ib.Deferred(),j=function(a,c,d){return function(e){c[a]=this,d[a]=arguments.length>1?db.call(arguments):e,d===b?i.notifyWith(c,d):--h||i.resolveWith(c,d)}};if(g>1)for(b=new Array(g),c=new Array(g),d=new Array(g);g>e;e++)f[e]&&ib.isFunction(f[e].promise)?f[e].promise().done(j(e,d,f)).fail(i.reject).progress(j(e,c,b)):--h;return h||i.resolveWith(d,f),i.promise()}}),ib.support=function(){var b,c,d,e,f,g,h,i,j,k,l=W.createElement("div");if(l.setAttribute("className","t"),l.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",c=l.getElementsByTagName("*"),d=l.getElementsByTagName("a")[0],!c||!d||!c.length)return{};f=W.createElement("select"),h=f.appendChild(W.createElement("option")),e=l.getElementsByTagName("input")[0],d.style.cssText="top:1px;float:left;opacity:.5",b={getSetAttribute:"t"!==l.className,leadingWhitespace:3===l.firstChild.nodeType,tbody:!l.getElementsByTagName("tbody").length,htmlSerialize:!!l.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:"/a"===d.getAttribute("href"),opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:!!e.value,optSelected:h.selected,enctype:!!W.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==W.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===W.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},e.checked=!0,b.noCloneChecked=e.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!h.disabled;try{delete l.test}catch(m){b.deleteExpando=!1}e=W.createElement("input"),e.setAttribute("value",""),b.input=""===e.getAttribute("value"),e.value="t",e.setAttribute("type","radio"),b.radioValue="t"===e.value,e.setAttribute("checked","t"),e.setAttribute("name","t"),g=W.createDocumentFragment(),g.appendChild(e),b.appendChecked=e.checked,b.checkClone=g.cloneNode(!0).cloneNode(!0).lastChild.checked,l.attachEvent&&(l.attachEvent("onclick",function(){b.noCloneEvent=!1}),l.cloneNode(!0).click());for(k in{submit:!0,change:!0,focusin:!0})l.setAttribute(i="on"+k,"t"),b[k+"Bubbles"]=i in a||l.attributes[i].expando===!1;return l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",b.clearCloneStyle="content-box"===l.style.backgroundClip,ib(function(){var c,d,e,f="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",g=W.getElementsByTagName("body")[0];g&&(c=W.createElement("div"),c.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",g.appendChild(c).appendChild(l),l.innerHTML="<table><tr><td></td><td>t</td></tr></table>",e=l.getElementsByTagName("td"),e[0].style.cssText="padding:0;margin:0;border:0;display:none",j=0===e[0].offsetHeight,e[0].style.display="",e[1].style.display="none",b.reliableHiddenOffsets=j&&0===e[0].offsetHeight,l.innerHTML="",l.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=4===l.offsetWidth,b.doesNotIncludeMarginInBodyOffset=1!==g.offsetTop,a.getComputedStyle&&(b.pixelPosition="1%"!==(a.getComputedStyle(l,null)||{}).top,b.boxSizingReliable="4px"===(a.getComputedStyle(l,null)||{width:"4px"}).width,d=l.appendChild(W.createElement("div")),d.style.cssText=l.style.cssText=f,d.style.marginRight=d.style.width="0",l.style.width="1px",b.reliableMarginRight=!parseFloat((a.getComputedStyle(d,null)||{}).marginRight)),typeof l.style.zoom!==V&&(l.innerHTML="",l.style.cssText=f+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=3===l.offsetWidth,l.style.display="block",l.innerHTML="<div></div>",l.firstChild.style.width="5px",b.shrinkWrapBlocks=3!==l.offsetWidth,b.inlineBlockNeedsLayout&&(g.style.zoom=1)),g.removeChild(c),c=l=e=d=null)}),c=f=g=h=d=e=null,b}();var yb=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,zb=/([A-Z])/g;ib.extend({cache:{},expando:"jQuery"+(ab+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?ib.cache[a[ib.expando]]:a[ib.expando],!!a&&!h(a)},data:function(a,b,c){return e(a,b,c)},removeData:function(a,b){return f(a,b)},_data:function(a,b,c){return e(a,b,c,!0)},_removeData:function(a,b){return f(a,b,!0)},acceptData:function(a){if(a.nodeType&&1!==a.nodeType&&9!==a.nodeType)return!1;var b=a.nodeName&&ib.noData[a.nodeName.toLowerCase()];return!b||b!==!0&&a.getAttribute("classid")===b}}),ib.fn.extend({data:function(a,c){var d,e,f=this[0],h=0,i=null;if(a===b){if(this.length&&(i=ib.data(f),1===f.nodeType&&!ib._data(f,"parsedAttrs"))){for(d=f.attributes;h<d.length;h++)e=d[h].name,e.indexOf("data-")||(e=ib.camelCase(e.slice(5)),g(f,e,i[e]));ib._data(f,"parsedAttrs",!0)}return i}return"object"==typeof a?this.each(function(){ib.data(this,a)}):ib.access(this,function(c){return c===b?f?g(f,a,ib.data(f,a)):null:void this.each(function(){ib.data(this,a,c)})},null,c,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){ib.removeData(this,a)})}}),ib.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=ib._data(a,b),c&&(!d||ib.isArray(c)?d=ib._data(a,b,ib.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=ib.queue(a,b),d=c.length,e=c.shift(),f=ib._queueHooks(a,b),g=function(){ib.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),f.cur=e,e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return ib._data(a,c)||ib._data(a,c,{empty:ib.Callbacks("once memory").add(function(){ib._removeData(a,b+"queue"),ib._removeData(a,c)})})}}),ib.fn.extend({queue:function(a,c){var d=2;return"string"!=typeof a&&(c=a,a="fx",d--),arguments.length<d?ib.queue(this[0],a):c===b?this:this.each(function(){var b=ib.queue(this,a,c);ib._queueHooks(this,a),"fx"===a&&"inprogress"!==b[0]&&ib.dequeue(this,a)})},dequeue:function(a){return this.each(function(){ib.dequeue(this,a)})},delay:function(a,b){return a=ib.fx?ib.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){var d,e=1,f=ib.Deferred(),g=this,h=this.length,i=function(){--e||f.resolveWith(g,[g])};for("string"!=typeof a&&(c=a,a=b),a=a||"fx";h--;)d=ib._data(g[h],a+"queueHooks"),d&&d.empty&&(e++,d.empty.add(i));return i(),f.promise(c)}});var Ab,Bb,Cb=/[\t\r\n]/g,Db=/\r/g,Eb=/^(?:input|select|textarea|button|object)$/i,Fb=/^(?:a|area)$/i,Gb=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,Hb=/^(?:checked|selected)$/i,Ib=ib.support.getSetAttribute,Jb=ib.support.input;ib.fn.extend({attr:function(a,b){return ib.access(this,ib.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){ib.removeAttr(this,a)})},prop:function(a,b){return ib.access(this,ib.prop,a,b,arguments.length>1)},removeProp:function(a){return a=ib.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g=0,h=this.length,i="string"==typeof a&&a;if(ib.isFunction(a))return this.each(function(b){ib(this).addClass(a.call(this,b,this.className))});if(i)for(b=(a||"").match(kb)||[];h>g;g++)if(c=this[g],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(Cb," "):" ")){for(f=0;e=b[f++];)d.indexOf(" "+e+" ")<0&&(d+=e+" ");c.className=ib.trim(d)}return this},removeClass:function(a){var b,c,d,e,f,g=0,h=this.length,i=0===arguments.length||"string"==typeof a&&a;if(ib.isFunction(a))return this.each(function(b){ib(this).removeClass(a.call(this,b,this.className))});if(i)for(b=(a||"").match(kb)||[];h>g;g++)if(c=this[g],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(Cb," "):"")){for(f=0;e=b[f++];)for(;d.indexOf(" "+e+" ")>=0;)d=d.replace(" "+e+" "," ");c.className=a?ib.trim(d):""}return this},toggleClass:function(a,b){var c=typeof a,d="boolean"==typeof b;return this.each(ib.isFunction(a)?function(c){ib(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c)for(var e,f=0,g=ib(this),h=b,i=a.match(kb)||[];e=i[f++];)h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e);else(c===V||"boolean"===c)&&(this.className&&ib._data(this,"__className__",this.className),this.className=this.className||a===!1?"":ib._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(Cb," ").indexOf(b)>=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];{if(arguments.length)return e=ib.isFunction(a),this.each(function(c){var f,g=ib(this);1===this.nodeType&&(f=e?a.call(this,c,g.val()):a,null==f?f="":"number"==typeof f?f+="":ib.isArray(f)&&(f=ib.map(f,function(a){return null==a?"":a+""})),d=ib.valHooks[this.type]||ib.valHooks[this.nodeName.toLowerCase()],d&&"set"in d&&d.set(this,f,"value")!==b||(this.value=f))});if(f)return d=ib.valHooks[f.type]||ib.valHooks[f.nodeName.toLowerCase()],d&&"get"in d&&(c=d.get(f,"value"))!==b?c:(c=f.value,"string"==typeof c?c.replace(Db,""):null==c?"":c)}}}),ib.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(ib.support.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&ib.nodeName(c.parentNode,"optgroup"))){if(b=ib(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c=ib.makeArray(b);return ib(a).find("option").each(function(){this.selected=ib.inArray(ib(this).val(),c)>=0}),c.length||(a.selectedIndex=-1),c}}},attr:function(a,c,d){var e,f,g,h=a.nodeType;if(a&&3!==h&&8!==h&&2!==h)return typeof a.getAttribute===V?ib.prop(a,c,d):(f=1!==h||!ib.isXMLDoc(a),f&&(c=c.toLowerCase(),e=ib.attrHooks[c]||(Gb.test(c)?Bb:Ab)),d===b?e&&f&&"get"in e&&null!==(g=e.get(a,c))?g:(typeof a.getAttribute!==V&&(g=a.getAttribute(c)),null==g?b:g):null!==d?e&&f&&"set"in e&&(g=e.set(a,d,c))!==b?g:(a.setAttribute(c,d+""),d):void ib.removeAttr(a,c))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(kb);if(f&&1===a.nodeType)for(;c=f[e++];)d=ib.propFix[c]||c,Gb.test(c)?!Ib&&Hb.test(c)?a[ib.camelCase("default-"+c)]=a[d]=!1:a[d]=!1:ib.attr(a,c,""),a.removeAttribute(Ib?c:d)},attrHooks:{type:{set:function(a,b){if(!ib.support.radioValue&&"radio"===b&&ib.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,f,g,h=a.nodeType;if(a&&3!==h&&8!==h&&2!==h)return g=1!==h||!ib.isXMLDoc(a),g&&(c=ib.propFix[c]||c,f=ib.propHooks[c]),d!==b?f&&"set"in f&&(e=f.set(a,d,c))!==b?e:a[c]=d:f&&"get"in f&&null!==(e=f.get(a,c))?e:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):Eb.test(a.nodeName)||Fb.test(a.nodeName)&&a.href?0:b}}}}),Bb={get:function(a,c){var d=ib.prop(a,c),e="boolean"==typeof d&&a.getAttribute(c),f="boolean"==typeof d?Jb&&Ib?null!=e:Hb.test(c)?a[ib.camelCase("default-"+c)]:!!e:a.getAttributeNode(c);return f&&f.value!==!1?c.toLowerCase():b
-},set:function(a,b,c){return b===!1?ib.removeAttr(a,c):Jb&&Ib||!Hb.test(c)?a.setAttribute(!Ib&&ib.propFix[c]||c,c):a[ib.camelCase("default-"+c)]=a[c]=!0,c}},Jb&&Ib||(ib.attrHooks.value={get:function(a,c){var d=a.getAttributeNode(c);return ib.nodeName(a,"input")?a.defaultValue:d&&d.specified?d.value:b},set:function(a,b,c){return ib.nodeName(a,"input")?void(a.defaultValue=b):Ab&&Ab.set(a,b,c)}}),Ib||(Ab=ib.valHooks.button={get:function(a,c){var d=a.getAttributeNode(c);return d&&("id"===c||"name"===c||"coords"===c?""!==d.value:d.specified)?d.value:b},set:function(a,c,d){var e=a.getAttributeNode(d);return e||a.setAttributeNode(e=a.ownerDocument.createAttribute(d)),e.value=c+="","value"===d||c===a.getAttribute(d)?c:b}},ib.attrHooks.contenteditable={get:Ab.get,set:function(a,b,c){Ab.set(a,""===b?!1:b,c)}},ib.each(["width","height"],function(a,b){ib.attrHooks[b]=ib.extend(ib.attrHooks[b],{set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}})})),ib.support.hrefNormalized||(ib.each(["href","src","width","height"],function(a,c){ib.attrHooks[c]=ib.extend(ib.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return null==d?b:d}})}),ib.each(["href","src"],function(a,b){ib.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}})),ib.support.style||(ib.attrHooks.style={get:function(a){return a.style.cssText||b},set:function(a,b){return a.style.cssText=b+""}}),ib.support.optSelected||(ib.propHooks.selected=ib.extend(ib.propHooks.selected,{get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}})),ib.support.enctype||(ib.propFix.enctype="encoding"),ib.support.checkOn||ib.each(["radio","checkbox"],function(){ib.valHooks[this]={get:function(a){return null===a.getAttribute("value")?"on":a.value}}}),ib.each(["radio","checkbox"],function(){ib.valHooks[this]=ib.extend(ib.valHooks[this],{set:function(a,b){return ib.isArray(b)?a.checked=ib.inArray(ib(a).val(),b)>=0:void 0}})});var Kb=/^(?:input|select|textarea)$/i,Lb=/^key/,Mb=/^(?:mouse|contextmenu)|click/,Nb=/^(?:focusinfocus|focusoutblur)$/,Ob=/^([^.]*)(?:\.(.+)|)$/;ib.event={global:{},add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,p,q,r=ib._data(a);if(r){for(d.handler&&(j=d,d=j.handler,f=j.selector),d.guid||(d.guid=ib.guid++),(h=r.events)||(h=r.events={}),(l=r.handle)||(l=r.handle=function(a){return typeof ib===V||a&&ib.event.triggered===a.type?b:ib.event.dispatch.apply(l.elem,arguments)},l.elem=a),c=(c||"").match(kb)||[""],i=c.length;i--;)g=Ob.exec(c[i])||[],o=q=g[1],p=(g[2]||"").split(".").sort(),k=ib.event.special[o]||{},o=(f?k.delegateType:k.bindType)||o,k=ib.event.special[o]||{},m=ib.extend({type:o,origType:q,data:e,handler:d,guid:d.guid,selector:f,needsContext:f&&ib.expr.match.needsContext.test(f),namespace:p.join(".")},j),(n=h[o])||(n=h[o]=[],n.delegateCount=0,k.setup&&k.setup.call(a,e,p,l)!==!1||(a.addEventListener?a.addEventListener(o,l,!1):a.attachEvent&&a.attachEvent("on"+o,l))),k.add&&(k.add.call(a,m),m.handler.guid||(m.handler.guid=d.guid)),f?n.splice(n.delegateCount++,0,m):n.push(m),ib.event.global[o]=!0;a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=ib.hasData(a)&&ib._data(a);if(q&&(k=q.events)){for(b=(b||"").match(kb)||[""],j=b.length;j--;)if(h=Ob.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){for(l=ib.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=k[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;f--;)g=m[f],!e&&p!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||ib.removeEvent(a,n,q.handle),delete k[n])}else for(n in k)ib.event.remove(a,n+b[j],c,d,!0);ib.isEmptyObject(k)&&(delete q.handle,ib._removeData(a,"events"))}},trigger:function(c,d,e,f){var g,h,i,j,k,l,m,n=[e||W],o=gb.call(c,"type")?c.type:c,p=gb.call(c,"namespace")?c.namespace.split("."):[];if(i=l=e=e||W,3!==e.nodeType&&8!==e.nodeType&&!Nb.test(o+ib.event.triggered)&&(o.indexOf(".")>=0&&(p=o.split("."),o=p.shift(),p.sort()),h=o.indexOf(":")<0&&"on"+o,c=c[ib.expando]?c:new ib.Event(o,"object"==typeof c&&c),c.isTrigger=!0,c.namespace=p.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,c.result=b,c.target||(c.target=e),d=null==d?[c]:ib.makeArray(d,[c]),k=ib.event.special[o]||{},f||!k.trigger||k.trigger.apply(e,d)!==!1)){if(!f&&!k.noBubble&&!ib.isWindow(e)){for(j=k.delegateType||o,Nb.test(j+o)||(i=i.parentNode);i;i=i.parentNode)n.push(i),l=i;l===(e.ownerDocument||W)&&n.push(l.defaultView||l.parentWindow||a)}for(m=0;(i=n[m++])&&!c.isPropagationStopped();)c.type=m>1?j:k.bindType||o,g=(ib._data(i,"events")||{})[c.type]&&ib._data(i,"handle"),g&&g.apply(i,d),g=h&&i[h],g&&ib.acceptData(i)&&g.apply&&g.apply(i,d)===!1&&c.preventDefault();if(c.type=o,!(f||c.isDefaultPrevented()||k._default&&k._default.apply(e.ownerDocument,d)!==!1||"click"===o&&ib.nodeName(e,"a")||!ib.acceptData(e)||!h||!e[o]||ib.isWindow(e))){l=e[h],l&&(e[h]=null),ib.event.triggered=o;try{e[o]()}catch(q){}ib.event.triggered=b,l&&(e[h]=l)}return c.result}},dispatch:function(a){a=ib.event.fix(a);var c,d,e,f,g,h=[],i=db.call(arguments),j=(ib._data(this,"events")||{})[a.type]||[],k=ib.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){for(h=ib.event.handlers.call(this,a,j),c=0;(f=h[c++])&&!a.isPropagationStopped();)for(a.currentTarget=f.elem,g=0;(e=f.handlers[g++])&&!a.isImmediatePropagationStopped();)(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,d=((ib.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),d!==b&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()));return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,c){var d,e,f,g,h=[],i=c.delegateCount,j=a.target;if(i&&j.nodeType&&(!a.button||"click"!==a.type))for(;j!=this;j=j.parentNode||this)if(1===j.nodeType&&(j.disabled!==!0||"click"!==a.type)){for(f=[],g=0;i>g;g++)e=c[g],d=e.selector+" ",f[d]===b&&(f[d]=e.needsContext?ib(d,this).index(j)>=0:ib.find(d,this,null,[j]).length),f[d]&&f.push(e);f.length&&h.push({elem:j,handlers:f})}return i<c.length&&h.push({elem:this,handlers:c.slice(i)}),h},fix:function(a){if(a[ib.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];for(g||(this.fixHooks[e]=g=Mb.test(e)?this.mouseHooks:Lb.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new ib.Event(f),b=d.length;b--;)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||W),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,c){var d,e,f,g=c.button,h=c.fromElement;return null==a.pageX&&null!=c.clientX&&(e=a.target.ownerDocument||W,f=e.documentElement,d=e.body,a.pageX=c.clientX+(f&&f.scrollLeft||d&&d.scrollLeft||0)-(f&&f.clientLeft||d&&d.clientLeft||0),a.pageY=c.clientY+(f&&f.scrollTop||d&&d.scrollTop||0)-(f&&f.clientTop||d&&d.clientTop||0)),!a.relatedTarget&&h&&(a.relatedTarget=h===a.target?c.toElement:h),a.which||g===b||(a.which=1&g?1:2&g?3:4&g?2:0),a}},special:{load:{noBubble:!0},click:{trigger:function(){return ib.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0}},focus:{trigger:function(){if(this!==W.activeElement&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===W.activeElement&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},beforeunload:{postDispatch:function(a){a.result!==b&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=ib.extend(new ib.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?ib.event.trigger(e,null,b):ib.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},ib.removeEvent=W.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===V&&(a[d]=null),a.detachEvent(d,c))},ib.Event=function(a,b){return this instanceof ib.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?i:j):this.type=a,b&&ib.extend(this,b),this.timeStamp=a&&a.timeStamp||ib.now(),void(this[ib.expando]=!0)):new ib.Event(a,b)},ib.Event.prototype={isDefaultPrevented:j,isPropagationStopped:j,isImmediatePropagationStopped:j,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=i,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=i,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i,this.stopPropagation()}},ib.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){ib.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!ib.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),ib.support.submitBubbles||(ib.event.special.submit={setup:function(){return ib.nodeName(this,"form")?!1:void ib.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=ib.nodeName(c,"input")||ib.nodeName(c,"button")?c.form:b;d&&!ib._data(d,"submitBubbles")&&(ib.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),ib._data(d,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&ib.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return ib.nodeName(this,"form")?!1:void ib.event.remove(this,"._submit")}}),ib.support.changeBubbles||(ib.event.special.change={setup:function(){return Kb.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(ib.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),ib.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),ib.event.simulate("change",this,a,!0)})),!1):void ib.event.add(this,"beforeactivate._change",function(a){var b=a.target;Kb.test(b.nodeName)&&!ib._data(b,"changeBubbles")&&(ib.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||ib.event.simulate("change",this.parentNode,a,!0)}),ib._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return ib.event.remove(this,"._change"),!Kb.test(this.nodeName)}}),ib.support.focusinBubbles||ib.each({focus:"focusin",blur:"focusout"},function(a,b){var c=0,d=function(a){ib.event.simulate(b,a.target,ib.event.fix(a),!0)};ib.event.special[b]={setup:function(){0===c++&&W.addEventListener(a,d,!0)},teardown:function(){0===--c&&W.removeEventListener(a,d,!0)}}}),ib.fn.extend({on:function(a,c,d,e,f){var g,h;if("object"==typeof a){"string"!=typeof c&&(d=d||c,c=b);for(g in a)this.on(g,c,d,a[g],f);return this}if(null==d&&null==e?(e=c,d=c=b):null==e&&("string"==typeof c?(e=d,d=b):(e=d,d=c,c=b)),e===!1)e=j;else if(!e)return this;return 1===f&&(h=e,e=function(a){return ib().off(a),h.apply(this,arguments)},e.guid=h.guid||(h.guid=ib.guid++)),this.each(function(){ib.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){var e,f;if(a&&a.preventDefault&&a.handleObj)return e=a.handleObj,ib(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler),this;if("object"==typeof a){for(f in a)this.off(f,c,a[f]);return this}return(c===!1||"function"==typeof c)&&(d=c,c=b),d===!1&&(d=j),this.each(function(){ib.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)},trigger:function(a,b){return this.each(function(){ib.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?ib.event.trigger(a,b,c,!0):void 0}}),function(a,b){function c(a){return ob.test(a+"")}function d(){var a,b=[];return a=function(c,d){return b.push(c+=" ")>y.cacheLength&&delete a[b.shift()],a[c]=d}}function e(a){return a[N]=!0,a}function f(a){var b=F.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}}function g(a,b,c,d){var e,f,g,h,i,j,k,n,o,p;if((b?b.ownerDocument||b:O)!==F&&E(b),b=b||F,c=c||[],!a||"string"!=typeof a)return c;if(1!==(h=b.nodeType)&&9!==h)return[];if(!H&&!d){if(e=pb.exec(a))if(g=e[1]){if(9===h){if(f=b.getElementById(g),!f||!f.parentNode)return c;if(f.id===g)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(g))&&L(b,f)&&f.id===g)return c.push(f),c}else{if(e[2])return Z.apply(c,$.call(b.getElementsByTagName(a),0)),c;if((g=e[3])&&P.getByClassName&&b.getElementsByClassName)return Z.apply(c,$.call(b.getElementsByClassName(g),0)),c}if(P.qsa&&!I.test(a)){if(k=!0,n=N,o=b,p=9===h&&a,1===h&&"object"!==b.nodeName.toLowerCase()){for(j=l(a),(k=b.getAttribute("id"))?n=k.replace(sb,"\\$&"):b.setAttribute("id",n),n="[id='"+n+"'] ",i=j.length;i--;)j[i]=n+m(j[i]);o=nb.test(a)&&b.parentNode||b,p=j.join(",")}if(p)try{return Z.apply(c,$.call(o.querySelectorAll(p),0)),c}catch(q){}finally{k||b.removeAttribute("id")}}}return u(a.replace(gb,"$1"),b,c,d)}function h(a,b){var c=b&&a,d=c&&(~b.sourceIndex||W)-(~a.sourceIndex||W);if(d)return d;if(c)for(;c=c.nextSibling;)if(c===b)return-1;return a?1:-1}function i(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function j(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function k(a){return e(function(b){return b=+b,e(function(c,d){for(var e,f=a([],c.length,b),g=f.length;g--;)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function l(a,b){var c,d,e,f,h,i,j,k=T[a+" "];if(k)return b?0:k.slice(0);for(h=a,i=[],j=y.preFilter;h;){(!c||(d=hb.exec(h)))&&(d&&(h=h.slice(d[0].length)||h),i.push(e=[])),c=!1,(d=jb.exec(h))&&(c=d.shift(),e.push({value:c,type:d[0].replace(gb," ")}),h=h.slice(c.length));for(f in y.filter)!(d=mb[f].exec(h))||j[f]&&!(d=j[f](d))||(c=d.shift(),e.push({value:c,type:f,matches:d}),h=h.slice(c.length));if(!c)break}return b?h.length:h?g.error(a):T(a,i).slice(0)}function m(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function n(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=R++;return b.first?function(b,c,f){for(;b=b[d];)if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=Q+" "+f;if(g){for(;b=b[d];)if((1===b.nodeType||e)&&a(b,c,g))return!0}else for(;b=b[d];)if(1===b.nodeType||e)if(j=b[N]||(b[N]={}),(i=j[d])&&i[0]===k){if((h=i[1])===!0||h===x)return h===!0}else if(i=j[d]=[k],i[1]=a(b,c,g)||x,i[1]===!0)return!0}}function o(a){return a.length>1?function(b,c,d){for(var e=a.length;e--;)if(!a[e](b,c,d))return!1;return!0}:a[0]}function p(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function q(a,b,c,d,f,g){return d&&!d[N]&&(d=q(d)),f&&!f[N]&&(f=q(f,g)),e(function(e,g,h,i){var j,k,l,m=[],n=[],o=g.length,q=e||t(b||"*",h.nodeType?[h]:h,[]),r=!a||!e&&b?q:p(q,m,a,h,i),s=c?f||(e?a:o||d)?[]:g:r;if(c&&c(r,s,h,i),d)for(j=p(s,n),d(j,[],h,i),k=j.length;k--;)(l=j[k])&&(s[n[k]]=!(r[n[k]]=l));if(e){if(f||a){if(f){for(j=[],k=s.length;k--;)(l=s[k])&&j.push(r[k]=l);f(null,s=[],j,i)}for(k=s.length;k--;)(l=s[k])&&(j=f?_.call(e,l):m[k])>-1&&(e[j]=!(g[j]=l))}}else s=p(s===g?s.splice(o,s.length):s),f?f(null,g,s,i):Z.apply(g,s)})}function r(a){for(var b,c,d,e=a.length,f=y.relative[a[0].type],g=f||y.relative[" "],h=f?1:0,i=n(function(a){return a===b},g,!0),j=n(function(a){return _.call(b,a)>-1},g,!0),k=[function(a,c,d){return!f&&(d||c!==D)||((b=c).nodeType?i(a,c,d):j(a,c,d))}];e>h;h++)if(c=y.relative[a[h].type])k=[n(o(k),c)];else{if(c=y.filter[a[h].type].apply(null,a[h].matches),c[N]){for(d=++h;e>d&&!y.relative[a[d].type];d++);return q(h>1&&o(k),h>1&&m(a.slice(0,h-1)).replace(gb,"$1"),c,d>h&&r(a.slice(h,d)),e>d&&r(a=a.slice(d)),e>d&&m(a))}k.push(c)}return o(k)}function s(a,b){var c=0,d=b.length>0,f=a.length>0,h=function(e,h,i,j,k){var l,m,n,o=[],q=0,r="0",s=e&&[],t=null!=k,u=D,v=e||f&&y.find.TAG("*",k&&h.parentNode||h),w=Q+=null==u?1:Math.random()||.1;for(t&&(D=h!==F&&h,x=c);null!=(l=v[r]);r++){if(f&&l){for(m=0;n=a[m++];)if(n(l,h,i)){j.push(l);break}t&&(Q=w,x=++c)}d&&((l=!n&&l)&&q--,e&&s.push(l))}if(q+=r,d&&r!==q){for(m=0;n=b[m++];)n(s,o,h,i);if(e){if(q>0)for(;r--;)s[r]||o[r]||(o[r]=Y.call(j));o=p(o)}Z.apply(j,o),t&&!e&&o.length>0&&q+b.length>1&&g.uniqueSort(j)}return t&&(Q=w,D=u),s};return d?e(h):h}function t(a,b,c){for(var d=0,e=b.length;e>d;d++)g(a,b[d],c);return c}function u(a,b,c,d){var e,f,g,h,i,j=l(a);if(!d&&1===j.length){if(f=j[0]=j[0].slice(0),f.length>2&&"ID"===(g=f[0]).type&&9===b.nodeType&&!H&&y.relative[f[1].type]){if(b=y.find.ID(g.matches[0].replace(ub,vb),b)[0],!b)return c;a=a.slice(f.shift().value.length)}for(e=mb.needsContext.test(a)?0:f.length;e--&&(g=f[e],!y.relative[h=g.type]);)if((i=y.find[h])&&(d=i(g.matches[0].replace(ub,vb),nb.test(f[0].type)&&b.parentNode||b))){if(f.splice(e,1),a=d.length&&m(f),!a)return Z.apply(c,$.call(d,0)),c;break}}return B(a,j)(d,b,H,c,nb.test(a)),c}function v(){}var w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N="sizzle"+-new Date,O=a.document,P={},Q=0,R=0,S=d(),T=d(),U=d(),V=typeof b,W=1<<31,X=[],Y=X.pop,Z=X.push,$=X.slice,_=X.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},ab="[\\x20\\t\\r\\n\\f]",bb="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",cb=bb.replace("w","w#"),db="([*^$|!~]?=)",eb="\\["+ab+"*("+bb+")"+ab+"*(?:"+db+ab+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+cb+")|)|)"+ab+"*\\]",fb=":("+bb+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+eb.replace(3,8)+")*)|.*)\\)|)",gb=new RegExp("^"+ab+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ab+"+$","g"),hb=new RegExp("^"+ab+"*,"+ab+"*"),jb=new RegExp("^"+ab+"*([\\x20\\t\\r\\n\\f>+~])"+ab+"*"),kb=new RegExp(fb),lb=new RegExp("^"+cb+"$"),mb={ID:new RegExp("^#("+bb+")"),CLASS:new RegExp("^\\.("+bb+")"),NAME:new RegExp("^\\[name=['\"]?("+bb+")['\"]?\\]"),TAG:new RegExp("^("+bb.replace("w","w*")+")"),ATTR:new RegExp("^"+eb),PSEUDO:new RegExp("^"+fb),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ab+"*(even|odd|(([+-]|)(\\d*)n|)"+ab+"*(?:([+-]|)"+ab+"*(\\d+)|))"+ab+"*\\)|)","i"),needsContext:new RegExp("^"+ab+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ab+"*((?:-\\d)?\\d*)"+ab+"*\\)|)(?=[^-]|$)","i")},nb=/[\x20\t\r\n\f]*[+~]/,ob=/^[^{]+\{\s*\[native code/,pb=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,qb=/^(?:input|select|textarea|button)$/i,rb=/^h\d$/i,sb=/'|\\/g,tb=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,ub=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,vb=function(a,b){var c="0x"+b-65536;return c!==c?b:0>c?String.fromCharCode(c+65536):String.fromCharCode(c>>10|55296,1023&c|56320)};try{$.call(O.documentElement.childNodes,0)[0].nodeType}catch(wb){$=function(a){for(var b,c=[];b=this[a++];)c.push(b);return c}}A=g.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},E=g.setDocument=function(a){var d=a?a.ownerDocument||a:O;return d!==F&&9===d.nodeType&&d.documentElement?(F=d,G=d.documentElement,H=A(d),P.tagNameNoComments=f(function(a){return a.appendChild(d.createComment("")),!a.getElementsByTagName("*").length}),P.attributes=f(function(a){a.innerHTML="<select></select>";var b=typeof a.lastChild.getAttribute("multiple");return"boolean"!==b&&"string"!==b}),P.getByClassName=f(function(a){return a.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",a.getElementsByClassName&&a.getElementsByClassName("e").length?(a.lastChild.className="e",2===a.getElementsByClassName("e").length):!1}),P.getByName=f(function(a){a.id=N+0,a.innerHTML="<a name='"+N+"'></a><div name='"+N+"'></div>",G.insertBefore(a,G.firstChild);var b=d.getElementsByName&&d.getElementsByName(N).length===2+d.getElementsByName(N+0).length;return P.getIdNotName=!d.getElementById(N),G.removeChild(a),b}),y.attrHandle=f(function(a){return a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!==V&&"#"===a.firstChild.getAttribute("href")})?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},P.getIdNotName?(y.find.ID=function(a,b){if(typeof b.getElementById!==V&&!H){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},y.filter.ID=function(a){var b=a.replace(ub,vb);return function(a){return a.getAttribute("id")===b}}):(y.find.ID=function(a,c){if(typeof c.getElementById!==V&&!H){var d=c.getElementById(a);return d?d.id===a||typeof d.getAttributeNode!==V&&d.getAttributeNode("id").value===a?[d]:b:[]}},y.filter.ID=function(a){var b=a.replace(ub,vb);return function(a){var c=typeof a.getAttributeNode!==V&&a.getAttributeNode("id");return c&&c.value===b}}),y.find.TAG=P.tagNameNoComments?function(a,b){return typeof b.getElementsByTagName!==V?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){for(;c=f[e++];)1===c.nodeType&&d.push(c);return d}return f},y.find.NAME=P.getByName&&function(a,b){return typeof b.getElementsByName!==V?b.getElementsByName(name):void 0},y.find.CLASS=P.getByClassName&&function(a,b){return typeof b.getElementsByClassName===V||H?void 0:b.getElementsByClassName(a)},J=[],I=[":focus"],(P.qsa=c(d.querySelectorAll))&&(f(function(a){a.innerHTML="<select><option selected=''></option></select>",a.querySelectorAll("[selected]").length||I.push("\\["+ab+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||I.push(":checked")}),f(function(a){a.innerHTML="<input type='hidden' i=''/>",a.querySelectorAll("[i^='']").length&&I.push("[*^$]="+ab+"*(?:\"\"|'')"),a.querySelectorAll(":enabled").length||I.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),I.push(",.*:")})),(P.matchesSelector=c(K=G.matchesSelector||G.mozMatchesSelector||G.webkitMatchesSelector||G.oMatchesSelector||G.msMatchesSelector))&&f(function(a){P.disconnectedMatch=K.call(a,"div"),K.call(a,"[s!='']:x"),J.push("!=",fb)}),I=new RegExp(I.join("|")),J=new RegExp(J.join("|")),L=c(G.contains)||G.compareDocumentPosition?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1},M=G.compareDocumentPosition?function(a,b){var c;return a===b?(C=!0,0):(c=b.compareDocumentPosition&&a.compareDocumentPosition&&a.compareDocumentPosition(b))?1&c||a.parentNode&&11===a.parentNode.nodeType?a===d||L(O,a)?-1:b===d||L(O,b)?1:0:4&c?-1:1:a.compareDocumentPosition?-1:1}:function(a,b){var c,e=0,f=a.parentNode,g=b.parentNode,i=[a],j=[b];if(a===b)return C=!0,0;if(!f||!g)return a===d?-1:b===d?1:f?-1:g?1:0;if(f===g)return h(a,b);for(c=a;c=c.parentNode;)i.unshift(c);for(c=b;c=c.parentNode;)j.unshift(c);for(;i[e]===j[e];)e++;return e?h(i[e],j[e]):i[e]===O?-1:j[e]===O?1:0},C=!1,[0,0].sort(M),P.detectDuplicates=C,F):F},g.matches=function(a,b){return g(a,null,null,b)},g.matchesSelector=function(a,b){if((a.ownerDocument||a)!==F&&E(a),b=b.replace(tb,"='$1']"),!(!P.matchesSelector||H||J&&J.test(b)||I.test(b)))try{var c=K.call(a,b);if(c||P.disconnectedMatch||a.document&&11!==a.document.nodeType)return c}catch(d){}return g(b,F,null,[a]).length>0},g.contains=function(a,b){return(a.ownerDocument||a)!==F&&E(a),L(a,b)},g.attr=function(a,b){var c;return(a.ownerDocument||a)!==F&&E(a),H||(b=b.toLowerCase()),(c=y.attrHandle[b])?c(a):H||P.attributes?a.getAttribute(b):((c=a.getAttributeNode(b))||a.getAttribute(b))&&a[b]===!0?b:c&&c.specified?c.value:null},g.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},g.uniqueSort=function(a){var b,c=[],d=1,e=0;if(C=!P.detectDuplicates,a.sort(M),C){for(;b=a[d];d++)b===a[d-1]&&(e=c.push(d));for(;e--;)a.splice(c[e],1)}return a},z=g.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(1===e||9===e||11===e){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=z(a)}else if(3===e||4===e)return a.nodeValue}else for(;b=a[d];d++)c+=z(b);return c},y=g.selectors={cacheLength:50,createPseudo:e,match:mb,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ub,vb),a[3]=(a[4]||a[5]||"").replace(ub,vb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||g.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&g.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return mb.CHILD.test(a[0])?null:(a[4]?a[2]=a[4]:c&&kb.test(c)&&(b=l(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){return"*"===a?function(){return!0}:(a=a.replace(ub,vb).toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=S[a+" "];return b||(b=new RegExp("(^|"+ab+")"+a+"("+ab+"|$)"))&&S(a,function(a){return b.test(a.className||typeof a.getAttribute!==V&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=g.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){for(;p;){for(l=b;l=l[p];)if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){for(k=q[N]||(q[N]={}),j=k[a]||[],n=j[0]===Q&&j[1],m=j[0]===Q&&j[2],l=n&&q.childNodes[n];l=++n&&l&&l[p]||(m=n=0)||o.pop();)if(1===l.nodeType&&++m&&l===b){k[a]=[Q,n,m];break}}else if(s&&(j=(b[N]||(b[N]={}))[a])&&j[0]===Q)m=j[1];else for(;(l=++n&&l&&l[p]||(m=n=0)||o.pop())&&((h?l.nodeName.toLowerCase()!==r:1!==l.nodeType)||!++m||(s&&((l[N]||(l[N]={}))[a]=[Q,m]),l!==b)););return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,d=y.pseudos[a]||y.setFilters[a.toLowerCase()]||g.error("unsupported pseudo: "+a);return d[N]?d(b):d.length>1?(c=[a,a,"",b],y.setFilters.hasOwnProperty(a.toLowerCase())?e(function(a,c){for(var e,f=d(a,b),g=f.length;g--;)e=_.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:e(function(a){var b=[],c=[],d=B(a.replace(gb,"$1"));return d[N]?e(function(a,b,c,e){for(var f,g=d(a,null,e,[]),h=a.length;h--;)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:e(function(a){return function(b){return g(a,b).length>0}}),contains:e(function(a){return function(b){return(b.textContent||b.innerText||z(b)).indexOf(a)>-1}}),lang:e(function(a){return lb.test(a||"")||g.error("unsupported lang: "+a),a=a.replace(ub,vb).toLowerCase(),function(b){var c;do if(c=H?b.getAttribute("xml:lang")||b.getAttribute("lang"):b.lang)return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===G},focus:function(a){return a===F.activeElement&&(!F.hasFocus||F.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeName>"@"||3===a.nodeType||4===a.nodeType)return!1;return!0},parent:function(a){return!y.pseudos.empty(a)},header:function(a){return rb.test(a.nodeName)},input:function(a){return qb.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||b.toLowerCase()===a.type)},first:k(function(){return[0]}),last:k(function(a,b){return[b-1]}),eq:k(function(a,b,c){return[0>c?c+b:c]}),even:k(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:k(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:k(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:k(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}};for(w in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})y.pseudos[w]=i(w);for(w in{submit:!0,reset:!0})y.pseudos[w]=j(w);B=g.compile=function(a,b){var c,d=[],e=[],f=U[a+" "];if(!f){for(b||(b=l(a)),c=b.length;c--;)f=r(b[c]),f[N]?d.push(f):e.push(f);f=U(a,s(e,d))}return f},y.pseudos.nth=y.pseudos.eq,y.filters=v.prototype=y.pseudos,y.setFilters=new v,E(),g.attr=ib.attr,ib.find=g,ib.expr=g.selectors,ib.expr[":"]=ib.expr.pseudos,ib.unique=g.uniqueSort,ib.text=g.getText,ib.isXMLDoc=g.isXML,ib.contains=g.contains}(a);var Pb=/Until$/,Qb=/^(?:parents|prev(?:Until|All))/,Rb=/^.[^:#\[\.,]*$/,Sb=ib.expr.match.needsContext,Tb={children:!0,contents:!0,next:!0,prev:!0};ib.fn.extend({find:function(a){var b,c,d,e=this.length;if("string"!=typeof a)return d=this,this.pushStack(ib(a).filter(function(){for(b=0;e>b;b++)if(ib.contains(d[b],this))return!0}));for(c=[],b=0;e>b;b++)ib.find(a,this[b],c);return c=this.pushStack(e>1?ib.unique(c):c),c.selector=(this.selector?this.selector+" ":"")+a,c},has:function(a){var b,c=ib(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(ib.contains(this,c[b]))return!0})},not:function(a){return this.pushStack(l(this,a,!1))},filter:function(a){return this.pushStack(l(this,a,!0))},is:function(a){return!!a&&("string"==typeof a?Sb.test(a)?ib(a,this.context).index(this[0])>=0:ib.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=Sb.test(a)||"string"!=typeof a?ib(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c.ownerDocument&&c!==b&&11!==c.nodeType;){if(g?g.index(c)>-1:ib.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}return this.pushStack(f.length>1?ib.unique(f):f)},index:function(a){return a?"string"==typeof a?ib.inArray(this[0],ib(a)):ib.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){var c="string"==typeof a?ib(a,b):ib.makeArray(a&&a.nodeType?[a]:a),d=ib.merge(this.get(),c);return this.pushStack(ib.unique(d))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}}),ib.fn.andSelf=ib.fn.addBack,ib.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return ib.dir(a,"parentNode")},parentsUntil:function(a,b,c){return ib.dir(a,"parentNode",c)},next:function(a){return k(a,"nextSibling")
-},prev:function(a){return k(a,"previousSibling")},nextAll:function(a){return ib.dir(a,"nextSibling")},prevAll:function(a){return ib.dir(a,"previousSibling")},nextUntil:function(a,b,c){return ib.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return ib.dir(a,"previousSibling",c)},siblings:function(a){return ib.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return ib.sibling(a.firstChild)},contents:function(a){return ib.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:ib.merge([],a.childNodes)}},function(a,b){ib.fn[a]=function(c,d){var e=ib.map(this,b,c);return Pb.test(a)||(d=c),d&&"string"==typeof d&&(e=ib.filter(d,e)),e=this.length>1&&!Tb[a]?ib.unique(e):e,this.length>1&&Qb.test(a)&&(e=e.reverse()),this.pushStack(e)}}),ib.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),1===b.length?ib.find.matchesSelector(b[0],a)?[b[0]]:[]:ib.find.matches(a,b)},dir:function(a,c,d){for(var e=[],f=a[c];f&&9!==f.nodeType&&(d===b||1!==f.nodeType||!ib(f).is(d));)1===f.nodeType&&e.push(f),f=f[c];return e},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}});var Ub="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",Vb=/ jQuery\d+="(?:null|\d+)"/g,Wb=new RegExp("<(?:"+Ub+")[\\s/>]","i"),Xb=/^\s+/,Yb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Zb=/<([\w:]+)/,$b=/<tbody/i,_b=/<|&#?\w+;/,ac=/<(?:script|style|link)/i,bc=/^(?:checkbox|radio)$/i,cc=/checked\s*(?:[^=]|=\s*.checked.)/i,dc=/^$|\/(?:java|ecma)script/i,ec=/^true\/(.*)/,fc=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,gc={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:ib.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},hc=m(W),ic=hc.appendChild(W.createElement("div"));gc.optgroup=gc.option,gc.tbody=gc.tfoot=gc.colgroup=gc.caption=gc.thead,gc.th=gc.td,ib.fn.extend({text:function(a){return ib.access(this,function(a){return a===b?ib.text(this):this.empty().append((this[0]&&this[0].ownerDocument||W).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(ib.isFunction(a))return this.each(function(b){ib(this).wrapAll(a.call(this,b))});if(this[0]){var b=ib(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){for(var a=this;a.firstChild&&1===a.firstChild.nodeType;)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(ib.isFunction(a)?function(b){ib(this).wrapInner(a.call(this,b))}:function(){var b=ib(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=ib.isFunction(a);return this.each(function(c){ib(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){ib.nodeName(this,"body")||ib(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(a,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,!1,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=0;null!=(c=this[d]);d++)(!a||ib.filter(a,[c]).length>0)&&(b||1!==c.nodeType||ib.cleanData(t(c)),c.parentNode&&(b&&ib.contains(c.ownerDocument,c)&&q(t(c,"script")),c.parentNode.removeChild(c)));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){for(1===a.nodeType&&ib.cleanData(t(a,!1));a.firstChild;)a.removeChild(a.firstChild);a.options&&ib.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return ib.clone(this,a,b)})},html:function(a){return ib.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return 1===c.nodeType?c.innerHTML.replace(Vb,""):b;if(!("string"!=typeof a||ac.test(a)||!ib.support.htmlSerialize&&Wb.test(a)||!ib.support.leadingWhitespace&&Xb.test(a)||gc[(Zb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(Yb,"<$1></$2>");try{for(;e>d;d++)c=this[d]||{},1===c.nodeType&&(ib.cleanData(t(c,!1)),c.innerHTML=a);c=0}catch(f){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){var b=ib.isFunction(a);return b||"string"==typeof a||(a=ib(a).not(this).detach()),this.domManip([a],!0,function(a){var b=this.nextSibling,c=this.parentNode;c&&(ib(this).remove(),c.insertBefore(a,b))})},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){a=bb.apply([],a);var e,f,g,h,i,j,k=0,l=this.length,m=this,q=l-1,r=a[0],s=ib.isFunction(r);if(s||!(1>=l||"string"!=typeof r||ib.support.checkClone)&&cc.test(r))return this.each(function(e){var f=m.eq(e);s&&(a[0]=r.call(this,e,c?f.html():b)),f.domManip(a,c,d)});if(l&&(j=ib.buildFragment(a,this[0].ownerDocument,!1,this),e=j.firstChild,1===j.childNodes.length&&(j=e),e)){for(c=c&&ib.nodeName(e,"tr"),h=ib.map(t(j,"script"),o),g=h.length;l>k;k++)f=j,k!==q&&(f=ib.clone(f,!0,!0),g&&ib.merge(h,t(f,"script"))),d.call(c&&ib.nodeName(this[k],"table")?n(this[k],"tbody"):this[k],f,k);if(g)for(i=h[h.length-1].ownerDocument,ib.map(h,p),k=0;g>k;k++)f=h[k],dc.test(f.type||"")&&!ib._data(f,"globalEval")&&ib.contains(i,f)&&(f.src?ib.ajax({url:f.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):ib.globalEval((f.text||f.textContent||f.innerHTML||"").replace(fc,"")));j=e=null}return this}}),ib.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){ib.fn[a]=function(a){for(var c,d=0,e=[],f=ib(a),g=f.length-1;g>=d;d++)c=d===g?this:this.clone(!0),ib(f[d])[b](c),cb.apply(e,c.get());return this.pushStack(e)}}),ib.extend({clone:function(a,b,c){var d,e,f,g,h,i=ib.contains(a.ownerDocument,a);if(ib.support.html5Clone||ib.isXMLDoc(a)||!Wb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ic.innerHTML=a.outerHTML,ic.removeChild(f=ic.firstChild)),!(ib.support.noCloneEvent&&ib.support.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||ib.isXMLDoc(a)))for(d=t(f),h=t(a),g=0;null!=(e=h[g]);++g)d[g]&&s(e,d[g]);if(b)if(c)for(h=h||t(a),d=d||t(f),g=0;null!=(e=h[g]);g++)r(e,d[g]);else r(a,f);return d=t(f,"script"),d.length>0&&q(d,!i&&t(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,l=a.length,n=m(b),o=[],p=0;l>p;p++)if(f=a[p],f||0===f)if("object"===ib.type(f))ib.merge(o,f.nodeType?[f]:f);else if(_b.test(f)){for(h=h||n.appendChild(b.createElement("div")),i=(Zb.exec(f)||["",""])[1].toLowerCase(),k=gc[i]||gc._default,h.innerHTML=k[1]+f.replace(Yb,"<$1></$2>")+k[2],e=k[0];e--;)h=h.lastChild;if(!ib.support.leadingWhitespace&&Xb.test(f)&&o.push(b.createTextNode(Xb.exec(f)[0])),!ib.support.tbody)for(f="table"!==i||$b.test(f)?"<table>"!==k[1]||$b.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;e--;)ib.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j);for(ib.merge(o,h.childNodes),h.textContent="";h.firstChild;)h.removeChild(h.firstChild);h=n.lastChild}else o.push(b.createTextNode(f));for(h&&n.removeChild(h),ib.support.appendChecked||ib.grep(t(o,"input"),u),p=0;f=o[p++];)if((!d||-1===ib.inArray(f,d))&&(g=ib.contains(f.ownerDocument,f),h=t(n.appendChild(f),"script"),g&&q(h),c))for(e=0;f=h[e++];)dc.test(f.type||"")&&c.push(f);return h=null,n},cleanData:function(a,b){for(var c,d,e,f,g=0,h=ib.expando,i=ib.cache,j=ib.support.deleteExpando,k=ib.event.special;null!=(c=a[g]);g++)if((b||ib.acceptData(c))&&(e=c[h],f=e&&i[e])){if(f.events)for(d in f.events)k[d]?ib.event.remove(c,d):ib.removeEvent(c,d,f.handle);i[e]&&(delete i[e],j?delete c[h]:typeof c.removeAttribute!==V?c.removeAttribute(h):c[h]=null,_.push(e))}}});var jc,kc,lc,mc=/alpha\([^)]*\)/i,nc=/opacity\s*=\s*([^)]*)/,oc=/^(top|right|bottom|left)$/,pc=/^(none|table(?!-c[ea]).+)/,qc=/^margin/,rc=new RegExp("^("+jb+")(.*)$","i"),sc=new RegExp("^("+jb+")(?!px)[a-z%]+$","i"),tc=new RegExp("^([+-])=("+jb+")","i"),uc={BODY:"block"},vc={position:"absolute",visibility:"hidden",display:"block"},wc={letterSpacing:0,fontWeight:400},xc=["Top","Right","Bottom","Left"],yc=["Webkit","O","Moz","ms"];ib.fn.extend({css:function(a,c){return ib.access(this,function(a,c,d){var e,f,g={},h=0;if(ib.isArray(c)){for(f=kc(a),e=c.length;e>h;h++)g[c[h]]=ib.css(a,c[h],!1,f);return g}return d!==b?ib.style(a,c,d):ib.css(a,c)},a,c,arguments.length>1)},show:function(){return x(this,!0)},hide:function(){return x(this)},toggle:function(a){var b="boolean"==typeof a;return this.each(function(){(b?a:w(this))?ib(this).show():ib(this).hide()})}}),ib.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=lc(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":ib.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var f,g,h,i=ib.camelCase(c),j=a.style;if(c=ib.cssProps[i]||(ib.cssProps[i]=v(j,i)),h=ib.cssHooks[c]||ib.cssHooks[i],d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];if(g=typeof d,"string"===g&&(f=tc.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(ib.css(a,c)),g="number"),!(null==d||"number"===g&&isNaN(d)||("number"!==g||ib.cssNumber[i]||(d+="px"),ib.support.clearCloneStyle||""!==d||0!==c.indexOf("background")||(j[c]="inherit"),h&&"set"in h&&(d=h.set(a,d,e))===b)))try{j[c]=d}catch(k){}}},css:function(a,c,d,e){var f,g,h,i=ib.camelCase(c);return c=ib.cssProps[i]||(ib.cssProps[i]=v(a.style,i)),h=ib.cssHooks[c]||ib.cssHooks[i],h&&"get"in h&&(g=h.get(a,!0,d)),g===b&&(g=lc(a,c,e)),"normal"===g&&c in wc&&(g=wc[c]),""===d||d?(f=parseFloat(g),d===!0||ib.isNumeric(f)?f||0:g):g},swap:function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e}}),a.getComputedStyle?(kc=function(b){return a.getComputedStyle(b,null)},lc=function(a,c,d){var e,f,g,h=d||kc(a),i=h?h.getPropertyValue(c)||h[c]:b,j=a.style;return h&&(""!==i||ib.contains(a.ownerDocument,a)||(i=ib.style(a,c)),sc.test(i)&&qc.test(c)&&(e=j.width,f=j.minWidth,g=j.maxWidth,j.minWidth=j.maxWidth=j.width=i,i=h.width,j.width=e,j.minWidth=f,j.maxWidth=g)),i}):W.documentElement.currentStyle&&(kc=function(a){return a.currentStyle},lc=function(a,c,d){var e,f,g,h=d||kc(a),i=h?h[c]:b,j=a.style;return null==i&&j&&j[c]&&(i=j[c]),sc.test(i)&&!oc.test(c)&&(e=j.left,f=a.runtimeStyle,g=f&&f.left,g&&(f.left=a.currentStyle.left),j.left="fontSize"===c?"1em":i,i=j.pixelLeft+"px",j.left=e,g&&(f.left=g)),""===i?"auto":i}),ib.each(["height","width"],function(a,b){ib.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&pc.test(ib.css(a,"display"))?ib.swap(a,vc,function(){return A(a,b,d)}):A(a,b,d):void 0},set:function(a,c,d){var e=d&&kc(a);return y(a,c,d?z(a,b,d,ib.support.boxSizing&&"border-box"===ib.css(a,"boxSizing",!1,e),e):0)}}}),ib.support.opacity||(ib.cssHooks.opacity={get:function(a,b){return nc.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=ib.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===ib.trim(f.replace(mc,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=mc.test(f)?f.replace(mc,e):f+" "+e)}}),ib(function(){ib.support.reliableMarginRight||(ib.cssHooks.marginRight={get:function(a,b){return b?ib.swap(a,{display:"inline-block"},lc,[a,"marginRight"]):void 0}}),!ib.support.pixelPosition&&ib.fn.position&&ib.each(["top","left"],function(a,b){ib.cssHooks[b]={get:function(a,c){return c?(c=lc(a,b),sc.test(c)?ib(a).position()[b]+"px":c):void 0}}})}),ib.expr&&ib.expr.filters&&(ib.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!ib.support.reliableHiddenOffsets&&"none"===(a.style&&a.style.display||ib.css(a,"display"))},ib.expr.filters.visible=function(a){return!ib.expr.filters.hidden(a)}),ib.each({margin:"",padding:"",border:"Width"},function(a,b){ib.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+xc[d]+b]=f[d]||f[d-2]||f[0];return e}},qc.test(a)||(ib.cssHooks[a+b].set=y)});var zc=/%20/g,Ac=/\[\]$/,Bc=/\r?\n/g,Cc=/^(?:submit|button|image|reset|file)$/i,Dc=/^(?:input|select|textarea|keygen)/i;ib.fn.extend({serialize:function(){return ib.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=ib.prop(this,"elements");return a?ib.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!ib(this).is(":disabled")&&Dc.test(this.nodeName)&&!Cc.test(a)&&(this.checked||!bc.test(a))}).map(function(a,b){var c=ib(this).val();return null==c?null:ib.isArray(c)?ib.map(c,function(a){return{name:b.name,value:a.replace(Bc,"\r\n")}}):{name:b.name,value:c.replace(Bc,"\r\n")}}).get()}}),ib.param=function(a,c){var d,e=[],f=function(a,b){b=ib.isFunction(b)?b():null==b?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(c===b&&(c=ib.ajaxSettings&&ib.ajaxSettings.traditional),ib.isArray(a)||a.jquery&&!ib.isPlainObject(a))ib.each(a,function(){f(this.name,this.value)});else for(d in a)D(d,a[d],c,f);return e.join("&").replace(zc,"+")},ib.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){ib.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),ib.fn.hover=function(a,b){return this.mouseenter(a).mouseleave(b||a)};var Ec,Fc,Gc=ib.now(),Hc=/\?/,Ic=/#.*$/,Jc=/([?&])_=[^&]*/,Kc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Lc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mc=/^(?:GET|HEAD)$/,Nc=/^\/\//,Oc=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Pc=ib.fn.load,Qc={},Rc={},Sc="*/".concat("*");try{Fc=X.href}catch(Tc){Fc=W.createElement("a"),Fc.href="",Fc=Fc.href}Ec=Oc.exec(Fc.toLowerCase())||[],ib.fn.load=function(a,c,d){if("string"!=typeof a&&Pc)return Pc.apply(this,arguments);var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),ib.isFunction(c)?(d=c,c=b):c&&"object"==typeof c&&(g="POST"),h.length>0&&ib.ajax({url:a,type:g,dataType:"html",data:c}).done(function(a){f=arguments,h.html(e?ib("<div>").append(ib.parseHTML(a)).find(e):a)}).complete(d&&function(a,b){h.each(d,f||[a.responseText,b,a])}),this},ib.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){ib.fn[b]=function(a){return this.on(b,a)}}),ib.each(["get","post"],function(a,c){ib[c]=function(a,d,e,f){return ib.isFunction(d)&&(f=f||e,e=d,d=b),ib.ajax({url:a,type:c,dataType:f,data:d,success:e})}}),ib.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Fc,type:"GET",isLocal:Lc.test(Ec[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Sc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":ib.parseJSON,"text xml":ib.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?G(G(a,ib.ajaxSettings),b):G(ib.ajaxSettings,a)},ajaxPrefilter:E(Qc),ajaxTransport:E(Rc),ajax:function(a,c){function d(a,c,d,e){var f,l,s,t,v,x=c;2!==u&&(u=2,i&&clearTimeout(i),k=b,h=e||"",w.readyState=a>0?4:0,d&&(t=H(m,w,d)),a>=200&&300>a||304===a?(m.ifModified&&(v=w.getResponseHeader("Last-Modified"),v&&(ib.lastModified[g]=v),v=w.getResponseHeader("etag"),v&&(ib.etag[g]=v)),204===a?(f=!0,x="nocontent"):304===a?(f=!0,x="notmodified"):(f=I(m,t),x=f.state,l=f.data,s=f.error,f=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),w.status=a,w.statusText=(c||x)+"",f?p.resolveWith(n,[l,x,w]):p.rejectWith(n,[w,x,s]),w.statusCode(r),r=b,j&&o.trigger(f?"ajaxSuccess":"ajaxError",[w,m,f?l:s]),q.fireWith(n,[w,x]),j&&(o.trigger("ajaxComplete",[w,m]),--ib.active||ib.event.trigger("ajaxStop")))}"object"==typeof a&&(c=a,a=b),c=c||{};var e,f,g,h,i,j,k,l,m=ib.ajaxSetup({},c),n=m.context||m,o=m.context&&(n.nodeType||n.jquery)?ib(n):ib.event,p=ib.Deferred(),q=ib.Callbacks("once memory"),r=m.statusCode||{},s={},t={},u=0,v="canceled",w={readyState:0,getResponseHeader:function(a){var b;if(2===u){if(!l)for(l={};b=Kc.exec(h);)l[b[1].toLowerCase()]=b[2];b=l[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===u?h:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return u||(a=t[c]=t[c]||a,s[a]=b),this},overrideMimeType:function(a){return u||(m.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>u)for(b in a)r[b]=[r[b],a[b]];else w.always(a[w.status]);return this},abort:function(a){var b=a||v;return k&&k.abort(b),d(0,b),this}};if(p.promise(w).complete=q.add,w.success=w.done,w.error=w.fail,m.url=((a||m.url||Fc)+"").replace(Ic,"").replace(Nc,Ec[1]+"//"),m.type=c.method||c.type||m.method||m.type,m.dataTypes=ib.trim(m.dataType||"*").toLowerCase().match(kb)||[""],null==m.crossDomain&&(e=Oc.exec(m.url.toLowerCase()),m.crossDomain=!(!e||e[1]===Ec[1]&&e[2]===Ec[2]&&(e[3]||("http:"===e[1]?80:443))==(Ec[3]||("http:"===Ec[1]?80:443)))),m.data&&m.processData&&"string"!=typeof m.data&&(m.data=ib.param(m.data,m.traditional)),F(Qc,m,c,w),2===u)return w;j=m.global,j&&0===ib.active++&&ib.event.trigger("ajaxStart"),m.type=m.type.toUpperCase(),m.hasContent=!Mc.test(m.type),g=m.url,m.hasContent||(m.data&&(g=m.url+=(Hc.test(g)?"&":"?")+m.data,delete m.data),m.cache===!1&&(m.url=Jc.test(g)?g.replace(Jc,"$1_="+Gc++):g+(Hc.test(g)?"&":"?")+"_="+Gc++)),m.ifModified&&(ib.lastModified[g]&&w.setRequestHeader("If-Modified-Since",ib.lastModified[g]),ib.etag[g]&&w.setRequestHeader("If-None-Match",ib.etag[g])),(m.data&&m.hasContent&&m.contentType!==!1||c.contentType)&&w.setRequestHeader("Content-Type",m.contentType),w.setRequestHeader("Accept",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+("*"!==m.dataTypes[0]?", "+Sc+"; q=0.01":""):m.accepts["*"]);for(f in m.headers)w.setRequestHeader(f,m.headers[f]);if(m.beforeSend&&(m.beforeSend.call(n,w,m)===!1||2===u))return w.abort();v="abort";for(f in{success:1,error:1,complete:1})w[f](m[f]);if(k=F(Rc,m,c,w)){w.readyState=1,j&&o.trigger("ajaxSend",[w,m]),m.async&&m.timeout>0&&(i=setTimeout(function(){w.abort("timeout")},m.timeout));try{u=1,k.send(s,d)}catch(x){if(!(2>u))throw x;d(-1,x)}}else d(-1,"No Transport");return w},getScript:function(a,c){return ib.get(a,b,c,"script")},getJSON:function(a,b,c){return ib.get(a,b,c,"json")}}),ib.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return ib.globalEval(a),a}}}),ib.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),ib.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=W.head||ib("head")[0]||W.documentElement;return{send:function(b,e){c=W.createElement("script"),c.async=!0,a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,b){(b||!c.readyState||/loaded|complete/.test(c.readyState))&&(c.onload=c.onreadystatechange=null,c.parentNode&&c.parentNode.removeChild(c),c=null,b||e(200,"success"))},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(b,!0)}}}});var Uc=[],Vc=/(=)\?(?=&|$)|\?\?/;ib.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Uc.pop()||ib.expando+"_"+Gc++;return this[a]=!0,a}}),ib.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.jsonp!==!1&&(Vc.test(c.url)?"url":"string"==typeof c.data&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vc.test(c.data)&&"data");return i||"jsonp"===c.dataTypes[0]?(f=c.jsonpCallback=ib.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,i?c[i]=c[i].replace(Vc,"$1"+f):c.jsonp!==!1&&(c.url+=(Hc.test(c.url)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||ib.error(f+" was not called"),h[0]},c.dataTypes[0]="json",g=a[f],a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,Uc.push(f)),h&&ib.isFunction(g)&&g(h[0]),h=g=b}),"script"):void 0});var Wc,Xc,Yc=0,Zc=a.ActiveXObject&&function(){var a;for(a in Wc)Wc[a](b,!0)};ib.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&J()||K()}:J,Xc=ib.ajaxSettings.xhr(),ib.support.cors=!!Xc&&"withCredentials"in Xc,Xc=ib.support.ajax=!!Xc,Xc&&ib.ajaxTransport(function(c){if(!c.crossDomain||ib.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();if(c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async),c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),c.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l;try{if(d&&(e||4===i.readyState))if(d=b,g&&(i.onreadystatechange=ib.noop,Zc&&delete Wc[g]),e)4!==i.readyState&&i.abort();else{l={},h=i.status,j=i.getAllResponseHeaders(),"string"==typeof i.responseText&&(l.text=i.responseText);try{k=i.statusText}catch(m){k=""}h||!c.isLocal||c.crossDomain?1223===h&&(h=204):h=l.text?200:404}}catch(n){e||f(-1,n)}l&&f(h,k,l,j)},c.async?4===i.readyState?setTimeout(d):(g=++Yc,Zc&&(Wc||(Wc={},ib(a).unload(Zc)),Wc[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(b,!0)}}}});var $c,_c,ad=/^(?:toggle|show|hide)$/,bd=new RegExp("^(?:([+-])=|)("+jb+")([a-z%]*)$","i"),cd=/queueHooks$/,dd=[P],ed={"*":[function(a,b){var c,d,e=this.createTween(a,b),f=bd.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){if(c=+f[2],d=f[3]||(ib.cssNumber[a]?"":"px"),"px"!==d&&h){h=ib.css(e.elem,a,!0)||c||1;do i=i||".5",h/=i,ib.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&1!==i&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};ib.Animation=ib.extend(N,{tweener:function(a,b){ib.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ed[c]=ed[c]||[],ed[c].unshift(b)},prefilter:function(a,b){b?dd.unshift(a):dd.push(a)}}),ib.Tween=Q,Q.prototype={constructor:Q,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(ib.cssNumber[c]?"":"px")},cur:function(){var a=Q.propHooks[this.prop];return a&&a.get?a.get(this):Q.propHooks._default.get(this)},run:function(a){var b,c=Q.propHooks[this.prop];return this.pos=b=this.options.duration?ib.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Q.propHooks._default.set(this),this}},Q.prototype.init.prototype=Q.prototype,Q.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=ib.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){ib.fx.step[a.prop]?ib.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[ib.cssProps[a.prop]]||ib.cssHooks[a.prop])?ib.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Q.propHooks.scrollTop=Q.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},ib.each(["toggle","show","hide"],function(a,b){var c=ib.fn[b];ib.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(R(b,!0),a,d,e)}}),ib.fn.extend({fadeTo:function(a,b,c,d){return this.filter(w).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=ib.isEmptyObject(a),f=ib.speed(b,c,d),g=function(){var b=N(this,ib.extend({},a),f);g.finish=function(){b.stop(!0)},(e||ib._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,c,d){var e=function(a){var b=a.stop;delete a.stop,b(d)};return"string"!=typeof a&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,c=null!=a&&a+"queueHooks",f=ib.timers,g=ib._data(this);if(c)g[c]&&g[c].stop&&e(g[c]);else for(c in g)g[c]&&g[c].stop&&cd.test(c)&&e(g[c]);for(c=f.length;c--;)f[c].elem!==this||null!=a&&f[c].queue!==a||(f[c].anim.stop(d),b=!1,f.splice(c,1));(b||!d)&&ib.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=ib._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=ib.timers,g=d?d.length:0;for(c.finish=!0,ib.queue(this,a,[]),e&&e.cur&&e.cur.finish&&e.cur.finish.call(this),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),ib.each({slideDown:R("show"),slideUp:R("hide"),slideToggle:R("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){ib.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),ib.speed=function(a,b,c){var d=a&&"object"==typeof a?ib.extend({},a):{complete:c||!c&&b||ib.isFunction(a)&&a,duration:a,easing:c&&b||b&&!ib.isFunction(b)&&b};return d.duration=ib.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in ib.fx.speeds?ib.fx.speeds[d.duration]:ib.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){ib.isFunction(d.old)&&d.old.call(this),d.queue&&ib.dequeue(this,d.queue)},d},ib.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},ib.timers=[],ib.fx=Q.prototype.init,ib.fx.tick=function(){var a,c=ib.timers,d=0;for($c=ib.now();d<c.length;d++)a=c[d],a()||c[d]!==a||c.splice(d--,1);c.length||ib.fx.stop(),$c=b},ib.fx.timer=function(a){a()&&ib.timers.push(a)&&ib.fx.start()},ib.fx.interval=13,ib.fx.start=function(){_c||(_c=setInterval(ib.fx.tick,ib.fx.interval))},ib.fx.stop=function(){clearInterval(_c),_c=null},ib.fx.speeds={slow:600,fast:200,_default:400},ib.fx.step={},ib.expr&&ib.expr.filters&&(ib.expr.filters.animated=function(a){return ib.grep(ib.timers,function(b){return a===b.elem}).length}),ib.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){ib.offset.setOffset(this,a,b)});var c,d,e={top:0,left:0},f=this[0],g=f&&f.ownerDocument;if(g)return c=g.documentElement,ib.contains(c,f)?(typeof f.getBoundingClientRect!==V&&(e=f.getBoundingClientRect()),d=S(g),{top:e.top+(d.pageYOffset||c.scrollTop)-(c.clientTop||0),left:e.left+(d.pageXOffset||c.scrollLeft)-(c.clientLeft||0)}):e},ib.offset={setOffset:function(a,b,c){var d=ib.css(a,"position");"static"===d&&(a.style.position="relative");var e,f,g=ib(a),h=g.offset(),i=ib.css(a,"top"),j=ib.css(a,"left"),k=("absolute"===d||"fixed"===d)&&ib.inArray("auto",[i,j])>-1,l={},m={};k?(m=g.position(),e=m.top,f=m.left):(e=parseFloat(i)||0,f=parseFloat(j)||0),ib.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(l.top=b.top-h.top+e),null!=b.left&&(l.left=b.left-h.left+f),"using"in b?b.using.call(a,l):g.css(l)}},ib.fn.extend({position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===ib.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),ib.nodeName(a[0],"html")||(c=a.offset()),c.top+=ib.css(a[0],"borderTopWidth",!0),c.left+=ib.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-ib.css(d,"marginTop",!0),left:b.left-c.left-ib.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||W.documentElement;a&&!ib.nodeName(a,"html")&&"static"===ib.css(a,"position");)a=a.offsetParent;return a||W.documentElement})}}),ib.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);ib.fn[a]=function(e){return ib.access(this,function(a,e,f){var g=S(a);return f===b?g?c in g?g[c]:g.document.documentElement[e]:a[e]:void(g?g.scrollTo(d?ib(g).scrollLeft():f,d?f:ib(g).scrollTop()):a[e]=f)},a,e,arguments.length,null)}}),ib.each({Height:"height",Width:"width"},function(a,c){ib.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){ib.fn[e]=function(e,f){var g=arguments.length&&(d||"boolean"!=typeof e),h=d||(e===!0||f===!0?"margin":"border");return ib.access(this,function(c,d,e){var f;return ib.isWindow(c)?c.document.documentElement["client"+a]:9===c.nodeType?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?ib.css(c,d,h):ib.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=ib,"function"==typeof define&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return ib})}(window),function(a,b,c){"use strict";function d(a){return function(){var b,c,d=arguments[0],e="["+(a?a+":":"")+d+"] ",f=arguments[1],g=arguments,h=function(a){return"function"==typeof a?a.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof a?"undefined":"string"!=typeof a?JSON.stringify(a):a};for(b=e+f.replace(/\{\d+\}/g,function(a){var b,c=+a.slice(1,-1);return c+2<g.length?(b=g[c+2],"function"==typeof b?b.toString().replace(/ ?\{[\s\S]*$/,""):"undefined"==typeof b?"undefined":"string"!=typeof b?R(b):b):a}),b=b+"\nhttp://errors.angularjs.org/1.2.16/"+(a?a+"/":"")+d,c=2;c<arguments.length;c++)b=b+(2==c?"?":"&")+"p"+(c-2)+"="+encodeURIComponent(h(arguments[c]));return new Error(b)}}function e(a){if(null==a||A(a))return!1;var b=a.length;return 1===a.nodeType&&b?!0:u(a)||x(a)||0===b||"number"==typeof b&&b>0&&b-1 in a}function f(a,b,c){var d;if(a)if(y(a))for(d in a)"prototype"==d||"length"==d||"name"==d||a.hasOwnProperty&&!a.hasOwnProperty(d)||b.call(c,a[d],d);else if(a.forEach&&a.forEach!==f)a.forEach(b,c);else if(e(a))for(d=0;d<a.length;d++)b.call(c,a[d],d);else for(d in a)a.hasOwnProperty(d)&&b.call(c,a[d],d);return a}function g(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b.sort()}function h(a,b,c){for(var d=g(a),e=0;e<d.length;e++)b.call(c,a[d[e]],d[e]);return d}function i(a){return function(b,c){a(c,b)}}function j(){for(var a,b=Bd.length;b;){if(b--,a=Bd[b].charCodeAt(0),57==a)return Bd[b]="A",Bd.join("");if(90!=a)return Bd[b]=String.fromCharCode(a+1),Bd.join("");Bd[b]="0"}return Bd.unshift("0"),Bd.join("")}function k(a,b){b?a.$$hashKey=b:delete a.$$hashKey}function l(a){var b=a.$$hashKey;return f(arguments,function(b){b!==a&&f(b,function(b,c){a[c]=b})}),k(a,b),a}function m(a){return parseInt(a,10)}function n(a,b){return l(new(l(function(){},{prototype:a})),b)}function o(){}function p(a){return a}function q(a){return function(){return a}}function r(a){return"undefined"==typeof a}function s(a){return"undefined"!=typeof a}function t(a){return null!=a&&"object"==typeof a}function u(a){return"string"==typeof a}function v(a){return"number"==typeof a}function w(a){return"[object Date]"===yd.call(a)}function x(a){return"[object Array]"===yd.call(a)}function y(a){return"function"==typeof a}function z(a){return"[object RegExp]"===yd.call(a)}function A(a){return a&&a.document&&a.location&&a.alert&&a.setInterval}function B(a){return a&&a.$evalAsync&&a.$watch}function C(a){return"[object File]"===yd.call(a)}function D(a){return"[object Blob]"===yd.call(a)}function E(a){return!(!a||!(a.nodeName||a.prop&&a.attr&&a.find))}function F(a,b,c){var d=[];return f(a,function(a,e,f){d.push(b.call(c,a,e,f))}),d}function G(a,b){return-1!=H(a,b)}function H(a,b){if(a.indexOf)return a.indexOf(b);for(var c=0;c<a.length;c++)if(b===a[c])return c;
-return-1}function I(a,b){var c=H(a,b);return c>=0&&a.splice(c,1),b}function J(a,b){if(A(a)||B(a))throw zd("cpws","Can't copy! Making copies of Window or Scope instances is not supported.");if(b){if(a===b)throw zd("cpi","Can't copy! Source and destination are identical.");if(x(a)){b.length=0;for(var c=0;c<a.length;c++)b.push(J(a[c]))}else{var d=b.$$hashKey;f(b,function(a,c){delete b[c]});for(var e in a)b[e]=J(a[e]);k(b,d)}}else b=a,a&&(x(a)?b=J(a,[]):w(a)?b=new Date(a.getTime()):z(a)?b=new RegExp(a.source):t(a)&&(b=J(a,{})));return b}function K(a,b){b=b||{};for(var c in a)!a.hasOwnProperty(c)||"$"===c.charAt(0)&&"$"===c.charAt(1)||(b[c]=a[c]);return b}function L(a,b){if(a===b)return!0;if(null===a||null===b)return!1;if(a!==a&&b!==b)return!0;var d,e,f,g=typeof a,h=typeof b;if(g==h&&"object"==g){if(!x(a)){if(w(a))return w(b)&&a.getTime()==b.getTime();if(z(a)&&z(b))return a.toString()==b.toString();if(B(a)||B(b)||A(a)||A(b)||x(b))return!1;f={};for(e in a)if("$"!==e.charAt(0)&&!y(a[e])){if(!L(a[e],b[e]))return!1;f[e]=!0}for(e in b)if(!f.hasOwnProperty(e)&&"$"!==e.charAt(0)&&b[e]!==c&&!y(b[e]))return!1;return!0}if(!x(b))return!1;if((d=a.length)==b.length){for(e=0;d>e;e++)if(!L(a[e],b[e]))return!1;return!0}}return!1}function M(){return b.securityPolicy&&b.securityPolicy.isActive||b.querySelector&&!(!b.querySelector("[ng-csp]")&&!b.querySelector("[data-ng-csp]"))}function N(a,b,c){return a.concat(wd.call(b,c))}function O(a,b){return wd.call(a,b||0)}function P(a,b){var c=arguments.length>2?O(arguments,2):[];return!y(b)||b instanceof RegExp?b:c.length?function(){return arguments.length?b.apply(a,c.concat(wd.call(arguments,0))):b.apply(a,c)}:function(){return arguments.length?b.apply(a,arguments):b.call(a)}}function Q(a,d){var e=d;return"string"==typeof a&&"$"===a.charAt(0)?e=c:A(d)?e="$WINDOW":d&&b===d?e="$DOCUMENT":B(d)&&(e="$SCOPE"),e}function R(a,b){return"undefined"==typeof a?c:JSON.stringify(a,Q,b?"  ":null)}function S(a){return u(a)?JSON.parse(a):a}function T(a){if("function"==typeof a)a=!0;else if(a&&0!==a.length){var b=md(""+a);a=!("f"==b||"0"==b||"false"==b||"no"==b||"n"==b||"[]"==b)}else a=!1;return a}function U(a){a=sd(a).clone();try{a.empty()}catch(b){}var c=3,d=sd("<div>").append(a).html();try{return a[0].nodeType===c?md(d):d.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+md(b)})}catch(b){return md(d)}}function V(a){try{return decodeURIComponent(a)}catch(b){}}function W(a){var b,c,d={};return f((a||"").split("&"),function(a){if(a&&(b=a.split("="),c=V(b[0]),s(c))){var e=s(b[1])?V(b[1]):!0;d[c]?x(d[c])?d[c].push(e):d[c]=[d[c],e]:d[c]=e}}),d}function X(a){var b=[];return f(a,function(a,c){x(a)?f(a,function(a){b.push(Z(c,!0)+(a===!0?"":"="+Z(a,!0)))}):b.push(Z(c,!0)+(a===!0?"":"="+Z(a,!0)))}),b.length?b.join("&"):""}function Y(a){return Z(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Z(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,b?"%20":"+")}function $(a,c){function d(a){a&&h.push(a)}var e,g,h=[a],i=["ng:app","ng-app","x-ng-app","data-ng-app"],j=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;f(i,function(c){i[c]=!0,d(b.getElementById(c)),c=c.replace(":","\\:"),a.querySelectorAll&&(f(a.querySelectorAll("."+c),d),f(a.querySelectorAll("."+c+"\\:"),d),f(a.querySelectorAll("["+c+"]"),d))}),f(h,function(a){if(!e){var b=" "+a.className+" ",c=j.exec(b);c?(e=a,g=(c[2]||"").replace(/\s+/g,",")):f(a.attributes,function(b){!e&&i[b.name]&&(e=a,g=b.value)})}}),e&&c(e,g?[g]:[])}function _(c,d){var e=function(){if(c=sd(c),c.injector()){var a=c[0]===b?"document":U(c);throw zd("btstrpd","App Already Bootstrapped with this Element '{0}'",a)}d=d||[],d.unshift(["$provide",function(a){a.value("$rootElement",c)}]),d.unshift("ng");var e=Ib(d);return e.invoke(["$rootScope","$rootElement","$compile","$injector","$animate",function(a,b,c,d){a.$apply(function(){b.data("$injector",d),c(b)(a)})}]),e},g=/^NG_DEFER_BOOTSTRAP!/;return a&&!g.test(a.name)?e():(a.name=a.name.replace(g,""),void(Ad.resumeBootstrap=function(a){f(a,function(a){d.push(a)}),e()}))}function ab(a,b){return b=b||"_",a.replace(Dd,function(a,c){return(c?b:"")+a.toLowerCase()})}function bb(){td=a.jQuery,td?(sd=td,l(td.fn,{scope:Sd.scope,isolateScope:Sd.isolateScope,controller:Sd.controller,injector:Sd.injector,inheritedData:Sd.inheritedData}),lb("remove",!0,!0,!1),lb("empty",!1,!1,!1),lb("html",!1,!1,!0)):sd=pb,Ad.element=sd}function cb(a,b,c){if(!a)throw zd("areq","Argument '{0}' is {1}",b||"?",c||"required");return a}function db(a,b,c){return c&&x(a)&&(a=a[a.length-1]),cb(y(a),b,"not a function, got "+(a&&"object"==typeof a?a.constructor.name||"Object":typeof a)),a}function eb(a,b){if("hasOwnProperty"===a)throw zd("badname","hasOwnProperty is not a valid {0} name",b)}function fb(a,b,c){if(!b)return a;for(var d,e=b.split("."),f=a,g=e.length,h=0;g>h;h++)d=e[h],a&&(a=(f=a)[d]);return!c&&y(a)?P(f,a):a}function gb(a){var b=a[0],c=a[a.length-1];if(b===c)return sd(b);var d=b,e=[d];do{if(d=d.nextSibling,!d)break;e.push(d)}while(d!==c);return sd(e)}function hb(a){function b(a,b,c){return a[b]||(a[b]=c())}var c=d("$injector"),e=d("ng"),f=b(a,"angular",Object);return f.$$minErr=f.$$minErr||d,b(f,"module",function(){var a={};return function(d,f,g){var h=function(a,b){if("hasOwnProperty"===a)throw e("badname","hasOwnProperty is not a valid {0} name",b)};return h(d,"module"),f&&a.hasOwnProperty(d)&&(a[d]=null),b(a,d,function(){function a(a,c,d){return function(){return b[d||"push"]([a,c,arguments]),i}}if(!f)throw c("nomod","Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.",d);var b=[],e=[],h=a("$injector","invoke"),i={_invokeQueue:b,_runBlocks:e,requires:f,name:d,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:h,run:function(a){return e.push(a),this}};return g&&h(g),i})}})}function ib(b){l(b,{bootstrap:_,copy:J,extend:l,equals:L,element:sd,forEach:f,injector:Ib,noop:o,bind:P,toJson:R,fromJson:S,identity:p,isUndefined:r,isDefined:s,isString:u,isFunction:y,isObject:t,isNumber:v,isElement:E,isArray:x,version:Ed,isDate:w,lowercase:md,uppercase:od,callbacks:{counter:0},$$minErr:d,$$csp:M}),ud=hb(a);try{ud("ngLocale")}catch(c){ud("ngLocale",[]).provider("$locale",dc)}ud("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:Ec}),a.provider("$compile",Pb).directive({a:ye,input:Ie,textarea:Ie,form:Ce,script:qf,select:tf,style:vf,option:uf,ngBind:Ue,ngBindHtml:We,ngBindTemplate:Ve,ngClass:Xe,ngClassEven:Ze,ngClassOdd:Ye,ngCloak:$e,ngController:_e,ngForm:De,ngHide:kf,ngIf:bf,ngInclude:cf,ngInit:ef,ngNonBindable:ff,ngPluralize:gf,ngRepeat:hf,ngShow:jf,ngStyle:lf,ngSwitch:mf,ngSwitchWhen:nf,ngSwitchDefault:of,ngOptions:sf,ngTransclude:pf,ngModel:Oe,ngList:Re,ngChange:Pe,required:Qe,ngRequired:Qe,ngValue:Te}).directive({ngInclude:df}).directive(ze).directive(af),a.provider({$anchorScroll:Jb,$animate:_d,$browser:Mb,$cacheFactory:Nb,$controller:Sb,$document:Tb,$exceptionHandler:Ub,$filter:Pc,$interpolate:bc,$interval:cc,$http:Zb,$httpBackend:_b,$location:qc,$log:rc,$parse:zc,$rootScope:Dc,$q:Ac,$sce:Jc,$sceDelegate:Ic,$sniffer:Kc,$templateCache:Ob,$timeout:Lc,$window:Oc,$$rAF:Cc,$$asyncCallback:Kb})}])}function jb(){return++Hd}function kb(a){return a.replace(Kd,function(a,b,c,d){return d?c.toUpperCase():c}).replace(Ld,"Moz$1")}function lb(a,b,c,d){function e(a){var e,g,h,i,j,k,l,m=c&&a?[this.filter(a)]:[this],n=b;if(!d||null!=a)for(;m.length;)for(e=m.shift(),g=0,h=e.length;h>g;g++)for(i=sd(e[g]),n?i.triggerHandler("$destroy"):n=!n,j=0,k=(l=i.children()).length;k>j;j++)m.push(td(l[j]));return f.apply(this,arguments)}var f=td.fn[a];f=f.$original||f,e.$original=f,td.fn[a]=e}function mb(a){return!Od.test(a)}function nb(a,b){var c,d,e,f,g,h,i=b.createDocumentFragment(),j=[];if(mb(a))j.push(b.createTextNode(a));else{for(c=i.appendChild(b.createElement("div")),d=(Pd.exec(a)||["",""])[1].toLowerCase(),e=Rd[d]||Rd._default,c.innerHTML="<div>&#160;</div>"+e[1]+a.replace(Qd,"<$1></$2>")+e[2],c.removeChild(c.firstChild),f=e[0];f--;)c=c.lastChild;for(g=0,h=c.childNodes.length;h>g;++g)j.push(c.childNodes[g]);c=i.firstChild,c.textContent=""}return i.textContent="",i.innerHTML="",j}function ob(a,c){c=c||b;var d;return(d=Nd.exec(a))?[c.createElement(d[1])]:nb(a,c)}function pb(a){if(a instanceof pb)return a;if(u(a)&&(a=Cd(a)),!(this instanceof pb)){if(u(a)&&"<"!=a.charAt(0))throw Md("nosel","Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");return new pb(a)}if(u(a)){zb(this,ob(a));var c=sd(b.createDocumentFragment());c.append(this)}else zb(this,a)}function qb(a){return a.cloneNode(!0)}function rb(a){tb(a);for(var b=0,c=a.childNodes||[];b<c.length;b++)rb(c[b])}function sb(a,b,c,d){if(s(d))throw Md("offargs","jqLite#off() does not support the `selector` argument");var e=ub(a,"events"),g=ub(a,"handle");g&&(r(b)?f(e,function(b,c){Jd(a,c,b),delete e[c]}):f(b.split(" "),function(b){r(c)?(Jd(a,b,e[b]),delete e[b]):I(e[b]||[],c)}))}function tb(a,b){var d=a[Gd],e=Fd[d];if(e){if(b)return void delete Fd[d].data[b];e.handle&&(e.events.$destroy&&e.handle({},"$destroy"),sb(a)),delete Fd[d],a[Gd]=c}}function ub(a,b,c){var d=a[Gd],e=Fd[d||-1];return s(c)?(e||(a[Gd]=d=jb(),e=Fd[d]={}),void(e[b]=c)):e&&e[b]}function vb(a,b,c){var d=ub(a,"data"),e=s(c),f=!e&&s(b),g=f&&!t(b);if(d||g||ub(a,"data",d={}),e)d[b]=c;else{if(!f)return d;if(g)return d&&d[b];l(d,b)}}function wb(a,b){return a.getAttribute?(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+b+" ")>-1:!1}function xb(a,b){b&&a.setAttribute&&f(b.split(" "),function(b){a.setAttribute("class",Cd((" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+Cd(b)+" "," ")))})}function yb(a,b){if(b&&a.setAttribute){var c=(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");f(b.split(" "),function(a){a=Cd(a),-1===c.indexOf(" "+a+" ")&&(c+=a+" ")}),a.setAttribute("class",Cd(c))}}function zb(a,b){if(b){b=b.nodeName||!s(b.length)||A(b)?[b]:b;for(var c=0;c<b.length;c++)a.push(b[c])}}function Ab(a,b){return Bb(a,"$"+(b||"ngController")+"Controller")}function Bb(a,b,d){a=sd(a),9==a[0].nodeType&&(a=a.find("html"));for(var e=x(b)?b:[b];a.length;){for(var f=a[0],g=0,h=e.length;h>g;g++)if((d=a.data(e[g]))!==c)return d;a=sd(f.parentNode||11===f.nodeType&&f.host)}}function Cb(a){for(var b=0,c=a.childNodes;b<c.length;b++)rb(c[b]);for(;a.firstChild;)a.removeChild(a.firstChild)}function Db(a,b){var c=Td[b.toLowerCase()];return c&&Ud[a.nodeName]&&c}function Eb(a,c){var d=function(d,e){if(d.preventDefault||(d.preventDefault=function(){d.returnValue=!1}),d.stopPropagation||(d.stopPropagation=function(){d.cancelBubble=!0}),d.target||(d.target=d.srcElement||b),r(d.defaultPrevented)){var g=d.preventDefault;d.preventDefault=function(){d.defaultPrevented=!0,g.call(d)},d.defaultPrevented=!1}d.isDefaultPrevented=function(){return d.defaultPrevented||d.returnValue===!1};var h=K(c[e||d.type]||[]);f(h,function(b){b.call(a,d)}),8>=rd?(d.preventDefault=null,d.stopPropagation=null,d.isDefaultPrevented=null):(delete d.preventDefault,delete d.stopPropagation,delete d.isDefaultPrevented)};return d.elem=a,d}function Fb(a){var b,d=typeof a;return"object"==d&&null!==a?"function"==typeof(b=a.$$hashKey)?b=a.$$hashKey():b===c&&(b=a.$$hashKey=j()):b=a,d+":"+b}function Gb(a){f(a,this.put,this)}function Hb(a){var b,c,d,e;return"function"==typeof a?(b=a.$inject)||(b=[],a.length&&(c=a.toString().replace(Yd,""),d=c.match(Vd),f(d[1].split(Wd),function(a){a.replace(Xd,function(a,c,d){b.push(d)})})),a.$inject=b):x(a)?(e=a.length-1,db(a[e],"fn"),b=a.slice(0,e)):db(a,"fn",!0),b}function Ib(a){function b(a){return function(b,c){return t(b)?void f(b,i(a)):a(b,c)}}function c(a,b){if(eb(a,"service"),(y(b)||x(b))&&(b=v.instantiate(b)),!b.$get)throw Zd("pget","Provider '{0}' must define $get factory method.",a);return s[a+n]=b}function d(a,b){return c(a,{$get:b})}function e(a,b){return d(a,["$injector",function(a){return a.instantiate(b)}])}function g(a,b){return d(a,q(b))}function h(a,b){eb(a,"constant"),s[a]=b,w[a]=b}function j(a,b){var c=v.get(a+n),d=c.$get;c.$get=function(){var a=z.invoke(d,c);return z.invoke(b,null,{$delegate:a})}}function k(a){var b,c,d,e,g=[];return f(a,function(a){if(!r.get(a)){r.put(a,!0);try{if(u(a))for(b=ud(a),g=g.concat(k(b.requires)).concat(b._runBlocks),c=b._invokeQueue,d=0,e=c.length;e>d;d++){var f=c[d],h=v.get(f[0]);h[f[1]].apply(h,f[2])}else y(a)?g.push(v.invoke(a)):x(a)?g.push(v.invoke(a)):db(a,"module")}catch(i){throw x(a)&&(a=a[a.length-1]),i.message&&i.stack&&-1==i.stack.indexOf(i.message)&&(i=i.message+"\n"+i.stack),Zd("modulerr","Failed to instantiate module {0} due to:\n{1}",a,i.stack||i.message||i)}}}),g}function l(a,b){function c(c){if(a.hasOwnProperty(c)){if(a[c]===m)throw Zd("cdep","Circular dependency found: {0}",p.join(" <- "));return a[c]}try{return p.unshift(c),a[c]=m,a[c]=b(c)}catch(d){throw a[c]===m&&delete a[c],d}finally{p.shift()}}function d(a,b,d){var e,f,g,h=[],i=Hb(a);for(f=0,e=i.length;e>f;f++){if(g=i[f],"string"!=typeof g)throw Zd("itkn","Incorrect injection token! Expected service name as string, got {0}",g);h.push(d&&d.hasOwnProperty(g)?d[g]:c(g))}return a.$inject||(a=a[e]),a.apply(b,h)}function e(a,b){var c,e,f=function(){};return f.prototype=(x(a)?a[a.length-1]:a).prototype,c=new f,e=d(a,c,b),t(e)||y(e)?e:c}return{invoke:d,instantiate:e,get:c,annotate:Hb,has:function(b){return s.hasOwnProperty(b+n)||a.hasOwnProperty(b)}}}var m={},n="Provider",p=[],r=new Gb,s={$provide:{provider:b(c),factory:b(d),service:b(e),value:b(g),constant:b(h),decorator:j}},v=s.$injector=l(s,function(){throw Zd("unpr","Unknown provider: {0}",p.join(" <- "))}),w={},z=w.$injector=l(w,function(a){var b=v.get(a+n);return z.invoke(b.$get,b)});return f(k(a),function(a){z.invoke(a||o)}),z}function Jb(){var a=!0;this.disableAutoScrolling=function(){a=!1},this.$get=["$window","$location","$rootScope",function(b,c,d){function e(a){var b=null;return f(a,function(a){b||"a"!==md(a.nodeName)||(b=a)}),b}function g(){var a,d=c.hash();d?(a=h.getElementById(d))?a.scrollIntoView():(a=e(h.getElementsByName(d)))?a.scrollIntoView():"top"===d&&b.scrollTo(0,0):b.scrollTo(0,0)}var h=b.document;return a&&d.$watch(function(){return c.hash()},function(){d.$evalAsync(g)}),g}]}function Kb(){this.$get=["$$rAF","$timeout",function(a,b){return a.supported?function(b){return a(b)}:function(a){return b(a,0,!1)}}]}function Lb(a,b,d,e){function g(a){try{a.apply(null,O(arguments,1))}finally{if(s--,0===s)for(;t.length;)try{t.pop()()}catch(b){d.error(b)}}}function h(a,b){!function c(){f(w,function(a){a()}),v=b(c,a)}()}function i(){z=null,x!=j.url()&&(x=j.url(),f(A,function(a){a(j.url())}))}var j=this,k=b[0],l=a.location,m=a.history,n=a.setTimeout,p=a.clearTimeout,q={};j.isMock=!1;var s=0,t=[];j.$$completeOutstandingRequest=g,j.$$incOutstandingRequestCount=function(){s++},j.notifyWhenNoOutstandingRequests=function(a){f(w,function(a){a()}),0===s?a():t.push(a)};var v,w=[];j.addPollFn=function(a){return r(v)&&h(100,n),w.push(a),a};var x=l.href,y=b.find("base"),z=null;j.url=function(b,c){if(l!==a.location&&(l=a.location),m!==a.history&&(m=a.history),b){if(x==b)return;return x=b,e.history?c?m.replaceState(null,"",b):(m.pushState(null,"",b),y.attr("href",y.attr("href"))):(z=b,c?l.replace(b):l.href=b),j}return z||l.href.replace(/%27/g,"'")};var A=[],B=!1;j.onUrlChange=function(b){return B||(e.history&&sd(a).on("popstate",i),e.hashchange?sd(a).on("hashchange",i):j.addPollFn(i),B=!0),A.push(b),b},j.baseHref=function(){var a=y.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""};var C={},D="",E=j.baseHref();j.cookies=function(a,b){var e,f,g,h,i;if(!a){if(k.cookie!==D)for(D=k.cookie,f=D.split("; "),C={},h=0;h<f.length;h++)g=f[h],i=g.indexOf("="),i>0&&(a=unescape(g.substring(0,i)),C[a]===c&&(C[a]=unescape(g.substring(i+1))));return C}b===c?k.cookie=escape(a)+"=;path="+E+";expires=Thu, 01 Jan 1970 00:00:00 GMT":u(b)&&(e=(k.cookie=escape(a)+"="+escape(b)+";path="+E).length+1,e>4096&&d.warn("Cookie '"+a+"' possibly not set or overflowed because it was too large ("+e+" > 4096 bytes)!"))},j.defer=function(a,b){var c;return s++,c=n(function(){delete q[c],g(a)},b||0),q[c]=!0,c},j.defer.cancel=function(a){return q[a]?(delete q[a],p(a),g(o),!0):!1}}function Mb(){this.$get=["$window","$log","$sniffer","$document",function(a,b,c,d){return new Lb(a,d,b,c)}]}function Nb(){this.$get=function(){function a(a,c){function e(a){a!=m&&(n?n==a&&(n=a.n):n=a,f(a.n,a.p),f(a,m),m=a,m.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(a in b)throw d("$cacheFactory")("iid","CacheId '{0}' is already taken!",a);var g=0,h=l({},c,{id:a}),i={},j=c&&c.capacity||Number.MAX_VALUE,k={},m=null,n=null;return b[a]={put:function(a,b){if(j<Number.MAX_VALUE){var c=k[a]||(k[a]={key:a});e(c)}if(!r(b))return a in i||g++,i[a]=b,g>j&&this.remove(n.key),b},get:function(a){if(j<Number.MAX_VALUE){var b=k[a];if(!b)return;e(b)}return i[a]},remove:function(a){if(j<Number.MAX_VALUE){var b=k[a];if(!b)return;b==m&&(m=b.p),b==n&&(n=b.n),f(b.n,b.p),delete k[a]}delete i[a],g--},removeAll:function(){i={},g=0,k={},m=n=null},destroy:function(){i=null,h=null,k=null,delete b[a]},info:function(){return l({},h,{size:g})}}}var b={};return a.info=function(){var a={};return f(b,function(b,c){a[c]=b.info()}),a},a.get=function(a){return b[a]},a}}function Ob(){this.$get=["$cacheFactory",function(a){return a("templates")}]}function Pb(a,d){var e={},g="Directive",h=/^\s*directive\:\s*([\d\w\-_]+)\s+(.*)$/,j=/(([\d\w\-_]+)(?:\:([^;]+))?;?)/,k=/^(on[a-z]+|formaction)$/;this.directive=function m(b,c){return eb(b,"directive"),u(b)?(cb(c,"directiveFactory"),e.hasOwnProperty(b)||(e[b]=[],a.factory(b+g,["$injector","$exceptionHandler",function(a,c){var d=[];return f(e[b],function(e,f){try{var g=a.invoke(e);y(g)?g={compile:q(g)}:!g.compile&&g.link&&(g.compile=q(g.link)),g.priority=g.priority||0,g.index=f,g.name=g.name||b,g.require=g.require||g.controller&&g.name,g.restrict=g.restrict||"A",d.push(g)}catch(h){c(h)}}),d}])),e[b].push(c)):f(b,i(m)),this},this.aHrefSanitizationWhitelist=function(a){return s(a)?(d.aHrefSanitizationWhitelist(a),this):d.aHrefSanitizationWhitelist()},this.imgSrcSanitizationWhitelist=function(a){return s(a)?(d.imgSrcSanitizationWhitelist(a),this):d.imgSrcSanitizationWhitelist()},this.$get=["$injector","$interpolate","$exceptionHandler","$http","$templateCache","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(a,d,i,m,o,r,s,v,w,z,A,B){function C(a,b,c,d,e){a instanceof sd||(a=sd(a)),f(a,function(b,c){3==b.nodeType&&b.nodeValue.match(/\S+/)&&(a[c]=b=sd(b).wrap("<span></span>").parent()[0])});var g=E(a,b,a,c,d,e);return D(a,"ng-scope"),function(b,c,d){cb(b,"scope");var e=c?Sd.clone.call(a):a;f(d,function(a,b){e.data("$"+b+"Controller",a)});for(var h=0,i=e.length;i>h;h++){var j=e[h],k=j.nodeType;(1===k||9===k)&&e.eq(h).data("$scope",b)}return c&&c(e,b),g&&g(b,e,e),e}}function D(a,b){try{a.addClass(b)}catch(c){}}function E(a,b,d,e,f,g){function h(a,d,e,f){var g,h,i,j,k,l,m,n,p,q=d.length,r=new Array(q);for(m=0;q>m;m++)r[m]=d[m];for(m=0,p=0,n=o.length;n>m;p++)i=r[p],g=o[m++],h=o[m++],j=sd(i),g?(g.scope?(k=a.$new(),j.data("$scope",k)):k=a,l=g.transclude,l||!f&&b?g(h,k,i,e,F(a,l||b)):g(h,k,i,e,f)):h&&h(a,i.childNodes,c,f)}for(var i,j,k,l,m,n,o=[],p=0;p<a.length;p++)i=new $,j=G(a[p],[],i,0===p?e:c,f),k=j.length?J(j,a[p],i,b,d,null,[],[],g):null,k&&k.scope&&D(sd(a[p]),"ng-scope"),m=k&&k.terminal||!(l=a[p].childNodes)||!l.length?null:E(l,k?k.transclude:b),o.push(k,m),n=n||k||m,g=null;return n?h:null}function F(a,b){return function(c,d,e){var f=!1;c||(c=a.$new(),c.$$transcluded=!0,f=!0);var g=b(c,d,e);return f&&g.on("$destroy",P(c,c.$destroy)),g}}function G(a,b,c,d,e){var f,g,i=a.nodeType,k=c.$attr;switch(i){case 1:N(b,Qb(vd(a).toLowerCase()),"E",d,e);for(var l,m,n,o,p,q=a.attributes,r=0,s=q&&q.length;s>r;r++){var t=!1,v=!1;if(l=q[r],!rd||rd>=8||l.specified){m=l.name,o=Qb(m),eb.test(o)&&(m=ab(o.substr(6),"-"));var w=o.replace(/(Start|End)$/,"");o===w+"Start"&&(t=m,v=m.substr(0,m.length-5)+"end",m=m.substr(0,m.length-6)),n=Qb(m.toLowerCase()),k[n]=m,c[n]=p=Cd(l.value),Db(a,n)&&(c[n]=!0),X(a,b,p,n),N(b,n,"A",d,e,t,v)}}if(g=a.className,u(g)&&""!==g)for(;f=j.exec(g);)n=Qb(f[2]),N(b,n,"C",d,e)&&(c[n]=Cd(f[3])),g=g.substr(f.index+f[0].length);break;case 3:V(b,a.nodeValue);break;case 8:try{f=h.exec(a.nodeValue),f&&(n=Qb(f[1]),N(b,n,"M",d,e)&&(c[n]=Cd(f[2])))}catch(x){}}return b.sort(S),b}function H(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ae("uterdir","Unterminated attribute, found '{0}' but no matching '{1}' found.",b,c);1==a.nodeType&&(a.hasAttribute(b)&&e++,a.hasAttribute(c)&&e--),d.push(a),a=a.nextSibling}while(e>0)}else d.push(a);return sd(d)}function I(a,b,c){return function(d,e,f,g,h){return e=H(e[0],b,c),a(d,e,f,g,h)}}function J(a,e,g,h,j,k,l,m,n){function o(a,b,c,d){a&&(c&&(a=I(a,c,d)),a.require=w.require,(N===w||w.$$isolateScope)&&(a=Z(a,{isolateScope:!0})),l.push(a)),b&&(c&&(b=I(b,c,d)),b.require=w.require,(N===w||w.$$isolateScope)&&(b=Z(b,{isolateScope:!0})),m.push(b))}function p(a,b,c){var d,e="data",g=!1;if(u(a)){for(;"^"==(d=a.charAt(0))||"?"==d;)a=a.substr(1),"^"==d&&(e="inheritedData"),g=g||"?"==d;if(d=null,c&&"data"===e&&(d=c[a]),d=d||b[e]("$"+a+"Controller"),!d&&!g)throw ae("ctreq","Controller '{0}', required by directive '{1}', can't be found!",a,z);return d}return x(a)&&(d=[],f(a,function(a){d.push(p(a,b,c))})),d}function q(a,b,h,j,k){function n(a,b){var d;return arguments.length<2&&(b=a,a=c),W&&(d=z),k(a,b,d)}var o,q,t,u,v,w,x,y,z={};if(o=e===h?g:K(g,new $(sd(h),g.$attr)),q=o.$$element,N){var A=/^\s*([@=&])(\??)\s*(\w*)\s*$/,B=sd(h);x=b.$new(!0),P&&P===N.$$originalDirective?B.data("$isolateScope",x):B.data("$isolateScopeNoTemplate",x),D(B,"ng-isolate-scope"),f(N.scope,function(a,c){var e,f,g,h,i=a.match(A)||[],j=i[3]||c,k="?"==i[2],l=i[1];switch(x.$$isolateBindings[c]=l+j,l){case"@":o.$observe(j,function(a){x[c]=a}),o.$$observers[j].$$scope=b,o[j]&&(x[c]=d(o[j])(b));break;case"=":if(k&&!o[j])return;f=r(o[j]),h=f.literal?L:function(a,b){return a===b},g=f.assign||function(){throw e=x[c]=f(b),ae("nonassign","Expression '{0}' used with directive '{1}' is non-assignable!",o[j],N.name)},e=x[c]=f(b),x.$watch(function(){var a=f(b);return h(a,x[c])||(h(a,e)?g(b,a=x[c]):x[c]=a),e=a},null,f.literal);break;case"&":f=r(o[j]),x[c]=function(a){return f(b,a)};break;default:throw ae("iscp","Invalid isolate scope definition for directive '{0}'. Definition: {... {1}: '{2}' ...}",N.name,c,a)}})}for(y=k&&n,J&&f(J,function(a){var c,d={$scope:a===N||a.$$isolateScope?x:b,$element:q,$attrs:o,$transclude:y};w=a.controller,"@"==w&&(w=o[a.name]),c=s(w,d),z[a.name]=c,W||q.data("$"+a.name+"Controller",c),a.controllerAs&&(d.$scope[a.controllerAs]=c)}),t=0,u=l.length;u>t;t++)try{v=l[t],v(v.isolateScope?x:b,q,o,v.require&&p(v.require,q,z),y)}catch(C){i(C,U(q))}var E=b;for(N&&(N.template||null===N.templateUrl)&&(E=x),a&&a(E,h.childNodes,c,k),t=m.length-1;t>=0;t--)try{v=m[t],v(v.isolateScope?x:b,q,o,v.require&&p(v.require,q,z),y)}catch(C){i(C,U(q))}}n=n||{};for(var v,w,z,A,B,E,F=-Number.MAX_VALUE,J=n.controllerDirectives,N=n.newIsolateScopeDirective,P=n.templateDirective,S=n.nonTlbTranscludeDirective,V=!1,W=n.hasElementTranscludeDirective,X=g.$$element=sd(e),_=k,ab=h,bb=0,cb=a.length;cb>bb;bb++){w=a[bb];var eb=w.$$start,fb=w.$$end;if(eb&&(X=H(e,eb,fb)),A=c,F>w.priority)break;if((E=w.scope)&&(v=v||w,w.templateUrl||(T("new/isolated scope",N,w,X),t(E)&&(N=w))),z=w.name,!w.templateUrl&&w.controller&&(E=w.controller,J=J||{},T("'"+z+"' controller",J[z],w,X),J[z]=w),(E=w.transclude)&&(V=!0,w.$$tlb||(T("transclusion",S,w,X),S=w),"element"==E?(W=!0,F=w.priority,A=H(e,eb,fb),X=g.$$element=sd(b.createComment(" "+z+": "+g[z]+" ")),e=X[0],Y(j,sd(O(A)),e),ab=C(A,h,F,_&&_.name,{nonTlbTranscludeDirective:S})):(A=sd(qb(e)).contents(),X.empty(),ab=C(A,h))),w.template)if(T("template",P,w,X),P=w,E=y(w.template)?w.template(X,g):w.template,E=db(E),w.replace){if(_=w,A=mb(E)?[]:sd(E),e=A[0],1!=A.length||1!==e.nodeType)throw ae("tplrt","Template for directive '{0}' must have exactly one root element. {1}",z,"");Y(j,X,e);var gb={$attr:{}},hb=G(e,[],gb),ib=a.splice(bb+1,a.length-(bb+1));N&&M(hb),a=a.concat(hb).concat(ib),Q(g,gb),cb=a.length}else X.html(E);if(w.templateUrl)T("template",P,w,X),P=w,w.replace&&(_=w),q=R(a.splice(bb,a.length-bb),X,g,j,ab,l,m,{controllerDirectives:J,newIsolateScopeDirective:N,templateDirective:P,nonTlbTranscludeDirective:S}),cb=a.length;else if(w.compile)try{B=w.compile(X,g,ab),y(B)?o(null,B,eb,fb):B&&o(B.pre,B.post,eb,fb)}catch(jb){i(jb,U(X))}w.terminal&&(q.terminal=!0,F=Math.max(F,w.priority))}return q.scope=v&&v.scope===!0,q.transclude=V&&ab,n.hasElementTranscludeDirective=W,q}function M(a){for(var b=0,c=a.length;c>b;b++)a[b]=n(a[b],{$$isolateScope:!0})}function N(b,d,f,h,j,k,l){if(d===j)return null;var m=null;if(e.hasOwnProperty(d))for(var o,p=a.get(d+g),q=0,r=p.length;r>q;q++)try{o=p[q],(h===c||h>o.priority)&&-1!=o.restrict.indexOf(f)&&(k&&(o=n(o,{$$start:k,$$end:l})),b.push(o),m=o)}catch(s){i(s)}return m}function Q(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;f(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))}),f(b,function(b,f){"class"==f?(D(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 R(a,b,c,d,e,g,h,i){var j,k,n=[],p=b[0],q=a.shift(),r=l({},q,{templateUrl:null,transclude:null,replace:null,$$originalDirective:q}),s=y(q.templateUrl)?q.templateUrl(b,c):q.templateUrl;return b.empty(),m.get(z.getTrustedResourceUrl(s),{cache:o}).success(function(l){var m,o,u,v;if(l=db(l),q.replace){if(u=mb(l)?[]:sd(l),m=u[0],1!=u.length||1!==m.nodeType)throw ae("tplrt","Template for directive '{0}' must have exactly one root element. {1}",q.name,s);o={$attr:{}},Y(d,b,m);var w=G(m,[],o);t(q.scope)&&M(w),a=w.concat(a),Q(c,o)}else m=p,b.html(l);for(a.unshift(r),j=J(a,m,c,e,b,q,g,h,i),f(d,function(a,c){a==m&&(d[c]=b[0])}),k=E(b[0].childNodes,e);n.length;){var x=n.shift(),y=n.shift(),z=n.shift(),A=n.shift(),B=b[0];if(y!==p){var C=y.className;i.hasElementTranscludeDirective&&q.replace||(B=qb(m)),Y(z,sd(y),B),D(sd(B),C)}v=j.transclude?F(x,j.transclude):A,j(k,x,B,d,v)}n=null}).error(function(a,b,c,d){throw ae("tpload","Failed to load template: {0}",d.url)}),function(a,b,c,d,e){n?(n.push(b),n.push(c),n.push(d),n.push(e)):j(k,b,c,d,e)}}function S(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.index}function T(a,b,c,d){if(b)throw ae("multidir","Multiple directives [{0}, {1}] asking for {2} on: {3}",b.name,c.name,a,U(d))}function V(a,b){var c=d(b,!0);c&&a.push({priority:0,compile:q(function(a,b){var d=b.parent(),e=d.data("$binding")||[];e.push(c),D(d.data("$binding",e),"ng-binding"),a.$watch(c,function(a){b[0].nodeValue=a})})})}function W(a,b){if("srcdoc"==b)return z.HTML;var c=vd(a);return"xlinkHref"==b||"FORM"==c&&"action"==b||"IMG"!=c&&("src"==b||"ngSrc"==b)?z.RESOURCE_URL:void 0}function X(a,b,c,e){var f=d(c,!0);if(f){if("multiple"===e&&"SELECT"===vd(a))throw ae("selmulti","Binding to the 'multiple' attribute is not supported. Element: {0}",U(a));b.push({priority:100,compile:function(){return{pre:function(b,c,g){var h=g.$$observers||(g.$$observers={});if(k.test(e))throw ae("nodomevents","Interpolations for HTML DOM event attributes are disallowed.  Please use the ng- versions (such as ng-click instead of onclick) instead.");f=d(g[e],!0,W(a,e)),f&&(g[e]=f(b),(h[e]||(h[e]=[])).$$inter=!0,(g.$$observers&&g.$$observers[e].$$scope||b).$watch(f,function(a,b){"class"===e&&a!=b?g.$updateClass(a,b):g.$set(e,a)}))}}}})}}function Y(a,c,d){var e,f,g=c[0],h=c.length,i=g.parentNode;if(a)for(e=0,f=a.length;f>e;e++)if(a[e]==g){a[e++]=d;for(var j=e,k=j+h-1,l=a.length;l>j;j++,k++)l>k?a[j]=a[k]:delete a[j];a.length-=h-1;break}i&&i.replaceChild(d,g);var m=b.createDocumentFragment();m.appendChild(g),d[sd.expando]=g[sd.expando];for(var n=1,o=c.length;o>n;n++){var p=c[n];sd(p).remove(),m.appendChild(p),delete c[n]}c[0]=d,c.length=1}function Z(a,b){return l(function(){return a.apply(null,arguments)},a,b)}var $=function(a,b){this.$$element=a,this.$attr=b||{}};$.prototype={$normalize:Qb,$addClass:function(a){a&&a.length>0&&A.addClass(this.$$element,a)},$removeClass:function(a){a&&a.length>0&&A.removeClass(this.$$element,a)},$updateClass:function(a,b){var c=Rb(a,b),d=Rb(b,a);0===c.length?A.removeClass(this.$$element,d):0===d.length?A.addClass(this.$$element,c):A.setClass(this.$$element,c,d)},$set:function(a,b,d,e){var g,h=Db(this.$$element[0],a);h&&(this.$$element.prop(a,b),e=h),this[a]=b,e?this.$attr[a]=e:(e=this.$attr[a],e||(this.$attr[a]=e=ab(a,"-"))),g=vd(this.$$element),("A"===g&&"href"===a||"IMG"===g&&"src"===a)&&(this[a]=b=B(b,"src"===a)),d!==!1&&(null===b||b===c?this.$$element.removeAttr(e):this.$$element.attr(e,b));var j=this.$$observers;j&&f(j[a],function(a){try{a(b)}catch(c){i(c)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers={}),e=d[a]||(d[a]=[]);return e.push(b),v.$evalAsync(function(){e.$$inter||b(c[a])}),b}};var _=d.startSymbol(),bb=d.endSymbol(),db="{{"==_||"}}"==bb?p:function(a){return a.replace(/\{\{/g,_).replace(/}}/g,bb)},eb=/^ngAttr[A-Z]/;return C}]}function Qb(a){return kb(a.replace(be,""))}function Rb(a,b){var c="",d=a.split(/\s+/),e=b.split(/\s+/);a:for(var f=0;f<d.length;f++){for(var g=d[f],h=0;h<e.length;h++)if(g==e[h])continue a;c+=(c.length>0?" ":"")+g}return c}function Sb(){var a={},b=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(b,c){eb(b,"controller"),t(b)?l(a,b):a[b]=c},this.$get=["$injector","$window",function(c,e){return function(f,g){var h,i,j,k;if(u(f)&&(i=f.match(b),j=i[1],k=i[3],f=a.hasOwnProperty(j)?a[j]:fb(g.$scope,j,!0)||fb(e,j,!0),db(f,j,!0)),h=c.instantiate(f,g),k){if(!g||"object"!=typeof g.$scope)throw d("$controller")("noscp","Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",j||f.name,k);g.$scope[k]=h}return h}}]}function Tb(){this.$get=["$window",function(a){return sd(a.document)}]}function Ub(){this.$get=["$log",function(a){return function(){a.error.apply(a,arguments)}}]}function Vb(a){var b,c,d,e={};return a?(f(a.split("\n"),function(a){d=a.indexOf(":"),b=md(Cd(a.substr(0,d))),c=Cd(a.substr(d+1)),b&&(e[b]?e[b]+=", "+c:e[b]=c)}),e):e}function Wb(a){var b=t(a)?a:c;return function(c){return b||(b=Vb(a)),c?b[md(c)]||null:b}}function Xb(a,b,c){return y(c)?c(a,b):(f(c,function(c){a=c(a,b)}),a)}function Yb(a){return a>=200&&300>a}function Zb(){var a=/^\s*(\[|\{[^\{])/,b=/[\}\]]\s*$/,d=/^\)\]\}',?\n/,e={"Content-Type":"application/json;charset=utf-8"},g=this.defaults={transformResponse:[function(c){return u(c)&&(c=c.replace(d,""),a.test(c)&&b.test(c)&&(c=S(c))),c}],transformRequest:[function(a){return!t(a)||C(a)||D(a)?a:R(a)}],headers:{common:{Accept:"application/json, text/plain, */*"},post:J(e),put:J(e),patch:J(e)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},i=this.interceptors=[],j=this.responseInterceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(a,b,d,e,k,m){function n(a){function d(a){var b=l({},a,{data:Xb(a.data,a.headers,h.transformResponse)});return Yb(a.status)?b:k.reject(b)}function e(a){function b(a){var b;f(a,function(c,d){y(c)&&(b=c(),null!=b?a[d]=b:delete a[d])})}var c,d,e,h=g.headers,i=l({},a.headers);h=l({},h.common,h[md(a.method)]),b(h),b(i);a:for(c in h){d=md(c);for(e in i)if(md(e)===d)continue a;
-i[c]=h[c]}return i}var h={method:"get",transformRequest:g.transformRequest,transformResponse:g.transformResponse},i=e(a);l(h,a),h.headers=i,h.method=od(h.method);var j=Nc(h.url)?b.cookies()[h.xsrfCookieName||g.xsrfCookieName]:c;j&&(i[h.xsrfHeaderName||g.xsrfHeaderName]=j);var m=function(a){i=a.headers;var b=Xb(a.data,Wb(i),a.transformRequest);return r(a.data)&&f(i,function(a,b){"content-type"===md(b)&&delete i[b]}),r(a.withCredentials)&&!r(g.withCredentials)&&(a.withCredentials=g.withCredentials),q(a,b,i).then(d,d)},n=[m,c],o=k.when(h);for(f(z,function(a){(a.request||a.requestError)&&n.unshift(a.request,a.requestError),(a.response||a.responseError)&&n.push(a.response,a.responseError)});n.length;){var p=n.shift(),s=n.shift();o=o.then(p,s)}return o.success=function(a){return o.then(function(b){a(b.data,b.status,b.headers,h)}),o},o.error=function(a){return o.then(null,function(b){a(b.data,b.status,b.headers,h)}),o},o}function o(){f(arguments,function(a){n[a]=function(b,c){return n(l(c||{},{method:a,url:b}))}})}function p(){f(arguments,function(a){n[a]=function(b,c,d){return n(l(d||{},{method:a,url:b,data:c}))}})}function q(b,c,d){function f(a,b,c,d){j&&(Yb(a)?j.put(p,[a,b,Vb(c),d]):j.remove(p)),h(b,a,c,d),e.$$phase||e.$apply()}function h(a,c,d,e){c=Math.max(c,0),(Yb(c)?m.resolve:m.reject)({data:a,status:c,headers:Wb(d),config:b,statusText:e})}function i(){var a=H(n.pendingRequests,b);-1!==a&&n.pendingRequests.splice(a,1)}var j,l,m=k.defer(),o=m.promise,p=v(b.url,b.params);if(n.pendingRequests.push(b),o.then(i,i),(b.cache||g.cache)&&b.cache!==!1&&"GET"==b.method&&(j=t(b.cache)?b.cache:t(g.cache)?g.cache:w),j)if(l=j.get(p),s(l)){if(l.then)return l.then(i,i),l;x(l)?h(l[1],l[0],J(l[2]),l[3]):h(l,200,{},"OK")}else j.put(p,o);return r(l)&&a(b.method,p,c,f,d,b.timeout,b.withCredentials,b.responseType),o}function v(a,b){if(!b)return a;var c=[];return h(b,function(a,b){null===a||r(a)||(x(a)||(a=[a]),f(a,function(a){t(a)&&(a=R(a)),c.push(Z(b)+"="+Z(a))}))}),c.length>0&&(a+=(-1==a.indexOf("?")?"?":"&")+c.join("&")),a}var w=d("$http"),z=[];return f(i,function(a){z.unshift(u(a)?m.get(a):m.invoke(a))}),f(j,function(a,b){var c=u(a)?m.get(a):m.invoke(a);z.splice(b,0,{response:function(a){return c(k.when(a))},responseError:function(a){return c(k.reject(a))}})}),n.pendingRequests=[],o("get","delete","head","jsonp"),p("post","put"),n.defaults=g,n}]}function $b(b){if(8>=rd&&(!b.match(/^(get|post|head|put|delete|options)$/i)||!a.XMLHttpRequest))return new a.ActiveXObject("Microsoft.XMLHTTP");if(a.XMLHttpRequest)return new a.XMLHttpRequest;throw d("$httpBackend")("noxhr","This browser does not support XMLHttpRequest.")}function _b(){this.$get=["$browser","$window","$document",function(a,b,c){return ac(a,$b,a.defer,b.angular.callbacks,c[0])}]}function ac(a,b,c,d,e){function g(a,b){var c=e.createElement("script"),d=function(){c.onreadystatechange=c.onload=c.onerror=null,e.body.removeChild(c),b&&b()};return c.type="text/javascript",c.src=a,rd&&8>=rd?c.onreadystatechange=function(){/loaded|complete/.test(c.readyState)&&d()}:c.onload=c.onerror=function(){d()},e.body.appendChild(c),d}var h=-1;return function(e,i,j,k,l,m,n,p){function q(){t=h,v&&v(),w&&w.abort()}function r(b,d,e,f,g){y&&c.cancel(y),v=w=null,0===d&&(d=e?200:"file"==Mc(i).protocol?404:0),d=1223===d?204:d,g=g||"",b(d,e,f,g),a.$$completeOutstandingRequest(o)}var t;if(a.$$incOutstandingRequestCount(),i=i||a.url(),"jsonp"==md(e)){var u="_"+(d.counter++).toString(36);d[u]=function(a){d[u].data=a};var v=g(i.replace("JSON_CALLBACK","angular.callbacks."+u),function(){d[u].data?r(k,200,d[u].data):r(k,t||-2),d[u]=Ad.noop})}else{var w=b(e);if(w.open(e,i,!0),f(l,function(a,b){s(a)&&w.setRequestHeader(b,a)}),w.onreadystatechange=function(){if(w&&4==w.readyState){var a=null,b=null;t!==h&&(a=w.getAllResponseHeaders(),b="response"in w?w.response:w.responseText),r(k,t||w.status,b,a,w.statusText||"")}},n&&(w.withCredentials=!0),p)try{w.responseType=p}catch(x){if("json"!==p)throw x}w.send(j||null)}if(m>0)var y=c(q,m);else m&&m.then&&m.then(q)}}function bc(){var a="{{",b="}}";this.startSymbol=function(b){return b?(a=b,this):a},this.endSymbol=function(a){return a?(b=a,this):b},this.$get=["$parse","$exceptionHandler","$sce",function(c,d,e){function f(f,i,j){for(var k,l,m,n,o=0,p=[],q=f.length,s=!1,t=[];q>o;)-1!=(k=f.indexOf(a,o))&&-1!=(l=f.indexOf(b,k+g))?(o!=k&&p.push(f.substring(o,k)),p.push(m=c(n=f.substring(k+g,l))),m.exp=n,o=l+h,s=!0):(o!=q&&p.push(f.substring(o)),o=q);if((q=p.length)||(p.push(""),q=1),j&&p.length>1)throw ce("noconcat","Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required.  See http://docs.angularjs.org/api/ng.$sce",f);return!i||s?(t.length=q,m=function(a){try{for(var b,c=0,g=q;g>c;c++)"function"==typeof(b=p[c])&&(b=b(a),b=j?e.getTrusted(j,b):e.valueOf(b),null===b||r(b)?b="":"string"!=typeof b&&(b=R(b))),t[c]=b;return t.join("")}catch(h){var i=ce("interr","Can't interpolate: {0}\n{1}",f,h.toString());d(i)}},m.exp=f,m.parts=p,m):void 0}var g=a.length,h=b.length;return f.startSymbol=function(){return a},f.endSymbol=function(){return b},f}]}function cc(){this.$get=["$rootScope","$window","$q",function(a,b,c){function d(d,f,g,h){var i=b.setInterval,j=b.clearInterval,k=c.defer(),l=k.promise,m=0,n=s(h)&&!h;return g=s(g)?g:0,l.then(null,null,d),l.$$intervalId=i(function(){k.notify(m++),g>0&&m>=g&&(k.resolve(m),j(l.$$intervalId),delete e[l.$$intervalId]),n||a.$apply()},f),e[l.$$intervalId]=k,l}var e={};return d.cancel=function(a){return a&&a.$$intervalId in e?(e[a.$$intervalId].reject("canceled"),clearInterval(a.$$intervalId),delete e[a.$$intervalId],!0):!1},d}]}function dc(){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:"¤",posSuf:"",negPre:"(¤",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),SHORTMONTH:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),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"},pluralCat:function(a){return 1===a?"one":"other"}}}}function ec(a){for(var b=a.split("/"),c=b.length;c--;)b[c]=Y(b[c]);return b.join("/")}function fc(a,b,c){var d=Mc(a,c);b.$$protocol=d.protocol,b.$$host=d.hostname,b.$$port=m(d.port)||ee[d.protocol]||null}function gc(a,b,c){var d="/"!==a.charAt(0);d&&(a="/"+a);var e=Mc(a,c);b.$$path=decodeURIComponent(d&&"/"===e.pathname.charAt(0)?e.pathname.substring(1):e.pathname),b.$$search=W(e.search),b.$$hash=decodeURIComponent(e.hash),b.$$path&&"/"!=b.$$path.charAt(0)&&(b.$$path="/"+b.$$path)}function hc(a,b){return 0===b.indexOf(a)?b.substr(a.length):void 0}function ic(a){var b=a.indexOf("#");return-1==b?a:a.substr(0,b)}function jc(a){return a.substr(0,ic(a).lastIndexOf("/")+1)}function kc(a){return a.substring(0,a.indexOf("/",a.indexOf("//")+2))}function lc(a,b){this.$$html5=!0,b=b||"";var d=jc(a);fc(a,this,a),this.$$parse=function(b){var c=hc(d,b);if(!u(c))throw fe("ipthprfx",'Invalid url "{0}", missing path prefix "{1}".',b,d);gc(c,this,a),this.$$path||(this.$$path="/"),this.$$compose()},this.$$compose=function(){var a=X(this.$$search),b=this.$$hash?"#"+Y(this.$$hash):"";this.$$url=ec(this.$$path)+(a?"?"+a:"")+b,this.$$absUrl=d+this.$$url.substr(1)},this.$$rewrite=function(e){var f,g;return(f=hc(a,e))!==c?(g=f,(f=hc(b,f))!==c?d+(hc("/",f)||f):a+g):(f=hc(d,e))!==c?d+f:d==e+"/"?d:void 0}}function mc(a,b){var c=jc(a);fc(a,this,a),this.$$parse=function(d){function e(a,b,c){var d,e=/^\/?.*?:(\/.*)/;return 0===b.indexOf(c)&&(b=b.replace(c,"")),e.exec(b)?a:(d=e.exec(a),d?d[1]:a)}var f=hc(a,d)||hc(c,d),g="#"==f.charAt(0)?hc(b,f):this.$$html5?f:"";if(!u(g))throw fe("ihshprfx",'Invalid url "{0}", missing hash prefix "{1}".',d,b);gc(g,this,a),this.$$path=e(this.$$path,g,a),this.$$compose()},this.$$compose=function(){var c=X(this.$$search),d=this.$$hash?"#"+Y(this.$$hash):"";this.$$url=ec(this.$$path)+(c?"?"+c:"")+d,this.$$absUrl=a+(this.$$url?b+this.$$url:"")},this.$$rewrite=function(b){return ic(a)==ic(b)?b:void 0}}function nc(a,b){this.$$html5=!0,mc.apply(this,arguments);var c=jc(a);this.$$rewrite=function(d){var e;return a==ic(d)?d:(e=hc(c,d))?a+b+e:c===d+"/"?c:void 0}}function oc(a){return function(){return this[a]}}function pc(a,b){return function(c){return r(c)?this[a]:(this[a]=b(c),this.$$compose(),this)}}function qc(){var b="",c=!1;this.hashPrefix=function(a){return s(a)?(b=a,this):b},this.html5Mode=function(a){return s(a)?(c=a,this):c},this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(d,e,f,g){function h(a){d.$broadcast("$locationChangeSuccess",i.absUrl(),a)}var i,j,k,l=e.baseHref(),m=e.url();c?(k=kc(m)+(l||"/"),j=f.history?lc:nc):(k=ic(m),j=mc),i=new j(k,"#"+b),i.$$parse(i.$$rewrite(m)),g.on("click",function(b){if(!b.ctrlKey&&!b.metaKey&&2!=b.which){for(var c=sd(b.target);"a"!==md(c[0].nodeName);)if(c[0]===g[0]||!(c=c.parent())[0])return;var f=c.prop("href");t(f)&&"[object SVGAnimatedString]"===f.toString()&&(f=Mc(f.animVal).href);var h=i.$$rewrite(f);f&&!c.attr("target")&&h&&!b.isDefaultPrevented()&&(b.preventDefault(),h!=e.url()&&(i.$$parse(h),d.$apply(),a.angular["ff-684208-preventDefault"]=!0))}}),i.absUrl()!=m&&e.url(i.absUrl(),!0),e.onUrlChange(function(a){i.absUrl()!=a&&(d.$evalAsync(function(){var b=i.absUrl();i.$$parse(a),d.$broadcast("$locationChangeStart",a,b).defaultPrevented?(i.$$parse(b),e.url(b)):h(b)}),d.$$phase||d.$digest())});var n=0;return d.$watch(function(){var a=e.url(),b=i.$$replace;return n&&a==i.absUrl()||(n++,d.$evalAsync(function(){d.$broadcast("$locationChangeStart",i.absUrl(),a).defaultPrevented?i.$$parse(a):(e.url(i.absUrl(),b),h(a))})),i.$$replace=!1,n}),i}]}function rc(){var a=!0,b=this;this.debugEnabled=function(b){return s(b)?(a=b,this):a},this.$get=["$window",function(c){function d(a){return a instanceof 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)),a}function e(a){var b=c.console||{},e=b[a]||b.log||o,g=!1;try{g=!!e.apply}catch(h){}return g?function(){var a=[];return f(arguments,function(b){a.push(d(b))}),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(){a&&c.apply(b,arguments)}}()}}]}function sc(a,b){if("constructor"===a)throw he("isecfld",'Referencing "constructor" field in Angular expressions is disallowed! Expression: {0}',b);return a}function tc(a,b){if(a){if(a.constructor===a)throw he("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",b);if(a.document&&a.location&&a.alert&&a.setInterval)throw he("isecwindow","Referencing the Window in Angular expressions is disallowed! Expression: {0}",b);if(a.children&&(a.nodeName||a.prop&&a.attr&&a.find))throw he("isecdom","Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}",b)}return a}function uc(a,b,d,e,f){f=f||{};for(var g,h=b.split("."),i=0;h.length>1;i++){g=sc(h.shift(),e);var j=a[g];j||(j={},a[g]=j),a=j,a.then&&f.unwrapPromises&&(ge(e),"$$v"in a||!function(a){a.then(function(b){a.$$v=b})}(a),a.$$v===c&&(a.$$v={}),a=a.$$v)}return g=sc(h.shift(),e),a[g]=d,d}function vc(a,b,d,e,f,g,h){return sc(a,g),sc(b,g),sc(d,g),sc(e,g),sc(f,g),h.unwrapPromises?function(h,i){var j,k=i&&i.hasOwnProperty(a)?i:h;return null==k?k:(k=k[a],k&&k.then&&(ge(g),"$$v"in k||(j=k,j.$$v=c,j.then(function(a){j.$$v=a})),k=k.$$v),b?null==k?c:(k=k[b],k&&k.then&&(ge(g),"$$v"in k||(j=k,j.$$v=c,j.then(function(a){j.$$v=a})),k=k.$$v),d?null==k?c:(k=k[d],k&&k.then&&(ge(g),"$$v"in k||(j=k,j.$$v=c,j.then(function(a){j.$$v=a})),k=k.$$v),e?null==k?c:(k=k[e],k&&k.then&&(ge(g),"$$v"in k||(j=k,j.$$v=c,j.then(function(a){j.$$v=a})),k=k.$$v),f?null==k?c:(k=k[f],k&&k.then&&(ge(g),"$$v"in k||(j=k,j.$$v=c,j.then(function(a){j.$$v=a})),k=k.$$v),k):k):k):k):k)}:function(g,h){var i=h&&h.hasOwnProperty(a)?h:g;return null==i?i:(i=i[a],b?null==i?c:(i=i[b],d?null==i?c:(i=i[d],e?null==i?c:(i=i[e],f?null==i?c:i=i[f]:i):i):i):i)}}function wc(a,b){return sc(a,b),function(b,d){return null==b?c:(d&&d.hasOwnProperty(a)?d:b)[a]}}function xc(a,b,d){return sc(a,d),sc(b,d),function(d,e){return null==d?c:(d=(e&&e.hasOwnProperty(a)?e:d)[a],null==d?c:d[b])}}function yc(a,b,d){if(ne.hasOwnProperty(a))return ne[a];var e,g=a.split("."),h=g.length;if(b.unwrapPromises||1!==h)if(b.unwrapPromises||2!==h)if(b.csp)e=6>h?vc(g[0],g[1],g[2],g[3],g[4],d,b):function(a,e){var f,i=0;do f=vc(g[i++],g[i++],g[i++],g[i++],g[i++],d,b)(a,e),e=c,a=f;while(h>i);return f};else{var i="var p;\n";f(g,function(a,c){sc(a,d),i+="if(s == null) return undefined;\ns="+(c?"s":'((k&&k.hasOwnProperty("'+a+'"))?k:s)')+'["'+a+'"];\n'+(b.unwrapPromises?'if (s && s.then) {\n pw("'+d.replace(/(["\r\n])/g,"\\$1")+'");\n if (!("$$v" in s)) {\n p=s;\n p.$$v = undefined;\n p.then(function(v) {p.$$v=v;});\n}\n s=s.$$v\n}\n':"")}),i+="return s;";var j=new Function("s","k","pw",i);j.toString=q(i),e=b.unwrapPromises?function(a,b){return j(a,b,ge)}:j}else e=xc(g[0],g[1],d);else e=wc(g[0],d);return"hasOwnProperty"!==a&&(ne[a]=e),e}function zc(){var a={},b={csp:!1,unwrapPromises:!1,logPromiseWarnings:!0};this.unwrapPromises=function(a){return s(a)?(b.unwrapPromises=!!a,this):b.unwrapPromises},this.logPromiseWarnings=function(a){return s(a)?(b.logPromiseWarnings=a,this):b.logPromiseWarnings},this.$get=["$filter","$sniffer","$log",function(c,d,e){return b.csp=d.csp,ge=function(a){b.logPromiseWarnings&&!ie.hasOwnProperty(a)&&(ie[a]=!0,e.warn("[$parse] Promise found in the expression `"+a+"`. Automatic unwrapping of promises in Angular expressions is deprecated."))},function(d){var e;switch(typeof d){case"string":if(a.hasOwnProperty(d))return a[d];var f=new le(b),g=new me(f,c,b);return e=g.parse(d,!1),"hasOwnProperty"!==d&&(a[d]=e),e;case"function":return d;default:return o}}}]}function Ac(){this.$get=["$rootScope","$exceptionHandler",function(a,b){return Bc(function(b){a.$evalAsync(b)},b)}]}function Bc(a,b){function d(a){return a}function e(a){return j(a)}function g(a){var b=h(),c=0,d=x(a)?[]:{};return f(a,function(a,e){c++,i(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),b.promise}var h=function(){var f,g,j=[];return g={resolve:function(b){if(j){var d=j;j=c,f=i(b),d.length&&a(function(){for(var a,b=0,c=d.length;c>b;b++)a=d[b],f.then(a[0],a[1],a[2])})}},reject:function(a){g.resolve(k(a))},notify:function(b){if(j){var c=j;j.length&&a(function(){for(var a,d=0,e=c.length;e>d;d++)a=c[d],a[2](b)})}},promise:{then:function(a,c,g){var i=h(),k=function(c){try{i.resolve((y(a)?a:d)(c))}catch(e){i.reject(e),b(e)}},l=function(a){try{i.resolve((y(c)?c:e)(a))}catch(d){i.reject(d),b(d)}},m=function(a){try{i.notify((y(g)?g:d)(a))}catch(c){b(c)}};return j?j.push([k,l,m]):f.then(k,l,m),i.promise},"catch":function(a){return this.then(null,a)},"finally":function(a){function b(a,b){var c=h();return b?c.resolve(a):c.reject(a),c.promise}function c(c,e){var f=null;try{f=(a||d)()}catch(g){return b(g,!1)}return f&&y(f.then)?f.then(function(){return b(c,e)},function(a){return b(a,!1)}):b(c,e)}return this.then(function(a){return c(a,!0)},function(a){return c(a,!1)})}}}},i=function(b){return b&&y(b.then)?b:{then:function(c){var d=h();return a(function(){d.resolve(c(b))}),d.promise}}},j=function(a){var b=h();return b.reject(a),b.promise},k=function(c){return{then:function(d,f){var g=h();return a(function(){try{g.resolve((y(f)?f:e)(c))}catch(a){g.reject(a),b(a)}}),g.promise}}},l=function(c,f,g,k){var l,m=h(),n=function(a){try{return(y(f)?f:d)(a)}catch(c){return b(c),j(c)}},o=function(a){try{return(y(g)?g:e)(a)}catch(c){return b(c),j(c)}},p=function(a){try{return(y(k)?k:d)(a)}catch(c){b(c)}};return a(function(){i(c).then(function(a){l||(l=!0,m.resolve(i(a).then(n,o,p)))},function(a){l||(l=!0,m.resolve(o(a)))},function(a){l||m.notify(p(a))})}),m.promise};return{defer:h,reject:j,when:l,all:g}}function Cc(){this.$get=["$window","$timeout",function(a,b){var c=a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame,d=a.cancelAnimationFrame||a.webkitCancelAnimationFrame||a.mozCancelAnimationFrame||a.webkitCancelRequestAnimationFrame,e=!!c,f=e?function(a){var b=c(a);return function(){d(b)}}:function(a){var c=b(a,16.66,!1);return function(){b.cancel(c)}};return f.supported=e,f}]}function Dc(){var a=10,b=d("$rootScope"),c=null;this.digestTtl=function(b){return arguments.length&&(a=b),a},this.$get=["$injector","$exceptionHandler","$parse","$browser",function(d,g,h,i){function k(){this.$id=j(),this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null,this["this"]=this.$root=this,this.$$destroyed=!1,this.$$asyncQueue=[],this.$$postDigestQueue=[],this.$$listeners={},this.$$listenerCount={},this.$$isolateBindings={}}function l(a){if(r.$$phase)throw b("inprog","{0} already in progress",r.$$phase);r.$$phase=a}function m(){r.$$phase=null}function n(a,b){var c=h(a);return db(c,b),c}function p(a,b,c){do a.$$listenerCount[c]-=b,0===a.$$listenerCount[c]&&delete a.$$listenerCount[c];while(a=a.$parent)}function q(){}k.prototype={constructor:k,$new:function(a){var b,c;return a?(c=new k,c.$root=this.$root,c.$$asyncQueue=this.$$asyncQueue,c.$$postDigestQueue=this.$$postDigestQueue):(b=function(){},b.prototype=this,c=new b,c.$id=j()),c["this"]=c,c.$$listeners={},c.$$listenerCount={},c.$parent=this,c.$$watchers=c.$$nextSibling=c.$$childHead=c.$$childTail=null,c.$$prevSibling=this.$$childTail,this.$$childHead?(this.$$childTail.$$nextSibling=c,this.$$childTail=c):this.$$childHead=this.$$childTail=c,c},$watch:function(a,b,d){var e=this,f=n(a,"watch"),g=e.$$watchers,h={fn:b,last:q,get:f,exp:a,eq:!!d};if(c=null,!y(b)){var i=n(b||o,"listener");h.fn=function(a,b,c){i(c)}}if("string"==typeof a&&f.constant){var j=h.fn;h.fn=function(a,b,c){j.call(this,a,b,c),I(g,h)}}return g||(g=e.$$watchers=[]),g.unshift(h),function(){I(g,h),c=null}},$watchCollection:function(a,b){function c(){f=m(j);var a,b;if(t(f))if(e(f)){g!==n&&(g=n,q=g.length=0,l++),a=f.length,q!==a&&(l++,g.length=q=a);for(var c=0;a>c;c++){var d=g[c]!==g[c]&&f[c]!==f[c];d||g[c]===f[c]||(l++,g[c]=f[c])}}else{g!==o&&(g=o={},q=0,l++),a=0;for(b in f)f.hasOwnProperty(b)&&(a++,g.hasOwnProperty(b)?g[b]!==f[b]&&(l++,g[b]=f[b]):(q++,g[b]=f[b],l++));if(q>a){l++;for(b in g)g.hasOwnProperty(b)&&!f.hasOwnProperty(b)&&(q--,delete g[b])}}else g!==f&&(g=f,l++);return l}function d(){if(p?(p=!1,b(f,f,j)):b(f,i,j),k)if(t(f))if(e(f)){i=new Array(f.length);for(var a=0;a<f.length;a++)i[a]=f[a]}else{i={};for(var c in f)nd.call(f,c)&&(i[c]=f[c])}else i=f}var f,g,i,j=this,k=b.length>1,l=0,m=h(a),n=[],o={},p=!0,q=0;return this.$watch(c,d)},$digest:function(){var d,e,f,h,i,j,k,n,o,p,r,s=this.$$asyncQueue,t=this.$$postDigestQueue,u=a,v=this,w=[];l("$digest"),c=null;do{for(j=!1,n=v;s.length;){try{r=s.shift(),r.scope.$eval(r.expression)}catch(x){m(),g(x)}c=null}a:do{if(h=n.$$watchers)for(i=h.length;i--;)try{if(d=h[i])if((e=d.get(n))===(f=d.last)||(d.eq?L(e,f):"number"==typeof e&&"number"==typeof f&&isNaN(e)&&isNaN(f))){if(d===c){j=!1;break a}}else j=!0,c=d,d.last=d.eq?J(e):e,d.fn(e,f===q?e:f,n),5>u&&(o=4-u,w[o]||(w[o]=[]),p=y(d.exp)?"fn: "+(d.exp.name||d.exp.toString()):d.exp,p+="; newVal: "+R(e)+"; oldVal: "+R(f),w[o].push(p))}catch(x){m(),g(x)}if(!(k=n.$$childHead||n!==v&&n.$$nextSibling))for(;n!==v&&!(k=n.$$nextSibling);)n=n.$parent}while(n=k);if((j||s.length)&&!u--)throw m(),b("infdig","{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}",a,R(w))}while(j||s.length);for(m();t.length;)try{t.shift()()}catch(x){g(x)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy"),this.$$destroyed=!0,this!==r&&(f(this.$$listenerCount,P(null,p,this)),a.$$childHead==this&&(a.$$childHead=this.$$nextSibling),a.$$childTail==this&&(a.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=null,this.$$listeners={},this.$$watchers=this.$$asyncQueue=this.$$postDigestQueue=[],this.$destroy=this.$digest=this.$apply=o,this.$on=this.$watch=function(){return o})}},$eval:function(a,b){return h(a)(this,b)},$evalAsync:function(a){r.$$phase||r.$$asyncQueue.length||i.defer(function(){r.$$asyncQueue.length&&r.$digest()}),this.$$asyncQueue.push({scope:this,expression:a})},$$postDigest:function(a){this.$$postDigestQueue.push(a)},$apply:function(a){try{return l("$apply"),this.$eval(a)}catch(b){g(b)}finally{m();try{r.$digest()}catch(b){throw g(b),b}}},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]),c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){c[H(c,b)]=null,p(e,1,a)}},$emit:function(a){var b,c,d,e=[],f=this,h=!1,i={name:a,targetScope:f,stopPropagation:function(){h=!0},preventDefault:function(){i.defaultPrevented=!0},defaultPrevented:!1},j=N([i],arguments,1);do{for(b=f.$$listeners[a]||e,i.currentScope=f,c=0,d=b.length;d>c;c++)if(b[c])try{b[c].apply(null,j)}catch(k){g(k)}else b.splice(c,1),c--,d--;if(h)return i;f=f.$parent}while(f);return i},$broadcast:function(a){for(var b,c,d,e=this,f=e,h=e,i={name:a,targetScope:e,preventDefault:function(){i.defaultPrevented=!0},defaultPrevented:!1},j=N([i],arguments,1);f=h;){for(i.currentScope=f,b=f.$$listeners[a]||[],c=0,d=b.length;d>c;c++)if(b[c])try{b[c].apply(null,j)}catch(k){g(k)}else b.splice(c,1),c--,d--;if(!(h=f.$$listenerCount[a]&&f.$$childHead||f!==e&&f.$$nextSibling))for(;f!==e&&!(h=f.$$nextSibling);)f=f.$parent}return i}};var r=new k;return r}]}function Ec(){var a=/^\s*(https?|ftp|mailto|tel|file):/,b=/^\s*(https?|ftp|file):|data:image\//;this.aHrefSanitizationWhitelist=function(b){return s(b)?(a=b,this):a},this.imgSrcSanitizationWhitelist=function(a){return s(a)?(b=a,this):b},this.$get=function(){return function(c,d){var e,f=d?b:a;return rd&&!(rd>=8)||(e=Mc(c).href,""===e||e.match(f))?c:"unsafe:"+e}}}function Fc(a){return a.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")}function Gc(a){if("self"===a)return a;if(u(a)){if(a.indexOf("***")>-1)throw oe("iwcard","Illegal sequence *** in string matcher.  String: {0}",a);return a=Fc(a).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*"),new RegExp("^"+a+"$")}if(z(a))return new RegExp("^"+a.source+"$");throw oe("imatcher",'Matchers may only be "self", string patterns or RegExp objects')}function Hc(a){var b=[];return s(a)&&f(a,function(a){b.push(Gc(a))}),b}function Ic(){this.SCE_CONTEXTS=pe;var a=["self"],b=[];this.resourceUrlWhitelist=function(b){return arguments.length&&(a=Hc(b)),a},this.resourceUrlBlacklist=function(a){return arguments.length&&(b=Hc(a)),b},this.$get=["$injector",function(d){function e(a,b){return"self"===a?Nc(b):!!a.exec(b.href)}function f(c){var d,f,g=Mc(c.toString()),h=!1;for(d=0,f=a.length;f>d;d++)if(e(a[d],g)){h=!0;break}if(h)for(d=0,f=b.length;f>d;d++)if(e(b[d],g)){h=!1;break}return h}function g(a){var b=function(a){this.$$unwrapTrustedValue=function(){return a}};return a&&(b.prototype=new a),b.prototype.valueOf=function(){return this.$$unwrapTrustedValue()},b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()},b}function h(a,b){var d=m.hasOwnProperty(a)?m[a]:null;if(!d)throw oe("icontext","Attempted to trust a value in invalid context. Context: {0}; Value: {1}",a,b);if(null===b||b===c||""===b)return b;if("string"!=typeof b)throw oe("itype","Attempted to trust a non-string value in a content requiring a string: Context: {0}",a);return new d(b)}function i(a){return a instanceof l?a.$$unwrapTrustedValue():a}function j(a,b){if(null===b||b===c||""===b)return b;var d=m.hasOwnProperty(a)?m[a]:null;if(d&&b instanceof d)return b.$$unwrapTrustedValue();if(a===pe.RESOURCE_URL){if(f(b))return b;throw oe("insecurl","Blocked loading resource from url not allowed by $sceDelegate policy.  URL: {0}",b.toString())}if(a===pe.HTML)return k(b);throw oe("unsafe","Attempting to use an unsafe value in a safe context.")}var k=function(){throw oe("unsafe","Attempting to use an unsafe value in a safe context.")};d.has("$sanitize")&&(k=d.get("$sanitize"));var l=g(),m={};return m[pe.HTML]=g(l),m[pe.CSS]=g(l),m[pe.URL]=g(l),m[pe.JS]=g(l),m[pe.RESOURCE_URL]=g(m[pe.URL]),{trustAs:h,getTrusted:j,valueOf:i}}]}function Jc(){var a=!0;this.enabled=function(b){return arguments.length&&(a=!!b),a},this.$get=["$parse","$sniffer","$sceDelegate",function(b,c,d){if(a&&c.msie&&c.msieDocumentMode<8)throw oe("iequirks","Strict Contextual Escaping does not support Internet Explorer version < 9 in quirks mode.  You can fix this by adding the text <!doctype html> to the top of your HTML document.  See http://docs.angularjs.org/api/ng.$sce for more information.");var e=J(pe);e.isEnabled=function(){return a},e.trustAs=d.trustAs,e.getTrusted=d.getTrusted,e.valueOf=d.valueOf,a||(e.trustAs=e.getTrusted=function(a,b){return b},e.valueOf=p),e.parseAs=function(a,c){var d=b(c);return d.literal&&d.constant?d:function(b,c){return e.getTrusted(a,d(b,c))}};var g=e.parseAs,h=e.getTrusted,i=e.trustAs;return f(pe,function(a,b){var c=md(b);e[kb("parse_as_"+c)]=function(b){return g(a,b)},e[kb("get_trusted_"+c)]=function(b){return h(a,b)},e[kb("trust_as_"+c)]=function(b){return i(a,b)}}),e}]}function Kc(){this.$get=["$window","$document",function(a,b){var c,d,e={},f=m((/android (\d+)/.exec(md((a.navigator||{}).userAgent))||[])[1]),g=/Boxee/i.test((a.navigator||{}).userAgent),h=b[0]||{},i=h.documentMode,j=/^(Moz|webkit|O|ms)(?=[A-Z])/,k=h.body&&h.body.style,l=!1,n=!1;if(k){for(var o in k)if(d=j.exec(o)){c=d[0],c=c.substr(0,1).toUpperCase()+c.substr(1);break}c||(c="WebkitOpacity"in k&&"webkit"),l=!!("transition"in k||c+"Transition"in k),n=!!("animation"in k||c+"Animation"in k),!f||l&&n||(l=u(h.body.style.webkitTransition),n=u(h.body.style.webkitAnimation))}return{history:!(!a.history||!a.history.pushState||4>f||g),hashchange:"onhashchange"in a&&(!i||i>7),hasEvent:function(a){if("input"==a&&9==rd)return!1;if(r(e[a])){var b=h.createElement("div");e[a]="on"+a in b}return e[a]},csp:M(),vendorPrefix:c,transitions:l,animations:n,android:f,msie:rd,msieDocumentMode:i}}]}function Lc(){this.$get=["$rootScope","$browser","$q","$exceptionHandler",function(a,b,c,d){function e(e,g,h){var i,j=c.defer(),k=j.promise,l=s(h)&&!h;return i=b.defer(function(){try{j.resolve(e())}catch(b){j.reject(b),d(b)}finally{delete f[k.$$timeoutId]}l||a.$apply()},g),k.$$timeoutId=i,f[i]=j,k}var f={};return e.cancel=function(a){return a&&a.$$timeoutId in f?(f[a.$$timeoutId].reject("canceled"),delete f[a.$$timeoutId],b.defer.cancel(a.$$timeoutId)):!1},e}]}function Mc(a){var b=a;return rd&&(qe.setAttribute("href",b),b=qe.href),qe.setAttribute("href",b),{href:qe.href,protocol:qe.protocol?qe.protocol.replace(/:$/,""):"",host:qe.host,search:qe.search?qe.search.replace(/^\?/,""):"",hash:qe.hash?qe.hash.replace(/^#/,""):"",hostname:qe.hostname,port:qe.port,pathname:"/"===qe.pathname.charAt(0)?qe.pathname:"/"+qe.pathname}}function Nc(a){var b=u(a)?Mc(a):a;return b.protocol===re.protocol&&b.host===re.host}function Oc(){this.$get=q(a)}function Pc(a){function b(d,e){if(t(d)){var g={};return f(d,function(a,c){g[c]=b(c,a)}),g}return a.factory(d+c,e)}var c="Filter";this.register=b,this.$get=["$injector",function(a){return function(b){return a.get(b+c)}}],b("currency",Rc),b("date",Zc),b("filter",Qc),b("json",$c),b("limitTo",_c),b("lowercase",we),b("number",Sc),b("orderBy",ad),b("uppercase",xe)}function Qc(){return function(a,b,c){if(!x(a))return a;var d=typeof c,e=[];e.check=function(a){for(var b=0;b<e.length;b++)if(!e[b](a))return!1;return!0},"function"!==d&&(c="boolean"===d&&c?function(a,b){return Ad.equals(a,b)}:function(a,b){if(a&&b&&"object"==typeof a&&"object"==typeof b){for(var d in a)if("$"!==d.charAt(0)&&nd.call(a,d)&&c(a[d],b[d]))return!0;return!1}return b=(""+b).toLowerCase(),(""+a).toLowerCase().indexOf(b)>-1});var f=function(a,b){if("string"==typeof b&&"!"===b.charAt(0))return!f(a,b.substr(1));switch(typeof a){case"boolean":case"number":case"string":return c(a,b);case"object":switch(typeof b){case"object":return c(a,b);default:for(var d in a)if("$"!==d.charAt(0)&&f(a[d],b))return!0}return!1;case"array":for(var e=0;e<a.length;e++)if(f(a[e],b))return!0;return!1;default:return!1}};switch(typeof b){case"boolean":case"number":case"string":b={$:b};case"object":for(var g in b)!function(a){"undefined"!=typeof b[a]&&e.push(function(c){return f("$"==a?c:c&&c[a],b[a])})}(g);break;case"function":e.push(b);break;default:return a}for(var h=[],i=0;i<a.length;i++){var j=a[i];e.check(j)&&h.push(j)}return h}}function Rc(a){var b=a.NUMBER_FORMATS;return function(a,c){return r(c)&&(c=b.CURRENCY_SYM),Tc(a,b.PATTERNS[1],b.GROUP_SEP,b.DECIMAL_SEP,2).replace(/\u00A4/g,c)}}function Sc(a){var b=a.NUMBER_FORMATS;return function(a,c){return Tc(a,b.PATTERNS[0],b.GROUP_SEP,b.DECIMAL_SEP,c)}}function Tc(a,b,c,d,e){if(null==a||!isFinite(a)||t(a))return"";var f=0>a;a=Math.abs(a);var g=a+"",h="",i=[],j=!1;if(-1!==g.indexOf("e")){var k=g.match(/([\d\.]+)e(-?)(\d+)/);k&&"-"==k[2]&&k[3]>e+1?g="0":(h=g,j=!0)}if(j)e>0&&a>-1&&1>a&&(h=a.toFixed(e));else{var l=(g.split(se)[1]||"").length;r(e)&&(e=Math.min(Math.max(b.minFrac,l),b.maxFrac));var m=Math.pow(10,e);a=Math.round(a*m)/m;var n=(""+a).split(se),o=n[0];n=n[1]||"";var p,q=0,s=b.lgSize,u=b.gSize;if(o.length>=s+u)for(q=o.length-s,p=0;q>p;p++)(q-p)%u===0&&0!==p&&(h+=c),h+=o.charAt(p);for(p=q;p<o.length;p++)(o.length-p)%s===0&&0!==p&&(h+=c),h+=o.charAt(p);for(;n.length<e;)n+="0";e&&"0"!==e&&(h+=d+n.substr(0,e))}return i.push(f?b.negPre:b.posPre),i.push(h),i.push(f?b.negSuf:b.posSuf),i.join("")}function Uc(a,b,c){var d="";for(0>a&&(d="-",a=-a),a=""+a;a.length<b;)a="0"+a;return c&&(a=a.substr(a.length-b)),d+a}function Vc(a,b,c,d){return c=c||0,function(e){var f=e["get"+a]();return(c>0||f>-c)&&(f+=c),0===f&&-12==c&&(f=12),Uc(f,b,d)}}function Wc(a,b){return function(c,d){var e=c["get"+a](),f=od(b?"SHORT"+a:a);return d[f][e]}}function Xc(a){var b=-1*a.getTimezoneOffset(),c=b>=0?"+":"";return c+=Uc(Math[b>0?"floor":"ceil"](b/60),2)+Uc(Math.abs(b%60),2)}function Yc(a,b){return a.getHours()<12?b.AMPMS[0]:b.AMPMS[1]}function Zc(a){function b(a){var b;if(b=a.match(c)){var d=new Date(0),e=0,f=0,g=b[8]?d.setUTCFullYear:d.setFullYear,h=b[8]?d.setUTCHours:d.setHours;b[9]&&(e=m(b[9]+b[10]),f=m(b[9]+b[11])),g.call(d,m(b[1]),m(b[2])-1,m(b[3]));var i=m(b[4]||0)-e,j=m(b[5]||0)-f,k=m(b[6]||0),l=Math.round(1e3*parseFloat("0."+(b[7]||0)));return h.call(d,i,j,k,l),d}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,d){var e,g,h="",i=[];if(d=d||"mediumDate",d=a.DATETIME_FORMATS[d]||d,u(c)&&(c=ve.test(c)?m(c):b(c)),v(c)&&(c=new Date(c)),!w(c))return c;for(;d;)g=ue.exec(d),g?(i=N(i,g,1),d=i.pop()):(i.push(d),d=null);return f(i,function(b){e=te[b],h+=e?e(c,a.DATETIME_FORMATS):b.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),h}}function $c(){return function(a){return R(a,!0)}}function _c(){return function(a,b){if(!x(a)&&!u(a))return a;if(b=m(b),u(a))return b?b>=0?a.slice(0,b):a.slice(b,a.length):"";var c,d,e=[];for(b>a.length?b=a.length:b<-a.length&&(b=-a.length),b>0?(c=0,d=b):(c=a.length+b,d=a.length);d>c;c++)e.push(a[c]);return e}}function ad(a){return function(b,c,d){function e(a,b){for(var d=0;d<c.length;d++){var e=c[d](a,b);
-if(0!==e)return e}return 0}function f(a,b){return T(b)?function(b,c){return a(c,b)}:a}function g(a,b){var c=typeof a,d=typeof b;return c==d?("string"==c&&(a=a.toLowerCase(),b=b.toLowerCase()),a===b?0:b>a?-1:1):d>c?-1:1}if(!x(b))return b;if(!c)return b;c=x(c)?c:[c],c=F(c,function(b){var c=!1,d=b||p;if(u(b)&&(("+"==b.charAt(0)||"-"==b.charAt(0))&&(c="-"==b.charAt(0),b=b.substring(1)),d=a(b),d.constant)){var e=d();return f(function(a,b){return g(a[e],b[e])},c)}return f(function(a,b){return g(d(a),d(b))},c)});for(var h=[],i=0;i<b.length;i++)h.push(b[i]);return h.sort(f(e,d))}}function bd(a){return y(a)&&(a={link:a}),a.restrict=a.restrict||"AC",q(a)}function cd(a,b,c,d){function e(b,c){c=c?"-"+ab(c,"-"):"",d.removeClass(a,(b?Ke:Je)+c),d.addClass(a,(b?Je:Ke)+c)}var g=this,h=a.parent().controller("form")||Ae,i=0,j=g.$error={},k=[];g.$name=b.name||b.ngForm,g.$dirty=!1,g.$pristine=!0,g.$valid=!0,g.$invalid=!1,h.$addControl(g),a.addClass(Le),e(!0),g.$addControl=function(a){eb(a.$name,"input"),k.push(a),a.$name&&(g[a.$name]=a)},g.$removeControl=function(a){a.$name&&g[a.$name]===a&&delete g[a.$name],f(j,function(b,c){g.$setValidity(c,!0,a)}),I(k,a)},g.$setValidity=function(a,b,c){var d=j[a];if(b)d&&(I(d,c),d.length||(i--,i||(e(b),g.$valid=!0,g.$invalid=!1),j[a]=!1,e(!0,a),h.$setValidity(a,!0,g)));else{if(i||e(b),d){if(G(d,c))return}else j[a]=d=[],i++,e(!1,a),h.$setValidity(a,!1,g);d.push(c),g.$valid=!1,g.$invalid=!0}},g.$setDirty=function(){d.removeClass(a,Le),d.addClass(a,Me),g.$dirty=!0,g.$pristine=!1,h.$setDirty()},g.$setPristine=function(){d.removeClass(a,Me),d.addClass(a,Le),g.$dirty=!1,g.$pristine=!0,f(k,function(a){a.$setPristine()})}}function dd(a,b,d,e){return a.$setValidity(b,d),d?e:c}function ed(a,b,c){var d=c.prop("validity");if(t(d)){var e=function(c){return a.$error[b]||!(d.badInput||d.customError||d.typeMismatch)||d.valueMissing?c:void a.$setValidity(b,!1)};a.$parsers.push(e)}}function fd(a,b,c,e,f,g){var h=b.prop("validity");if(!f.android){var i=!1;b.on("compositionstart",function(){i=!0}),b.on("compositionend",function(){i=!1,j()})}var j=function(){if(!i){var d=b.val();T(c.ngTrim||"T")&&(d=Cd(d)),(e.$viewValue!==d||h&&""===d&&!h.valueMissing)&&(a.$$phase?e.$setViewValue(d):a.$apply(function(){e.$setViewValue(d)}))}};if(f.hasEvent("input"))b.on("input",j);else{var k,l=function(){k||(k=g.defer(function(){j(),k=null}))};b.on("keydown",function(a){var b=a.keyCode;91===b||b>15&&19>b||b>=37&&40>=b||l()}),f.hasEvent("paste")&&b.on("paste cut",l)}b.on("change",j),e.$render=function(){b.val(e.$isEmpty(e.$viewValue)?"":e.$viewValue)};var n,o,p=c.ngPattern;if(p){var q=function(a,b){return dd(e,"pattern",e.$isEmpty(b)||a.test(b),b)};o=p.match(/^\/(.*)\/([gim]*)$/),o?(p=new RegExp(o[1],o[2]),n=function(a){return q(p,a)}):n=function(c){var e=a.$eval(p);if(!e||!e.test)throw d("ngPattern")("noregexp","Expected {0} to be a RegExp but was {1}. Element: {2}",p,e,U(b));return q(e,c)},e.$formatters.push(n),e.$parsers.push(n)}if(c.ngMinlength){var r=m(c.ngMinlength),s=function(a){return dd(e,"minlength",e.$isEmpty(a)||a.length>=r,a)};e.$parsers.push(s),e.$formatters.push(s)}if(c.ngMaxlength){var t=m(c.ngMaxlength),u=function(a){return dd(e,"maxlength",e.$isEmpty(a)||a.length<=t,a)};e.$parsers.push(u),e.$formatters.push(u)}}function gd(a,b,d,e,f,g){if(fd(a,b,d,e,f,g),e.$parsers.push(function(a){var b=e.$isEmpty(a);return b||Ge.test(a)?(e.$setValidity("number",!0),""===a?null:b?a:parseFloat(a)):(e.$setValidity("number",!1),c)}),ed(e,"number",b),e.$formatters.push(function(a){return e.$isEmpty(a)?"":""+a}),d.min){var h=function(a){var b=parseFloat(d.min);return dd(e,"min",e.$isEmpty(a)||a>=b,a)};e.$parsers.push(h),e.$formatters.push(h)}if(d.max){var i=function(a){var b=parseFloat(d.max);return dd(e,"max",e.$isEmpty(a)||b>=a,a)};e.$parsers.push(i),e.$formatters.push(i)}e.$formatters.push(function(a){return dd(e,"number",e.$isEmpty(a)||v(a),a)})}function hd(a,b,c,d,e,f){fd(a,b,c,d,e,f);var g=function(a){return dd(d,"url",d.$isEmpty(a)||Ee.test(a),a)};d.$formatters.push(g),d.$parsers.push(g)}function id(a,b,c,d,e,f){fd(a,b,c,d,e,f);var g=function(a){return dd(d,"email",d.$isEmpty(a)||Fe.test(a),a)};d.$formatters.push(g),d.$parsers.push(g)}function jd(a,b,c,d){r(c.name)&&b.attr("name",j()),b.on("click",function(){b[0].checked&&a.$apply(function(){d.$setViewValue(c.value)})}),d.$render=function(){var a=c.value;b[0].checked=a==d.$viewValue},c.$observe("value",d.$render)}function kd(a,b,c,d){var e=c.ngTrueValue,f=c.ngFalseValue;u(e)||(e=!0),u(f)||(f=!1),b.on("click",function(){a.$apply(function(){d.$setViewValue(b[0].checked)})}),d.$render=function(){b[0].checked=d.$viewValue},d.$isEmpty=function(a){return a!==e},d.$formatters.push(function(a){return a===e}),d.$parsers.push(function(a){return a?e:f})}function ld(a,b){return a="ngClass"+a,["$animate",function(c){function d(a,b){var c=[];a:for(var d=0;d<a.length;d++){for(var e=a[d],f=0;f<b.length;f++)if(e==b[f])continue a;c.push(e)}return c}function e(a){if(x(a))return a;if(u(a))return a.split(" ");if(t(a)){var b=[];return f(a,function(a,c){a&&b.push(c)}),b}return a}return{restrict:"AC",link:function(g,h,i){function j(a){var b=l(a,1);i.$addClass(b)}function k(a){var b=l(a,-1);i.$removeClass(b)}function l(a,b){var c=h.data("$classCounts")||{},d=[];return f(a,function(a){(b>0||c[a])&&(c[a]=(c[a]||0)+b,c[a]===+(b>0)&&d.push(a))}),h.data("$classCounts",c),d.join(" ")}function m(a,b){var e=d(b,a),f=d(a,b);f=l(f,-1),e=l(e,1),0===e.length?c.removeClass(h,f):0===f.length?c.addClass(h,e):c.setClass(h,e,f)}function n(a){if(b===!0||g.$index%2===b){var c=e(a||[]);if(o){if(!L(a,o)){var d=e(o);m(d,c)}}else j(c)}o=J(a)}var o;g.$watch(i[a],n,!0),i.$observe("class",function(){n(g.$eval(i[a]))}),"ngClass"!==a&&g.$watch("$index",function(c,d){var f=1&c;if(f!==d&1){var h=e(g.$eval(i[a]));f===b?j(h):k(h)}})}}}]}var md=function(a){return u(a)?a.toLowerCase():a},nd=Object.prototype.hasOwnProperty,od=function(a){return u(a)?a.toUpperCase():a},pd=function(a){return u(a)?a.replace(/[A-Z]/g,function(a){return String.fromCharCode(32|a.charCodeAt(0))}):a},qd=function(a){return u(a)?a.replace(/[a-z]/g,function(a){return String.fromCharCode(-33&a.charCodeAt(0))}):a};"i"!=="I".toLowerCase()&&(md=pd,od=qd);var rd,sd,td,ud,vd,wd=[].slice,xd=[].push,yd=Object.prototype.toString,zd=d("ng"),Ad=(a.angular,a.angular||(a.angular={})),Bd=["0","0","0"];rd=m((/msie (\d+)/.exec(md(navigator.userAgent))||[])[1]),isNaN(rd)&&(rd=m((/trident\/.*; rv:(\d+)/.exec(md(navigator.userAgent))||[])[1])),o.$inject=[],p.$inject=[];var Cd=function(){return String.prototype.trim?function(a){return u(a)?a.trim():a}:function(a){return u(a)?a.replace(/^\s\s*/,"").replace(/\s\s*$/,""):a}}();vd=9>rd?function(a){return a=a.nodeName?a:a[0],a.scopeName&&"HTML"!=a.scopeName?od(a.scopeName+":"+a.nodeName):a.nodeName}:function(a){return a.nodeName?a.nodeName:a[0].nodeName};var Dd=/[A-Z]/g,Ed={full:"1.2.16",major:1,minor:2,dot:16,codeName:"badger-enumeration"},Fd=pb.cache={},Gd=pb.expando="ng-"+(new Date).getTime(),Hd=1,Id=a.document.addEventListener?function(a,b,c){a.addEventListener(b,c,!1)}:function(a,b,c){a.attachEvent("on"+b,c)},Jd=a.document.removeEventListener?function(a,b,c){a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent("on"+b,c)},Kd=(pb._data=function(a){return this.cache[a[this.expando]]||{}},/([\:\-\_]+(.))/g),Ld=/^moz([A-Z])/,Md=d("jqLite"),Nd=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Od=/<|&#?\w+;/,Pd=/<([\w:]+)/,Qd=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Rd={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};Rd.optgroup=Rd.option,Rd.tbody=Rd.tfoot=Rd.colgroup=Rd.caption=Rd.thead,Rd.th=Rd.td;var Sd=pb.prototype={ready:function(c){function d(){e||(e=!0,c())}var e=!1;"complete"===b.readyState?setTimeout(d):(this.on("DOMContentLoaded",d),pb(a).on("load",d))},toString:function(){var a=[];return f(this,function(b){a.push(""+b)}),"["+a.join(", ")+"]"},eq:function(a){return sd(a>=0?this[a]:this[this.length+a])},length:0,push:xd,sort:[].sort,splice:[].splice},Td={};f("multiple,selected,checked,disabled,readOnly,required,open".split(","),function(a){Td[md(a)]=a});var Ud={};f("input,select,option,textarea,button,form,details".split(","),function(a){Ud[od(a)]=!0}),f({data:vb,inheritedData:Bb,scope:function(a){return sd(a).data("$scope")||Bb(a.parentNode||a,["$isolateScope","$scope"])},isolateScope:function(a){return sd(a).data("$isolateScope")||sd(a).data("$isolateScopeNoTemplate")},controller:Ab,injector:function(a){return Bb(a,"$injector")},removeAttr:function(a,b){a.removeAttribute(b)},hasClass:wb,css:function(a,b,d){if(b=kb(b),!s(d)){var e;return 8>=rd&&(e=a.currentStyle&&a.currentStyle[b],""===e&&(e="auto")),e=e||a.style[b],8>=rd&&(e=""===e?c:e),e}a.style[b]=d},attr:function(a,b,d){var e=md(b);if(Td[e]){if(!s(d))return a[b]||(a.attributes.getNamedItem(b)||o).specified?e:c;d?(a[b]=!0,a.setAttribute(b,e)):(a[b]=!1,a.removeAttribute(e))}else if(s(d))a.setAttribute(b,d);else if(a.getAttribute){var f=a.getAttribute(b,2);return null===f?c:f}},prop:function(a,b,c){return s(c)?void(a[b]=c):a[b]},text:function(){function a(a,c){var d=b[a.nodeType];return r(c)?d?a[d]:"":void(a[d]=c)}var b=[];return 9>rd?(b[1]="innerText",b[3]="nodeValue"):b[1]=b[3]="textContent",a.$dv="",a}(),val:function(a,b){if(r(b)){if("SELECT"===vd(a)&&a.multiple){var c=[];return f(a.options,function(a){a.selected&&c.push(a.value||a.text)}),0===c.length?null:c}return a.value}a.value=b},html:function(a,b){if(r(b))return a.innerHTML;for(var c=0,d=a.childNodes;c<d.length;c++)rb(d[c]);a.innerHTML=b},empty:Cb},function(a,b){pb.prototype[b]=function(b,d){var e,f;if(a!==Cb&&(2==a.length&&a!==wb&&a!==Ab?b:d)===c){if(t(b)){for(e=0;e<this.length;e++)if(a===vb)a(this[e],b);else for(f in b)a(this[e],f,b[f]);return this}for(var g=a.$dv,h=g===c?Math.min(this.length,1):this.length,i=0;h>i;i++){var j=a(this[i],b,d);g=g?g+j:j}return g}for(e=0;e<this.length;e++)a(this[e],b,d);return this}}),f({removeData:tb,dealoc:rb,on:function wf(a,c,d,e){if(s(e))throw Md("onargs","jqLite#on() does not support the `selector` or `eventData` parameters");var g=ub(a,"events"),h=ub(a,"handle");g||ub(a,"events",g={}),h||ub(a,"handle",h=Eb(a,g)),f(c.split(" "),function(c){var e=g[c];if(!e){if("mouseenter"==c||"mouseleave"==c){var f=b.body.contains||b.body.compareDocumentPosition?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1};g[c]=[];var i={mouseleave:"mouseout",mouseenter:"mouseover"};wf(a,i[c],function(a){var b=this,d=a.relatedTarget;(!d||d!==b&&!f(b,d))&&h(a,c)})}else Id(a,c,h),g[c]=[];e=g[c]}e.push(d)})},off:sb,one:function(a,b,c){a=sd(a),a.on(b,function d(){a.off(b,c),a.off(b,d)}),a.on(b,c)},replaceWith:function(a,b){var c,d=a.parentNode;rb(a),f(new pb(b),function(b){c?d.insertBefore(b,c.nextSibling):d.replaceChild(b,a),c=b})},children:function(a){var b=[];return f(a.childNodes,function(a){1===a.nodeType&&b.push(a)}),b},contents:function(a){return a.contentDocument||a.childNodes||[]},append:function(a,b){f(new pb(b),function(b){(1===a.nodeType||11===a.nodeType)&&a.appendChild(b)})},prepend:function(a,b){if(1===a.nodeType){var c=a.firstChild;f(new pb(b),function(b){a.insertBefore(b,c)})}},wrap:function(a,b){b=sd(b)[0];var c=a.parentNode;c&&c.replaceChild(b,a),b.appendChild(a)},remove:function(a){rb(a);var b=a.parentNode;b&&b.removeChild(a)},after:function(a,b){var c=a,d=a.parentNode;f(new pb(b),function(a){d.insertBefore(a,c.nextSibling),c=a})},addClass:yb,removeClass:xb,toggleClass:function(a,b,c){b&&f(b.split(" "),function(b){var d=c;r(d)&&(d=!wb(a,b)),(d?yb:xb)(a,b)})},parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},next:function(a){if(a.nextElementSibling)return a.nextElementSibling;for(var b=a.nextSibling;null!=b&&1!==b.nodeType;)b=b.nextSibling;return b},find:function(a,b){return a.getElementsByTagName?a.getElementsByTagName(b):[]},clone:qb,triggerHandler:function(a,b,c){var d=(ub(a,"events")||{})[b];c=c||[];var e=[{preventDefault:o,stopPropagation:o}];f(d,function(b){b.apply(a,e.concat(c))})}},function(a,b){pb.prototype[b]=function(b,c,d){for(var e,f=0;f<this.length;f++)r(e)?(e=a(this[f],b,c,d),s(e)&&(e=sd(e))):zb(e,a(this[f],b,c,d));return s(e)?e:this},pb.prototype.bind=pb.prototype.on,pb.prototype.unbind=pb.prototype.off}),Gb.prototype={put:function(a,b){this[Fb(a)]=b},get:function(a){return this[Fb(a)]},remove:function(a){var b=this[a=Fb(a)];return delete this[a],b}};var Vd=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,Wd=/,/,Xd=/^\s*(_?)(\S+?)\1\s*$/,Yd=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,Zd=d("$injector"),$d=d("$animate"),_d=["$provide",function(a){this.$$selectors={},this.register=function(b,c){var d=b+"-animation";if(b&&"."!=b.charAt(0))throw $d("notcsel","Expecting class selector starting with '.' got '{0}'.",b);this.$$selectors[b.substr(1)]=d,a.factory(d,c)},this.classNameFilter=function(a){return 1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?a:null),this.$$classNameFilter},this.$get=["$timeout","$$asyncCallback",function(a,b){function c(a){a&&b(a)}return{enter:function(a,b,d,e){d?d.after(a):(b&&b[0]||(b=d.parent()),b.append(a)),c(e)},leave:function(a,b){a.remove(),c(b)},move:function(a,b,c,d){this.enter(a,b,c,d)},addClass:function(a,b,d){b=u(b)?b:x(b)?b.join(" "):"",f(a,function(a){yb(a,b)}),c(d)},removeClass:function(a,b,d){b=u(b)?b:x(b)?b.join(" "):"",f(a,function(a){xb(a,b)}),c(d)},setClass:function(a,b,d,e){f(a,function(a){yb(a,b),xb(a,d)}),c(e)},enabled:o}}]}],ae=d("$compile");Pb.$inject=["$provide","$$sanitizeUriProvider"];var be=/^(x[\:\-_]|data[\:\-_])/i,ce=d("$interpolate"),de=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,ee={http:80,https:443,ftp:21},fe=d("$location");nc.prototype=mc.prototype=lc.prototype={$$html5:!1,$$replace:!1,absUrl:oc("$$absUrl"),url:function(a,b){if(r(a))return this.$$url;var c=de.exec(a);return c[1]&&this.path(decodeURIComponent(c[1])),(c[2]||c[1])&&this.search(c[3]||""),this.hash(c[5]||"",b),this},protocol:oc("$$protocol"),host:oc("$$host"),port:oc("$$port"),path:pc("$$path",function(a){return"/"==a.charAt(0)?a:"/"+a}),search:function(a,b){switch(arguments.length){case 0:return this.$$search;case 1:if(u(a))this.$$search=W(a);else{if(!t(a))throw fe("isrcharg","The first argument of the `$location#search()` call must be a string or an object.");this.$$search=a}break;default:r(b)||null===b?delete this.$$search[a]:this.$$search[a]=b}return this.$$compose(),this},hash:pc("$$hash",p),replace:function(){return this.$$replace=!0,this}};var ge,he=d("$parse"),ie={},je={"null":function(){return null},"true":function(){return!0},"false":function(){return!1},undefined:o,"+":function(a,b,d,e){return d=d(a,b),e=e(a,b),s(d)?s(e)?d+e:d:s(e)?e:c},"-":function(a,b,c,d){return c=c(a,b),d=d(a,b),(s(c)?c:0)-(s(d)?d:0)},"*":function(a,b,c,d){return c(a,b)*d(a,b)},"/":function(a,b,c,d){return c(a,b)/d(a,b)},"%":function(a,b,c,d){return c(a,b)%d(a,b)},"^":function(a,b,c,d){return c(a,b)^d(a,b)},"=":o,"===":function(a,b,c,d){return c(a,b)===d(a,b)},"!==":function(a,b,c,d){return c(a,b)!==d(a,b)},"==":function(a,b,c,d){return c(a,b)==d(a,b)},"!=":function(a,b,c,d){return c(a,b)!=d(a,b)},"<":function(a,b,c,d){return c(a,b)<d(a,b)},">":function(a,b,c,d){return c(a,b)>d(a,b)},"<=":function(a,b,c,d){return c(a,b)<=d(a,b)},">=":function(a,b,c,d){return c(a,b)>=d(a,b)},"&&":function(a,b,c,d){return c(a,b)&&d(a,b)},"||":function(a,b,c,d){return c(a,b)||d(a,b)},"&":function(a,b,c,d){return c(a,b)&d(a,b)},"|":function(a,b,c,d){return d(a,b)(a,b,c(a,b))},"!":function(a,b,c){return!c(a,b)}},ke={n:"\n",f:"\f",r:"\r",t:"	",v:"","'":"'",'"':'"'},le=function(a){this.options=a};le.prototype={constructor:le,lex:function(a){this.text=a,this.index=0,this.ch=c,this.lastCh=":",this.tokens=[];for(var b,d=[];this.index<this.text.length;){if(this.ch=this.text.charAt(this.index),this.is("\"'"))this.readString(this.ch);else if(this.isNumber(this.ch)||this.is(".")&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdent(this.ch))this.readIdent(),this.was("{,")&&"{"===d[0]&&(b=this.tokens[this.tokens.length-1])&&(b.json=-1===b.text.indexOf("."));else if(this.is("(){}[].,;:?"))this.tokens.push({index:this.index,text:this.ch,json:this.was(":[,")&&this.is("{[")||this.is("}]:,")}),this.is("{[")&&d.unshift(this.ch),this.is("}]")&&d.shift(),this.index++;else{if(this.isWhitespace(this.ch)){this.index++;continue}var e=this.ch+this.peek(),f=e+this.peek(2),g=je[this.ch],h=je[e],i=je[f];i?(this.tokens.push({index:this.index,text:f,fn:i}),this.index+=3):h?(this.tokens.push({index:this.index,text:e,fn:h}),this.index+=2):g?(this.tokens.push({index:this.index,text:this.ch,fn:g,json:this.was("[,:")&&this.is("+-")}),this.index+=1):this.throwError("Unexpected next character ",this.index,this.index+1)}this.lastCh=this.ch}return this.tokens},is:function(a){return-1!==a.indexOf(this.ch)},was:function(a){return-1!==a.indexOf(this.lastCh)},peek:function(a){var b=a||1;return this.index+b<this.text.length?this.text.charAt(this.index+b):!1},isNumber:function(a){return a>="0"&&"9">=a},isWhitespace:function(a){return" "===a||"\r"===a||"	"===a||"\n"===a||""===a||" "===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,b,c){c=c||this.index;var d=s(b)?"s "+b+"-"+this.index+" ["+this.text.substring(b,c)+"]":" "+c;throw he("lexerr","Lexer Error: {0} at column{1} in expression [{2}].",a,d,this.text)},readNumber:function(){for(var a="",b=this.index;this.index<this.text.length;){var c=md(this.text.charAt(this.index));if("."==c||this.isNumber(c))a+=c;else{var d=this.peek();if("e"==c&&this.isExpOperator(d))a+=c;else if(this.isExpOperator(c)&&d&&this.isNumber(d)&&"e"==a.charAt(a.length-1))a+=c;else{if(!this.isExpOperator(c)||d&&this.isNumber(d)||"e"!=a.charAt(a.length-1))break;this.throwError("Invalid exponent")}}this.index++}a=1*a,this.tokens.push({index:b,text:a,json:!0,fn:function(){return a}})},readIdent:function(){for(var a,b,c,d,e=this,f="",g=this.index;this.index<this.text.length&&(d=this.text.charAt(this.index),"."===d||this.isIdent(d)||this.isNumber(d));)"."===d&&(a=this.index),f+=d,this.index++;if(a)for(b=this.index;b<this.text.length;){if(d=this.text.charAt(b),"("===d){c=f.substr(a-g+1),f=f.substr(0,a-g),this.index=b;break}if(!this.isWhitespace(d))break;b++}var h={index:g,text:f};if(je.hasOwnProperty(f))h.fn=je[f],h.json=je[f];else{var i=yc(f,this.options,this.text);h.fn=l(function(a,b){return i(a,b)},{assign:function(a,b){return uc(a,f,b,e.text,e.options)}})}this.tokens.push(h),c&&(this.tokens.push({index:a,text:".",json:!1}),this.tokens.push({index:a+1,text:c,json:!1}))},readString:function(a){var b=this.index;this.index++;for(var c="",d=a,e=!1;this.index<this.text.length;){var f=this.text.charAt(this.index);if(d+=f,e){if("u"===f){var g=this.text.substring(this.index+1,this.index+5);g.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+g+"]"),this.index+=4,c+=String.fromCharCode(parseInt(g,16))}else{var h=ke[f];c+=h?h:f}e=!1}else if("\\"===f)e=!0;else{if(f===a)return this.index++,void this.tokens.push({index:b,text:d,string:c,json:!0,fn:function(){return c}});c+=f}this.index++}this.throwError("Unterminated quote",b)}};var me=function(a,b,c){this.lexer=a,this.$filter=b,this.options=c};me.ZERO=l(function(){return 0},{constant:!0}),me.prototype={constructor:me,parse:function(a,b){this.text=a,this.json=b,this.tokens=this.lexer.lex(a),b&&(this.assignment=this.logicalOR,this.functionCall=this.fieldAccess=this.objectIndex=this.filterChain=function(){this.throwError("is not valid json",{text:a,index:0})});var c=b?this.primary():this.statements();return 0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]),c.literal=!!c.literal,c.constant=!!c.constant,c},primary:function(){var a;if(this.expect("("))a=this.filterChain(),this.consume(")");else if(this.expect("["))a=this.arrayDeclaration();else if(this.expect("{"))a=this.object();else{var b=this.expect();a=b.fn,a||this.throwError("not a primary expression",b),b.json&&(a.constant=!0,a.literal=!0)}for(var c,d;c=this.expect("(","[",".");)"("===c.text?(a=this.functionCall(a,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,b){throw he("syntax","Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].",b.text,a,b.index+1,this.text,this.text.substring(b.index))},peekToken:function(){if(0===this.tokens.length)throw he("ueoe","Unexpected end of expression: {0}",this.text);return this.tokens[0]},peek:function(a,b,c,d){if(this.tokens.length>0){var e=this.tokens[0],f=e.text;if(f===a||f===b||f===c||f===d||!a&&!b&&!c&&!d)return e}return!1},expect:function(a,b,c,d){var e=this.peek(a,b,c,d);return e?(this.json&&!e.json&&this.throwError("is not valid json",e),this.tokens.shift(),e):!1},consume:function(a){this.expect(a)||this.throwError("is unexpected, expecting ["+a+"]",this.peek())},unaryFn:function(a,b){return l(function(c,d){return a(c,d,b)},{constant:b.constant})},ternaryFn:function(a,b,c){return l(function(d,e){return a(d,e)?b(d,e):c(d,e)},{constant:a.constant&&b.constant&&c.constant})},binaryFn:function(a,b,c){return l(function(d,e){return b(d,e,a,c)},{constant:a.constant&&c.constant})},statements:function(){for(var a=[];;)if(this.tokens.length>0&&!this.peek("}",")",";","]")&&a.push(this.filterChain()),!this.expect(";"))return 1===a.length?a[0]:function(b,c){for(var d,e=0;e<a.length;e++){var f=a[e];f&&(d=f(b,c))}return d}},filterChain:function(){for(var a,b=this.expression();;){if(!(a=this.expect("|")))return b;b=this.binaryFn(b,a.fn,this.filter())}},filter:function(){for(var a=this.expect(),b=this.$filter(a.text),c=[];;){if(!(a=this.expect(":"))){var d=function(a,d,e){for(var f=[e],g=0;g<c.length;g++)f.push(c[g](a,d));return b.apply(a,f)};return function(){return d}}c.push(this.expression())}},expression:function(){return this.assignment()},assignment:function(){var a,b,c=this.ternary();return(b=this.expect("="))?(c.assign||this.throwError("implies assignment but ["+this.text.substring(0,b.index)+"] can not be assigned to",b),a=this.ternary(),function(b,d){return c.assign(b,a(b,d),d)}):c},ternary:function(){var a,b,c=this.logicalOR();return(b=this.expect("?"))?(a=this.ternary(),(b=this.expect(":"))?this.ternaryFn(c,a,this.ternary()):void this.throwError("expected :",b)):c},logicalOR:function(){for(var a,b=this.logicalAND();;){if(!(a=this.expect("||")))return b;b=this.binaryFn(b,a.fn,this.logicalAND())}},logicalAND:function(){var a,b=this.equality();return(a=this.expect("&&"))&&(b=this.binaryFn(b,a.fn,this.logicalAND())),b},equality:function(){var a,b=this.relational();return(a=this.expect("==","!=","===","!=="))&&(b=this.binaryFn(b,a.fn,this.equality())),b},relational:function(){var a,b=this.additive();return(a=this.expect("<",">","<=",">="))&&(b=this.binaryFn(b,a.fn,this.relational())),b},additive:function(){for(var a,b=this.multiplicative();a=this.expect("+","-");)b=this.binaryFn(b,a.fn,this.multiplicative());return b},multiplicative:function(){for(var a,b=this.unary();a=this.expect("*","/","%");)b=this.binaryFn(b,a.fn,this.unary());return b},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(me.ZERO,a.fn,this.unary()):(a=this.expect("!"))?this.unaryFn(a.fn,this.unary()):this.primary()},fieldAccess:function(a){var b=this,c=this.expect().text,d=yc(c,this.options,this.text);return l(function(b,c,e){return d(e||a(b,c))},{assign:function(d,e,f){return uc(a(d,f),c,e,b.text,b.options)}})},objectIndex:function(a){var b=this,d=this.expression();return this.consume("]"),l(function(e,f){var g,h,i=a(e,f),j=d(e,f);return i?(g=tc(i[j],b.text),g&&g.then&&b.options.unwrapPromises&&(h=g,"$$v"in g||(h.$$v=c,h.then(function(a){h.$$v=a})),g=g.$$v),g):c},{assign:function(c,e,f){var g=d(c,f),h=tc(a(c,f),b.text);return h[g]=e}})},functionCall:function(a,b){var c=[];if(")"!==this.peekToken().text)do c.push(this.expression());while(this.expect(","));this.consume(")");var d=this;return function(e,f){for(var g=[],h=b?b(e,f):e,i=0;i<c.length;i++)g.push(c[i](e,f));var j=a(e,f,h)||o;tc(h,d.text),tc(j,d.text);var k=j.apply?j.apply(h,g):j(g[0],g[1],g[2],g[3],g[4]);return tc(k,d.text)}},arrayDeclaration:function(){var a=[],b=!0;if("]"!==this.peekToken().text)do{if(this.peek("]"))break;var c=this.expression();a.push(c),c.constant||(b=!1)}while(this.expect(","));return this.consume("]"),l(function(b,c){for(var d=[],e=0;e<a.length;e++)d.push(a[e](b,c));return d},{literal:!0,constant:b})},object:function(){var a=[],b=!0;if("}"!==this.peekToken().text)do{if(this.peek("}"))break;var c=this.expect(),d=c.string||c.text;this.consume(":");var e=this.expression();a.push({key:d,value:e}),e.constant||(b=!1)}while(this.expect(","));return this.consume("}"),l(function(b,c){for(var d={},e=0;e<a.length;e++){var f=a[e];d[f.key]=f.value(b,c)}return d},{literal:!0,constant:b})}};var ne={},oe=d("$sce"),pe={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},qe=b.createElement("a"),re=Mc(a.location.href,!0);Pc.$inject=["$provide"],Rc.$inject=["$locale"],Sc.$inject=["$locale"];var se=".",te={yyyy:Vc("FullYear",4),yy:Vc("FullYear",2,0,!0),y:Vc("FullYear",1),MMMM:Wc("Month"),MMM:Wc("Month",!0),MM:Vc("Month",2,1),M:Vc("Month",1,1),dd:Vc("Date",2),d:Vc("Date",1),HH:Vc("Hours",2),H:Vc("Hours",1),hh:Vc("Hours",2,-12),h:Vc("Hours",1,-12),mm:Vc("Minutes",2),m:Vc("Minutes",1),ss:Vc("Seconds",2),s:Vc("Seconds",1),sss:Vc("Milliseconds",3),EEEE:Wc("Day"),EEE:Wc("Day",!0),a:Yc,Z:Xc},ue=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,ve=/^\-?\d+$/;Zc.$inject=["$locale"];var we=q(md),xe=q(od);ad.$inject=["$parse"];var ye=q({restrict:"E",compile:function(a,c){return 8>=rd&&(c.href||c.name||c.$set("href",""),a.append(b.createComment("IE fix"))),c.href||c.xlinkHref||c.name?void 0:function(a,b){var c="[object SVGAnimatedString]"===yd.call(b.prop("href"))?"xlink:href":"href";b.on("click",function(a){b.attr(c)||a.preventDefault()})}}}),ze={};f(Td,function(a,b){if("multiple"!=a){var c=Qb("ng-"+b);ze[c]=function(){return{priority:100,link:function(a,d,e){a.$watch(e[c],function(a){e.$set(b,!!a)})}}}}}),f(["src","srcset","href"],function(a){var b=Qb("ng-"+a);ze[b]=function(){return{priority:99,link:function(c,d,e){var f=a,g=a;"href"===a&&"[object SVGAnimatedString]"===yd.call(d.prop("href"))&&(g="xlinkHref",e.$attr[g]="xlink:href",f=null),e.$observe(b,function(a){a&&(e.$set(g,a),rd&&f&&d.prop(f,e[g]))})}}}});var Ae={$addControl:o,$removeControl:o,$setValidity:o,$setDirty:o,$setPristine:o};cd.$inject=["$element","$attrs","$scope","$animate"];var Be=function(a){return["$timeout",function(b){var d={name:"form",restrict:a?"EAC":"E",controller:cd,compile:function(){return{pre:function(a,d,e,f){if(!e.action){var g=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1};Id(d[0],"submit",g),d.on("$destroy",function(){b(function(){Jd(d[0],"submit",g)},0,!1)})}var h=d.parent().controller("form"),i=e.name||e.ngForm;i&&uc(a,i,f,i),h&&d.on("$destroy",function(){h.$removeControl(f),i&&uc(a,i,c,i),l(f,Ae)})}}}};return d}]},Ce=Be(),De=Be(!0),Ee=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,Fe=/^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z0-9-]+(\.[a-z0-9-]+)*$/i,Ge=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,He={text:fd,number:gd,url:hd,email:id,radio:jd,checkbox:kd,hidden:o,button:o,submit:o,reset:o,file:o},Ie=["$browser","$sniffer",function(a,b){return{restrict:"E",require:"?ngModel",link:function(c,d,e,f){f&&(He[md(e.type)]||He.text)(c,d,e,f,b,a)}}}],Je="ng-valid",Ke="ng-invalid",Le="ng-pristine",Me="ng-dirty",Ne=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate",function(a,b,c,e,g,h){function i(a,b){b=b?"-"+ab(b,"-"):"",h.removeClass(e,(a?Ke:Je)+b),h.addClass(e,(a?Je:Ke)+b)}this.$viewValue=Number.NaN,this.$modelValue=Number.NaN,this.$parsers=[],this.$formatters=[],this.$viewChangeListeners=[],this.$pristine=!0,this.$dirty=!1,this.$valid=!0,this.$invalid=!1,this.$name=c.name;var j=g(c.ngModel),k=j.assign;if(!k)throw d("ngModel")("nonassign","Expression '{0}' is non-assignable. Element: {1}",c.ngModel,U(e));this.$render=o,this.$isEmpty=function(a){return r(a)||""===a||null===a||a!==a};var l=e.inheritedData("$formController")||Ae,m=0,n=this.$error={};e.addClass(Le),i(!0),this.$setValidity=function(a,b){n[a]!==!b&&(b?(n[a]&&m--,m||(i(!0),this.$valid=!0,this.$invalid=!1)):(i(!1),this.$invalid=!0,this.$valid=!1,m++),n[a]=!b,i(b,a),l.$setValidity(a,b,this))},this.$setPristine=function(){this.$dirty=!1,this.$pristine=!0,h.removeClass(e,Me),h.addClass(e,Le)},this.$setViewValue=function(c){this.$viewValue=c,this.$pristine&&(this.$dirty=!0,this.$pristine=!1,h.removeClass(e,Le),h.addClass(e,Me),l.$setDirty()),f(this.$parsers,function(a){c=a(c)}),this.$modelValue!==c&&(this.$modelValue=c,k(a,c),f(this.$viewChangeListeners,function(a){try{a()}catch(c){b(c)}}))};var p=this;a.$watch(function(){var b=j(a);if(p.$modelValue!==b){var c=p.$formatters,d=c.length;for(p.$modelValue=b;d--;)b=c[d](b);p.$viewValue!==b&&(p.$viewValue=b,p.$render())}return b})}],Oe=function(){return{require:["ngModel","^?form"],controller:Ne,link:function(a,b,c,d){var e=d[0],f=d[1]||Ae;f.$addControl(e),a.$on("$destroy",function(){f.$removeControl(e)})}}},Pe=q({require:"ngModel",link:function(a,b,c,d){d.$viewChangeListeners.push(function(){a.$eval(c.ngChange)})}}),Qe=function(){return{require:"?ngModel",link:function(a,b,c,d){if(d){c.required=!0;var e=function(a){return c.required&&d.$isEmpty(a)?void d.$setValidity("required",!1):(d.$setValidity("required",!0),a)};d.$formatters.push(e),d.$parsers.unshift(e),c.$observe("required",function(){e(d.$viewValue)})}}}},Re=function(){return{require:"ngModel",link:function(a,b,d,e){var g=/\/(.*)\//.exec(d.ngList),h=g&&new RegExp(g[1])||d.ngList||",",i=function(a){if(!r(a)){var b=[];return a&&f(a.split(h),function(a){a&&b.push(Cd(a))}),b}};e.$parsers.push(i),e.$formatters.push(function(a){return x(a)?a.join(", "):c}),e.$isEmpty=function(a){return!a||!a.length}}}},Se=/^(true|false|\d+)$/,Te=function(){return{priority:100,compile:function(a,b){return Se.test(b.ngValue)?function(a,b,c){c.$set("value",a.$eval(c.ngValue))}:function(a,b,c){a.$watch(c.ngValue,function(a){c.$set("value",a)})}}}},Ue=bd(function(a,b,d){b.addClass("ng-binding").data("$binding",d.ngBind),a.$watch(d.ngBind,function(a){b.text(a==c?"":a)})}),Ve=["$interpolate",function(a){return function(b,c,d){var e=a(c.attr(d.$attr.ngBindTemplate));c.addClass("ng-binding").data("$binding",e),d.$observe("ngBindTemplate",function(a){c.text(a)})}}],We=["$sce","$parse",function(a,b){return function(c,d,e){function f(){return(g(c)||"").toString()}d.addClass("ng-binding").data("$binding",e.ngBindHtml);var g=b(e.ngBindHtml);c.$watch(f,function(){d.html(a.getTrustedHtml(g(c))||"")})}}],Xe=ld("",!0),Ye=ld("Odd",0),Ze=ld("Even",1),$e=bd({compile:function(a,b){b.$set("ngCloak",c),a.removeClass("ng-cloak")}}),_e=[function(){return{scope:!0,controller:"@",priority:500}}],af={};f("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var b=Qb("ng-"+a);af[b]=["$parse",function(c){return{compile:function(d,e){var f=c(e[b]);return function(b,c){c.on(md(a),function(a){b.$apply(function(){f(b,{$event:a})})})}}}}]});var bf=["$animate",function(a){return{transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,i,j;c.$watch(e.ngIf,function(f){T(f)?i||(i=c.$new(),g(i,function(c){c[c.length++]=b.createComment(" end ngIf: "+e.ngIf+" "),h={clone:c},a.enter(c,d.parent(),d)
-})):(j&&(j.remove(),j=null),i&&(i.$destroy(),i=null),h&&(j=gb(h.clone),a.leave(j,function(){j=null}),h=null))})}}}],cf=["$http","$templateCache","$anchorScroll","$animate","$sce",function(a,b,c,d,e){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:Ad.noop,compile:function(f,g){var h=g.ngInclude||g.src,i=g.onload||"",j=g.autoscroll;return function(f,g,k,l,m){var n,o,p,q=0,r=function(){o&&(o.remove(),o=null),n&&(n.$destroy(),n=null),p&&(d.leave(p,function(){o=null}),o=p,p=null)};f.$watch(e.parseAsResourceUrl(h),function(e){var h=function(){!s(j)||j&&!f.$eval(j)||c()},k=++q;e?(a.get(e,{cache:b}).success(function(a){if(k===q){var b=f.$new();l.template=a;var c=m(b,function(a){r(),d.enter(a,null,g,h)});n=b,p=c,n.$emit("$includeContentLoaded"),f.$eval(i)}}).error(function(){k===q&&r()}),f.$emit("$includeContentRequested")):(r(),l.template=null)})}}}}],df=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(b,c,d,e){c.html(e.template),a(c.contents())(b)}}}],ef=bd({priority:450,compile:function(){return{pre:function(a,b,c){a.$eval(c.ngInit)}}}}),ff=bd({terminal:!0,priority:1e3}),gf=["$locale","$interpolate",function(a,b){var c=/{}/g;return{restrict:"EA",link:function(d,e,g){var h=g.count,i=g.$attr.when&&e.attr(g.$attr.when),j=g.offset||0,k=d.$eval(i)||{},l={},m=b.startSymbol(),n=b.endSymbol(),o=/^when(Minus)?(.+)$/;f(g,function(a,b){o.test(b)&&(k[md(b.replace("when","").replace("Minus","-"))]=e.attr(g.$attr[b]))}),f(k,function(a,d){l[d]=b(a.replace(c,m+h+"-"+j+n))}),d.$watch(function(){var b=parseFloat(d.$eval(h));return isNaN(b)?"":(b in k||(b=a.pluralCat(b-j)),l[b](d,e,!0))},function(a){e.text(a)})}}}],hf=["$parse","$animate",function(a,c){function g(a){return a.clone[0]}function h(a){return a.clone[a.clone.length-1]}var i="$$NG_REMOVED",j=d("ngRepeat");return{transclude:"element",priority:1e3,terminal:!0,$$tlb:!0,link:function(d,k,l,m,n){var o,p,q,r,s,t,u,v,w,x=l.ngRepeat,y=x.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),z={$id:Fb};if(!y)throw j("iexp","Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",x);if(t=y[1],u=y[2],o=y[3],o?(p=a(o),q=function(a,b,c){return w&&(z[w]=a),z[v]=b,z.$index=c,p(d,z)}):(r=function(a,b){return Fb(b)},s=function(a){return a}),y=t.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/),!y)throw j("iidexp","'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",t);v=y[3]||y[1],w=y[2];var A={};d.$watchCollection(u,function(a){var l,m,o,p,t,u,y,z,B,C,D,E,F=k[0],G={},H=[];if(e(a))C=a,B=q||r;else{B=q||s,C=[];for(u in a)a.hasOwnProperty(u)&&"$"!=u.charAt(0)&&C.push(u);C.sort()}for(p=C.length,m=H.length=C.length,l=0;m>l;l++)if(u=a===C?l:C[l],y=a[u],z=B(u,y,l),eb(z,"`track by` id"),A.hasOwnProperty(z))D=A[z],delete A[z],G[z]=D,H[l]=D;else{if(G.hasOwnProperty(z))throw f(H,function(a){a&&a.scope&&(A[a.id]=a)}),j("dupes","Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}",x,z);H[l]={id:z},G[z]=!1}for(u in A)A.hasOwnProperty(u)&&(D=A[u],E=gb(D.clone),c.leave(E),f(E,function(a){a[i]=!0}),D.scope.$destroy());for(l=0,m=C.length;m>l;l++){if(u=a===C?l:C[l],y=a[u],D=H[l],H[l-1]&&(F=h(H[l-1])),D.scope){t=D.scope,o=F;do o=o.nextSibling;while(o&&o[i]);g(D)!=o&&c.move(gb(D.clone),null,sd(F)),F=h(D)}else t=d.$new();t[v]=y,w&&(t[w]=u),t.$index=l,t.$first=0===l,t.$last=l===p-1,t.$middle=!(t.$first||t.$last),t.$odd=!(t.$even=0===(1&l)),D.scope||n(t,function(a){a[a.length++]=b.createComment(" end ngRepeat: "+x+" "),c.enter(a,null,sd(F)),F=a,D.scope=t,D.clone=a,G[D.id]=D})}A=G})}}}],jf=["$animate",function(a){return function(b,c,d){b.$watch(d.ngShow,function(b){a[T(b)?"removeClass":"addClass"](c,"ng-hide")})}}],kf=["$animate",function(a){return function(b,c,d){b.$watch(d.ngHide,function(b){a[T(b)?"addClass":"removeClass"](c,"ng-hide")})}}],lf=bd(function(a,b,c){a.$watch(c.ngStyle,function(a,c){c&&a!==c&&f(c,function(a,c){b.css(c,"")}),a&&b.css(a)},!0)}),mf=["$animate",function(a){return{restrict:"EA",require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(b,c,d,e){var g,h,i,j=d.ngSwitch||d.on,k=[];b.$watch(j,function(c){var j,l=k.length;if(l>0){if(i){for(j=0;l>j;j++)i[j].remove();i=null}for(i=[],j=0;l>j;j++){var m=h[j];k[j].$destroy(),i[j]=m,a.leave(m,function(){i.splice(j,1),0===i.length&&(i=null)})}}h=[],k=[],(g=e.cases["!"+c]||e.cases["?"])&&(b.$eval(d.change),f(g,function(c){var d=b.$new();k.push(d),c.transclude(d,function(b){var d=c.element;h.push(b),a.enter(b,d.parent(),d)})}))})}}}],nf=bd({transclude:"element",priority:800,require:"^ngSwitch",link:function(a,b,c,d,e){d.cases["!"+c.ngSwitchWhen]=d.cases["!"+c.ngSwitchWhen]||[],d.cases["!"+c.ngSwitchWhen].push({transclude:e,element:b})}}),of=bd({transclude:"element",priority:800,require:"^ngSwitch",link:function(a,b,c,d,e){d.cases["?"]=d.cases["?"]||[],d.cases["?"].push({transclude:e,element:b})}}),pf=bd({link:function(a,b,c,e,f){if(!f)throw d("ngTransclude")("orphan","Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}",U(b));f(function(a){b.empty(),b.append(a)})}}),qf=["$templateCache",function(a){return{restrict:"E",terminal:!0,compile:function(b,c){if("text/ng-template"==c.type){var d=c.id,e=b[0].text;a.put(d,e)}}}}],rf=d("ngOptions"),sf=q({terminal:!0}),tf=["$compile","$parse",function(a,d){var e=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,h={$setViewValue:o};return{restrict:"E",require:["select","?ngModel"],controller:["$element","$scope","$attrs",function(a,b,c){var d,e,f=this,g={},i=h;f.databound=c.ngModel,f.init=function(a,b,c){i=a,d=b,e=c},f.addOption=function(b){eb(b,'"option value"'),g[b]=!0,i.$viewValue==b&&(a.val(b),e.parent()&&e.remove())},f.removeOption=function(a){this.hasOption(a)&&(delete g[a],i.$viewValue==a&&this.renderUnknownOption(a))},f.renderUnknownOption=function(b){var c="? "+Fb(b)+" ?";e.val(c),a.prepend(e),a.val(c),e.prop("selected",!0)},f.hasOption=function(a){return g.hasOwnProperty(a)},b.$on("$destroy",function(){f.renderUnknownOption=o})}],link:function(h,i,j,k){function l(a,b,c,d){c.$render=function(){var a=c.$viewValue;d.hasOption(a)?(z.parent()&&z.remove(),b.val(a),""===a&&o.prop("selected",!0)):r(a)&&o?b.val(""):d.renderUnknownOption(a)},b.on("change",function(){a.$apply(function(){z.parent()&&z.remove(),c.$setViewValue(b.val())})})}function m(a,b,c){var d;c.$render=function(){var a=new Gb(c.$viewValue);f(b.find("option"),function(b){b.selected=s(a.get(b.value))})},a.$watch(function(){L(d,c.$viewValue)||(d=J(c.$viewValue),c.$render())}),b.on("change",function(){a.$apply(function(){var a=[];f(b.find("option"),function(b){b.selected&&a.push(b.value)}),c.$setViewValue(a)})})}function n(b,f,h){function i(){var a,c,d,e,i,j,q,u,A,B,C,D,E,F,G,H={"":[]},I=[""],J=h.$modelValue,K=p(b)||[],L=m?g(K):K,M={},N=!1;if(t)if(r&&x(J)){N=new Gb([]);for(var O=0;O<J.length;O++)M[l]=J[O],N.put(r(b,M),J[O])}else N=new Gb(J);for(C=0;A=L.length,A>C;C++){if(q=C,m){if(q=L[C],"$"===q.charAt(0))continue;M[m]=q}if(M[l]=K[q],a=n(b,M)||"",(c=H[a])||(c=H[a]=[],I.push(a)),t)D=s(N.remove(r?r(b,M):o(b,M)));else{if(r){var P={};P[l]=J,D=r(b,P)===r(b,M)}else D=J===o(b,M);N=N||D}G=k(b,M),G=s(G)?G:"",c.push({id:r?r(b,M):m?L[C]:C,label:G,selected:D})}for(t||(v||null===J?H[""].unshift({id:"",label:"",selected:!N}):N||H[""].unshift({id:"?",label:"",selected:!0})),B=0,u=I.length;u>B;B++){for(a=I[B],c=H[a],z.length<=B?(e={element:y.clone().attr("label",a),label:c.label},i=[e],z.push(i),f.append(e.element)):(i=z[B],e=i[0],e.label!=a&&e.element.attr("label",e.label=a)),E=null,C=0,A=c.length;A>C;C++)d=c[C],(j=i[C+1])?(E=j.element,j.label!==d.label&&E.text(j.label=d.label),j.id!==d.id&&E.val(j.id=d.id),j.selected!==d.selected&&E.prop("selected",j.selected=d.selected)):(""===d.id&&v?F=v:(F=w.clone()).val(d.id).attr("selected",d.selected).text(d.label),i.push(j={element:F,label:d.label,id:d.id,selected:d.selected}),E?E.after(F):e.element.append(F),E=F);for(C++;i.length>C;)i.pop().element.remove()}for(;z.length>B;)z.pop()[0].element.remove()}var j;if(!(j=u.match(e)))throw rf("iexp","Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}",u,U(f));var k=d(j[2]||j[1]),l=j[4]||j[6],m=j[5],n=d(j[3]||""),o=d(j[2]?j[1]:l),p=d(j[7]),q=j[8],r=q?d(j[8]):null,z=[[{element:f,label:""}]];v&&(a(v)(b),v.removeClass("ng-scope"),v.remove()),f.empty(),f.on("change",function(){b.$apply(function(){var a,d,e,g,i,j,k,n,q,s=p(b)||[],u={};if(t){for(e=[],j=0,n=z.length;n>j;j++)for(a=z[j],i=1,k=a.length;k>i;i++)if((g=a[i].element)[0].selected){if(d=g.val(),m&&(u[m]=d),r)for(q=0;q<s.length&&(u[l]=s[q],r(b,u)!=d);q++);else u[l]=s[d];e.push(o(b,u))}}else{if(d=f.val(),"?"==d)e=c;else if(""===d)e=null;else if(r){for(q=0;q<s.length;q++)if(u[l]=s[q],r(b,u)==d){e=o(b,u);break}}else u[l]=s[d],m&&(u[m]=d),e=o(b,u);z[0].length>1&&z[0][1].id!==d&&(z[0][1].selected=!1)}h.$setViewValue(e)})}),h.$render=i,b.$watch(i)}if(k[1]){for(var o,p=k[0],q=k[1],t=j.multiple,u=j.ngOptions,v=!1,w=sd(b.createElement("option")),y=sd(b.createElement("optgroup")),z=w.clone(),A=0,B=i.children(),C=B.length;C>A;A++)if(""===B[A].value){o=v=B.eq(A);break}p.init(q,v,z),t&&(q.$isEmpty=function(a){return!a||0===a.length}),u?n(h,i,q):t?m(h,i,q):l(h,i,q,p)}}}}],uf=["$interpolate",function(a){var b={addOption:o,removeOption:o};return{restrict:"E",priority:100,compile:function(c,d){if(r(d.value)){var e=a(c.text(),!0);e||d.$set("value",c.text())}return function(a,c,d){var f="$selectController",g=c.parent(),h=g.data(f)||g.parent().data(f);h&&h.databound?c.prop("selected",!1):h=b,e?a.$watch(e,function(a,b){d.$set("value",a),a!==b&&h.removeOption(b),h.addOption(a)}):h.addOption(d.value),c.on("$destroy",function(){h.removeOption(d.value)})}}}}],vf=q({restrict:"E",terminal:!0});return a.angular.bootstrap?void console.log("WARNING: Tried to load angular more than once."):(bb(),ib(Ad),void sd(b).ready(function(){$(b,_)}))}(window,document),!angular.$$csp()&&angular.element(document).find("head").prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}</style>'),!function(a){"use strict";var b=function(b,c){this.options=a.extend({},a.fn.affix.defaults,c),this.$window=a(window).on("scroll.affix.data-api",a.proxy(this.checkPosition,this)).on("click.affix.data-api",a.proxy(function(){setTimeout(a.proxy(this.checkPosition,this),1)},this)),this.$element=a(b),this.checkPosition()};b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b,c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.bottom,h=f.top,i="affix affix-top affix-bottom";"object"!=typeof f&&(g=h=f),"function"==typeof h&&(h=f.top()),"function"==typeof g&&(g=f.bottom()),b=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=g&&e.top+this.$element.height()>=c-g?"bottom":null!=h&&h>=d?"top":!1,this.affixed!==b&&(this.affixed=b,this.unpin="bottom"==b?e.top-d:null,this.$element.removeClass(i).addClass("affix"+(b?"-"+b:"")))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("affix"),f="object"==typeof c&&c;e||d.data("affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.defaults={offset:0},a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery),!function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){d.trigger("closed").remove()}var d,e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,"")),d=a(f),b&&b.preventDefault(),d.length||(d=e.hasClass("alert")?e:e.parent()),d.trigger(b=a.Event("close")),b.isDefaultPrevented()||(d.removeClass("in"),a.support.transition&&d.hasClass("fade")?d.on(a.support.transition.end,c):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("alert");e||d.data("alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.alert.data-api",b,c.prototype.close)}(window.jQuery),!function(a){"use strict";function b(){a(".dropdown-backdrop").remove(),a(d).each(function(){c(a(this)).removeClass("open")})}function c(b){var c,d=b.attr("data-target");return d||(d=b.attr("href"),d=d&&/#/.test(d)&&d.replace(/.*(?=#[^\s]*$)/,"")),c=d&&a(d),c&&c.length||(c=b.parent()),c}var d="[data-toggle=dropdown]",e=function(b){var c=a(b).on("click.dropdown.data-api",this.toggle);a("html").on("click.dropdown.data-api",function(){c.parent().removeClass("open")})};e.prototype={constructor:e,toggle:function(){var d,e,f=a(this);if(!f.is(".disabled, :disabled"))return d=c(f),e=d.hasClass("open"),b(),e||("ontouchstart"in document.documentElement&&a('<div class="dropdown-backdrop"/>').insertBefore(a(this)).on("click",b),d.toggleClass("open")),f.focus(),!1},keydown:function(b){var e,f,g,h,i;if(/(38|40|27)/.test(b.keyCode)&&(e=a(this),b.preventDefault(),b.stopPropagation(),!e.is(".disabled, :disabled"))){if(g=c(e),h=g.hasClass("open"),!h||h&&27==b.keyCode)return 27==b.which&&g.find(d).focus(),e.click();f=a("[role=menu] li:not(.divider):visible a",g),f.length&&(i=f.index(f.filter(":focus")),38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<f.length-1&&i++,~i||(i=0),f.eq(i).focus())}}};var f=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("dropdown");d||c.data("dropdown",d=new e(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=e,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=f,this},a(document).on("click.dropdown.data-api",b).on("click.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.dropdown.data-api",d,e.prototype.toggle).on("keydown.dropdown.data-api",d+", [role=menu]",e.prototype.keydown)}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f,g,h,i;for(this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,g=this.options.trigger.split(" "),i=g.length;i--;)h=g[i],"click"==h?this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this)):"manual"!=h&&(e="hover"==h?"mouseenter":"focus",f="hover"==h?"mouseleave":"blur",this.$element.on(e+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f+"."+this.type,this.options.selector,a.proxy(this.leave,this)));this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c,d=a.fn[this.type].defaults,e={};return this._options&&a.each(this._options,function(a,b){d[a]!=b&&(e[a]=b)},this),c=a(b.currentTarget)[this.type](e).data(this.type),c.options.delay&&c.options.delay.show?(clearTimeout(this.timeout),c.hoverState="in",void(this.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show))):c.show()},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);return this.timeout&&clearTimeout(this.timeout),c.options.delay&&c.options.delay.hide?(c.hoverState="out",void(this.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide))):c.hide()},show:function(){var b,c,d,e,f,g,h=a.Event("show");if(this.hasContent()&&this.enabled){if(this.$element.trigger(h),h.isDefaultPrevented())return;switch(b=this.tip(),this.setContent(),this.options.animation&&b.addClass("fade"),f="function"==typeof this.options.placement?this.options.placement.call(this,b[0],this.$element[0]):this.options.placement,b.detach().css({top:0,left:0,display:"block"}),this.options.container?b.appendTo(this.options.container):b.insertAfter(this.$element),c=this.getPosition(),d=b[0].offsetWidth,e=b[0].offsetHeight,f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}this.applyPlacement(g,f),this.$element.trigger("shown")}},applyPlacement:function(a,b){var c,d,e,f,g=this.tip(),h=g[0].offsetWidth,i=g[0].offsetHeight;g.offset(a).addClass(b).addClass("in"),c=g[0].offsetWidth,d=g[0].offsetHeight,"top"==b&&d!=i&&(a.top=a.top+i-d,f=!0),"bottom"==b||"top"==b?(e=0,a.left<0&&(e=-2*a.left,a.left=0,g.offset(a),c=g[0].offsetWidth,d=g[0].offsetHeight),this.replaceArrow(e-h+c,c,"left")):this.replaceArrow(d-i,d,"top"),f&&g.offset(a)},replaceArrow:function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},setContent:function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},hide:function(){function b(){var b=setTimeout(function(){c.off(a.support.transition.end).detach()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.detach()})}var c=this.tip(),d=a.Event("hide");return this.$element.trigger(d),d.isDefaultPrevented()?void 0:(c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?b():c.detach(),this.$element.trigger("hidden"),this)},fixTitle:function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},hasContent:function(){return this.getTitle()},getPosition:function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},tip:function(){return this.$tip=this.$tip||a(this.options.template)},arrow:function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(b){var c=b?a(b.currentTarget)[this.type](this._options).data(this.type):this;c.tip().hasClass("in")?c.hide():c.show()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f="object"==typeof c&&c;e||d.data("tooltip",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b).delegate('[data-dismiss="modal"]',"click.dismiss.modal",a.proxy(this.hide,this)),this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};b.prototype={constructor:b,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var b=this,c=a.Event("show");this.$element.trigger(c),this.isShown||c.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.backdrop(function(){var c=a.support.transition&&b.$element.hasClass("fade");b.$element.parent().length||b.$element.appendTo(document.body),b.$element.show(),c&&b.$element[0].offsetWidth,b.$element.addClass("in").attr("aria-hidden",!1),b.enforceFocus(),c?b.$element.one(a.support.transition.end,function(){b.$element.focus().trigger("shown")}):b.$element.focus().trigger("shown")}))},hide:function(b){b&&b.preventDefault();b=a.Event("hide"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.modal"),this.$element.removeClass("in").attr("aria-hidden",!0),a.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal())},enforceFocus:function(){var b=this;a(document).on("focusin.modal",function(a){b.$element[0]===a.target||b.$element.has(a.target).length||b.$element.focus()})},escape:function(){var a=this;this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.modal",function(b){27==b.which&&a.hide()}):this.isShown||this.$element.off("keyup.dismiss.modal")},hideWithTransition:function(){var b=this,c=setTimeout(function(){b.$element.off(a.support.transition.end),b.hideModal()},500);this.$element.one(a.support.transition.end,function(){clearTimeout(c),b.hideModal()})},hideModal:function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden")})},removeBackdrop:function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},backdrop:function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$backdrop.click("static"==this.options.backdrop?a.proxy(this.$element[0].focus,this.$element[0]):a.proxy(this.hide,this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b):b()):b&&b()}};var c=a.fn.modal;a.fn.modal=function(c){return this.each(function(){var d=a(this),e=d.data("modal"),f=a.extend({},a.fn.modal.defaults,d.data(),"object"==typeof c&&c);e||d.data("modal",e=new b(this,f)),"string"==typeof c?e[c]():f.show&&e.show()})},a.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f).one("hide",function(){c.focus()})})}(window.jQuery),!function(a){"use strict";a(function(){a.support.transition=function(){var a=function(){var a,b=document.createElement("bootstrap"),c={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(a in c)if(void 0!==b.style[a])return c[a]}();return a&&{end:a}}()})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.button.defaults,c)};b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.data(),e=c.is("input")?"val":"html";a+="Text",d.resetText||c.data("resetText",c[e]()),c[e](d[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons-radio"]');a&&a.find(".active").removeClass("active"),this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("button"),f="object"==typeof c&&c;e||d.data("button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.defaults={loadingText:"loading..."},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle")})}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=this.options;return a=("function"==typeof c.content?c.content.call(b[0]):c.content)||b.attr("data-content")},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f="object"==typeof c&&c;e||d.data("popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.typeahead.defaults,c),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.source=this.options.source,this.$menu=a(this.options.menu),this.shown=!1,this.listen()};b.prototype={constructor:b,select:function(){var a=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(a)).change(),this.hide()},updater:function(a){return a},show:function(){var b=a.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});return this.$menu.insertAfter(this.$element).css({top:b.top+b.height,left:b.left}).show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(){var b;return this.query=this.$element.val(),!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(b=a.isFunction(this.source)?this.source(this.query,a.proxy(this.process,this)):this.source,b?this.process(b):this)},process:function(b){var c=this;return b=a.grep(b,function(a){return c.matcher(a)}),b=this.sorter(b),b.length?this.render(b.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(a){return~a.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(a){for(var b,c=[],d=[],e=[];b=a.shift();)b.toLowerCase().indexOf(this.query.toLowerCase())?~b.indexOf(this.query)?d.push(b):e.push(b):c.push(b);return c.concat(d,e)},highlighter:function(a){var b=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return a.replace(new RegExp("("+b+")","ig"),function(a,b){return"<strong>"+b+"</strong>"})},render:function(b){var c=this;return b=a(b).map(function(b,d){return b=a(c.options.item).attr("data-value",d),b.find("a").html(c.highlighter(d)),b[0]}),b.first().addClass("active"),this.$menu.html(b),this},next:function(){var b=this.$menu.find(".active").removeClass("active"),c=b.next();c.length||(c=a(this.$menu.find("li")[0])),c.addClass("active")},prev:function(){var a=this.$menu.find(".active").removeClass("active"),b=a.prev();b.length||(b=this.$menu.find("li").last()),b.addClass("active")},listen:function(){this.$element.on("focus",a.proxy(this.focus,this)).on("blur",a.proxy(this.blur,this)).on("keypress",a.proxy(this.keypress,this)).on("keyup",a.proxy(this.keyup,this)),this.eventSupported("keydown")&&this.$element.on("keydown",a.proxy(this.keydown,this)),this.$menu.on("click",a.proxy(this.click,this)).on("mouseenter","li",a.proxy(this.mouseenter,this)).on("mouseleave","li",a.proxy(this.mouseleave,this))},eventSupported:function(a){var b=a in this.$element;return b||(this.$element.setAttribute(a,"return;"),b="function"==typeof this.$element[a]),b},move:function(a){if(this.shown){switch(a.keyCode){case 9:case 13:case 27:a.preventDefault();break;case 38:a.preventDefault(),this.prev();break;case 40:a.preventDefault(),this.next()}a.stopPropagation()}},keydown:function(b){this.suppressKeyPressRepeat=~a.inArray(b.keyCode,[40,38,9,13,27]),this.move(b)},keypress:function(a){this.suppressKeyPressRepeat||this.move(a)},keyup:function(a){switch(a.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}a.stopPropagation(),a.preventDefault()},focus:function(){this.focused=!0},blur:function(){this.focused=!1,!this.mousedover&&this.shown&&this.hide()},click:function(a){a.stopPropagation(),a.preventDefault(),this.select(),this.$element.focus()},mouseenter:function(b){this.mousedover=!0,this.$menu.find(".active").removeClass("active"),a(b.currentTarget).addClass("active")},mouseleave:function(){this.mousedover=!1,!this.focused&&this.shown&&this.hide()}};var c=a.fn.typeahead;a.fn.typeahead=function(c){return this.each(function(){var d=a(this),e=d.data("typeahead"),f="object"==typeof c&&c;e||d.data("typeahead",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1},a.fn.typeahead.Constructor=b,a.fn.typeahead.noConflict=function(){return a.fn.typeahead=c,this},a(document).on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(){var b=a(this);b.data("typeahead")||b.typeahead(b.data())})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.prototype={cycle:function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},getActiveIndex:function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},to:function(b){var c=this.getActiveIndex(),d=this;if(!(b>this.$items.length-1||0>b))return this.sliding?this.$element.one("slid",function(){d.to(b)}):c==b?this.pause().cycle():this.slide(b>c?"next":"prev",a(this.$items[b]))},pause:function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),clearInterval(this.interval),this.interval=null,this},next:function(){return this.sliding?void 0:this.slide("next")},prev:function(){return this.sliding?void 0:this.slide("prev")},slide:function(b,c){var d,e=this.$element.find(".item.active"),f=c||e[b](),g=this.interval,h="next"==b?"left":"right",i="next"==b?"first":"last",j=this;if(this.sliding=!0,g&&this.pause(),f=f.length?f:this.$element.find(".item")[i](),d=a.Event("slide",{relatedTarget:f[0],direction:h}),!f.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(j.$indicators.children()[j.getActiveIndex()]);
-b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(d),d.isDefaultPrevented())return;f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),this.$element.one(a.support.transition.end,function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),j.sliding=!1,setTimeout(function(){j.$element.trigger("slid")},0)})}else{if(this.$element.trigger(d),d.isDefaultPrevented())return;e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return g&&this.cycle(),this}}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("carousel"),f=a.extend({},a.fn.carousel.defaults,"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.defaults={interval:5e3,pause:"hover"},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d,e=a(this),f=a(e.attr("data-target")||(c=e.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),g=a.extend({},f.data(),e.data());f.carousel(g),(d=e.attr("data-slide-to"))&&f.data("carousel").pause().to(d).cycle(),b.preventDefault()})}(window.jQuery),!function(a){"use strict";function b(b,c){var d,e=a.proxy(this.process,this),f=a(a(b).is("body")?window:b);this.options=a.extend({},a.fn.scrollspy.defaults,c),this.$scrollElement=f.on("scroll.scroll-spy.data-api",e),this.selector=(this.options.target||(d=a(b).attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=a("body"),this.refresh(),this.process()}b.prototype={constructor:b,refresh:function(){var b,c=this;this.offsets=a([]),this.targets=a([]),b=this.$body.find(this.selector).map(function(){var b=a(this),d=b.data("target")||b.attr("href"),e=/^#\w/.test(d)&&a(d);return e&&e.length&&[[e.position().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),d]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},process:function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},activate:function(b){var c,d;this.activeTarget=b,a(this.selector).parent(".active").removeClass("active"),d=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',c=a(d).parent("li").addClass("active"),c.parent(".dropdown-menu").length&&(c=c.closest("li.dropdown").addClass("active")),c.trigger("activate")}};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("scrollspy"),f="object"==typeof c&&c;e||d.data("scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.defaults={offset:10},a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.collapse.defaults,c),this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.prototype={constructor:b,dimension:function(){var a=this.$element.hasClass("width");return a?"width":"height"},show:function(){var b,c,d,e;if(!this.transitioning&&!this.$element.hasClass("in")){if(b=this.dimension(),c=a.camelCase(["scroll",b].join("-")),d=this.$parent&&this.$parent.find("> .accordion-group > .in"),d&&d.length){if(e=d.data("collapse"),e&&e.transitioning)return;d.collapse("hide"),e||d.data("collapse",null)}this.$element[b](0),this.transition("addClass",a.Event("show"),"shown"),a.support.transition&&this.$element[b](this.$element[0][c])}},hide:function(){var b;!this.transitioning&&this.$element.hasClass("in")&&(b=this.dimension(),this.reset(this.$element[b]()),this.transition("removeClass",a.Event("hide"),"hidden"),this.$element[b](0))},reset:function(a){var b=this.dimension();return this.$element.removeClass("collapse")[b](a||"auto")[0].offsetWidth,this.$element[null!==a?"addClass":"removeClass"]("collapse"),this},transition:function(b,c,d){var e=this,f=function(){"show"==c.type&&e.reset(),e.transitioning=0,e.$element.trigger(d)};this.$element.trigger(c),c.isDefaultPrevented()||(this.transitioning=1,this.$element[b]("in"),a.support.transition&&this.$element.hasClass("collapse")?this.$element.one(a.support.transition.end,f):f())},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("collapse"),f=a.extend({},a.fn.collapse.defaults,d.data(),"object"==typeof c&&c);e||d.data("collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.defaults={toggle:!0},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e).data("collapse")?"toggle":d.data();d[a(e).hasClass("in")?"addClass":"removeClass"]("collapsed"),a(e).collapse(f)})}(window.jQuery),!function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype={constructor:b,show:function(){var b,c,d,e=this.element,f=e.closest("ul:not(.dropdown-menu)"),g=e.attr("data-target");g||(g=e.attr("href"),g=g&&g.replace(/.*(?=#[^\s]*$)/,"")),e.parent("li").hasClass("active")||(b=f.find(".active:last a")[0],d=a.Event("show",{relatedTarget:b}),e.trigger(d),d.isDefaultPrevented()||(c=a(g),this.activate(e.parent("li"),f),this.activate(c,c.parent(),function(){e.trigger({type:"shown",relatedTarget:b})})))},activate:function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e):e(),f.removeClass("in")}};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("tab");e||d.data("tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery);
\ No newline at end of file
diff --git a/web/demos/package/app/scripts/5f986af9.scripts.js b/web/demos/package/app/scripts/5f986af9.scripts.js
new file mode 100644
index 0000000..de6783c
--- /dev/null
+++ b/web/demos/package/app/scripts/5f986af9.scripts.js
@@ -0,0 +1 @@
+!function(){"use strict";angular.module("widgets",["socket"]),angular.module("twitter",["rest","socket","widgets","ngGrid"]),angular.module("mobile",["rest","widgets","ngGrid","google-maps"]),angular.module("machine",["ng","rest","widgets"]),angular.module("dimensions",["ng","rest","widgets"]),angular.module("fraud",["rest","widgets"]),angular.module("app",["ngRoute","socket","twitter","mobile","machine","dimensions","fraud"]),angular.module("app").config(["$routeProvider","socketProvider",function(a,b){window.settings&&b.setWebSocketURL(settings.webSocketURL),a.when("/",{templateUrl:"views/welcome.html"}).when("/twitterUrls",{templateUrl:"views/twitter.html",controller:"TwitterUrlsController"}).when("/twitterHashtags",{templateUrl:"views/twitter.html",controller:"TwitterHashtagsController"}).when("/mobile",{templateUrl:"views/mobile.html",controller:"MobileController"}).when("/machine",{templateUrl:"views/machine.html",controller:"MachineController"}).when("/dimensions",{templateUrl:"views/dimensions.html",controller:"DimensionsController"}).when("/fraud",{templateUrl:"views/fraud.html",controller:"FraudController"})}])}(),function(){"use strict";angular.module("rest",["ng","restangular"]).factory("rest",["$q","Restangular",function(a,b){return{getApp:function(c){var d=a.defer();return b.oneUrl("applications","ws/v1/applications").get().then(function(a){var b=null;if(a&&a.apps&&a.apps.length>0){var e=_.where(a.apps,{name:c,state:"RUNNING"});if(e.length>0){e=_.sortBy(e,function(a){return parseInt(a.elapsedTime,10)});var f=e[0];d.resolve(f)}else b=c+" is not found. Please make sure application is running."}else b="No applications available.";b&&(d.reject(b),jQuery.pnotify({title:"Error",text:b,type:"error",icon:!1,hide:!1}))}),d.promise},getMachineData:function(a){var c=b.one("machine").get(a);return c.then(null,function(a){jQuery.pnotify({title:"Error",text:"Error getting data from server. Status Code: "+a.status,type:"error",icon:!1,hide:!1})}),c},getDimensionsData:function(a){var c=b.one("dimensions").get(a);return c.then(null,function(a){jQuery.pnotify({title:"Error",text:"Error getting data from server. Status Code: "+a.status,type:"error",icon:!1,hide:!1})}),c}}}]).run(function(){})}(),function(){"use strict";angular.module("socket",[]).factory("visibly",["$window",function(a){return a.visibly}]).provider("socket",function(){var a,b;return{$get:["$q","$rootScope","$timeout","visibly",function(c,d,e,f){if(!a&&!b)throw"WebSocket URL is not defined";var g=b?b:new WebSocket(a),h=c.defer();g.onopen=function(){h.resolve(),d.$apply(),jQuery.pnotify({title:"WebSocket",text:"WebSocket connection established.",type:"success",delay:2e3,icon:!1,history:!1})};var i=!1;g.onclose=function(){i||jQuery.pnotify({title:"WebSocket Closed",text:"WebSocket connection has been closed. Try refreshing the page.",type:"error",icon:!1,hide:!1,history:!1})},g.onerror=function(){i=!0,jQuery.pnotify({title:"WebSocket Error",text:"WebSocket error. Try refreshing the page.",type:"error",icon:!1,hide:!1,history:!1})};var j={},k=!1;g.onmessage=function(a){if(!k){var b=JSON.parse(a.data),c=b.topic;j.hasOwnProperty(c)&&j[c].fire(b)}};var l;return f.onHidden(function(){l=e(function(){k=!0,l=null},6e4)}),f.onVisible(function(){k=!1,l&&e.cancel(l)}),{send:function(a){var b=JSON.stringify(a);h.promise.then(function(){console.log("send "+b),g.send(b)})},publish:function(a,b){var c={type:"publish",topic:a,data:b};this.send(c)},subscribe:function(a,b,c){var d=j[a];if(!d){var e={type:"subscribe",topic:a};this.send(e),d=jQuery.Callbacks(),j[a]=d}d.add(b),c&&c.$on("$destroy",function(){this.unsubscribe(a,b)}.bind(this))},unsubscribe:function(a,b){if(j.hasOwnProperty(a)){var c=j[a];c.remove(b)}}}}],setWebSocketURL:function(b){a=b},setWebSocketObject:function(a){b=a}}})}(),function(){"use strict";angular.module("widgets").directive("lineChart",function(){return{template:"<div></div>",scope:{chart:"="},restrict:"E",replace:!0,link:function(a,b){function c(a){var b=a.data;b||(b=[]);var c=new google.visualization.DataTable;c.addColumn("datetime"),c.addColumn("number"),c.addRows(b.length);for(var e=new google.visualization.DataView(c),f=0;f<b.length;f++){var g=b[f];c.setCell(f,0,new Date(g.timestamp));var h=parseFloat(g.value);c.setCell(f,1,h)}var i;i=0===b.length&&a.emptyChartOptions?a.emptyChartOptions():a.options,d.draw(e,i)}var d=new google.visualization.LineChart(b[0]);a.$watch("chart",function(a){a&&c(a)})}}})}(),function(){"use strict";angular.module("widgets").directive("gauge",function(){return{restrict:"A",replace:!0,scope:{label:"@",min:"=",max:"=",value:"="},link:function(a,b,c){var d={size:280,label:c.label,min:void 0!==a.min?a.min:0,max:void 0!==a.max?a.max:100,minorTicks:5},e=d.max-d.min;d.yellowZones=[{from:d.min+.75*e,to:d.min+.9*e}],d.redZones=[{from:d.min+.9*e,to:d.max}],a.gauge=new Gauge(b[0],d),a.gauge.render(),a.gauge.redraw(a.value),a.$watch("value",function(){a.gauge&&a.gauge.redraw(a.value)})}}})}(),function(){"use strict";angular.module("widgets").directive("widgetsBarChart",function(){return{restrict:"A",scope:{data:"=",label:"@",onClick:"&"},link:function(a,b){var c=d3.select(b[0]).append("svg").attr("width","100%");window.onresize=function(){return a.$apply()},a.$watch(function(){return angular.element(window)[0].innerWidth},function(){return a.render(a.data)}),a.$watch("data",function(b){return a.render(b)},!0),a.render=function(d){c.selectAll("*").remove();var e,f,g;e=d3.select(b[0])[0][0].offsetWidth-20,f=35*a.data.length,g=98,c.attr("height",f),c.selectAll("rect").data(d).enter().append("rect").on("click",function(b){return a.onClick({item:b})}).attr("height",30).attr("width",0).attr("x",10).attr("y",function(a,b){return 35*b}).attr("width",function(a){var b=a.score/(g/e);return b>10?b:10}),c.selectAll("text").data(d).enter().append("text").attr("fill","#fff").attr("y",function(a,b){return 35*b+22}).attr("x",15).html(function(b){return b[a.label]})}}}})}(),function(){"use strict";angular.module("widgets").directive("widgetsStat",["$timeout","socket",function(a,b){return{restrict:"A",templateUrl:"views/stat.html",scope:{app:"=",label:"@",onClick:"&"},link:function(c){function d(){c.elapsed=e+(Date.now()-f),a(d,1e3)}c.totalEmitted=0,c.totalProcessed=0,c.elapsed=0;var e,f;c.$watch("app",function(a){if(a){e=parseInt(a.elapsedTime),f=Date.now(),d();var g="applications."+a.id;b.subscribe(g,function(a){var b=a.data;c.totalEmitted=b.tuplesEmittedPSMA,c.totalProcessed=b.totalTuplesProcessed,c.$apply()},c)}})}}}])}(),function(){"use strict";angular.module("widgets").filter("elapsed",function(){return function(a){var b={timeChunk:1*a,unixUptime:!0};_.defaults(b,{compareDate:+new Date,timeChunk:void 0,maxUnit:"year",unixUptime:!1,max_levels:3,timeStamp:a||0});var c=void 0!==b.timeChunk?b.timeChunk:b.compareDate-b.timeStamp,d="",e=", ",f=0,g=b.max_levels,h=1e3,i=60*h,j=60*i,k=24*j,l=7*k,m=4*l,n=365*k;if(b.unixUptime){var o=Math.floor(c/k);c-=o*k;var p=Math.floor(c/j);c-=p*j;var q=Math.round(c/i);if(0===o){q=Math.floor(c/i),c-=q*i;var r=Math.round(c/1e3);d=(10>p?"0":"")+p+":"+(10>q?"0":"")+q+":"+(10>r?"0":"")+r}else d=o+" days, "+p.toString()+":"+(10>q?"0":"")+q.toString()}else{for(var s=[{plural:"years",singular:"year",ms:n},{plural:"months",singular:"month",ms:m},{plural:"weeks",singular:"week",ms:l},{plural:"days",singular:"day",ms:k},{plural:"hours",singular:"hour",ms:j},{plural:"minutes",singular:"minute",ms:i},{plural:"seconds",singular:"second",ms:h}],t=!1,u=0;u<s.length;u++)if(b.maxUnit===s[u].singular&&(t=!0),!(c<s[u].ms)&&t){f++;var v=Math.floor(c/s[u].ms),w=1===v?s[u].singular:s[u].plural;if(d+=v+" "+w+e,c%=s[u].ms,f>=g)break}d=d.substring(0,d.length-e.length)}return d}})}(),function(){"use strict";angular.module("twitter").controller("TwitterUrlsController",["$scope","rest",function(a,b){b.getApp(settings.twitterUrls.appName).then(function(b){a.app=b,a.appURL=settings.appsURL+b.id}),a.topic=settings.twitterUrls.topic,a.pageTitle="Twitter Top URLs",a.entity="URLs",a.gridTitle="Twitter Top URLs",a.chartTitle="Top 10 URLs Chart",a.colName="URL",a.formatter=function(a){return'<a class="svg-link" xlink:href="'+a+'">'+a+"</a>"}}]).controller("TwitterHashtagsController",["$scope","rest",function(a,b){b.getApp(settings.twitterHashtags.appName).then(function(b){a.app=b,a.appURL=settings.appsURL+b.id}),a.topic=settings.twitterHashtags.topic,a.pageTitle="Twitter Top Hashtags",a.entity="hashtags",a.gridTitle="Twitter Top Hashtags",a.chartTitle="Top 10 Hashtags Chart",a.colName="Hashtag",a.formatter=function(a){return'<a class="svg-link" xlink:href="https://twitter.com/search?q=%23'+encodeURIComponent(a)+'">'+a+"</a>"}}]).controller("TwitterGridControlller",["$scope","socket",function(a,b){b.subscribe(a.topic,function(b){var c=[];jQuery.each(b.data,function(a,b){c.push({name:a,value:parseInt(b,10)})}),c=_.sortBy(c,function(a){return-a.value}),a.topTen=c,a.$apply()},a),a.gridOptions={data:"topTen",enableColumnResize:!0,columnDefs:[{field:"name",displayName:a.colName,width:"75%",sortable:!1},{field:"value",displayName:"Count",width:"25%",sortable:!1}]}}]).controller("TwitterBarChartController",["$scope","socket",function(a,b){b.subscribe(a.topic,function(b){var c=[];jQuery.each(b.data,function(a,b){c.push({name:a,value:parseInt(b,10)})}),c=_.sortBy(c,function(a){return-a.value});var d=c[0].value;_.each(c,function(b){a.formatter&&(b.name=a.formatter(b.name)),b.name+=" - "+b.value,b.score=b.value/d*100}),a.twitterBarChartData=c,a.$apply()},a),a.twitterBarChartData=[]}])}(),function(){"use strict";function a(a){var b=a.location.match(/\((\d+),(\d+)/),c=parseInt(b[1],10),d=parseInt(b[2],10),e=parseInt(a.phone,10),f=37.40180101292334+.01*(e%4-2)-.005*c,g=-121.9966721534729+.01*(e%8-4)+.007*d;return{latitude:f,longitude:g,label:a.phone,phone:a.phone}}angular.module("mobile").controller("MobileController",["$scope","rest","socket",function(b,c,d){c.getApp(settings.mobile.appName).then(function(a){b.app=a,b.appURL=settings.appsURL+a.id});var e={};d.subscribe(settings.mobile.topic.out,function(c){var d=c.data;if(d.hasOwnProperty("removed"))delete e[d.phone];else{var f=a(d);e[d.phone]=f}b.$broadcast("datachanged",e)},b)}]).controller("MobileGridControlller",["$scope","$filter","$timeout","socket",function(a,b,c,d){a.$on("datachanged",function(b,c){a.gridData=_.values(c)}),a.phone="",a.addPhone=function(){var b={command:"add",phone:a.phone},c={type:"publish",topic:settings.mobile.topic.in,data:b};d.send(c),a.phone=""},a.removePhone=function(a){var b={command:"del",phone:a},c={type:"publish",topic:settings.mobile.topic.in,data:b};d.send(c)},a.gridOptions={data:"gridData",enableColumnResize:!0,enableRowSelection:!1,columnDefs:[{field:"phone",displayName:"Phone",width:"30%",sortable:!1},{field:"latitude",displayName:"Latitude",cellFilter:"number:3",width:"30%",sortable:!1},{field:"longitude",displayName:"Longitude",cellFilter:"number:3",width:"30%",sortable:!1},{field:"phone",displayName:"",cellTemplate:'<div class="ngCellText" ng-class="col.colIndex()" ng-click="removePhone(COL_FIELD)"><i class="icon-trash"></i></div>',cellClass:"mobile-grid-remove",width:"10%",sortable:!1}]}}]).controller("MapController",["$scope","socket",function(a){google.maps.visualRefresh=!0,a.$on("datachanged",function(b,c){a.markersProperty=_.values(c)}),angular.extend(a,{position:{coords:{latitude:37.36197126180853,longitude:-121.92674696445465}},zoomProperty:12})}])}(),function(){"use strict";function a(a){return function(){var b=Date.now(),c=new Date(b),d=new Date(b-60*a.lookback*1e3),f=jQuery.extend({},e,{vAxis:{minValue:0,maxValue:100},hAxis:{viewWindow:{min:d,max:c}}});return f}}function b(a,b){return _.map(a,function(a){return{timestamp:a.timestamp,value:a[b]}})}function c(a){return{customer:a.customer.value,product:a.product.value,os:a.os.value,software1:a.software1.value,software2:a.software2.value,deviceId:a.deviceId.value,lookback:a.lookback}}function d(a,b,d){this.rest=a,this.scope=b,this.max=b.lookback,this.dataCache=null,this.callback=d,this.cancelled=!1,this.interval=null,this.timeout=null,this.params=c(this.scope)}var e={legend:"none",vAxis:{format:settings.machine.metricformat},chartArea:{top:20,height:240}};d.prototype={cancel:function(){this.cancelled=!0,this.scope.requestProgress=0,clearInterval(this.interval),clearTimeout(this.timeout)},responseStatus:function(){this.scope.requestProgress=Math.round((Date.now()-this.requestStartTime)/1e3),this.scope.$apply()},fetchMachineData:function(){this.dataCache&&this.dataCache.length&&(this.params.lastTimestamp=_.last(this.dataCache).timestamp);var a=this.max;this.requestStartTime=Date.now(),this.interval=setInterval(this.responseStatus.bind(this),250);var b=this;this.rest.getMachineData(this.params).then(function(c){if(!b.cancelled){b.scope.response=c;var d=c.minutes;b.scope.requestProgress=0,clearInterval(b.interval);var e=Date.now();if(b.scope.lastResponse=new Date(e),b.scope.responseTime=e-b.requestStartTime,b.dataCache){if(d.length>0){b.scope.minutesCached=b.dataCache.length,b.scope.minutesReceived=d.length,b.dataCache.pop();var f=b.dataCache.length+d.length;f>a&&b.dataCache.splice(0,f-a),b.dataCache.push.apply(b.dataCache,d)}}else b.dataCache=d,b.scope.minutesCached=0,b.scope.minutesReceived=d.length;b.callback(b.dataCache);var g=settings.machine.pollInterval-(Date.now()-b.requestStartTime);g=Math.max(0,g),b.timeout=setTimeout(b.fetchMachineData.bind(b),g)}},function(){b.cancel()})}},angular.module("machine").controller("MachineController",["$scope","$timeout","$location","$routeParams","rest",function(f,g,h,i,j){function k(a,b){var c=f.range(a),d=_.map(c,function(a){return{value:String(a),label:b+" "+a}});d.splice(0,0,{value:"",label:"ALL "}),f.select[a]=d;var e=null;n[a]&&(e=_.findWhere(d,{value:n[a]})),f[a]=e?e:d[0]}function l(a){if(a&&a.length>0){var c=_.last(a);f.cpu=parseFloat(c.cpu),f.ram=parseFloat(c.ram),f.hdd=parseFloat(c.hdd)}f.cpuChart={data:b(a,"cpu"),options:e,emptyChartOptions:o},f.ramChart={data:b(a,"ram"),options:e,emptyChartOptions:o},f.hddChart={data:b(a,"hdd"),options:e,emptyChartOptions:o}}function m(){p&&p.cancel(),p=new d(j,f,l),p.fetchMachineData()}var n=new URI(window.location.href).query(!0),o=a(f);j.getApp(settings.machine.appName).then(function(a){f.app=a,f.appURL=settings.appsURL+a.id}),f.cpu=0,f.ram=0,f.hdd=0,f.range=function(a){var b=settings.machine.range[a];return _.range(b.start,b.stop+1)},f.select={},k("customer","Customer"),k("product","Product"),k("os","OS"),k("software1","Software1 Version"),k("software2","Software2 Version"),k("deviceId","Device ID"),f.lookback=n.lookback?parseInt(n.lookback,10):settings.machine.lookback,f.reload=function(){window.location.href=window.location.pathname+"?"+jQuery.param(c(f))},f.cpuChart={emptyChartOptions:o},f.ramChart={emptyChartOptions:o},f.hddChart={emptyChartOptions:o};var p=null;f.$watch("[customer, product, os, software1, software1, deviceId]",function(){m()},!0);var q,r=!0;f.$watch("lookback",function(){r?r=!1:(clearTimeout(q),q=setTimeout(m,500))}),f.$on("$destroy",function(){p&&p.cancel()}.bind(this))}])}(),function(){"use strict";function a(a){return function(){var b=Date.now(),c=new Date(b),d=new Date(b-60*a.lookback*1e3),e=jQuery.extend({},f,{vAxis:{minValue:0,maxValue:100},hAxis:{viewWindow:{min:d,max:c}}});return e}}function b(a,b){return _.map(a,function(a){return{timestamp:a.timestamp,value:a[b]}})}function c(a,b){return _.map(a,function(a){return{timestamp:a.timestamp,value:b(a)}})}function d(a){return{publisher:a.publisher.value,advertiser:a.advertiser.value,adunit:a.adunit.value,lookback:a.lookback,includeLastMinute:a.includeLastMinute}}function e(a,b,c){this.rest=a,this.scope=b,this.max=b.lookback,this.dataCache=null,this.callback=c,this.cancelled=!1,this.interval=null,this.timeout=null,this.params=d(this.scope)}var f={legend:"none",chartArea:{top:20,height:240}};e.prototype={cancel:function(){this.cancelled=!0,this.scope.requestProgress=0,clearInterval(this.interval),clearTimeout(this.timeout)},responseStatus:function(){this.scope.requestProgress=Math.round((Date.now()-this.requestStartTime)/1e3),this.scope.$apply()},fetchDimensionsData:function(){this.dataCache&&this.dataCache.length&&(this.params.lastTimestamp=_.last(this.dataCache).timestamp);var a=this.max;this.requestStartTime=Date.now(),this.interval=setInterval(this.responseStatus.bind(this),250);var b=this;this.rest.getDimensionsData(this.params).then(function(c){if(!b.cancelled){b.scope.response=c;var d=c.minutes;b.scope.requestProgress=0,clearInterval(b.interval);var e=Date.now();if(b.scope.lastResponse=new Date(e),b.scope.responseTime=e-b.requestStartTime,b.dataCache){if(d.length>0){b.scope.minutesCached=b.dataCache.length,b.scope.minutesReceived=d.length,b.dataCache.pop();var f=b.dataCache.length+d.length;f>a&&b.dataCache.splice(0,f-a),b.dataCache.push.apply(b.dataCache,d)}}else b.dataCache=d,b.scope.minutesCached=0,b.scope.minutesReceived=d.length;b.callback(b.dataCache);var g=1e3*b.scope.pollInterval-(Date.now()-b.requestStartTime);g=Math.max(0,g),b.timeout=setTimeout(b.fetchDimensionsData.bind(b),g)}},function(){b.cancel()})}},angular.module("dimensions").controller("DimensionsController",["$scope","$timeout","$location","$routeParams","rest",function(g,h,i,j,k){function l(a,b){var c=g.range(a),d=_.map(c,function(a){return{value:String(a),label:b+" "+a}});d.splice(0,0,{value:"",label:"ALL "}),g.select[a]=d;var e=null;p[a]&&(e=_.findWhere(d,{value:p[a]})),g[a]=e?e:d[0]}function m(a){g.costChart={data:b(a,"cost"),options:f,emptyChartOptions:q},g.revenueChart={data:b(a,"revenue"),options:f,emptyChartOptions:q},g.impressionsChart={data:b(a,"impressions"),options:f,emptyChartOptions:q},g.clicksChart={data:b(a,"clicks"),options:f,emptyChartOptions:q},g.ctrChart={data:c(a,function(a){return a.clicks/a.impressions*100}),options:f,emptyChartOptions:q},g.marginChart={data:c(a,function(a){return(a.cost-a.revenue)/a.revenue}),options:f,emptyChartOptions:q}}function n(){r&&r.cancel(),r=new e(k,g,m),r.fetchDimensionsData()}function o(a,b){var c,d=!0;g.$watch(a,function(){d?d=!1:(clearTimeout(c),c=setTimeout(n,b))})}var p=new URI(window.location.href).query(!0),q=a(g);k.getApp(settings.dimensions.appName).then(function(a){g.app=a,g.appURL=settings.appsURL+a.id}),g.pollInterval=settings.dimensions.pollInterval,g.includeLastMinute=!1,g.range=function(a){var b=settings.dimensions.range[a];return _.range(b.start,b.stop+1)},g.select={},l("publisher","Publisher"),l("advertiser","Advertiser"),l("adunit","Ad Unit"),g.lookback=p.lookback?parseInt(p.lookback,10):settings.dimensions.lookback,g.reload=function(){window.location.href=window.location.pathname+"?"+jQuery.param(d(g))},g.costChart={emptyChartOptions:q},g.revenueChart={emptyChartOptions:q},g.impressionsChart={emptyChartOptions:q},g.clicksChart={emptyChartOptions:q},g.ctrChart={emptyChartOptions:q},g.marginChart={emptyChartOptions:q};var r=null;g.$watch("[publisher, advertiser, adunit]",function(){n()},!0),o("lookback",500),o("pollInterval",500),o("includeLastMinute",0),g.$on("$destroy",function(){r&&r.cancel()}.bind(this))}])}(),function(){"use strict";angular.module("fraud").controller("FraudController",["$scope","rest","socket",function(a,b,c){function d(b){return a[b][Math.floor(Math.random()*a[b].length)]}function e(a){return Math.round(a)}function f(){var a=Math.floor(25*Math.random())+10;return a+"00 0000"}function g(){var a=Math.floor(4e5*Math.random())+1e7,b=a+"";return b.substring(0,4)+" "+b.substring(4)}function h(b){var c=a.alerts.push(b)-1,d=a.alertTypeTitles[b.alertType],e="";switch(b.alertType){case"smallThenLarge":e=['<article class="alert-msg low" style="display:none">',"<h1>"+d+"</h1>","<p>"+b.message+"</p>",'<div><a href="#" class="btn view-txn-btn" data-txidx="'+c+'">view details</a></div>',"</article>"].join("");break;case"sameBankId":console.log("same bank",b),e=['<article class="alert-msg high" style="display:none">',"<h1>"+d+"</h1>","<p>"+b.message+"</p>",'<div><a href="#" class="btn view-txn-btn" data-txidx="'+c+'">view details</a></div>',"</article>"].join("");break;default:e=['<article class="alert-msg medium" style="display:none">',"<h1>"+d+"</h1>","<p>"+b.message+"</p>",'<div><a href="#" class="btn view-txn-btn" data-txidx="'+c+'">view details</a></div>',"</article>"].join("")}var f=$(e);$("#alertDisplayBox").prepend(f),f.slideDown().animate({opacity:.5},180).animate({opacity:1},180).animate({opacity:.5},180).animate({opacity:1},180)}function i(a,b){c.publish(n,a),console.log("txn",a),b||$.pnotify({title:"Transaction Submitted",text:"<strong>card</strong>: "+a.bankIdNum+" "+a.ccNum+"<br/> <strong>amount</strong>: $"+k(a.amount)+"<br/> <strong>merchant</strong>: "+a.merchantId+", <strong>terminal</strong>: "+a.terminalId,type:"success"})}function j(a){var b="";switch(a.alertType){case"smallThenLarge":var c=a.alertData;b=["<strong>Card Number:</strong> "+c.fullCcNum+"<br/>","<strong>Zip Code:</strong> "+c.zipCode+"<br/>","<strong>Merchant:</strong> "+c.merchantId+" ("+c.merchantType.toLowerCase().replace("_"," ")+")<br/>","<strong>Small Amount:</strong> $"+k(c.small)+"<br/>","<strong>Large Amount:</strong> $"+k(c.large)+"<br/>","<strong>Threshold:</strong> $"+k(c.threshold)+"<br/>","<strong>Time:</strong> "+new Date(1*c.time).toLocaleString()+"<br/>"].join("");break;case"sameBankId":var c=a.alertData;b=["<strong>Transaction Count:</strong> "+c.count+"<br/>","<strong>Bank ID Number:</strong> "+c.bankIdNum+"<br/>","<strong>Zip Code:</strong> "+c.zipCode+"<br/>","<strong>Merchant:</strong> "+c.merchantId+" ("+c.merchantType.toLowerCase().replace("_"," ")+")<br/>","<strong>Terminal:</strong> "+c.terminalId+"<br/>","<strong>Time:</strong> "+new Date(1*c.time).toLocaleString()+"<br/>"].join("");break;case"aboveAvg":var c=a.alertData;b=["<strong>Dollar Amount:</strong> $"+k(c.amount)+"<br/>","<strong>Last Average:</strong> $"+k(c.lastSmaValue)+"<br/>","<strong>Difference:</strong> $"+k(c.change)+"<br/>","<strong>Zip Code:</strong> "+c.zipCode+"<br/>","<strong>Merchant:</strong> "+c.merchantId+" ("+c.merchantType.toLowerCase().replace("_"," ")+")<br/>","<strong>Terminal:</strong> "+c.terminalId+"<br/>","<strong>Time:</strong> "+new Date(1*c.time).toLocaleString()+"<br/>"].join("")}return b}function k(a){return a=(1*a).toFixed(2),l(a)}function l(a){var b=a.toString().split(".");return b[0]=b[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),b.join(".")}function m(){p||(a.startedTime?$.get("/fraud/alertCount?since="+a.startedTime).done(function(b){var c=_.find(a.stats,function(a){return"numFrauds"==a.id}),d=_.reduce(b,function(a,b){return a+b},0);c.value=l(d),setTimeout(m,2e3)}):setTimeout(m,2e3))}var n="demos.app.frauddetect.submitTransaction",o=b.getApp(settings.fraud.appName);o.then(function(b){a.app=b,a.appURL=settings.appsURL+b.id,a.startedTime=b.startedTime}),a.alertTypeTitles={smallThenLarge:"Suspicious Transaction Sequence",sameCard:"Same Card Multiple Times",sameBankId:"Same Bank Number Multiple Times",aboveAvg:"Above Average Transaction"},a.stats=[{id:"totalTxns",topic:"demos.app.frauddetect.totalTransactions",value:0,label:"Total Txns"},{id:"amtInLastSecond",topic:"demos.app.frauddetect.txLastSecond",value:0,label:"Total Dollars / sec"},{id:"avgAmtInLastSecond",topic:"demos.app.frauddetect.avgLastSecond",value:0,label:"Avg Txn Amount / sec"},{id:"numFrauds",topic:"demos.app.frauddetect.totalFrauds",value:0,label:"No. of Anomalies Detected"}],a.merchants=["Wal-Mart","Target","Amazon","Apple","Sears","Macys","JCPenny","Levis"],a.terminals=[1,2,3,4,5,6,7,8],a.zips=[94086,94087,94088,94089,94090,94091,94092,94093],a.actions=[{id:1,subtitle:a.alertTypeTitles.smallThenLarge,severity:"low",description:"This anomaly is when one credit card is used for a small purchase, then immediately again for a larger purchase. The idea here is that a scammer will first try a small purchase to ensure that the card works, then proceed with a larger purchase upon success.",generateTxns:function(){var a=f(),b=g();i({zipCode:d("zips"),merchantId:d("merchants"),terminalId:d("terminals"),bankIdNum:a,ccNum:b,amount:5}),setTimeout(function(){i({zipCode:d("zips"),merchantId:d("merchants"),terminalId:d("terminals"),bankIdNum:a,ccNum:b,amount:600})},5e3)}},{id:2,subtitle:a.alertTypeTitles.sameBankId,severity:"high",description:"This anomaly is detected when several transactions are made by cards issued by the same bank at the same terminal ID over moving window of 30 sec.",generateTxns:function(){var a=f().replace(/\d{4}$/,"1111"),b=d("zips"),c=d("terminals"),h=d("merchants"),j=setInterval(function(){i({zipCode:b,merchantId:h,terminalId:c,bankIdNum:a,ccNum:g(),amount:e(100+10*Math.random())},!0)},200);$.pnotify({title:"Several Transactions Being Sent",text:"<strong>Bank ID:</strong> "+a+", <strong>Merchant:</strong> "+h,type:"success"}),setTimeout(function(){clearInterval(j)},11e3)}},{id:3,subtitle:a.alertTypeTitles.aboveAvg,severity:"medium",description:"This anomaly is when a transaction at a given merchant significantly exceeds that merchant's average transaction amount.",generateTxns:function(){console.log("getting randomStats"),$.pnotify({type:"info",title:"Retrieving Average Information"}),$.get("/fraud/randomStats").done(function(a){var b=(f(),a.merchantId),c=a.terminalId,d=a.zipCode,h=e(a.sma+1500);setTimeout(function(){i({zipCode:d,merchantId:b,terminalId:c,bankIdNum:f(),ccNum:g(),amount:h})},1e3)})}}],o.then(function(){c.subscribe("demos.app.frauddetect.fraudAlert",function(a){"aboveAvg"===a.data.alertType&&console.log("aboveAvg",a.data),("true"===a.data.userGenerated||a.data.userGenerated===!0)&&h(a.data)},a),c.subscribe("demos.app.frauddetect.txSummary",function(b){var c=b.data;_.each(["amtInLastSecond","avgAmtInLastSecond","totalTxns","txnsInLastSecond"],function(b){var d=_.find(a.stats,function(a){return a.id==b});d&&(d.value=["amtInLastSecond","avgAmtInLastSecond"].indexOf(b)>-1?"$"+k(c[b]):l(c[b]))}),a.$apply()},a)}),a.stats.forEach(function(b){c.subscribe(b.topic,function(c){console.log("stat topic "+b.topic+" data received: ",c),b.value=c.value,a.$apply()},a)}),a.alerts=[];var p=!1;$("#alertDisplayBox").on("click",".view-txn-btn",function(b){b.preventDefault();var c=$(this).attr("data-txidx"),d=a.alerts[c];$("#txn-modal .modal-body").html(j(d)),$("#txn-modal").modal()}),m(),a.clearFrauds=function(){$("#alertDisplayBox").html("")},a.$on("$destroy",function(){p=!0}.bind(this))}])}();
\ No newline at end of file
diff --git a/web/demos/package/app/scripts/6277abef.scripts.js b/web/demos/package/app/scripts/6277abef.scripts.js
deleted file mode 100644
index 2a71ca1..0000000
--- a/web/demos/package/app/scripts/6277abef.scripts.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(){"use strict";angular.module("widgets",["socket"]),angular.module("twitter",["rest","socket","widgets","ngGrid"]),angular.module("mobile",["rest","widgets","ngGrid","google-maps"]),angular.module("machine",["ng","rest","widgets"]),angular.module("dimensions",["ng","rest","widgets"]),angular.module("fraud",["rest","widgets"]),angular.module("app",["ngRoute","socket","twitter","mobile","machine","dimensions","fraud"]),angular.module("app").config(["$routeProvider","socketProvider",function(a,b){window.settings&&b.setWebSocketURL(settings.webSocketURL),a.when("/",{templateUrl:"views/welcome.html"}).when("/twitter",{templateUrl:"views/twitter.html",controller:"TwitterController"}).when("/mobile",{templateUrl:"views/mobile.html",controller:"MobileController"}).when("/machine",{templateUrl:"views/machine.html",controller:"MachineController"}).when("/dimensions",{templateUrl:"views/dimensions.html",controller:"DimensionsController"}).when("/fraud",{templateUrl:"views/fraud.html",controller:"FraudController"})}])}(),function(){"use strict";angular.module("rest",["ng","restangular"]).factory("rest",["$q","Restangular",function(a,b){return{getApp:function(c){var d=a.defer();return b.oneUrl("applications","ws/v1/applications").get().then(function(a){var b=null;if(a&&a.apps&&a.apps.length>0){var e=_.where(a.apps,{name:c,state:"RUNNING"});if(e.length>0){e=_.sortBy(e,function(a){return parseInt(a.elapsedTime,10)});var f=e[0];d.resolve(f)}else b=c+" is not found. Please make sure application is running."}else b="No applications available.";b&&(d.reject(b),jQuery.pnotify({title:"Error",text:b,type:"error",icon:!1,hide:!1}))}),d.promise},getMachineData:function(a){var c=b.one("machine").get(a);return c.then(null,function(a){jQuery.pnotify({title:"Error",text:"Error getting data from server. Status Code: "+a.status,type:"error",icon:!1,hide:!1})}),c},getDimensionsData:function(a){var c=b.one("dimensions").get(a);return c.then(null,function(a){jQuery.pnotify({title:"Error",text:"Error getting data from server. Status Code: "+a.status,type:"error",icon:!1,hide:!1})}),c}}}]).run(function(){})}(),function(){"use strict";angular.module("socket",[]).factory("visibly",["$window",function(a){return a.visibly}]).provider("socket",function(){var a,b;return{$get:["$q","$rootScope","$timeout","visibly",function(c,d,e,f){if(!a&&!b)throw"WebSocket URL is not defined";var g=b?b:new WebSocket(a),h=c.defer();g.onopen=function(){h.resolve(),d.$apply(),jQuery.pnotify({title:"WebSocket",text:"WebSocket connection established.",type:"success",delay:2e3,icon:!1,history:!1})};var i=!1;g.onclose=function(){i||jQuery.pnotify({title:"WebSocket Closed",text:"WebSocket connection has been closed. Try refreshing the page.",type:"error",icon:!1,hide:!1,history:!1})},g.onerror=function(){i=!0,jQuery.pnotify({title:"WebSocket Error",text:"WebSocket error. Try refreshing the page.",type:"error",icon:!1,hide:!1,history:!1})};var j={},k=!1;g.onmessage=function(a){if(!k){var b=JSON.parse(a.data),c=b.topic;j.hasOwnProperty(c)&&j[c].fire(b)}};var l;return f.onHidden(function(){l=e(function(){k=!0,l=null},6e4)}),f.onVisible(function(){k=!1,l&&e.cancel(l)}),{send:function(a){var b=JSON.stringify(a);h.promise.then(function(){console.log("send "+b),g.send(b)})},publish:function(a,b){var c={type:"publish",topic:a,data:b};this.send(c)},subscribe:function(a,b,c){var d=j[a];if(!d){var e={type:"subscribe",topic:a};this.send(e),d=jQuery.Callbacks(),j[a]=d}d.add(b),c&&c.$on("$destroy",function(){this.unsubscribe(a,b)}.bind(this))},unsubscribe:function(a,b){if(j.hasOwnProperty(a)){var c=j[a];c.remove(b)}}}}],setWebSocketURL:function(b){a=b},setWebSocketObject:function(a){b=a}}})}(),function(){"use strict";angular.module("widgets").directive("lineChart",function(){return{template:"<div></div>",scope:{chart:"="},restrict:"E",replace:!0,link:function(a,b){function c(a){var b=a.data;b||(b=[]);var c=new google.visualization.DataTable;c.addColumn("datetime"),c.addColumn("number"),c.addRows(b.length);for(var e=new google.visualization.DataView(c),f=0;f<b.length;f++){var g=b[f];c.setCell(f,0,new Date(g.timestamp));var h=parseFloat(g.value);c.setCell(f,1,h)}var i;i=0===b.length&&a.emptyChartOptions?a.emptyChartOptions():a.options,d.draw(e,i)}var d=new google.visualization.LineChart(b[0]);a.$watch("chart",function(a){a&&c(a)})}}})}(),function(){"use strict";angular.module("widgets").directive("gauge",function(){return{restrict:"A",replace:!0,scope:{label:"@",min:"=",max:"=",value:"="},link:function(a,b,c){var d={size:280,label:c.label,min:void 0!==a.min?a.min:0,max:void 0!==a.max?a.max:100,minorTicks:5},e=d.max-d.min;d.yellowZones=[{from:d.min+.75*e,to:d.min+.9*e}],d.redZones=[{from:d.min+.9*e,to:d.max}],a.gauge=new Gauge(b[0],d),a.gauge.render(),a.gauge.redraw(a.value),a.$watch("value",function(){a.gauge&&a.gauge.redraw(a.value)})}}})}(),function(){"use strict";angular.module("widgets").directive("widgetsBarChart",function(){return{restrict:"A",scope:{data:"=",label:"@",onClick:"&"},link:function(a,b){var c=d3.select(b[0]).append("svg").attr("width","100%");window.onresize=function(){return a.$apply()},a.$watch(function(){return angular.element(window)[0].innerWidth},function(){return a.render(a.data)}),a.$watch("data",function(b){return a.render(b)},!0),a.render=function(d){c.selectAll("*").remove();var e,f,g;e=d3.select(b[0])[0][0].offsetWidth-20,f=35*a.data.length,g=98,c.attr("height",f),c.selectAll("rect").data(d).enter().append("rect").on("click",function(b){return a.onClick({item:b})}).attr("height",30).attr("width",0).attr("x",10).attr("y",function(a,b){return 35*b}).attr("width",function(a){var b=a.score/(g/e);return b>10?b:10}),c.selectAll("text").data(d).enter().append("text").attr("fill","#fff").attr("y",function(a,b){return 35*b+22}).attr("x",15).text(function(b){return b[a.label]})}}}})}(),function(){"use strict";angular.module("widgets").directive("widgetsStat",["$timeout","socket",function(a,b){return{restrict:"A",templateUrl:"views/stat.html",scope:{app:"=",label:"@",onClick:"&"},link:function(c){function d(){c.elapsed=e+(Date.now()-f),a(d,1e3)}c.totalEmitted=0,c.totalProcessed=0,c.elapsed=0;var e,f;c.$watch("app",function(a){if(a){e=parseInt(a.elapsedTime),f=Date.now(),d();var g="applications."+a.id;b.subscribe(g,function(a){var b=a.data;c.totalEmitted=b.tuplesEmittedPSMA,c.totalProcessed=b.totalTuplesProcessed,c.$apply()},c)}})}}}])}(),function(){"use strict";angular.module("widgets").filter("elapsed",function(){return function(a){var b={timeChunk:1*a,unixUptime:!0};_.defaults(b,{compareDate:+new Date,timeChunk:void 0,maxUnit:"year",unixUptime:!1,max_levels:3,timeStamp:a||0});var c=void 0!==b.timeChunk?b.timeChunk:b.compareDate-b.timeStamp,d="",e=", ",f=0,g=b.max_levels,h=1e3,i=60*h,j=60*i,k=24*j,l=7*k,m=4*l,n=365*k;if(b.unixUptime){var o=Math.floor(c/k);c-=o*k;var p=Math.floor(c/j);c-=p*j;var q=Math.round(c/i);if(0===o){q=Math.floor(c/i),c-=q*i;var r=Math.round(c/1e3);d=(10>p?"0":"")+p+":"+(10>q?"0":"")+q+":"+(10>r?"0":"")+r}else d=o+" days, "+p.toString()+":"+(10>q?"0":"")+q.toString()}else{for(var s=[{plural:"years",singular:"year",ms:n},{plural:"months",singular:"month",ms:m},{plural:"weeks",singular:"week",ms:l},{plural:"days",singular:"day",ms:k},{plural:"hours",singular:"hour",ms:j},{plural:"minutes",singular:"minute",ms:i},{plural:"seconds",singular:"second",ms:h}],t=!1,u=0;u<s.length;u++)if(b.maxUnit===s[u].singular&&(t=!0),!(c<s[u].ms)&&t){f++;var v=Math.floor(c/s[u].ms),w=1===v?s[u].singular:s[u].plural;if(d+=v+" "+w+e,c%=s[u].ms,f>=g)break}d=d.substring(0,d.length-e.length)}return d}})}(),function(){"use strict";angular.module("twitter").controller("TwitterController",["$scope","rest",function(a,b){b.getApp(settings.twitter.appName).then(function(b){a.app=b,a.appURL=settings.appsURL+b.id})}]).controller("TwitterGridControlller",["$scope","socket",function(a,b){b.subscribe(settings.twitter.topic,function(b){var c=[];jQuery.each(b.data,function(a,b){c.push({name:a,value:parseInt(b,10)})}),c=_.sortBy(c,function(a){return-a.value}),a.myData=c,a.$apply()},a),a.gridOptions={data:"myData",enableColumnResize:!0,columnDefs:[{field:"name",displayName:"URL",width:"75%",sortable:!1},{field:"value",displayName:"Count",width:"25%",sortable:!1}]}}]).controller("TwitterBarChartController",["$scope","socket",function(a,b){b.subscribe(settings.twitter.topic,function(b){var c=[];jQuery.each(b.data,function(a,b){c.push({name:a,value:parseInt(b,10)})}),c=_.sortBy(c,function(a){return-a.value});var d=c[0].value;_.each(c,function(a){a.name+=" - "+a.value,a.score=a.value/d*100}),a.twitterBarChartData=c,a.$apply()},a),a.twitterBarChartData=[]}])}(),function(){"use strict";function a(a){var b=a.location.match(/\((\d+),(\d+)/),c=parseInt(b[1],10),d=parseInt(b[2],10),e=parseInt(a.phone,10),f=37.40180101292334+.01*(e%4-2)-.005*c,g=-121.9966721534729+.01*(e%8-4)+.007*d;return{latitude:f,longitude:g,label:a.phone,phone:a.phone}}angular.module("mobile").controller("MobileController",["$scope","rest","socket",function(b,c,d){c.getApp(settings.mobile.appName).then(function(a){b.app=a,b.appURL=settings.appsURL+a.id});var e={};d.subscribe(settings.mobile.topic.out,function(c){var d=c.data;if(d.hasOwnProperty("removed"))delete e[d.phone];else{var f=a(d);e[d.phone]=f}b.$broadcast("datachanged",e)},b)}]).controller("MobileGridControlller",["$scope","$filter","$timeout","socket",function(a,b,c,d){a.$on("datachanged",function(b,c){a.gridData=_.values(c)}),a.phone="",a.addPhone=function(){var b={command:"add",phone:a.phone},c={type:"publish",topic:settings.mobile.topic.in,data:b};d.send(c),a.phone=""},a.removePhone=function(a){var b={command:"del",phone:a},c={type:"publish",topic:settings.mobile.topic.in,data:b};d.send(c)},a.gridOptions={data:"gridData",enableColumnResize:!0,enableRowSelection:!1,columnDefs:[{field:"phone",displayName:"Phone",width:"30%",sortable:!1},{field:"latitude",displayName:"Latitude",cellFilter:"number:3",width:"30%",sortable:!1},{field:"longitude",displayName:"Longitude",cellFilter:"number:3",width:"30%",sortable:!1},{field:"phone",displayName:"",cellTemplate:'<div class="ngCellText" ng-class="col.colIndex()" ng-click="removePhone(COL_FIELD)"><i class="icon-trash"></i></div>',cellClass:"mobile-grid-remove",width:"10%",sortable:!1}]}}]).controller("MapController",["$scope","socket",function(a){google.maps.visualRefresh=!0,a.$on("datachanged",function(b,c){a.markersProperty=_.values(c)}),angular.extend(a,{position:{coords:{latitude:37.36197126180853,longitude:-121.92674696445465}},zoomProperty:12})}])}(),function(){"use strict";function a(a){return function(){var b=Date.now(),c=new Date(b),d=new Date(b-60*a.lookback*1e3),f=jQuery.extend({},e,{vAxis:{minValue:0,maxValue:100},hAxis:{viewWindow:{min:d,max:c}}});return f}}function b(a,b){return _.map(a,function(a){return{timestamp:a.timestamp,value:a[b]}})}function c(a){return{customer:a.customer.value,product:a.product.value,os:a.os.value,software1:a.software1.value,software2:a.software2.value,deviceId:a.deviceId.value,lookback:a.lookback}}function d(a,b,d){this.rest=a,this.scope=b,this.max=b.lookback,this.dataCache=null,this.callback=d,this.cancelled=!1,this.interval=null,this.timeout=null,this.params=c(this.scope)}var e={legend:"none",vAxis:{format:settings.machine.metricformat},chartArea:{top:20,height:240}};d.prototype={cancel:function(){this.cancelled=!0,this.scope.requestProgress=0,clearInterval(this.interval),clearTimeout(this.timeout)},responseStatus:function(){this.scope.requestProgress=Math.round((Date.now()-this.requestStartTime)/1e3),this.scope.$apply()},fetchMachineData:function(){this.dataCache&&this.dataCache.length&&(this.params.lastTimestamp=_.last(this.dataCache).timestamp);var a=this.max;this.requestStartTime=Date.now(),this.interval=setInterval(this.responseStatus.bind(this),250);var b=this;this.rest.getMachineData(this.params).then(function(c){if(!b.cancelled){b.scope.response=c;var d=c.minutes;b.scope.requestProgress=0,clearInterval(b.interval);var e=Date.now();if(b.scope.lastResponse=new Date(e),b.scope.responseTime=e-b.requestStartTime,b.dataCache){if(d.length>0){b.scope.minutesCached=b.dataCache.length,b.scope.minutesReceived=d.length,b.dataCache.pop();var f=b.dataCache.length+d.length;f>a&&b.dataCache.splice(0,f-a),b.dataCache.push.apply(b.dataCache,d)}}else b.dataCache=d,b.scope.minutesCached=0,b.scope.minutesReceived=d.length;b.callback(b.dataCache);var g=settings.machine.pollInterval-(Date.now()-b.requestStartTime);g=Math.max(0,g),b.timeout=setTimeout(b.fetchMachineData.bind(b),g)}},function(){b.cancel()})}},angular.module("machine").controller("MachineController",["$scope","$timeout","$location","$routeParams","rest",function(f,g,h,i,j){function k(a,b){var c=f.range(a),d=_.map(c,function(a){return{value:String(a),label:b+" "+a}});d.splice(0,0,{value:"",label:"ALL "}),f.select[a]=d;var e=null;n[a]&&(e=_.findWhere(d,{value:n[a]})),f[a]=e?e:d[0]}function l(a){if(a&&a.length>0){var c=_.last(a);f.cpu=parseFloat(c.cpu),f.ram=parseFloat(c.ram),f.hdd=parseFloat(c.hdd)}f.cpuChart={data:b(a,"cpu"),options:e,emptyChartOptions:o},f.ramChart={data:b(a,"ram"),options:e,emptyChartOptions:o},f.hddChart={data:b(a,"hdd"),options:e,emptyChartOptions:o}}function m(){p&&p.cancel(),p=new d(j,f,l),p.fetchMachineData()}var n=new URI(window.location.href).query(!0),o=a(f);j.getApp(settings.machine.appName).then(function(a){f.app=a,f.appURL=settings.appsURL+a.id}),f.cpu=0,f.ram=0,f.hdd=0,f.range=function(a){var b=settings.machine.range[a];return _.range(b.start,b.stop+1)},f.select={},k("customer","Customer"),k("product","Product"),k("os","OS"),k("software1","Software1 Version"),k("software2","Software2 Version"),k("deviceId","Device ID"),f.lookback=n.lookback?parseInt(n.lookback,10):settings.machine.lookback,f.reload=function(){window.location.href=window.location.pathname+"?"+jQuery.param(c(f))},f.cpuChart={emptyChartOptions:o},f.ramChart={emptyChartOptions:o},f.hddChart={emptyChartOptions:o};var p=null;f.$watch("[customer, product, os, software1, software1, deviceId]",function(){m()},!0);var q,r=!0;f.$watch("lookback",function(){r?r=!1:(clearTimeout(q),q=setTimeout(m,500))}),f.$on("$destroy",function(){p&&p.cancel()}.bind(this))}])}(),function(){"use strict";function a(a){return function(){var b=Date.now(),c=new Date(b),d=new Date(b-60*a.lookback*1e3),e=jQuery.extend({},f,{vAxis:{minValue:0,maxValue:100},hAxis:{viewWindow:{min:d,max:c}}});return e}}function b(a,b){return _.map(a,function(a){return{timestamp:a.timestamp,value:a[b]}})}function c(a,b){return _.map(a,function(a){return{timestamp:a.timestamp,value:b(a)}})}function d(a){return{publisher:a.publisher.value,advertiser:a.advertiser.value,adunit:a.adunit.value,lookback:a.lookback,includeLastMinute:a.includeLastMinute}}function e(a,b,c){this.rest=a,this.scope=b,this.max=b.lookback,this.dataCache=null,this.callback=c,this.cancelled=!1,this.interval=null,this.timeout=null,this.params=d(this.scope)}var f={legend:"none",chartArea:{top:20,height:240}};e.prototype={cancel:function(){this.cancelled=!0,this.scope.requestProgress=0,clearInterval(this.interval),clearTimeout(this.timeout)},responseStatus:function(){this.scope.requestProgress=Math.round((Date.now()-this.requestStartTime)/1e3),this.scope.$apply()},fetchDimensionsData:function(){this.dataCache&&this.dataCache.length&&(this.params.lastTimestamp=_.last(this.dataCache).timestamp);var a=this.max;this.requestStartTime=Date.now(),this.interval=setInterval(this.responseStatus.bind(this),250);var b=this;this.rest.getDimensionsData(this.params).then(function(c){if(!b.cancelled){b.scope.response=c;var d=c.minutes;b.scope.requestProgress=0,clearInterval(b.interval);var e=Date.now();if(b.scope.lastResponse=new Date(e),b.scope.responseTime=e-b.requestStartTime,b.dataCache){if(d.length>0){b.scope.minutesCached=b.dataCache.length,b.scope.minutesReceived=d.length,b.dataCache.pop();var f=b.dataCache.length+d.length;f>a&&b.dataCache.splice(0,f-a),b.dataCache.push.apply(b.dataCache,d)}}else b.dataCache=d,b.scope.minutesCached=0,b.scope.minutesReceived=d.length;b.callback(b.dataCache);var g=1e3*b.scope.pollInterval-(Date.now()-b.requestStartTime);g=Math.max(0,g),b.timeout=setTimeout(b.fetchDimensionsData.bind(b),g)}},function(){b.cancel()})}},angular.module("dimensions").controller("DimensionsController",["$scope","$timeout","$location","$routeParams","rest",function(g,h,i,j,k){function l(a,b){var c=g.range(a),d=_.map(c,function(a){return{value:String(a),label:b+" "+a}});d.splice(0,0,{value:"",label:"ALL "}),g.select[a]=d;var e=null;p[a]&&(e=_.findWhere(d,{value:p[a]})),g[a]=e?e:d[0]}function m(a){g.costChart={data:b(a,"cost"),options:f,emptyChartOptions:q},g.revenueChart={data:b(a,"revenue"),options:f,emptyChartOptions:q},g.impressionsChart={data:b(a,"impressions"),options:f,emptyChartOptions:q},g.clicksChart={data:b(a,"clicks"),options:f,emptyChartOptions:q},g.ctrChart={data:c(a,function(a){return a.clicks/a.impressions*100}),options:f,emptyChartOptions:q},g.marginChart={data:c(a,function(a){return(a.cost-a.revenue)/a.revenue}),options:f,emptyChartOptions:q}}function n(){r&&r.cancel(),r=new e(k,g,m),r.fetchDimensionsData()}function o(a,b){var c,d=!0;g.$watch(a,function(){d?d=!1:(clearTimeout(c),c=setTimeout(n,b))})}var p=new URI(window.location.href).query(!0),q=a(g);k.getApp(settings.dimensions.appName).then(function(a){g.app=a,g.appURL=settings.appsURL+a.id}),g.pollInterval=settings.dimensions.pollInterval,g.includeLastMinute=!1,g.range=function(a){var b=settings.dimensions.range[a];return _.range(b.start,b.stop+1)},g.select={},l("publisher","Publisher"),l("advertiser","Advertiser"),l("adunit","Ad Unit"),g.lookback=p.lookback?parseInt(p.lookback,10):settings.dimensions.lookback,g.reload=function(){window.location.href=window.location.pathname+"?"+jQuery.param(d(g))},g.costChart={emptyChartOptions:q},g.revenueChart={emptyChartOptions:q},g.impressionsChart={emptyChartOptions:q},g.clicksChart={emptyChartOptions:q},g.ctrChart={emptyChartOptions:q},g.marginChart={emptyChartOptions:q};var r=null;g.$watch("[publisher, advertiser, adunit]",function(){n()},!0),o("lookback",500),o("pollInterval",500),o("includeLastMinute",0),g.$on("$destroy",function(){r&&r.cancel()}.bind(this))}])}(),function(){"use strict";angular.module("fraud").controller("FraudController",["$scope","rest","socket",function(a,b,c){function d(b){return a[b][Math.floor(Math.random()*a[b].length)]}function e(a){return Math.round(a)}function f(){var a=Math.floor(25*Math.random())+10;return a+"00 0000"}function g(){var a=Math.floor(4e5*Math.random())+1e7,b=a+"";return b.substring(0,4)+" "+b.substring(4)}function h(b){var c=a.alerts.push(b)-1,d=a.alertTypeTitles[b.alertType],e="";switch(b.alertType){case"smallThenLarge":e=['<article class="alert-msg low" style="display:none">',"<h1>"+d+"</h1>","<p>"+b.message+"</p>",'<div><a href="#" class="btn view-txn-btn" data-txidx="'+c+'">view details</a></div>',"</article>"].join("");break;case"sameBankId":console.log("same bank",b),e=['<article class="alert-msg high" style="display:none">',"<h1>"+d+"</h1>","<p>"+b.message+"</p>",'<div><a href="#" class="btn view-txn-btn" data-txidx="'+c+'">view details</a></div>',"</article>"].join("");break;default:e=['<article class="alert-msg medium" style="display:none">',"<h1>"+d+"</h1>","<p>"+b.message+"</p>",'<div><a href="#" class="btn view-txn-btn" data-txidx="'+c+'">view details</a></div>',"</article>"].join("")}var f=$(e);$("#alertDisplayBox").prepend(f),f.slideDown().animate({opacity:.5},180).animate({opacity:1},180).animate({opacity:.5},180).animate({opacity:1},180)}function i(a,b){c.publish(n,a),console.log("txn",a),b||$.pnotify({title:"Transaction Submitted",text:"<strong>card</strong>: "+a.bankIdNum+" "+a.ccNum+"<br/> <strong>amount</strong>: $"+k(a.amount)+"<br/> <strong>merchant</strong>: "+a.merchantId+", <strong>terminal</strong>: "+a.terminalId,type:"success"})}function j(a){var b="";switch(a.alertType){case"smallThenLarge":var c=a.alertData;b=["<strong>Card Number:</strong> "+c.fullCcNum+"<br/>","<strong>Zip Code:</strong> "+c.zipCode+"<br/>","<strong>Merchant:</strong> "+c.merchantId+" ("+c.merchantType.toLowerCase().replace("_"," ")+")<br/>","<strong>Small Amount:</strong> $"+k(c.small)+"<br/>","<strong>Large Amount:</strong> $"+k(c.large)+"<br/>","<strong>Threshold:</strong> $"+k(c.threshold)+"<br/>","<strong>Time:</strong> "+new Date(1*c.time).toLocaleString()+"<br/>"].join("");break;case"sameBankId":var c=a.alertData;b=["<strong>Transaction Count:</strong> "+c.count+"<br/>","<strong>Bank ID Number:</strong> "+c.bankIdNum+"<br/>","<strong>Zip Code:</strong> "+c.zipCode+"<br/>","<strong>Merchant:</strong> "+c.merchantId+" ("+c.merchantType.toLowerCase().replace("_"," ")+")<br/>","<strong>Terminal:</strong> "+c.terminalId+"<br/>","<strong>Time:</strong> "+new Date(1*c.time).toLocaleString()+"<br/>"].join("");break;case"aboveAvg":var c=a.alertData;b=["<strong>Dollar Amount:</strong> $"+k(c.amount)+"<br/>","<strong>Last Average:</strong> $"+k(c.lastSmaValue)+"<br/>","<strong>Difference:</strong> $"+k(c.change)+"<br/>","<strong>Zip Code:</strong> "+c.zipCode+"<br/>","<strong>Merchant:</strong> "+c.merchantId+" ("+c.merchantType.toLowerCase().replace("_"," ")+")<br/>","<strong>Terminal:</strong> "+c.terminalId+"<br/>","<strong>Time:</strong> "+new Date(1*c.time).toLocaleString()+"<br/>"].join("")}return b}function k(a){return a=(1*a).toFixed(2),l(a)}function l(a){var b=a.toString().split(".");return b[0]=b[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),b.join(".")}function m(){p||(a.startedTime?$.get("/fraud/alertCount?since="+a.startedTime).done(function(b){var c=_.find(a.stats,function(a){return"numFrauds"==a.id}),d=_.reduce(b,function(a,b){return a+b},0);c.value=l(d),setTimeout(m,2e3)}):setTimeout(m,2e3))}var n="demos.app.frauddetect.submitTransaction",o=b.getApp(settings.fraud.appName);o.then(function(b){a.app=b,a.appURL=settings.appsURL+b.id,a.startedTime=b.startedTime}),a.alertTypeTitles={smallThenLarge:"Suspicious Transaction Sequence",sameCard:"Same Card Multiple Times",sameBankId:"Same Bank Number Multiple Times",aboveAvg:"Above Average Transaction"},a.stats=[{id:"totalTxns",topic:"demos.app.frauddetect.totalTransactions",value:0,label:"Total Txns"},{id:"amtInLastSecond",topic:"demos.app.frauddetect.txLastSecond",value:0,label:"Total Dollars / sec"},{id:"avgAmtInLastSecond",topic:"demos.app.frauddetect.avgLastSecond",value:0,label:"Avg Txn Amount / sec"},{id:"numFrauds",topic:"demos.app.frauddetect.totalFrauds",value:0,label:"No. of Anomalies Detected"}],a.merchants=["Wal-Mart","Target","Amazon","Apple","Sears","Macys","JCPenny","Levis"],a.terminals=[1,2,3,4,5,6,7,8],a.zips=[94086,94087,94088,94089,94090,94091,94092,94093],a.actions=[{id:1,subtitle:a.alertTypeTitles.smallThenLarge,severity:"low",description:"This anomaly is when one credit card is used for a small purchase, then immediately again for a larger purchase. The idea here is that a scammer will first try a small purchase to ensure that the card works, then proceed with a larger purchase upon success.",generateTxns:function(){var a=f(),b=g();i({zipCode:d("zips"),merchantId:d("merchants"),terminalId:d("terminals"),bankIdNum:a,ccNum:b,amount:5}),setTimeout(function(){i({zipCode:d("zips"),merchantId:d("merchants"),terminalId:d("terminals"),bankIdNum:a,ccNum:b,amount:600})},5e3)}},{id:2,subtitle:a.alertTypeTitles.sameBankId,severity:"high",description:"This anomaly is detected when several transactions are made by cards issued by the same bank at the same terminal ID over moving window of 30 sec.",generateTxns:function(){var a=f().replace(/\d{4}$/,"1111"),b=d("zips"),c=d("terminals"),h=d("merchants"),j=setInterval(function(){i({zipCode:b,merchantId:h,terminalId:c,bankIdNum:a,ccNum:g(),amount:e(100+10*Math.random())},!0)},200);$.pnotify({title:"Several Transactions Being Sent",text:"<strong>Bank ID:</strong> "+a+", <strong>Merchant:</strong> "+h,type:"success"}),setTimeout(function(){clearInterval(j)},11e3)}},{id:3,subtitle:a.alertTypeTitles.aboveAvg,severity:"medium",description:"This anomaly is when a transaction at a given merchant significantly exceeds that merchant's average transaction amount.",generateTxns:function(){console.log("getting randomStats"),$.pnotify({type:"info",title:"Retrieving Average Information"}),$.get("/fraud/randomStats").done(function(a){var b=(f(),a.merchantId),c=a.terminalId,d=a.zipCode,h=e(a.sma+1500);setTimeout(function(){i({zipCode:d,merchantId:b,terminalId:c,bankIdNum:f(),ccNum:g(),amount:h})},1e3)})}}],o.then(function(){c.subscribe("demos.app.frauddetect.fraudAlert",function(a){"aboveAvg"===a.data.alertType&&console.log("aboveAvg",a.data),("true"===a.data.userGenerated||a.data.userGenerated===!0)&&h(a.data)},a),c.subscribe("demos.app.frauddetect.txSummary",function(b){var c=b.data;_.each(["amtInLastSecond","avgAmtInLastSecond","totalTxns","txnsInLastSecond"],function(b){var d=_.find(a.stats,function(a){return a.id==b});d&&(d.value=["amtInLastSecond","avgAmtInLastSecond"].indexOf(b)>-1?"$"+k(c[b]):l(c[b]))}),a.$apply()},a)}),a.stats.forEach(function(b){c.subscribe(b.topic,function(c){console.log("stat topic "+b.topic+" data received: ",c),b.value=c.value,a.$apply()},a)}),a.alerts=[];var p=!1;$("#alertDisplayBox").on("click",".view-txn-btn",function(b){b.preventDefault();var c=$(this).attr("data-txidx"),d=a.alerts[c];$("#txn-modal .modal-body").html(j(d)),$("#txn-modal").modal()}),m(),a.clearFrauds=function(){$("#alertDisplayBox").html("")},a.$on("$destroy",function(){p=!0}.bind(this))}])}();
\ No newline at end of file
diff --git a/web/demos/package/app/scripts/9f21e177.modules.js b/web/demos/package/app/scripts/9f21e177.modules.js
new file mode 100644
index 0000000..71f121e
--- /dev/null
+++ b/web/demos/package/app/scripts/9f21e177.modules.js
@@ -0,0 +1,11 @@
+function Gauge(a,b){this.element=a;var c=this;this.configure=function(a){this.config=a,this.config.size=.9*this.config.size,this.config.raduis=.97*this.config.size/2,this.config.cx=this.config.size/2,this.config.cy=this.config.size/2,this.config.min=void 0!=a.min?a.min:0,this.config.max=void 0!=a.max?a.max:100,this.config.range=this.config.max-this.config.min,this.config.majorTicks=a.majorTicks||5,this.config.minorTicks=a.minorTicks||2,this.config.greenColor=a.greenColor||"#109618",this.config.yellowColor=a.yellowColor||"#FF9900",this.config.redColor=a.redColor||"#DC3912",this.config.transitionDuration=a.transitionDuration||500},this.render=function(){this.body=d3.select(this.element).append("svg:svg").attr("class","gauge").attr("width",this.config.size).attr("height",this.config.size),this.body.append("svg:circle").attr("cx",this.config.cx).attr("cy",this.config.cy).attr("r",this.config.raduis).style("fill","#ccc").style("stroke","#000").style("stroke-width","0.5px"),this.body.append("svg:circle").attr("cx",this.config.cx).attr("cy",this.config.cy).attr("r",.9*this.config.raduis).style("fill","#fff").style("stroke","#e0e0e0").style("stroke-width","2px");for(var a in this.config.greenZones)this.drawBand(this.config.greenZones[a].from,this.config.greenZones[a].to,c.config.greenColor);for(var a in this.config.yellowZones)this.drawBand(this.config.yellowZones[a].from,this.config.yellowZones[a].to,c.config.yellowColor);for(var a in this.config.redZones)this.drawBand(this.config.redZones[a].from,this.config.redZones[a].to,c.config.redColor);if(void 0!=this.config.label){var b=Math.round(this.config.size/9);this.body.append("svg:text").attr("x",this.config.cx).attr("y",this.config.cy/2+b/2).attr("dy",b/2).attr("text-anchor","middle").text(this.config.label).style("font-size",b+"px").style("fill","#333").style("stroke-width","0px")}for(var b=Math.round(this.config.size/16),d=this.config.range/(this.config.majorTicks-1),e=this.config.min;e<=this.config.max;e+=d){for(var f=d/this.config.minorTicks,g=e+f;g<Math.min(e+d,this.config.max);g+=f){var h=this.valueToPoint(g,.75),i=this.valueToPoint(g,.85);this.body.append("svg:line").attr("x1",h.x).attr("y1",h.y).attr("x2",i.x).attr("y2",i.y).style("stroke","#666").style("stroke-width","1px")}var h=this.valueToPoint(e,.7),i=this.valueToPoint(e,.85);if(this.body.append("svg:line").attr("x1",h.x).attr("y1",h.y).attr("x2",i.x).attr("y2",i.y).style("stroke","#333").style("stroke-width","2px"),e==this.config.min||e==this.config.max){var j=this.valueToPoint(e,.63);this.body.append("svg:text").attr("x",j.x).attr("y",j.y).attr("dy",b/3).attr("text-anchor",e==this.config.min?"start":"end").text(e).style("font-size",b+"px").style("fill","#333").style("stroke-width","0px")}}var k=this.body.append("svg:g").attr("class","pointerContainer"),l=(this.config.min+this.config.max)/2,m=this.buildPointerPath(l),n=d3.svg.line().x(function(a){return a.x}).y(function(a){return a.y}).interpolate("basis");k.selectAll("path").data([m]).enter().append("svg:path").attr("d",n).style("fill","#dc3912").style("stroke","#c63310").style("fill-opacity",.7),k.append("svg:circle").attr("cx",this.config.cx).attr("cy",this.config.cy).attr("r",.12*this.config.raduis).style("fill","#4684EE").style("stroke","#666").style("opacity",1);var b=Math.round(this.config.size/10);k.selectAll("text").data([l]).enter().append("svg:text").attr("x",this.config.cx).attr("y",this.config.size-this.config.cy/4-b).attr("dy",b/2).attr("text-anchor","middle").style("font-size",b+"px").style("fill","#000").style("stroke-width","0px"),this.redraw(this.config.min,0)},this.buildPointerPath=function(a){function b(a,b){var d=c.valueToPoint(a,b);return d.x-=c.config.cx,d.y-=c.config.cy,d}var d=this.config.range/13,e=b(a,.85),f=b(a-d,.12),g=b(a+d,.12),h=a-this.config.range*(1/.75)/2,i=b(h,.28),j=b(h-d,.12),k=b(h+d,.12);return[e,f,k,i,j,g,e]},this.drawBand=function(a,b,d){0>=b-a||this.body.append("svg:path").style("fill",d).attr("d",d3.svg.arc().startAngle(this.valueToRadians(a)).endAngle(this.valueToRadians(b)).innerRadius(.65*this.config.raduis).outerRadius(.85*this.config.raduis)).attr("transform",function(){return"translate("+c.config.cx+", "+c.config.cy+") rotate(270)"})},this.redraw=function(a,b){var d=this.body.select(".pointerContainer");d.selectAll("text").text(Math.round(a));var e=d.selectAll("path");e.transition().duration(void 0!=b?b:this.config.transitionDuration).attrTween("transform",function(){var b=a;a>c.config.max?b=c.config.max+.02*c.config.range:a<c.config.min&&(b=c.config.min-.02*c.config.range);var d=c.valueToDegrees(b)-90,e=c._currentRotation||d;return c._currentRotation=d,function(a){var b=e+(d-e)*a;return"translate("+c.config.cx+", "+c.config.cy+") rotate("+b+")"}})},this.valueToDegrees=function(a){return a/this.config.range*270-(this.config.min/this.config.range*270+45)},this.valueToRadians=function(a){return this.valueToDegrees(a)*Math.PI/180},this.valueToPoint=function(a,b){return{x:this.config.cx-this.config.raduis*b*Math.cos(this.valueToRadians(a)),y:this.config.cy-this.config.raduis*b*Math.sin(this.valueToRadians(a))}},this.configure(b)}(function(){var a=this,b=a._,c={},d=Array.prototype,e=Object.prototype,f=Function.prototype,g=d.push,h=d.slice,i=d.concat,j=e.toString,k=e.hasOwnProperty,l=d.forEach,m=d.map,n=d.reduce,o=d.reduceRight,p=d.filter,q=d.every,r=d.some,s=d.indexOf,t=d.lastIndexOf,u=Array.isArray,v=Object.keys,w=f.bind,x=function(a){return a instanceof x?a:this instanceof x?void(this._wrapped=a):new x(a)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=x),exports._=x):a._=x,x.VERSION="1.5.2";var y=x.each=x.forEach=function(a,b,d){if(null!=a)if(l&&a.forEach===l)a.forEach(b,d);else if(a.length===+a.length){for(var e=0,f=a.length;f>e;e++)if(b.call(d,a[e],e,a)===c)return}else for(var g=x.keys(a),e=0,f=g.length;f>e;e++)if(b.call(d,a[g[e]],g[e],a)===c)return};x.map=x.collect=function(a,b,c){var d=[];return null==a?d:m&&a.map===m?a.map(b,c):(y(a,function(a,e,f){d.push(b.call(c,a,e,f))}),d)};var z="Reduce of empty array with no initial value";x.reduce=x.foldl=x.inject=function(a,b,c,d){var e=arguments.length>2;if(null==a&&(a=[]),n&&a.reduce===n)return d&&(b=x.bind(b,d)),e?a.reduce(b,c):a.reduce(b);if(y(a,function(a,f,g){e?c=b.call(d,c,a,f,g):(c=a,e=!0)}),!e)throw new TypeError(z);return c},x.reduceRight=x.foldr=function(a,b,c,d){var e=arguments.length>2;if(null==a&&(a=[]),o&&a.reduceRight===o)return d&&(b=x.bind(b,d)),e?a.reduceRight(b,c):a.reduceRight(b);var f=a.length;if(f!==+f){var g=x.keys(a);f=g.length}if(y(a,function(h,i,j){i=g?g[--f]:--f,e?c=b.call(d,c,a[i],i,j):(c=a[i],e=!0)}),!e)throw new TypeError(z);return c},x.find=x.detect=function(a,b,c){var d;return A(a,function(a,e,f){return b.call(c,a,e,f)?(d=a,!0):void 0}),d},x.filter=x.select=function(a,b,c){var d=[];return null==a?d:p&&a.filter===p?a.filter(b,c):(y(a,function(a,e,f){b.call(c,a,e,f)&&d.push(a)}),d)},x.reject=function(a,b,c){return x.filter(a,function(a,d,e){return!b.call(c,a,d,e)},c)},x.every=x.all=function(a,b,d){b||(b=x.identity);var e=!0;return null==a?e:q&&a.every===q?a.every(b,d):(y(a,function(a,f,g){return(e=e&&b.call(d,a,f,g))?void 0:c}),!!e)};var A=x.some=x.any=function(a,b,d){b||(b=x.identity);var e=!1;return null==a?e:r&&a.some===r?a.some(b,d):(y(a,function(a,f,g){return e||(e=b.call(d,a,f,g))?c:void 0}),!!e)};x.contains=x.include=function(a,b){return null==a?!1:s&&a.indexOf===s?-1!=a.indexOf(b):A(a,function(a){return a===b})},x.invoke=function(a,b){var c=h.call(arguments,2),d=x.isFunction(b);return x.map(a,function(a){return(d?b:a[b]).apply(a,c)})},x.pluck=function(a,b){return x.map(a,function(a){return a[b]})},x.where=function(a,b,c){return x.isEmpty(b)?c?void 0:[]:x[c?"find":"filter"](a,function(a){for(var c in b)if(b[c]!==a[c])return!1;return!0})},x.findWhere=function(a,b){return x.where(a,b,!0)},x.max=function(a,b,c){if(!b&&x.isArray(a)&&a[0]===+a[0]&&a.length<65535)return Math.max.apply(Math,a);if(!b&&x.isEmpty(a))return-1/0;var d={computed:-1/0,value:-1/0};return y(a,function(a,e,f){var g=b?b.call(c,a,e,f):a;g>d.computed&&(d={value:a,computed:g})}),d.value},x.min=function(a,b,c){if(!b&&x.isArray(a)&&a[0]===+a[0]&&a.length<65535)return Math.min.apply(Math,a);if(!b&&x.isEmpty(a))return 1/0;var d={computed:1/0,value:1/0};return y(a,function(a,e,f){var g=b?b.call(c,a,e,f):a;g<d.computed&&(d={value:a,computed:g})}),d.value},x.shuffle=function(a){var b,c=0,d=[];return y(a,function(a){b=x.random(c++),d[c-1]=d[b],d[b]=a}),d},x.sample=function(a,b,c){return arguments.length<2||c?a[x.random(a.length-1)]:x.shuffle(a).slice(0,Math.max(0,b))};var B=function(a){return x.isFunction(a)?a:function(b){return b[a]}};x.sortBy=function(a,b,c){var d=B(b);return x.pluck(x.map(a,function(a,b,e){return{value:a,index:b,criteria:d.call(c,a,b,e)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;if(c!==d){if(c>d||void 0===c)return 1;if(d>c||void 0===d)return-1}return a.index-b.index}),"value")};var C=function(a){return function(b,c,d){var e={},f=null==c?x.identity:B(c);return y(b,function(c,g){var h=f.call(d,c,g,b);a(e,h,c)}),e}};x.groupBy=C(function(a,b,c){(x.has(a,b)?a[b]:a[b]=[]).push(c)}),x.indexBy=C(function(a,b,c){a[b]=c}),x.countBy=C(function(a,b){x.has(a,b)?a[b]++:a[b]=1}),x.sortedIndex=function(a,b,c,d){c=null==c?x.identity:B(c);for(var e=c.call(d,b),f=0,g=a.length;g>f;){var h=f+g>>>1;c.call(d,a[h])<e?f=h+1:g=h}return f},x.toArray=function(a){return a?x.isArray(a)?h.call(a):a.length===+a.length?x.map(a,x.identity):x.values(a):[]},x.size=function(a){return null==a?0:a.length===+a.length?a.length:x.keys(a).length},x.first=x.head=x.take=function(a,b,c){return null==a?void 0:null==b||c?a[0]:h.call(a,0,b)},x.initial=function(a,b,c){return h.call(a,0,a.length-(null==b||c?1:b))},x.last=function(a,b,c){return null==a?void 0:null==b||c?a[a.length-1]:h.call(a,Math.max(a.length-b,0))},x.rest=x.tail=x.drop=function(a,b,c){return h.call(a,null==b||c?1:b)},x.compact=function(a){return x.filter(a,x.identity)};var D=function(a,b,c){return b&&x.every(a,x.isArray)?i.apply(c,a):(y(a,function(a){x.isArray(a)||x.isArguments(a)?b?g.apply(c,a):D(a,b,c):c.push(a)}),c)};x.flatten=function(a,b){return D(a,b,[])},x.without=function(a){return x.difference(a,h.call(arguments,1))},x.uniq=x.unique=function(a,b,c,d){x.isFunction(b)&&(d=c,c=b,b=!1);var e=c?x.map(a,c,d):a,f=[],g=[];return y(e,function(c,d){(b?d&&g[g.length-1]===c:x.contains(g,c))||(g.push(c),f.push(a[d]))}),f},x.union=function(){return x.uniq(x.flatten(arguments,!0))},x.intersection=function(a){var b=h.call(arguments,1);return x.filter(x.uniq(a),function(a){return x.every(b,function(b){return x.indexOf(b,a)>=0})})},x.difference=function(a){var b=i.apply(d,h.call(arguments,1));return x.filter(a,function(a){return!x.contains(b,a)})},x.zip=function(){for(var a=x.max(x.pluck(arguments,"length").concat(0)),b=new Array(a),c=0;a>c;c++)b[c]=x.pluck(arguments,""+c);return b},x.object=function(a,b){if(null==a)return{};for(var c={},d=0,e=a.length;e>d;d++)b?c[a[d]]=b[d]:c[a[d][0]]=a[d][1];return c},x.indexOf=function(a,b,c){if(null==a)return-1;var d=0,e=a.length;if(c){if("number"!=typeof c)return d=x.sortedIndex(a,b),a[d]===b?d:-1;d=0>c?Math.max(0,e+c):c}if(s&&a.indexOf===s)return a.indexOf(b,c);for(;e>d;d++)if(a[d]===b)return d;return-1},x.lastIndexOf=function(a,b,c){if(null==a)return-1;var d=null!=c;if(t&&a.lastIndexOf===t)return d?a.lastIndexOf(b,c):a.lastIndexOf(b);for(var e=d?c:a.length;e--;)if(a[e]===b)return e;return-1},x.range=function(a,b,c){arguments.length<=1&&(b=a||0,a=0),c=arguments[2]||1;for(var d=Math.max(Math.ceil((b-a)/c),0),e=0,f=new Array(d);d>e;)f[e++]=a,a+=c;return f};var E=function(){};x.bind=function(a,b){var c,d;if(w&&a.bind===w)return w.apply(a,h.call(arguments,1));if(!x.isFunction(a))throw new TypeError;return c=h.call(arguments,2),d=function(){if(!(this instanceof d))return a.apply(b,c.concat(h.call(arguments)));E.prototype=a.prototype;var e=new E;E.prototype=null;var f=a.apply(e,c.concat(h.call(arguments)));return Object(f)===f?f:e}},x.partial=function(a){var b=h.call(arguments,1);return function(){return a.apply(this,b.concat(h.call(arguments)))}},x.bindAll=function(a){var b=h.call(arguments,1);if(0===b.length)throw new Error("bindAll must be passed function names");return y(b,function(b){a[b]=x.bind(a[b],a)}),a},x.memoize=function(a,b){var c={};return b||(b=x.identity),function(){var d=b.apply(this,arguments);return x.has(c,d)?c[d]:c[d]=a.apply(this,arguments)}},x.delay=function(a,b){var c=h.call(arguments,2);return setTimeout(function(){return a.apply(null,c)},b)},x.defer=function(a){return x.delay.apply(x,[a,1].concat(h.call(arguments,1)))},x.throttle=function(a,b,c){var d,e,f,g=null,h=0;c||(c={});var i=function(){h=c.leading===!1?0:new Date,g=null,f=a.apply(d,e)};return function(){var j=new Date;h||c.leading!==!1||(h=j);var k=b-(j-h);return d=this,e=arguments,0>=k?(clearTimeout(g),g=null,h=j,f=a.apply(d,e)):g||c.trailing===!1||(g=setTimeout(i,k)),f}},x.debounce=function(a,b,c){var d,e,f,g,h;return function(){f=this,e=arguments,g=new Date;var i=function(){var j=new Date-g;b>j?d=setTimeout(i,b-j):(d=null,c||(h=a.apply(f,e)))},j=c&&!d;return d||(d=setTimeout(i,b)),j&&(h=a.apply(f,e)),h}},x.once=function(a){var b,c=!1;return function(){return c?b:(c=!0,b=a.apply(this,arguments),a=null,b)}},x.wrap=function(a,b){return function(){var c=[a];return g.apply(c,arguments),b.apply(this,c)}},x.compose=function(){var a=arguments;return function(){for(var b=arguments,c=a.length-1;c>=0;c--)b=[a[c].apply(this,b)];return b[0]}},x.after=function(a,b){return function(){return--a<1?b.apply(this,arguments):void 0}},x.keys=v||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var b=[];for(var c in a)x.has(a,c)&&b.push(c);return b},x.values=function(a){for(var b=x.keys(a),c=b.length,d=new Array(c),e=0;c>e;e++)d[e]=a[b[e]];return d},x.pairs=function(a){for(var b=x.keys(a),c=b.length,d=new Array(c),e=0;c>e;e++)d[e]=[b[e],a[b[e]]];return d},x.invert=function(a){for(var b={},c=x.keys(a),d=0,e=c.length;e>d;d++)b[a[c[d]]]=c[d];return b},x.functions=x.methods=function(a){var b=[];for(var c in a)x.isFunction(a[c])&&b.push(c);return b.sort()},x.extend=function(a){return y(h.call(arguments,1),function(b){if(b)for(var c in b)a[c]=b[c]}),a},x.pick=function(a){var b={},c=i.apply(d,h.call(arguments,1));return y(c,function(c){c in a&&(b[c]=a[c])}),b},x.omit=function(a){var b={},c=i.apply(d,h.call(arguments,1));for(var e in a)x.contains(c,e)||(b[e]=a[e]);return b},x.defaults=function(a){return y(h.call(arguments,1),function(b){if(b)for(var c in b)void 0===a[c]&&(a[c]=b[c])}),a},x.clone=function(a){return x.isObject(a)?x.isArray(a)?a.slice():x.extend({},a):a},x.tap=function(a,b){return b(a),a};var F=function(a,b,c,d){if(a===b)return 0!==a||1/a==1/b;if(null==a||null==b)return a===b;a instanceof x&&(a=a._wrapped),b instanceof x&&(b=b._wrapped);var e=j.call(a);if(e!=j.call(b))return!1;switch(e){case"[object String]":return a==String(b);case"[object Number]":return a!=+a?b!=+b:0==a?1/a==1/b:a==+b;case"[object Date]":case"[object Boolean]":return+a==+b;case"[object RegExp]":return a.source==b.source&&a.global==b.global&&a.multiline==b.multiline&&a.ignoreCase==b.ignoreCase}if("object"!=typeof a||"object"!=typeof b)return!1;for(var f=c.length;f--;)if(c[f]==a)return d[f]==b;var g=a.constructor,h=b.constructor;if(g!==h&&!(x.isFunction(g)&&g instanceof g&&x.isFunction(h)&&h instanceof h))return!1;c.push(a),d.push(b);var i=0,k=!0;if("[object Array]"==e){if(i=a.length,k=i==b.length)for(;i--&&(k=F(a[i],b[i],c,d)););}else{for(var l in a)if(x.has(a,l)&&(i++,!(k=x.has(b,l)&&F(a[l],b[l],c,d))))break;if(k){for(l in b)if(x.has(b,l)&&!i--)break;k=!i}}return c.pop(),d.pop(),k};x.isEqual=function(a,b){return F(a,b,[],[])},x.isEmpty=function(a){if(null==a)return!0;if(x.isArray(a)||x.isString(a))return 0===a.length;for(var b in a)if(x.has(a,b))return!1;return!0},x.isElement=function(a){return!(!a||1!==a.nodeType)},x.isArray=u||function(a){return"[object Array]"==j.call(a)},x.isObject=function(a){return a===Object(a)},y(["Arguments","Function","String","Number","Date","RegExp"],function(a){x["is"+a]=function(b){return j.call(b)=="[object "+a+"]"}}),x.isArguments(arguments)||(x.isArguments=function(a){return!(!a||!x.has(a,"callee"))}),"function"!=typeof/./&&(x.isFunction=function(a){return"function"==typeof a}),x.isFinite=function(a){return isFinite(a)&&!isNaN(parseFloat(a))},x.isNaN=function(a){return x.isNumber(a)&&a!=+a},x.isBoolean=function(a){return a===!0||a===!1||"[object Boolean]"==j.call(a)},x.isNull=function(a){return null===a},x.isUndefined=function(a){return void 0===a},x.has=function(a,b){return k.call(a,b)},x.noConflict=function(){return a._=b,this},x.identity=function(a){return a},x.times=function(a,b,c){for(var d=Array(Math.max(0,a)),e=0;a>e;e++)d[e]=b.call(c,e);return d},x.random=function(a,b){return null==b&&(b=a,a=0),a+Math.floor(Math.random()*(b-a+1))};var G={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"}};G.unescape=x.invert(G.escape);var H={escape:new RegExp("["+x.keys(G.escape).join("")+"]","g"),unescape:new RegExp("("+x.keys(G.unescape).join("|")+")","g")};x.each(["escape","unescape"],function(a){x[a]=function(b){return null==b?"":(""+b).replace(H[a],function(b){return G[a][b]})}}),x.result=function(a,b){if(null==a)return void 0;var c=a[b];return x.isFunction(c)?c.call(a):c},x.mixin=function(a){y(x.functions(a),function(b){var c=x[b]=a[b];x.prototype[b]=function(){var a=[this._wrapped];return g.apply(a,arguments),M.call(this,c.apply(x,a))}})};var I=0;x.uniqueId=function(a){var b=++I+"";return a?a+b:b},x.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var J=/(.)^/,K={"'":"'","\\":"\\","\r":"r","\n":"n","	":"t","\u2028":"u2028","\u2029":"u2029"},L=/\\|'|\r|\n|\t|\u2028|\u2029/g;x.template=function(a,b,c){var d;c=x.defaults({},c,x.templateSettings);var e=new RegExp([(c.escape||J).source,(c.interpolate||J).source,(c.evaluate||J).source].join("|")+"|$","g"),f=0,g="__p+='";a.replace(e,function(b,c,d,e,h){return g+=a.slice(f,h).replace(L,function(a){return"\\"+K[a]}),c&&(g+="'+\n((__t=("+c+"))==null?'':_.escape(__t))+\n'"),d&&(g+="'+\n((__t=("+d+"))==null?'':__t)+\n'"),e&&(g+="';\n"+e+"\n__p+='"),f=h+b.length,b}),g+="';\n",c.variable||(g="with(obj||{}){\n"+g+"}\n"),g="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+g+"return __p;\n";try{d=new Function(c.variable||"obj","_",g)}catch(h){throw h.source=g,h}if(b)return d(b,x);var i=function(a){return d.call(this,a,x)};return i.source="function("+(c.variable||"obj")+"){\n"+g+"}",i},x.chain=function(a){return x(a).chain()};var M=function(a){return this._chain?x(a).chain():a};x.mixin(x),y(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var b=d[a];x.prototype[a]=function(){var c=this._wrapped;return b.apply(c,arguments),"shift"!=a&&"splice"!=a||0!==c.length||delete c[0],M.call(this,c)}}),y(["concat","join","slice"],function(a){var b=d[a];x.prototype[a]=function(){return M.call(this,b.apply(this._wrapped,arguments))}}),x.extend(x.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this),function(a,b){"use strict";function c(){function a(a,c){return b.extend(new(b.extend(function(){},{prototype:a})),c)}function c(a,b){var c=b.caseInsensitiveMatch,d={originalPath:a,regexp:a},e=d.keys=[];return a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(a,b,c,d){var f="?"===d?d:null,g="*"===d?d:null;return e.push({name:c,optional:!!f}),b=b||"",""+(f?"":b)+"(?:"+(f?b:"")+(g&&"(.+?)"||"([^/]+)")+(f||"")+")"+(f||"")}).replace(/([\/$\*])/g,"\\$1"),d.regexp=new RegExp("^"+a+"$",c?"i":""),d}var d={};this.when=function(a,e){if(d[a]=b.extend({reloadOnSearch:!0},e,a&&c(a,e)),a){var f="/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";d[f]=b.extend({redirectTo:a},c(f,e))}return this},this.otherwise=function(a){return this.when(null,a),this},this.$get=["$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce",function(c,e,f,g,h,i,j,k){function l(a,b){var c=b.keys,d={};if(!b.regexp)return null;var e=b.regexp.exec(a);if(!e)return null;for(var f=1,g=e.length;g>f;++f){var h=c[f-1],i="string"==typeof e[f]?decodeURIComponent(e[f]):e[f];h&&i&&(d[h.name]=i)}return d}function m(){var a=n(),d=q.current;a&&d&&a.$$route===d.$$route&&b.equals(a.pathParams,d.pathParams)&&!a.reloadOnSearch&&!p?(d.params=a.params,b.copy(d.params,f),c.$broadcast("$routeUpdate",d)):(a||d)&&(p=!1,c.$broadcast("$routeChangeStart",a,d),q.current=a,a&&a.redirectTo&&(b.isString(a.redirectTo)?e.path(o(a.redirectTo,a.params)).search(a.params).replace():e.url(a.redirectTo(a.pathParams,e.path(),e.search())).replace()),g.when(a).then(function(){if(a){var c,d,e=b.extend({},a.resolve);return b.forEach(e,function(a,c){e[c]=b.isString(a)?h.get(a):h.invoke(a)}),b.isDefined(c=a.template)?b.isFunction(c)&&(c=c(a.params)):b.isDefined(d=a.templateUrl)&&(b.isFunction(d)&&(d=d(a.params)),d=k.getTrustedResourceUrl(d),b.isDefined(d)&&(a.loadedTemplateUrl=d,c=i.get(d,{cache:j}).then(function(a){return a.data}))),b.isDefined(c)&&(e.$template=c),g.all(e)}}).then(function(e){a==q.current&&(a&&(a.locals=e,b.copy(a.params,f)),c.$broadcast("$routeChangeSuccess",a,d))},function(b){a==q.current&&c.$broadcast("$routeChangeError",a,d,b)}))}function n(){var c,f;return b.forEach(d,function(d){!f&&(c=l(e.path(),d))&&(f=a(d,{params:b.extend({},e.search(),c),pathParams:c}),f.$$route=d)}),f||d[null]&&a(d[null],{params:{},pathParams:{}})}function o(a,c){var d=[];return b.forEach((a||"").split(":"),function(a,b){if(0===b)d.push(a);else{var e=a.match(/(\w+)(.*)/),f=e[1];d.push(c[f]),d.push(e[2]||""),delete c[f]}}),d.join("")}var p=!1,q={routes:d,reload:function(){p=!0,c.$evalAsync(m)}};return c.$on("$locationChangeSuccess",m),q}]}function d(){this.$get=function(){return{}}}function e(a,c,d){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(e,f,g,h,i){function j(){n&&(n.remove(),n=null),l&&(l.$destroy(),l=null),m&&(d.leave(m,function(){n=null}),n=m,m=null)}function k(){var g=a.current&&a.current.locals,h=g&&g.$template;if(b.isDefined(h)){var k=e.$new(),n=a.current,q=i(k,function(a){d.enter(a,null,m||f,function(){!b.isDefined(o)||o&&!e.$eval(o)||c()}),j()});m=q,l=n.scope=k,l.$emit("$viewContentLoaded"),l.$eval(p)}else j()}var l,m,n,o=g.autoscroll,p=g.onload||"";e.$on("$routeChangeSuccess",k),k()}}}function f(a,b,c){return{restrict:"ECA",priority:-400,link:function(d,e){var f=c.current,g=f.locals;e.html(g.$template);var h=a(e.contents());if(f.controller){g.$scope=d;var i=b(f.controller,g);f.controllerAs&&(d[f.controllerAs]=i),e.data("$ngControllerController",i),e.children().data("$ngControllerController",i)}h(d)}}}var g=b.module("ngRoute",["ng"]).provider("$route",c);g.provider("$routeParams",d),g.directive("ngView",e),g.directive("ngView",f),e.$inject=["$route","$anchorScroll","$animate"],f.$inject=["$compile","$controller","$route"]}(window,window.angular),function(a,b,c){"use strict";function d(a){return null!=a&&""!==a&&"hasOwnProperty"!==a&&h.test("."+a)}function e(a,b){if(!d(b))throw g("badmember",'Dotted member path "@{0}" is invalid.',b);for(var e=b.split("."),f=0,h=e.length;h>f&&a!==c;f++){var i=e[f];a=null!==a?a[i]:c}return a}function f(a,c){c=c||{},b.forEach(c,function(a,b){delete c[b]});for(var d in a)!a.hasOwnProperty(d)||"$"===d.charAt(0)&&"$"===d.charAt(1)||(c[d]=a[d]);return c}var g=b.$$minErr("$resource"),h=/^(\.[a-zA-Z_$][0-9a-zA-Z_$]*)+$/;b.module("ngResource",["ng"]).factory("$resource",["$http","$q",function(a,d){function h(a){return i(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function i(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,b?"%20":"+")}function j(a,b){this.template=a,this.defaults=b||{},this.urlParams={}}function k(h,i,r){function s(a,b){var c={};return b=o({},i,b),n(b,function(b,d){q(b)&&(b=b()),c[d]=b&&b.charAt&&"@"==b.charAt(0)?e(a,b.substr(1)):b}),c}function t(a){return a.resource}function u(a){f(a||{},this)}var v=new j(h);return r=o({},l,r),n(r,function(e,h){var i=/^(POST|PUT|PATCH)$/i.test(e.method);u[h]=function(h,j,k,l){var r,w,x,y={};switch(arguments.length){case 4:x=l,w=k;case 3:case 2:if(!q(j)){y=h,r=j,w=k;break}if(q(h)){w=h,x=j;break}w=j,x=k;case 1:q(h)?w=h:i?r=h:y=h;break;case 0:break;default:throw g("badargs","Expected up to 4 arguments [params, data, success, error], got {0} arguments",arguments.length)}var z=this instanceof u,A=z?r:e.isArray?[]:new u(r),B={},C=e.interceptor&&e.interceptor.response||t,D=e.interceptor&&e.interceptor.responseError||c;n(e,function(a,b){"params"!=b&&"isArray"!=b&&"interceptor"!=b&&(B[b]=p(a))}),i&&(B.data=r),v.setUrlParams(B,o({},s(r,e.params||{}),y),e.url);var E=a(B).then(function(a){var c=a.data,d=A.$promise;if(c){if(b.isArray(c)!==!!e.isArray)throw g("badcfg","Error in resource configuration. Expected response to contain an {0} but got an {1}",e.isArray?"array":"object",b.isArray(c)?"array":"object");e.isArray?(A.length=0,n(c,function(a){A.push(new u(a))})):(f(c,A),A.$promise=d)}return A.$resolved=!0,a.resource=A,a},function(a){return A.$resolved=!0,(x||m)(a),d.reject(a)});return E=E.then(function(a){var b=C(a);return(w||m)(b,a.headers),b},D),z?E:(A.$promise=E,A.$resolved=!1,A)},u.prototype["$"+h]=function(a,b,c){q(a)&&(c=b,b=a,a={});var d=u[h].call(this,a,this,b,c);return d.$promise||d}}),u.bind=function(a){return k(h,o({},i,a),r)},u}var l={get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}},m=b.noop,n=b.forEach,o=b.extend,p=b.copy,q=b.isFunction;return j.prototype={setUrlParams:function(a,c,d){var e,f,i=this,j=d||i.template,k=i.urlParams={};n(j.split(/\W/),function(a){if("hasOwnProperty"===a)throw g("badname","hasOwnProperty is not a valid parameter name.");!new RegExp("^\\d+$").test(a)&&a&&new RegExp("(^|[^\\\\]):"+a+"(\\W|$)").test(j)&&(k[a]=!0)}),j=j.replace(/\\:/g,":"),c=c||{},n(i.urlParams,function(a,d){e=c.hasOwnProperty(d)?c[d]:i.defaults[d],b.isDefined(e)&&null!==e?(f=h(e),j=j.replace(new RegExp(":"+d+"(\\W|$)","g"),function(a,b){return f+b})):j=j.replace(new RegExp("(/?):"+d+"(\\W|$)","g"),function(a,b,c){return"/"==c.charAt(0)?c:b+c})}),j=j.replace(/\/+$/,"")||"/",j=j.replace(/\/\.(?=\w+($|\?))/,"."),a.url=j.replace(/\/\\\./,"/."),n(c,function(b,c){i.urlParams[c]||(a.params=a.params||{},a.params[c]=b)})}},k}])}(window,window.angular),function(a,b,c){"use strict";b.module("ngCookies",["ng"]).factory("$cookies",["$rootScope","$browser",function(a,d){function e(){var a,e,f,i;for(a in h)k(g[a])&&d.cookies(a,c);for(a in g)e=g[a],b.isString(e)||(e=""+e,g[a]=e),e!==h[a]&&(d.cookies(a,e),i=!0);if(i){i=!1,f=d.cookies();for(a in g)g[a]!==f[a]&&(k(f[a])?delete g[a]:g[a]=f[a],i=!0)}}var f,g={},h={},i=!1,j=b.copy,k=b.isUndefined;return d.addPollFn(function(){var b=d.cookies();f!=b&&(f=b,j(b,h),j(b,g),i&&a.$apply())})(),i=!0,a.$watch(e),g}]).factory("$cookieStore",["$cookies",function(a){return{get:function(c){var d=a[c];return d?b.fromJson(d):d},put:function(c,d){a[c]=b.toJson(d)},remove:function(b){delete a[b]}}}])}(window,window.angular),function(a,b){"use strict";function c(){this.$get=["$$sanitizeUri",function(a){return function(b){var c=[];return f(b,i(c,function(b,c){return!/^unsafe/.test(a(b,c))})),c.join("")}}]}function d(a){var c=[],d=i(c,b.noop);return d.chars(a),c.join("")}function e(a){var b,c={},d=a.split(",");for(b=0;b<d.length;b++)c[d[b]]=!0;return c}function f(a,c){function d(a,d,f,h){if(d=b.lowercase(d),y[d])for(;s.last()&&z[s.last()];)e("",s.last());x[d]&&s.last()==d&&e("",d),h=u[d]||!!h,h||s.push(d);var i={};f.replace(m,function(a,b,c,d,e){var f=c||d||e||"";i[b]=g(f)}),c.start&&c.start(d,i,h)}function e(a,d){var e,f=0;if(d=b.lowercase(d))for(f=s.length-1;f>=0&&s[f]!=d;f--);if(f>=0){for(e=s.length-1;e>=f;e--)c.end&&c.end(s[e]);s.length=f}}var f,h,i,s=[],t=a;for(s.last=function(){return s[s.length-1]};a;){if(h=!0,s.last()&&A[s.last()])a=a.replace(new RegExp("(.*)<\\s*\\/\\s*"+s.last()+"[^>]*>","i"),function(a,b){return b=b.replace(p,"$1").replace(r,"$1"),c.chars&&c.chars(g(b)),""}),e("",s.last());else if(0===a.indexOf("<!--")?(f=a.indexOf("--",4),f>=0&&a.lastIndexOf("-->",f)===f&&(c.comment&&c.comment(a.substring(4,f)),a=a.substring(f+3),h=!1)):q.test(a)?(i=a.match(q),i&&(a=a.replace(i[0],""),h=!1)):o.test(a)?(i=a.match(l),i&&(a=a.substring(i[0].length),i[0].replace(l,e),h=!1)):n.test(a)&&(i=a.match(k),i&&(a=a.substring(i[0].length),i[0].replace(k,d),h=!1)),h){f=a.indexOf("<");var v=0>f?a:a.substring(0,f);a=0>f?"":a.substring(f),c.chars&&c.chars(g(v))}if(a==t)throw j("badparse","The sanitizer was unable to parse the following block of html: {0}",a);t=a}e()}function g(a){if(!a)return"";var b=F.exec(a),c=b[1],d=b[3],e=b[2];return e&&(E.innerHTML=e.replace(/</g,"&lt;"),e="textContent"in E?E.textContent:E.innerText),c+e+d}function h(a){return a.replace(/&/g,"&amp;").replace(s,function(a){var b=a.charCodeAt(0),c=a.charCodeAt(1);return"&#"+(1024*(b-55296)+(c-56320)+65536)+";"}).replace(t,function(a){return"&#"+a.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function i(a,c){var d=!1,e=b.bind(a,a.push);return{start:function(a,f,g){a=b.lowercase(a),!d&&A[a]&&(d=a),d||B[a]!==!0||(e("<"),e(a),b.forEach(f,function(d,f){var g=b.lowercase(f),i="img"===a&&"src"===g||"background"===g;D[g]!==!0||C[g]===!0&&!c(d,i)||(e(" "),e(f),e('="'),e(h(d)),e('"'))}),e(g?"/>":">"))},end:function(a){a=b.lowercase(a),d||B[a]!==!0||(e("</"),e(a),e(">")),a==d&&(d=!1)},chars:function(a){d||e(h(a))}}}var j=b.$$minErr("$sanitize"),k=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,l=/^<\s*\/\s*([\w:-]+)[^>]*>/,m=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,n=/^</,o=/^<\s*\//,p=/<!--(.*?)-->/g,q=/<!DOCTYPE([^>]*?)>/i,r=/<!\[CDATA\[(.*?)]]>/g,s=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,t=/([^\#-~| |!])/g,u=e("area,br,col,hr,img,wbr"),v=e("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),w=e("rp,rt"),x=b.extend({},w,v),y=b.extend({},v,e("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),z=b.extend({},w,e("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),A=e("script,style"),B=b.extend({},u,y,z,x),C=e("background,cite,href,longdesc,src,usemap"),D=b.extend({},C,e("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,target,title,type,valign,value,vspace,width")),E=document.createElement("pre"),F=/^(\s*)([\s\S]*?)(\s*)$/;b.module("ngSanitize",[]).provider("$sanitize",c),b.module("ngSanitize").filter("linky",["$sanitize",function(a){var c=/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>]/,e=/^mailto:/;return function(f,g){function h(a){a&&n.push(d(a))}function i(a,c){n.push("<a "),b.isDefined(g)&&(n.push('target="'),n.push(g),n.push('" ')),n.push('href="'),n.push(a),n.push('">'),h(c),n.push("</a>")}if(!f)return f;for(var j,k,l,m=f,n=[];j=m.match(c);)k=j[0],j[2]==j[3]&&(k="mailto:"+k),l=j.index,h(m.substr(0,l)),i(k,j[0].replace(e,"")),m=m.substring(l+j[0].length);return h(m),a(n.join(""))}}])}(window,window.angular),function(){var a=angular.module("restangular",[]);a.provider("Restangular",function(){var a={};a.init=function(a,b){function c(a,b,c,d){var e={};return _.each(_.keys(d),function(f){var g=d[f];g.params=_.extend({},g.params,a.defaultRequestParams[g.method.toLowerCase()]),_.isEmpty(g.params)&&delete g.params,e[f]=a.isSafe(g.method)?function(){return b(_.extend(g,{url:c}))}:function(a){return b(_.extend(g,{url:c,data:a}))
+}}),e}a.configuration=b;var d=["get","head","options","trace","getlist"];b.isSafe=function(a){return _.contains(d,a.toLowerCase())};var e=/^https?:\/\//i;b.isAbsoluteUrl=function(a){return a&&e.test(a)},b.baseUrl=_.isUndefined(b.baseUrl)?"":b.baseUrl,a.setBaseUrl=function(a){return b.baseUrl=/\/$/.test(a)?a.substring(0,a.length-1):a,this},b.extraFields=b.extraFields||[],a.setExtraFields=function(a){return b.extraFields=a,this},b.defaultHttpFields=b.defaultHttpFields||{},a.setDefaultHttpFields=function(a){return b.defaultHttpFields=a,this},b.withHttpValues=function(a,c){return _.defaults(c,a,b.defaultHttpFields)},b.encodeIds=_.isUndefined(b.encodeIds)?!0:b.encodeIds,a.setEncodeIds=function(a){b.encodeIds=a},b.defaultRequestParams=b.defaultRequestParams||{get:{},post:{},put:{},remove:{},common:{}},a.setDefaultRequestParams=function(a,c){var d=[],e=c||a;return _.isUndefined(c)?d.push("common"):_.isArray(a)?d=a:d.push(a),_.each(d,function(a){b.defaultRequestParams[a]=e}),this},a.requestParams=b.defaultRequestParams,b.defaultHeaders=b.defaultHeaders||{},a.setDefaultHeaders=function(c){return b.defaultHeaders=c,a.defaultHeaders=b.defaultHeaders,this},a.defaultHeaders=b.defaultHeaders,b.methodOverriders=b.methodOverriders||[],a.setMethodOverriders=function(a){var c=_.extend([],a);return b.isOverridenMethod("delete",c)&&c.push("remove"),b.methodOverriders=c,this},b.isOverridenMethod=function(a,c){var d=c||b.methodOverriders;return!_.isUndefined(_.find(d,function(b){return b.toLowerCase()===a.toLowerCase()}))},b.urlCreator=b.urlCreator||"path",a.setUrlCreator=function(a){if(!_.has(b.urlCreatorFactory,a))throw new Error("URL Path selected isn't valid");return b.urlCreator=a,this},b.restangularFields=b.restangularFields||{id:"id",route:"route",parentResource:"parentResource",restangularCollection:"restangularCollection",cannonicalId:"__cannonicalId",etag:"restangularEtag",selfLink:"href",get:"get",getList:"getList",put:"put",post:"post",remove:"remove",head:"head",trace:"trace",options:"options",patch:"patch",getRestangularUrl:"getRestangularUrl",getRequestedUrl:"getRequestedUrl",putElement:"putElement",addRestangularMethod:"addRestangularMethod",getParentList:"getParentList",clone:"clone",ids:"ids",httpConfig:"_$httpConfig",reqParams:"reqParams"},a.setRestangularFields=function(a){return b.restangularFields=_.extend(b.restangularFields,a),this},b.setFieldToElem=function(a,b,c){var d=a.split("."),e=b;return _.each(_.initial(d),function(a){e[a]={},e=e[a]}),e[_.last(d)]=c,this},b.getFieldFromElem=function(a,b){var c=a.split("."),d=angular.copy(b);return _.each(c,function(a){d&&(d=d[a])}),d},b.setIdToElem=function(a,c){return b.setFieldToElem(b.restangularFields.id,a,c),this},b.getIdFromElem=function(a){return b.getFieldFromElem(b.restangularFields.id,a)},b.isValidId=function(a){return""!==a&&!_.isUndefined(a)&&!_.isNull(a)},b.setUrlToElem=function(a,c){return b.setFieldToElem(b.restangularFields.selfLink,a,c),this},b.getUrlFromElem=function(a){return b.getFieldFromElem(b.restangularFields.selfLink,a)},b.useCannonicalId=_.isUndefined(b.useCannonicalId)?!1:b.useCannonicalId,a.setUseCannonicalId=function(a){return b.useCannonicalId=a,this},b.getCannonicalIdFromElem=function(a){var c=a[b.restangularFields.cannonicalId],d=b.isValidId(c)?c:b.getIdFromElem(a);return d},b.responseExtractor=b.responseExtractor||function(a){return a},a.setResponseExtractor=function(a){return b.responseExtractor=a,this},a.setResponseInterceptor=a.setResponseExtractor,b.fullRequestInterceptor=b.fullRequestInterceptor||function(a,b,c,d,e,f,g){return{element:a,headers:e,params:f,httpConfig:g}},a.setRequestInterceptor=function(a){return b.fullRequestInterceptor=function(b,c,d,e,f,g,h){return{headers:f,params:g,element:a(b,c,d,e),httpConfig:h}},this},a.setFullRequestInterceptor=function(a){return b.fullRequestInterceptor=a,this},b.errorInterceptor=b.errorInterceptor||function(){},a.setErrorInterceptor=function(a){return b.errorInterceptor=a,this},b.onBeforeElemRestangularized=b.onBeforeElemRestangularized||function(a){return a},a.setOnBeforeElemRestangularized=function(a){return b.onBeforeElemRestangularized=a,this},b.onElemRestangularized=b.onElemRestangularized||function(a){return a},a.setOnElemRestangularized=function(a){return b.onElemRestangularized=a,this},a.setListTypeIsArray=function(){},b.shouldSaveParent=b.shouldSaveParent||function(){return!0},a.setParentless=function(a){return _.isArray(a)?b.shouldSaveParent=function(b){return!_.contains(a,b)}:_.isBoolean(a)&&(b.shouldSaveParent=function(){return!a}),this},b.suffix=_.isUndefined(b.suffix)?null:b.suffix,a.setRequestSuffix=function(a){return b.suffix=a,this},b.transformers=b.transformers||{},a.addElementTransformer=function(a,c,d){var e=null,f=null;2===arguments.length?f=c:(f=d,e=c);var g=b.transformers[a];g||(g=b.transformers[a]=[]),g.push(function(a,b){return _.isNull(e)||a==e?f(b):b})},a.extendCollection=function(b,c){return a.addElementTransformer(b,!0,c)},a.extendModel=function(b,c){return a.addElementTransformer(b,!1,c)},b.transformElem=function(a,c,d,e){var f=b.transformers[d],g=a;return f&&_.each(f,function(a){g=a(c,g)}),b.onElemRestangularized(g,c,d,e)},b.fullResponse=_.isUndefined(b.fullResponse)?!1:b.fullResponse,a.setFullResponse=function(a){return b.fullResponse=a,this},b.urlCreatorFactory={};var f=function(){};f.prototype.setConfig=function(a){return this.config=a,this},f.prototype.parentsArray=function(a){for(var b=[];a;)b.push(a),a=a[this.config.restangularFields.parentResource];return b.reverse()},f.prototype.resource=function(a,d,e,f,g,h,i,j){var k=_.defaults(g||{},this.config.defaultRequestParams.common),l=_.defaults(f||{},this.config.defaultHeaders);i&&(b.isSafe(j)?l["If-None-Match"]=i:l["If-Match"]=i);var m=this.base(a);if(h){var n="";/\/$/.test(m)||(n+="/"),n+=h,m+=n}return this.config.suffix&&-1===m.indexOf(this.config.suffix,m.length-this.config.suffix.length)&&(m+=this.config.suffix),a[this.config.restangularFields.httpConfig]=void 0,c(this.config,d,m,{getList:this.config.withHttpValues(e,{method:"GET",params:k,headers:l}),get:this.config.withHttpValues(e,{method:"GET",params:k,headers:l}),put:this.config.withHttpValues(e,{method:"PUT",params:k,headers:l}),post:this.config.withHttpValues(e,{method:"POST",params:k,headers:l}),remove:this.config.withHttpValues(e,{method:"DELETE",params:k,headers:l}),head:this.config.withHttpValues(e,{method:"HEAD",params:k,headers:l}),trace:this.config.withHttpValues(e,{method:"TRACE",params:k,headers:l}),options:this.config.withHttpValues(e,{method:"OPTIONS",params:k,headers:l}),patch:this.config.withHttpValues(e,{method:"PATCH",params:k,headers:l})})};var g=function(){};g.prototype=new f,g.prototype.base=function(a){var c=this;return _.reduce(this.parentsArray(a),function(a,d){var e,f=c.config.getUrlFromElem(d);if(f){if(c.config.isAbsoluteUrl(f))return f;e=f}else if(e=d[c.config.restangularFields.route],d[c.config.restangularFields.restangularCollection]){var g=d[c.config.restangularFields.ids];g&&(e+="/"+g.join(","))}else{var h;h=c.config.useCannonicalId?c.config.getCannonicalIdFromElem(d):c.config.getIdFromElem(d),b.isValidId(h)&&(e+="/"+(c.config.encodeIds?encodeURIComponent(h):h))}return a+"/"+e},this.config.baseUrl)},g.prototype.fetchUrl=function(a,b){var c=this.base(a);return b&&(c+="/"+b),c},g.prototype.fetchRequestedUrl=function(a,c){function d(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b.sort()}function e(a,b,c){for(var e=d(a),f=0;f<e.length;f++)b.call(c,a[e[f]],e[f]);return e}function f(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,b?"%20":"+")}var g=this.fetchUrl(a,c),h=a[b.restangularFields.reqParams];if(!h)return g;var i=[];return e(h,function(a,b){null!=a&&void 0!=a&&(angular.isArray(a)||(a=[a]),angular.forEach(a,function(a){angular.isObject(a)&&(a=angular.toJson(a)),i.push(f(b)+"="+f(a))}))}),g+(-1===g.indexOf("?")?"?":"&")+i.join("&")},b.urlCreatorFactory.path=g};var b={};a.init(this,b),this.$get=["$http","$q",function(c,d){function e(f){function g(a,b,c,d){if(b[f.restangularFields.route]=c,b[f.restangularFields.getRestangularUrl]=_.bind(N.fetchUrl,N,b),b[f.restangularFields.getRequestedUrl]=_.bind(N.fetchRequestedUrl,N,b),b[f.restangularFields.addRestangularMethod]=_.bind(K,b),b[f.restangularFields.clone]=_.bind(s,b,b),b[f.restangularFields.reqParams]=_.isEmpty(d)?null:d,b.withHttpConfig=_.bind(z,b),b.one=_.bind(h,b,b),b.all=_.bind(i,b,b),b.several=_.bind(j,b,b),b.oneUrl=_.bind(k,b,b),b.allUrl=_.bind(l,b,b),a&&f.shouldSaveParent(c)){var e=f.getIdFromElem(a),g=f.getUrlFromElem(a),m=_.union(_.values(_.pick(f.restangularFields,["route","parentResource"])),f.extraFields),n=_.pick(a,m);f.isValidId(e)&&f.setIdToElem(n,e),f.isValidId(g)&&f.setUrlToElem(n,g),b[f.restangularFields.parentResource]=n}else b[f.restangularFields.parentResource]=null;return b}function h(a,b,c){var d={};return f.setIdToElem(d,c),t(a,d,b)}function i(a,b){return u(a,[],b,!0)}function j(a,b){var c=[];return c[f.restangularFields.ids]=Array.prototype.splice.call(arguments,2),u(a,c,b,!0)}function k(a,b,c){var d={};return f.setUrlToElem(d,c),t(a,d,b)}function l(a,b,c){var d={};return f.setUrlToElem(d,c),u(a,d,b,!0)}function m(a,b){return a.call=_.bind(n,a),a.get=_.bind(o,a),a[f.restangularFields.restangularCollection]=b,b&&(a.push=_.bind(n,a,"push")),a}function n(a){var b=d.defer(),c=arguments;return this.then(function(d){var e=Array.prototype.slice.call(c,1),f=d[a];f.apply(d,e),b.resolve(d)}),m(b.promise,this[f.restangularFields.restangularCollection])}function o(a){var b=d.defer();return this.then(function(c){b.resolve(c[a])}),m(b.promise,this[f.restangularFields.restangularCollection])}function p(a,b,c){return f.fullResponse?a.resolve(_.extend(b,{data:c})):void a.resolve(c)}function q(a){return _.isArray(a)?_.without(a,_.values(_.omit(f.restangularFields,"id"))):_.omit(a,_.values(_.omit(f.restangularFields,"id")))}function r(a){a.customOperation=_.bind(J,a),_.each(["put","post","get","delete"],function(b){_.each(["do","custom"],function(c){var d,e="delete"===b?"remove":b,f=c+b.toUpperCase();d="put"!==e&&"post"!==e?J:function(a,b,c,d,e){return _.bind(J,this)(a,c,d,e,b)},a[f]=_.bind(d,a,e)})}),a.customGETLIST=_.bind(y,a),a.doGETLIST=a.customGETLIST}function s(a){var b=angular.copy(a);return t(b[f.restangularFields.parentResource],b,b[f.restangularFields.route])}function t(a,b,c,d,e){var h=f.onBeforeElemRestangularized(b,!1,c),i=g(a,h,c,e);return f.useCannonicalId&&(i[f.restangularFields.cannonicalId]=f.getIdFromElem(i)),d&&(i[f.restangularFields.getParentList]=function(){return d}),i[f.restangularFields.restangularCollection]=!1,i[f.restangularFields.get]=_.bind(B,i),i[f.restangularFields.getList]=_.bind(y,i),i[f.restangularFields.put]=_.bind(D,i),i[f.restangularFields.post]=_.bind(E,i),i[f.restangularFields.remove]=_.bind(C,i),i[f.restangularFields.head]=_.bind(F,i),i[f.restangularFields.trace]=_.bind(G,i),i[f.restangularFields.options]=_.bind(H,i),i[f.restangularFields.patch]=_.bind(I,i),r(i),f.transformElem(i,!1,c,M)}function u(a,b,c,d){var e=f.onBeforeElemRestangularized(b,!0,c),h=g(a,e,c,d);return h[f.restangularFields.restangularCollection]=!0,h[f.restangularFields.post]=_.bind(E,h,null),h[f.restangularFields.head]=_.bind(F,h),h[f.restangularFields.trace]=_.bind(G,h),h[f.restangularFields.putElement]=_.bind(w,h),h[f.restangularFields.options]=_.bind(H,h),h[f.restangularFields.patch]=_.bind(I,h),h[f.restangularFields.get]=_.bind(v,h),h[f.restangularFields.getList]=_.bind(y,h,null),r(h),f.transformElem(h,!0,c,M)}function v(a,b,c){return this.customGET(a.toString(),b,c)}function w(a,b,c){var e=this,f=this[a],g=d.defer();return f.put(b,c).then(function(b){var c=s(e);c[a]=b,g.resolve(c)},function(a){g.reject(a)}),m(g.promise,!0)}function x(a,b,c,d,e,g){var h=f.responseExtractor(a,b,c,d,e,g),i=e.headers("ETag");return h&&i&&(h[f.restangularFields.etag]=i),h}function y(a,b,e){var g=this,h=d.defer(),i="getList",j=N.fetchUrl(this,a),k=a||g[f.restangularFields.route],l=f.fullRequestInterceptor(null,i,k,j,e||{},b||{},this[f.restangularFields.httpConfig]||{});return N.resource(this,c,l.httpConfig,l.headers,l.params,a,this[f.restangularFields.etag],i).getList().then(function(b){var c=b.data,d=b.config.params,e=x(c,i,k,j,b,h),l=_.map(e,function(b){return g[f.restangularFields.restangularCollection]?t(g[f.restangularFields.parentResource],b,g[f.restangularFields.route],e):t(g,b,a,e)});l=_.extend(e,l),g[f.restangularFields.restangularCollection]?p(h,b,u(g[f.restangularFields.parentResource],l,g[f.restangularFields.route],d)):p(h,b,u(g,l,a,d))},function(a){f.errorInterceptor(a)!==!1&&h.reject(a)}),m(h.promise,!0)}function z(a){return this[f.restangularFields.httpConfig]=a,this}function A(a,b,e,g,h){var i=this,j=d.defer(),k=e||{},l=b||this[f.restangularFields.route],n=N.fetchUrl(this,b),o=g||this,r=o[f.restangularFields.etag];_.isObject(o)&&(o=q(o));var s=f.fullRequestInterceptor(o,a,l,n,h||{},k||{},this[f.restangularFields.httpConfig]||{}),u=function(c){var d=c.data,e=c.config.params,g=x(d,a,l,n,c,j);g?"post"!==a||i[f.restangularFields.restangularCollection]?p(j,c,t(i[f.restangularFields.parentResource],g,i[f.restangularFields.route],e)):p(j,c,t(i,g,b,e)):p(j,c,void 0)},v=function(a){f.errorInterceptor(a)!==!1&&j.reject(a)},w=a,y=_.extend({},s.headers),z=f.isOverridenMethod(a);return z&&(w="post",y=_.extend(y,{"X-HTTP-Method-Override":"remove"===a?"DELETE":a})),f.isSafe(a)?z?N.resource(this,c,s.httpConfig,y,s.params,b,r,w)[w]({}).then(u,v):N.resource(this,c,s.httpConfig,y,s.params,b,r,w)[w]().then(u,v):N.resource(this,c,s.httpConfig,y,s.params,b,r,w)[w](s.element).then(u,v),m(j.promise)}function B(a,b){return _.bind(A,this)("get",void 0,a,void 0,b)}function C(a,b){return _.bind(A,this)("remove",void 0,a,void 0,b)}function D(a,b){return _.bind(A,this)("put",void 0,a,void 0,b)}function E(a,b,c,d){return _.bind(A,this)("post",a,c,b,d)}function F(a,b){return _.bind(A,this)("head",void 0,a,void 0,b)}function G(a,b){return _.bind(A,this)("trace",void 0,a,void 0,b)}function H(a,b){return _.bind(A,this)("options",void 0,a,void 0,b)}function I(a,b,c){return _.bind(A,this)("patch",void 0,b,a,c)}function J(a,b,c,d,e){return _.bind(A,this)(a,b,c,e,d)}function K(a,b,c,d,e,g){var h;h="getList"===b?_.bind(y,this,c):_.bind(J,this,b,c);var i=function(a,b,c){var f=_.defaults({params:a,headers:b,elem:c},{params:d,headers:e,elem:g});return h(f.params,f.headers,f.elem)};this[a]=f.isSafe(b)?i:function(a,b,c){return i(b,c,a)}}function L(c){var d=angular.copy(b);return a.init(d,d),c(d),e(d)}var M={},N=new f.urlCreatorFactory[f.urlCreator];return N.setConfig(f),a.init(M,f),M.copy=_.bind(s,M),M.withConfig=_.bind(L,M),M.one=_.bind(h,M,null),M.all=_.bind(i,M,null),M.several=_.bind(j,M,null),M.oneUrl=_.bind(k,M,null),M.allUrl=_.bind(l,M,null),M.restangularizeElement=_.bind(t,M),M.restangularizeCollection=_.bind(u,M),M}return e(b)}]})}(),function(a,b){"use strict";var c=6,d=4,e="asc",f="desc",g="_ng_field_",h="_ng_depth_",i="_ng_hidden_",j="_ng_column_",k=/CUSTOM_FILTERS/g,l=/COL_FIELD/g,m=/DISPLAY_CELL_TEMPLATE/g,n=/EDITABLE_CELL_TEMPLATE/g,o=/CELL_EDITABLE_CONDITION/g,p=/<.+>/;a.ngGrid={},a.ngGrid.i18n={};var q=(angular.module("ngGrid.services",[]),angular.module("ngGrid.directives",[])),r=angular.module("ngGrid.filters",[]);angular.module("ngGrid",["ngGrid.services","ngGrid.directives","ngGrid.filters"]);var s=function(a,b,d,e){if(void 0===a.selectionProvider.selectedItems)return!0;var f,g=d.which||d.keyCode,h=!1,i=!1,j=void 0===a.selectionProvider.lastClickedRow?1:a.selectionProvider.lastClickedRow.rowIndex,k=a.columns.filter(function(a){return a.visible}),l=a.columns.filter(function(a){return a.pinned});if(a.col&&(f=k.indexOf(a.col)),37!==g&&38!==g&&39!==g&&40!==g&&(e.config.noTabInterference||9!==g)&&13!==g)return!0;if(a.enableCellSelection){9===g&&d.preventDefault();var m=a.showSelectionCheckbox?1===a.col.index:0===a.col.index,n=1===a.$index||0===a.$index,o=a.$index===a.renderedColumns.length-1||a.$index===a.renderedColumns.length-2,p=k.indexOf(a.col)===k.length-1,q=l.indexOf(a.col)===l.length-1;if(37===g||9===g&&d.shiftKey){var r=0;m||(f-=1),n?m&&9===g&&d.shiftKey?(r=e.$canvas.width(),f=k.length-1,i=!0):r=e.$viewport.scrollLeft()-a.col.width:l.length>0&&(r=e.$viewport.scrollLeft()-k[f].width),e.$viewport.scrollLeft(r)}else(39===g||9===g&&!d.shiftKey)&&(o?p&&9===g&&!d.shiftKey?(e.$viewport.scrollLeft(0),f=a.showSelectionCheckbox?1:0,h=!0):e.$viewport.scrollLeft(e.$viewport.scrollLeft()+a.col.width):q&&e.$viewport.scrollLeft(0),p||(f+=1))}var s;s=a.configGroups.length>0?e.rowFactory.parsedData.filter(function(a){return!a.isAggRow}):e.filteredRows;var t=0;if(0!==j&&(38===g||13===g&&d.shiftKey||9===g&&d.shiftKey&&i)?t=-1:j!==s.length-1&&(40===g||13===g&&!d.shiftKey||9===g&&h)&&(t=1),t){var u=s[j+t];u.beforeSelectionChange(u,d)&&(u.continueSelection(d),a.$emit("ngGridEventDigestGridParent"),a.selectionProvider.lastClickedRow.renderedRowIndex>=a.renderedRows.length-c-2?e.$viewport.scrollTop(e.$viewport.scrollTop()+a.rowHeight):a.selectionProvider.lastClickedRow.renderedRowIndex<=c+2&&e.$viewport.scrollTop(e.$viewport.scrollTop()-a.rowHeight))}return a.enableCellSelection&&setTimeout(function(){a.domAccessProvider.focusCellElement(a,a.renderedColumns.indexOf(k[f]))},3),!1};String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),Array.prototype.indexOf||(Array.prototype.indexOf=function(a){var b=this.length>>>0,c=Number(arguments[1])||0;for(c=0>c?Math.ceil(c):Math.floor(c),0>c&&(c+=b);b>c;c++)if(c in this&&this[c]===a)return c;return-1}),Array.prototype.filter||(Array.prototype.filter=function(a){var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=[],e=arguments[1],f=0;c>f;f++)if(f in b){var g=b[f];a.call(e,g,f,b)&&d.push(g)}return d}),r.filter("checkmark",function(){return function(a){return a?"✔":"✘"}}),r.filter("ngColumns",function(){return function(a){return a.filter(function(a){return!a.isAggCol})}}),angular.module("ngGrid.services").factory("$domUtilityService",["$utilityService","$window",function(a,c){var d={},e={},f=function(){var a=b("<div></div>");a.appendTo("body"),a.height(100).width(100).css("position","absolute").css("overflow","scroll"),a.append('<div style="height: 400px; width: 400px;"></div>'),d.ScrollH=a.height()-a[0].clientHeight,d.ScrollW=a.width()-a[0].clientWidth,a.empty(),a.attr("style",""),a.append('<span style="font-family: Verdana, Helvetica, Sans-Serif; font-size: 14px;"><strong>M</strong></span>'),d.LetterW=a.children().first().width(),a.remove()};return d.eventStorage={},d.AssignGridContainers=function(a,c,e){e.$root=b(c),e.$topPanel=e.$root.find(".ngTopPanel"),e.$groupPanel=e.$root.find(".ngGroupPanel"),e.$headerContainer=e.$topPanel.find(".ngHeaderContainer"),a.$headerContainer=e.$headerContainer,e.$headerScroller=e.$topPanel.find(".ngHeaderScroller"),e.$headers=e.$headerScroller.children(),e.$viewport=e.$root.find(".ngViewport"),e.$canvas=e.$viewport.find(".ngCanvas"),e.$footerPanel=e.$root.find(".ngFooterPanel");var f=a.$watch(function(){return e.$viewport.scrollLeft()},function(a){return e.$headerContainer.scrollLeft(a)});a.$on("$destroy",function(){b(e.$root.parent()).off("resize.nggrid"),e.$root=null,e.$topPanel=null,e.$headerContainer=null,e.$headers=null,e.$canvas=null,e.$footerPanel=null,f()}),d.UpdateGridLayout(a,e)},d.getRealWidth=function(a){var c=0,d={visibility:"hidden",display:"block"},e=a.parents().andSelf().not(":visible");return b.swap(e[0],d,function(){c=a.outerWidth()}),c},d.UpdateGridLayout=function(a,b){if(b.$root){var c=b.$viewport.scrollTop();b.elementDims.rootMaxW=b.$root.width(),b.$root.is(":hidden")&&(b.elementDims.rootMaxW=d.getRealWidth(b.$root)),b.elementDims.rootMaxH=b.$root.height(),b.refreshDomSizes(),a.adjustScrollTop(c,!0)}},d.numberOfGrids=0,d.setStyleText=function(a,b){var d=a.styleSheet,e=a.gridId,f=c.document;d||(d=f.getElementById(e)),d||(d=f.createElement("style"),d.type="text/css",d.id=e,(f.head||f.getElementsByTagName("head")[0]).appendChild(d)),d.styleSheet&&!d.sheet?d.styleSheet.cssText=b:d.innerHTML=b,a.styleSheet=d,a.styleText=b},d.BuildStyles=function(a,b,c){var e,f=b.config.rowHeight,g=b.gridId,h=a.columns,i=0,j=a.totalRowWidth();e="."+g+" .ngCanvas { width: "+j+"px; }."+g+" .ngRow { width: "+j+"px; }."+g+" .ngCanvas { width: "+j+"px; }."+g+" .ngHeaderScroller { width: "+(j+d.ScrollH)+"px}";for(var k=0;k<h.length;k++){var l=h[k];l.visible!==!1&&(e+="."+g+" .col"+k+" { width: "+l.width+"px; left: "+i+"px; height: "+f+"px }."+g+" .colt"+k+" { width: "+l.width+"px; }",i+=l.width)}d.setStyleText(b,e),a.adjustScrollLeft(b.$viewport.scrollLeft()),c&&d.digest(a)},d.setColLeft=function(a,b,c){if(c.styleText){var f=e[a.index];f||(f=e[a.index]=new RegExp(".col"+a.index+" { width: [0-9]+px; left: [0-9]+px"));var g=c.styleText.replace(f,".col"+a.index+" { width: "+a.width+"px; left: "+b+"px");d.setStyleText(c,g)}},d.setColLeft.immediate=1,d.RebuildGrid=function(a,b){d.UpdateGridLayout(a,b),(null==b.config.maintainColumnRatios||b.config.maintainColumnRatios)&&b.configureColumnWidths(),a.adjustScrollLeft(b.$viewport.scrollLeft()),d.BuildStyles(a,b,!0)},d.digest=function(a){a.$root.$$phase||a.$digest()},d.ScrollH=17,d.ScrollW=17,d.LetterW=10,f(),d}]),angular.module("ngGrid.services").factory("$sortService",["$parse",function(a){var b={};return b.colSortFnCache={},b.isCustomSort=!1,b.guessSortFn=function(a){var c=typeof a;switch(c){case"number":return b.sortNumber;case"boolean":return b.sortBool;case"string":return a.match(/^[-+]?[£$¤]?[\d,.]+%?$/)?b.sortNumberStr:b.sortAlpha;default:return"[object Date]"===Object.prototype.toString.call(a)?b.sortDate:b.basicSort}},b.basicSort=function(a,b){return a===b?0:b>a?-1:1},b.sortNumber=function(a,b){return a-b},b.sortNumberStr=function(a,b){var c,d,e=!1,f=!1;return c=parseFloat(a.replace(/[^0-9.-]/g,"")),isNaN(c)&&(e=!0),d=parseFloat(b.replace(/[^0-9.-]/g,"")),isNaN(d)&&(f=!0),e&&f?0:e?1:f?-1:c-d},b.sortAlpha=function(a,b){var c=a.toLowerCase(),d=b.toLowerCase();return c===d?0:d>c?-1:1},b.sortDate=function(a,b){var c=a.getTime(),d=b.getTime();return c===d?0:d>c?-1:1},b.sortBool=function(a,b){return a&&b?0:a||b?a?1:-1:0},b.sortData=function(c,d){if(d&&c){var f,g,h=c.fields.length,i=c.fields,j=d.slice(0);d.sort(function(d,k){for(var l,m,n=0,o=0;0===n&&h>o;){f=c.columns[o],g=c.directions[o],m=b.getSortFn(f,j);var p=a(i[o])(d),q=a(i[o])(k);b.isCustomSort?(l=m(p,q),n=g===e?l:0-l):!p&&0!==p||!q&&0!==q?q||p?p?q||(n=-1):n=1:n=0:(l=m(p,q),n=g===e?l:0-l),o++}return n})}},b.Sort=function(a,c){b.isSorting||(b.isSorting=!0,b.sortData(a,c),b.isSorting=!1)},b.getSortFn=function(c,d){var e,f;if(b.colSortFnCache[c.field])e=b.colSortFnCache[c.field];else if(void 0!==c.sortingAlgorithm)e=c.sortingAlgorithm,b.colSortFnCache[c.field]=c.sortingAlgorithm,b.isCustomSort=!0;else{if(f=d[0],!f)return e;e=b.guessSortFn(a(c.field)(f)),e?b.colSortFnCache[c.field]=e:e=b.sortAlpha}return e},b}]),angular.module("ngGrid.services").factory("$utilityService",["$parse",function(c){var d=/function (.{1,})\(/,e={visualLength:function(a){var c=document.getElementById("testDataLength");c||(c=document.createElement("SPAN"),c.id="testDataLength",c.style.visibility="hidden",document.body.appendChild(c));var d=b(a);b(c).css({font:d.css("font"),"font-size":d.css("font-size"),"font-family":d.css("font-family")}),c.innerHTML=d.text();var e=c.offsetWidth;return document.body.removeChild(c),e},forIn:function(a,b){for(var c in a)a.hasOwnProperty(c)&&b(a[c],c)},evalProperty:function(a,b){return c("entity."+b)({entity:a})},endsWith:function(a,b){return a&&b&&"string"==typeof a?-1!==a.indexOf(b,a.length-b.length):!1},isNullOrUndefined:function(a){return void 0===a||null===a?!0:!1},getElementsByClassName:function(a){if(document.getElementsByClassName)return document.getElementsByClassName(a);for(var b=[],c=new RegExp("\\b"+a+"\\b"),d=document.getElementsByTagName("*"),e=0;e<d.length;e++){var f=d[e].className;c.test(f)&&b.push(d[e])}return b},newId:function(){var a=(new Date).getTime();return function(){return a+=1}}(),seti18n:function(b,c){var d=a.ngGrid.i18n[c];for(var e in d)b.i18n[e]=d[e]},getInstanceType:function(a){var b=d.exec(a.constructor.toString());if(b&&b.length>1){var c=b[1].replace(/^\s+|\s+$/g,"");return c}return""}};return e}]);var t=function(a,b,c,d){this.rowIndex=0,this.offsetTop=this.rowIndex*c,this.entity=a,this.label=a.gLabel,this.field=a.gField,this.depth=a.gDepth,this.parent=a.parent,this.children=a.children,this.aggChildren=a.aggChildren,this.aggIndex=a.aggIndex,this.collapsed=d,this.groupInitState=d,this.rowFactory=b,this.rowHeight=c,this.isAggRow=!0,this.offsetLeft=25*a.gDepth,this.aggLabelFilter=a.aggLabelFilter};t.prototype.toggleExpand=function(){this.collapsed=this.collapsed?!1:!0,this.orig&&(this.orig.collapsed=this.collapsed),this.notifyChildren()},t.prototype.setExpand=function(a){this.collapsed=a,this.notifyChildren()},t.prototype.notifyChildren=function(){for(var a=Math.max(this.rowFactory.aggCache.length,this.children.length),b=0;a>b;b++)if(this.aggChildren[b]&&(this.aggChildren[b].entity[i]=this.collapsed,this.collapsed&&this.aggChildren[b].setExpand(this.collapsed)),this.children[b]&&(this.children[b][i]=this.collapsed),b>this.aggIndex&&this.rowFactory.aggCache[b]){var c=this.rowFactory.aggCache[b],d=30*this.children.length;c.offsetTop=this.collapsed?c.offsetTop-d:c.offsetTop+d}this.rowFactory.renderedChange()},t.prototype.aggClass=function(){return this.collapsed?"ngAggArrowCollapsed":"ngAggArrowExpanded"},t.prototype.totalChildren=function(){if(this.aggChildren.length>0){var a=0,b=function(c){c.aggChildren.length>0?angular.forEach(c.aggChildren,function(a){b(a)}):a+=c.children.length};return b(this),a}return this.children.length},t.prototype.copy=function(){var a=new t(this.entity,this.rowFactory,this.rowHeight,this.groupInitState);return a.orig=this,a};var u=function(a,c,d,g,h,i){var j=this,l=a.colDef,m=500,n=0,o=null;j.colDef=a.colDef,j.width=l.width,j.groupIndex=0,j.isGroupedBy=!1,j.minWidth=l.minWidth?l.minWidth:50,j.maxWidth=l.maxWidth?l.maxWidth:9e3,j.enableCellEdit=void 0!==l.enableCellEdit?l.enableCellEdit:a.enableCellEdit||a.enableCellEditOnFocus,j.cellEditableCondition=l.cellEditableCondition||a.cellEditableCondition||"true",j.headerRowHeight=a.headerRowHeight,j.displayName=void 0===l.displayName?l.field:l.displayName,j.index=a.index,j.isAggCol=a.isAggCol,j.cellClass=l.cellClass,j.sortPriority=void 0,j.cellFilter=l.cellFilter?l.cellFilter:"",j.field=l.field,j.aggLabelFilter=l.aggLabelFilter||l.cellFilter,j.visible=i.isNullOrUndefined(l.visible)||l.visible,j.sortable=!1,j.resizable=!1,j.pinnable=!1,j.pinned=a.enablePinning&&l.pinned,j.originalIndex=null==a.originalIndex?j.index:a.originalIndex,j.groupable=i.isNullOrUndefined(l.groupable)||l.groupable,a.enableSort&&(j.sortable=i.isNullOrUndefined(l.sortable)||l.sortable),a.enableResize&&(j.resizable=i.isNullOrUndefined(l.resizable)||l.resizable),a.enablePinning&&(j.pinnable=i.isNullOrUndefined(l.pinnable)||l.pinnable),j.sortDirection=void 0,j.sortingAlgorithm=l.sortFn,j.headerClass=l.headerClass,j.cursor=j.sortable?"pointer":"default",j.headerCellTemplate=l.headerCellTemplate||h.get("headerCellTemplate.html"),j.cellTemplate=l.cellTemplate||h.get("cellTemplate.html").replace(k,j.cellFilter?"|"+j.cellFilter:""),j.enableCellEdit&&(j.cellEditTemplate=l.cellEditTemplate||h.get("cellEditTemplate.html"),j.editableCellTemplate=l.editableCellTemplate||h.get("editableCellTemplate.html")),l.cellTemplate&&!p.test(l.cellTemplate)&&(j.cellTemplate=h.get(l.cellTemplate)||b.ajax({type:"GET",url:l.cellTemplate,async:!1}).responseText),j.enableCellEdit&&l.editableCellTemplate&&!p.test(l.editableCellTemplate)&&(j.editableCellTemplate=h.get(l.editableCellTemplate)||b.ajax({type:"GET",url:l.editableCellTemplate,async:!1}).responseText),l.headerCellTemplate&&!p.test(l.headerCellTemplate)&&(j.headerCellTemplate=h.get(l.headerCellTemplate)||b.ajax({type:"GET",url:l.headerCellTemplate,async:!1}).responseText),j.colIndex=function(){var a=j.pinned?"pinned ":"";return a+="col"+j.index+" colt"+j.index,j.cellClass&&(a+=" "+j.cellClass),a},j.groupedByClass=function(){return j.isGroupedBy?"ngGroupedByIcon":"ngGroupIcon"},j.toggleVisible=function(){j.visible=!j.visible},j.showSortButtonUp=function(){return j.sortable?j.sortDirection===f:j.sortable},j.showSortButtonDown=function(){return j.sortable?j.sortDirection===e:j.sortable},j.noSortVisible=function(){return!j.sortDirection},j.sort=function(b){if(!j.sortable)return!0;var c=j.sortDirection===e?f:e;return j.sortDirection=c,a.sortCallback(j,b),!1},j.gripClick=function(){n++,1===n?o=setTimeout(function(){n=0},m):(clearTimeout(o),a.resizeOnDataCallback(j),n=0)},j.gripOnMouseDown=function(a){return c.isColumnResizing=!0,a.ctrlKey&&!j.pinned?(j.toggleVisible(),g.BuildStyles(c,d),!0):(a.target.parentElement.style.cursor="col-resize",j.startMousePosition=a.clientX,j.origWidth=j.width,b(document).mousemove(j.onMouseMove),b(document).mouseup(j.gripOnMouseUp),!1)},j.onMouseMove=function(a){var b=a.clientX-j.startMousePosition,e=b+j.origWidth;return j.width=e<j.minWidth?j.minWidth:e>j.maxWidth?j.maxWidth:e,c.hasUserChangedGridColumnWidths=!0,g.BuildStyles(c,d),!1},j.gripOnMouseUp=function(a){return b(document).off("mousemove",j.onMouseMove),b(document).off("mouseup",j.gripOnMouseUp),a.target.parentElement.style.cursor="default",g.digest(c),c.isColumnResizing=!1,!1},j.copy=function(){var b=new u(a,c,d,g,h,i);return b.isClone=!0,b.orig=j,b},j.setVars=function(a){j.orig=a,j.width=a.width,j.groupIndex=a.groupIndex,j.isGroupedBy=a.isGroupedBy,j.displayName=a.displayName,j.index=a.index,j.isAggCol=a.isAggCol,j.cellClass=a.cellClass,j.cellFilter=a.cellFilter,j.field=a.field,j.aggLabelFilter=a.aggLabelFilter,j.visible=a.visible,j.sortable=a.sortable,j.resizable=a.resizable,j.pinnable=a.pinnable,j.pinned=a.pinned,j.originalIndex=a.originalIndex,j.sortDirection=a.sortDirection,j.sortingAlgorithm=a.sortingAlgorithm,j.headerClass=a.headerClass,j.headerCellTemplate=a.headerCellTemplate,j.cellTemplate=a.cellTemplate,j.cellEditTemplate=a.cellEditTemplate}},v=function(a){this.outerHeight=null,this.outerWidth=null,b.extend(this,a)},w=function(a){this.previousColumn=null,this.grid=a};w.prototype.changeUserSelect=function(a,b){a.css({"-webkit-touch-callout":b,"-webkit-user-select":b,"-khtml-user-select":b,"-moz-user-select":"none"===b?"-moz-none":b,"-ms-user-select":b,"user-select":b})},w.prototype.focusCellElement=function(a,b){if(a.selectionProvider.lastClickedRow){var c=void 0!==b?b:this.previousColumn,d=a.selectionProvider.lastClickedRow.clone?a.selectionProvider.lastClickedRow.clone.elm:a.selectionProvider.lastClickedRow.elm;if(void 0!==c&&d){var e=angular.element(d[0].children).filter(function(){return 8!==this.nodeType}),f=Math.max(Math.min(a.renderedColumns.length-1,c),0);this.grid.config.showSelectionCheckbox&&angular.element(e[f]).scope()&&0===angular.element(e[f]).scope().col.index&&(f=1),e[f]&&e[f].children[1].children[0].focus(),this.previousColumn=c}}},w.prototype.selectionHandlers=function(a,b){function c(c){if(16===c.keyCode)return f.changeUserSelect(b,"none",c),!0;if(!e){e=!0;var d=s(a,b,c,f.grid);return e=!1,d}return!0}function d(a){return 16===a.keyCode&&f.changeUserSelect(b,"text",a),!0}var e=!1,f=this;b.bind("keydown",c),b.bind("keyup",d),b.on("$destroy",function(){b.off("keydown",c),b.off("keyup",d)})};var x=function(c,d,e,f){var g=this;g.colToMove=void 0,g.groupToMove=void 0,g.assignEvents=function(){c.config.jqueryUIDraggable&&!c.config.enablePinning?(c.$groupPanel.droppable({addClasses:!1,drop:function(a){g.onGroupDrop(a)}}),c.$groupPanel.on("$destroy",function(){c.$groupPanel=null})):(c.$groupPanel.on("mousedown",g.onGroupMouseDown).on("dragover",g.dragOver).on("drop",g.onGroupDrop),c.$topPanel.on("mousedown",".ngHeaderScroller",g.onHeaderMouseDown).on("dragover",".ngHeaderScroller",g.dragOver),c.$groupPanel.on("$destroy",function(){c.$groupPanel&&c.$groupPanel.off("mousedown"),c.$groupPanel=null
+}),c.config.enableColumnReordering&&c.$topPanel.on("drop",".ngHeaderScroller",g.onHeaderDrop),c.$topPanel.on("$destroy",function(){c.$topPanel&&c.$topPanel.off("mousedown"),c.config.enableColumnReordering&&c.$topPanel&&c.$topPanel.off("drop"),c.$topPanel=null})),d.$on("$destroy",d.$watch("renderedColumns",function(){f(g.setDraggables)}))},g.dragStart=function(a){a.dataTransfer.setData("text","")},g.dragOver=function(a){a.preventDefault()},g.setDraggables=function(){if(c.config.jqueryUIDraggable)c.$root&&c.$root.find(".ngHeaderSortColumn").draggable({helper:"clone",appendTo:"body",stack:"div",addClasses:!1,start:function(a){g.onHeaderMouseDown(a)}}).droppable({drop:function(a){g.onHeaderDrop(a)}});else{var a=c.$root.find(".ngHeaderSortColumn");if(angular.forEach(a,function(a){a.className&&-1!==a.className.indexOf("ngHeaderSortColumn")&&(a.setAttribute("draggable","true"),a.addEventListener&&(a.addEventListener("dragstart",g.dragStart),angular.element(a).on("$destroy",function(){angular.element(a).off("dragstart",g.dragStart),a.removeEventListener("dragstart",g.dragStart)})))}),-1!==navigator.userAgent.indexOf("MSIE")){var b=c.$root.find(".ngHeaderSortColumn");b.bind("selectstart",function(){return this.dragDrop(),!1}),angular.element(b).on("$destroy",function(){b.off("selectstart")})}}},g.onGroupMouseDown=function(a){var d=b(a.target);if("ngRemoveGroup"!==d[0].className){var e=angular.element(d).scope();e&&(c.config.jqueryUIDraggable||(d.attr("draggable","true"),this.addEventListener&&(this.addEventListener("dragstart",g.dragStart),angular.element(this).on("$destroy",function(){this.removeEventListener("dragstart",g.dragStart)})),-1!==navigator.userAgent.indexOf("MSIE")&&(d.bind("selectstart",function(){return this.dragDrop(),!1}),d.on("$destroy",function(){d.off("selectstart")}))),g.groupToMove={header:d,groupName:e.group,index:e.$index})}else g.groupToMove=void 0},g.onGroupDrop=function(a){a.stopPropagation();var e,f;g.groupToMove?(e=b(a.target).closest(".ngGroupElement"),"ngGroupPanel"===e.context.className?(d.configGroups.splice(g.groupToMove.index,1),d.configGroups.push(g.groupToMove.groupName)):(f=angular.element(e).scope(),f&&g.groupToMove.index!==f.$index&&(d.configGroups.splice(g.groupToMove.index,1),d.configGroups.splice(f.$index,0,g.groupToMove.groupName))),g.groupToMove=void 0,c.fixGroupIndexes()):g.colToMove&&(-1===d.configGroups.indexOf(g.colToMove.col)&&(e=b(a.target).closest(".ngGroupElement"),"ngGroupPanel"===e.context.className||"ngGroupPanelDescription ng-binding"===e.context.className?d.groupBy(g.colToMove.col):(f=angular.element(e).scope(),f&&d.removeGroup(f.$index))),g.colToMove=void 0),d.$$phase||d.$apply()},g.onHeaderMouseDown=function(a){var c=b(a.target).closest(".ngHeaderSortColumn"),d=angular.element(c).scope();d&&(g.colToMove={header:c,col:d.col})},g.onHeaderDrop=function(a){if(g.colToMove&&!g.colToMove.col.pinned){var f=b(a.target).closest(".ngHeaderSortColumn"),h=angular.element(f).scope();if(h){if(g.colToMove.col===h.col||h.col.pinned)return;d.columns.splice(g.colToMove.col.index,1),d.columns.splice(h.col.index,0,g.colToMove.col),c.fixColumnIndexes(),g.colToMove=void 0,e.digest(d)}}},g.assignGridEventHandlers=function(){-1===c.config.tabIndex?(c.$viewport.attr("tabIndex",e.numberOfGrids),e.numberOfGrids++):c.$viewport.attr("tabIndex",c.config.tabIndex);var f,g=function(){clearTimeout(f),f=setTimeout(function(){e.RebuildGrid(d,c)},100)};b(a).on("resize.nggrid",g);var h,i=function(){clearTimeout(h),h=setTimeout(function(){e.RebuildGrid(d,c)},100)};b(c.$root.parent()).on("resize.nggrid",i),d.$on("$destroy",function(){b(a).off("resize.nggrid",g)})},g.assignGridEventHandlers(),g.assignEvents()},y=function(a,b){a.maxRows=function(){var c=Math.max(a.totalServerItems,b.data.length);return c},a.$on("$destroy",a.$watch("totalServerItems",function(){a.currentMaxPages=a.maxPages()})),a.multiSelect=b.config.enableRowSelection&&b.config.multiSelect,a.selectedItemCount=b.selectedItemCount,a.maxPages=function(){return 0===a.maxRows()?1:Math.ceil(a.maxRows()/a.pagingOptions.pageSize)},a.pageForward=function(){var b=a.pagingOptions.currentPage;a.totalServerItems>0?a.pagingOptions.currentPage=Math.min(b+1,a.maxPages()):a.pagingOptions.currentPage++},a.pageBackward=function(){var b=a.pagingOptions.currentPage;a.pagingOptions.currentPage=Math.max(b-1,1)},a.pageToFirst=function(){a.pagingOptions.currentPage=1},a.pageToLast=function(){var b=a.maxPages();a.pagingOptions.currentPage=b},a.cantPageForward=function(){var c=a.pagingOptions.currentPage,d=a.maxPages();return a.totalServerItems>0?c>=d:b.data.length<1},a.cantPageToLast=function(){return a.totalServerItems>0?a.cantPageForward():!0},a.cantPageBackward=function(){var b=a.pagingOptions.currentPage;return 1>=b}},z=function(e,f,g,h,j,k,l,m,n,o,q){var r={aggregateTemplate:void 0,afterSelectionChange:function(){},beforeSelectionChange:function(){return!0},checkboxCellTemplate:void 0,checkboxHeaderTemplate:void 0,columnDefs:void 0,data:[],dataUpdated:function(){},enableCellEdit:!1,enableCellEditOnFocus:!1,enableCellSelection:!1,enableColumnResize:!1,enableColumnReordering:!1,enableColumnHeavyVirt:!1,enablePaging:!1,enablePinning:!1,enableRowSelection:!0,enableSorting:!0,enableHighlighting:!1,excludeProperties:[],filterOptions:{filterText:"",useExternalFilter:!1},footerRowHeight:55,footerTemplate:void 0,forceSyncScrolling:!0,groups:[],groupsCollapsedByDefault:!0,headerRowHeight:30,headerRowTemplate:void 0,jqueryUIDraggable:!1,jqueryUITheme:!1,keepLastSelected:!0,maintainColumnRatios:void 0,menuTemplate:void 0,multiSelect:!0,pagingOptions:{pageSizes:[250,500,1e3],pageSize:250,currentPage:1},pinSelectionCheckbox:!1,plugins:[],primaryKey:void 0,rowHeight:30,rowTemplate:void 0,selectedItems:[],selectWithCheckboxOnly:!1,showColumnMenu:!1,showFilter:!1,showFooter:!1,showGroupPanel:!1,showSelectionCheckbox:!1,sortInfo:{fields:[],columns:[],directions:[]},tabIndex:-1,totalServerItems:0,useExternalSorting:!1,i18n:"en",virtualizationThreshold:50,noTabInterference:!1},s=this;s.maxCanvasHt=0,s.config=b.extend(r,a.ngGrid.config,f),s.config.showSelectionCheckbox=s.config.showSelectionCheckbox&&s.config.enableColumnHeavyVirt===!1,s.config.enablePinning=s.config.enablePinning&&s.config.enableColumnHeavyVirt===!1,s.config.selectWithCheckboxOnly=s.config.selectWithCheckboxOnly&&s.config.showSelectionCheckbox!==!1,s.config.pinSelectionCheckbox=s.config.enablePinning,"string"==typeof f.columnDefs&&(s.config.columnDefs=e.$eval(f.columnDefs)),s.rowCache=[],s.rowMap=[],s.gridId="ng"+l.newId(),s.$root=null,s.$groupPanel=null,s.$topPanel=null,s.$headerContainer=null,s.$headerScroller=null,s.$headers=null,s.$viewport=null,s.$canvas=null,s.rootDim=s.config.gridDim,s.data=[],s.lateBindColumns=!1,s.filteredRows=[],s.initTemplates=function(){var a=["rowTemplate","aggregateTemplate","headerRowTemplate","checkboxCellTemplate","checkboxHeaderTemplate","menuTemplate","footerTemplate"],b=[];return angular.forEach(a,function(a){b.push(s.getTemplate(a))}),q.all(b)},s.getTemplate=function(a){var b=s.config[a],c=s.gridId+a+".html",d=q.defer();if(b&&!p.test(b))o.get(b,{cache:k}).success(function(a){k.put(c,a),d.resolve()}).error(function(){d.reject("Could not load template: "+b)});else if(b)k.put(c,b),d.resolve();else{var e=a+".html";k.put(c,k.get(e)),d.resolve()}return d.promise},"object"==typeof s.config.data&&(s.data=s.config.data),s.calcMaxCanvasHeight=function(){var a;return a=s.config.groups.length>0?s.rowFactory.parsedData.filter(function(a){return!a[i]}).length*s.config.rowHeight:s.filteredRows.length*s.config.rowHeight},s.elementDims={scrollW:0,scrollH:0,rowIndexCellW:25,rowSelectedCellW:25,rootMaxW:0,rootMaxH:0},s.setRenderedRows=function(a){e.renderedRows.length=a.length;for(var b=0;b<a.length;b++)!e.renderedRows[b]||a[b].isAggRow||e.renderedRows[b].isAggRow?(e.renderedRows[b]=a[b].copy(),e.renderedRows[b].collapsed=a[b].collapsed,a[b].isAggRow||e.renderedRows[b].setVars(a[b])):e.renderedRows[b].setVars(a[b]),e.renderedRows[b].rowIndex=a[b].rowIndex,e.renderedRows[b].offsetTop=a[b].offsetTop,e.renderedRows[b].selected=a[b].selected,a[b].renderedRowIndex=b;s.refreshDomSizes(),e.$emit("ngGridEventRows",a)},s.minRowsToRender=function(){var a=e.viewportDimHeight()||1;return Math.floor(a/s.config.rowHeight)},s.refreshDomSizes=function(){var a=new v;a.outerWidth=s.elementDims.rootMaxW,a.outerHeight=s.elementDims.rootMaxH,s.rootDim=a,s.maxCanvasHt=s.calcMaxCanvasHeight()},s.buildColumnDefsFromData=function(){s.config.columnDefs=[];var a=s.data[0];return a?void l.forIn(a,function(a,b){-1===s.config.excludeProperties.indexOf(b)&&s.config.columnDefs.push({field:b})}):void(s.lateBoundColumns=!0)},s.buildColumns=function(){var a=s.config.columnDefs,b=[];if(a||(s.buildColumnDefsFromData(),a=s.config.columnDefs),s.config.showSelectionCheckbox&&b.push(new u({colDef:{field:"✔",width:s.elementDims.rowSelectedCellW,sortable:!1,resizable:!1,groupable:!1,headerCellTemplate:k.get(e.gridId+"checkboxHeaderTemplate.html"),cellTemplate:k.get(e.gridId+"checkboxCellTemplate.html"),pinned:s.config.pinSelectionCheckbox},index:0,headerRowHeight:s.config.headerRowHeight,sortCallback:s.sortData,resizeOnDataCallback:s.resizeOnData,enableResize:s.config.enableColumnResize,enableSort:s.config.enableSorting,enablePinning:s.config.enablePinning},e,s,h,k,l)),a.length>0){var c=s.config.showSelectionCheckbox?1:0,d=e.configGroups.length;e.configGroups.length=0,angular.forEach(a,function(a,f){f+=c;var g=new u({colDef:a,index:f+d,originalIndex:f,headerRowHeight:s.config.headerRowHeight,sortCallback:s.sortData,resizeOnDataCallback:s.resizeOnData,enableResize:s.config.enableColumnResize,enableSort:s.config.enableSorting,enablePinning:s.config.enablePinning,enableCellEdit:s.config.enableCellEdit||s.config.enableCellEditOnFocus,cellEditableCondition:s.config.cellEditableCondition},e,s,h,k,l),i=s.config.groups.indexOf(a.field);-1!==i&&(g.isGroupedBy=!0,e.configGroups.splice(i,0,g),g.groupIndex=e.configGroups.length),b.push(g)}),e.columns=b,s.config.groups.length>0&&s.rowFactory.getGrouping(s.config.groups)}},s.configureColumnWidths=function(){var a=[],b=[],c=0,d=0,f={};if(angular.forEach(e.columns,function(a,b){if(!l.isNullOrUndefined(a.originalIndex)){var c=a.originalIndex;s.config.showSelectionCheckbox&&(0===a.originalIndex&&a.visible&&(d+=25),c--),f[c]=b}}),angular.forEach(s.config.columnDefs,function(g,h){var i=e.columns[f[h]];g.index=h;var j,k=!1;if(l.isNullOrUndefined(g.width)?g.width="*":(k=isNaN(g.width)?l.endsWith(g.width,"%"):!1,j=k?g.width:parseInt(g.width,10)),isNaN(j)&&!e.hasUserChangedGridColumnWidths){if(j=g.width,"auto"===j){i.width=i.minWidth,d+=i.width;var m=i;return void e.$on("$destroy",e.$on("ngGridEventData",function(){s.resizeOnData(m)}))}if(-1!==j.indexOf("*"))return i.visible!==!1&&(c+=j.length),void a.push(g);if(k)return void b.push(g);throw'unable to parse column width, use percentage ("10%","20%", etc...) or "*" to use remaining width of grid'}i.visible!==!1&&(d+=i.width=parseInt(i.width,10))}),b.length>0){s.config.maintainColumnRatios=s.config.maintainColumnRatios!==!1;var g=0,i=0;angular.forEach(b,function(a){var b=e.columns[f[a.index]],c=parseFloat(a.width)/100;g+=c,b.visible||(i+=c)});var j=g-i;angular.forEach(b,function(a){var b=e.columns[f[a.index]],c=parseFloat(a.width)/100;c/=i>0?j:g;var h=s.rootDim.outerWidth*g;b.width=h*c,d+=b.width})}if(a.length>0){s.config.maintainColumnRatios=s.config.maintainColumnRatios!==!1;var k=s.rootDim.outerWidth-d;s.maxCanvasHt>e.viewportDimHeight()&&(k-=h.ScrollW);var m=Math.floor(k/c);angular.forEach(a,function(b,c){var g=e.columns[f[b.index]];g.width=m*b.width.length,g.visible!==!1&&(d+=g.width);var i=c===a.length-1;if(i&&d<s.rootDim.outerWidth){var j=s.rootDim.outerWidth-d;s.maxCanvasHt>e.viewportDimHeight()&&(j-=h.ScrollW),g.width+=j}})}},s.init=function(){return s.initTemplates().then(function(){e.selectionProvider=new E(s,e,n),e.domAccessProvider=new w(s),s.rowFactory=new C(s,e,h,k,l),s.searchProvider=new D(e,s,j),s.styleProvider=new F(e,s),e.$on("$destroy",e.$watch("configGroups",function(a){var b=[];angular.forEach(a,function(a){b.push(a.field||a)}),s.config.groups=b,s.rowFactory.filteredRowsChanged(),e.$emit("ngGridEventGroups",a)},!0)),e.$on("$destroy",e.$watch("columns",function(a){e.isColumnResizing||h.RebuildGrid(e,s),e.$emit("ngGridEventColumns",a)},!0)),e.$on("$destroy",e.$watch(function(){return f.i18n},function(a){l.seti18n(e,a)})),s.maxCanvasHt=s.calcMaxCanvasHeight(),s.config.sortInfo.fields&&s.config.sortInfo.fields.length>0&&e.$on("$destroy",e.$watch(function(){return s.config.sortInfo},function(){g.isSorting||(s.sortColumnsInit(),e.$emit("ngGridEventSorted",s.config.sortInfo))},!0))})},s.resizeOnData=function(a){var c=a.minWidth,d=l.getElementsByClassName("col"+a.index);angular.forEach(d,function(a,d){var e;if(0===d){var f=b(a).find(".ngHeaderText");e=l.visualLength(f)+10}else{var g=b(a).find(".ngCellText");e=l.visualLength(g)+10}e>c&&(c=e)}),a.width=a.longest=Math.min(a.maxWidth,c+7),h.BuildStyles(e,s,!0)},s.lastSortedColumns=[],s.sortData=function(a,c){if(c&&c.shiftKey&&s.config.sortInfo){var d=s.config.sortInfo.columns.indexOf(a);-1===d?(1===s.config.sortInfo.columns.length&&(s.config.sortInfo.columns[0].sortPriority=1),s.config.sortInfo.columns.push(a),a.sortPriority=s.config.sortInfo.columns.length,s.config.sortInfo.fields.push(a.field),s.config.sortInfo.directions.push(a.sortDirection),s.lastSortedColumns.push(a)):s.config.sortInfo.directions[d]=a.sortDirection}else if(!s.config.useExternalSorting||s.config.useExternalSorting&&s.config.sortInfo){var f=b.isArray(a);s.config.sortInfo.columns.length=0,s.config.sortInfo.fields.length=0,s.config.sortInfo.directions.length=0;var g=function(a){s.config.sortInfo.columns.push(a),s.config.sortInfo.fields.push(a.field),s.config.sortInfo.directions.push(a.sortDirection),s.lastSortedColumns.push(a)};f?angular.forEach(a,function(a,b){a.sortPriority=b+1,g(a)}):(s.clearSortingData(a),a.sortPriority=void 0,g(a)),s.sortActual(),s.searchProvider.evalFilter(),e.$emit("ngGridEventSorted",s.config.sortInfo)}},s.sortColumnsInit=function(){s.config.sortInfo.columns?s.config.sortInfo.columns.length=0:s.config.sortInfo.columns=[];var a=[];angular.forEach(e.columns,function(b){var c=s.config.sortInfo.fields.indexOf(b.field);-1!==c&&(b.sortDirection=s.config.sortInfo.directions[c]||"asc",a[c]=b)}),s.sortData(1===a.length?a[0]:a)},s.sortActual=function(){if(!s.config.useExternalSorting){var a=s.data.slice(0);angular.forEach(a,function(a,b){var c=s.rowMap[b];if(void 0!==c){var d=s.rowCache[c];void 0!==d&&(a.preSortSelected=d.selected,a.preSortIndex=b)}}),g.Sort(s.config.sortInfo,a),angular.forEach(a,function(a,b){s.rowCache[b].entity=a,s.rowCache[b].selected=a.preSortSelected,s.rowMap[a.preSortIndex]=b,delete a.preSortSelected,delete a.preSortIndex})}},s.clearSortingData=function(a){a?(angular.forEach(s.lastSortedColumns,function(b){a.index!==b.index&&(b.sortDirection="",b.sortPriority=null)}),s.lastSortedColumns[0]=a,s.lastSortedColumns.length=1):(angular.forEach(s.lastSortedColumns,function(a){a.sortDirection="",a.sortPriority=null}),s.lastSortedColumns=[])},s.fixColumnIndexes=function(){for(var a=0;a<e.columns.length;a++)e.columns[a].index=a},s.fixGroupIndexes=function(){angular.forEach(e.configGroups,function(a,b){a.groupIndex=b+1})},e.elementsNeedMeasuring=!0,e.columns=[],e.renderedRows=[],e.renderedColumns=[],e.headerRow=null,e.rowHeight=s.config.rowHeight,e.jqueryUITheme=s.config.jqueryUITheme,e.showSelectionCheckbox=s.config.showSelectionCheckbox,e.enableCellSelection=s.config.enableCellSelection,e.enableCellEditOnFocus=s.config.enableCellEditOnFocus,e.footer=null,e.selectedItems=s.config.selectedItems,e.multiSelect=s.config.multiSelect,e.showFooter=s.config.showFooter,e.footerRowHeight=e.showFooter?s.config.footerRowHeight:0,e.showColumnMenu=s.config.showColumnMenu,e.forceSyncScrolling=s.config.forceSyncScrolling,e.showMenu=!1,e.configGroups=[],e.gridId=s.gridId,e.enablePaging=s.config.enablePaging,e.pagingOptions=s.config.pagingOptions,e.i18n={},l.seti18n(e,s.config.i18n),e.adjustScrollLeft=function(a){for(var b=0,c=0,d=e.columns.length,f=[],g=!s.config.enableColumnHeavyVirt,i=0,j=function(a){g?f.push(a):e.renderedColumns[i]?e.renderedColumns[i].setVars(a):e.renderedColumns[i]=a.copy(),i++},k=0;d>k;k++){var l=e.columns[k];if(l.visible!==!1){var m=l.width+b;if(l.pinned){j(l);var n=k>0?a+c:a;h.setColLeft(l,n,s),c+=l.width}else m>=a&&b<=a+s.rootDim.outerWidth&&j(l);b+=l.width}}g&&(e.renderedColumns=f)},s.prevScrollTop=0,s.prevScrollIndex=0,e.adjustScrollTop=function(a,b){if(s.prevScrollTop!==a||b){a>0&&s.$viewport[0].scrollHeight-a<=s.$viewport.outerHeight()&&e.$emit("ngGridEventScroll");var f,g=Math.floor(a/s.config.rowHeight);if(s.filteredRows.length>s.config.virtualizationThreshold){if(s.prevScrollTop<a&&g<s.prevScrollIndex+d)return;if(s.prevScrollTop>a&&g>s.prevScrollIndex-d)return;f=new A(Math.max(0,g-c),g+s.minRowsToRender()+c)}else{var h=e.configGroups.length>0?s.rowFactory.parsedData.length:s.filteredRows.length;f=new A(0,Math.max(h,s.minRowsToRender()+c))}s.prevScrollTop=a,s.rowFactory.UpdateViewableRange(f),s.prevScrollIndex=g}},e.toggleShowMenu=function(){e.showMenu=!e.showMenu},e.toggleSelectAll=function(a,b){e.selectionProvider.toggleSelectAll(a,!1,b)},e.totalFilteredItemsLength=function(){return s.filteredRows.length},e.showGroupPanel=function(){return s.config.showGroupPanel},e.topPanelHeight=function(){return s.config.showGroupPanel===!0?s.config.headerRowHeight+32:s.config.headerRowHeight},e.viewportDimHeight=function(){return Math.max(0,s.rootDim.outerHeight-e.topPanelHeight()-e.footerRowHeight-2)},e.groupBy=function(a){if(!(s.data.length<1)&&a.groupable&&a.field){a.sortDirection||a.sort({shiftKey:e.configGroups.length>0?!0:!1});var b=e.configGroups.indexOf(a);-1===b?(a.isGroupedBy=!0,e.configGroups.push(a),a.groupIndex=e.configGroups.length):e.removeGroup(b),s.$viewport.scrollTop(0),h.digest(e)}},e.removeGroup=function(a){var b=e.columns.filter(function(b){return b.groupIndex===a+1})[0];b.isGroupedBy=!1,b.groupIndex=0,e.columns[a].isAggCol&&(e.columns.splice(a,1),e.configGroups.splice(a,1),s.fixGroupIndexes()),0===e.configGroups.length&&(s.fixColumnIndexes(),h.digest(e)),e.adjustScrollLeft(0)},e.togglePin=function(a){for(var b=a.index,c=0,d=0;d<e.columns.length&&e.columns[d].pinned;d++)c++;a.pinned&&(c=Math.max(a.originalIndex,c-1)),a.pinned=!a.pinned,e.columns.splice(b,1),e.columns.splice(c,0,a),s.fixColumnIndexes(),h.BuildStyles(e,s,!0),s.$viewport.scrollLeft(s.$viewport.scrollLeft()-a.width)},e.totalRowWidth=function(){for(var a=0,b=e.columns,c=0;c<b.length;c++)b[c].visible!==!1&&(a+=b[c].width);return a},e.headerScrollerDim=function(){var a=e.viewportDimHeight(),b=s.maxCanvasHt,c=b>a,d=new v;return d.autoFitHeight=!0,d.outerWidth=e.totalRowWidth(),c?d.outerWidth+=s.elementDims.scrollW:b-a<=s.elementDims.scrollH&&(d.outerWidth+=s.elementDims.scrollW),d}},A=function(a,b){this.topRow=a,this.bottomRow=b},B=function(a,b,c,d,e){this.entity=a,this.config=b,this.selectionProvider=c,this.rowIndex=d,this.utils=e,this.selected=c.getSelection(a),this.cursor=this.config.enableRowSelection&&!this.config.selectWithCheckboxOnly?"pointer":"default",this.beforeSelectionChange=b.beforeSelectionChangeCallback,this.afterSelectionChange=b.afterSelectionChangeCallback,this.offsetTop=this.rowIndex*b.rowHeight,this.rowDisplayIndex=0};B.prototype.setSelection=function(a){this.selectionProvider.setSelection(this,a),this.selectionProvider.lastClickedRow=this},B.prototype.continueSelection=function(a){this.selectionProvider.ChangeSelection(this,a)},B.prototype.ensureEntity=function(a){this.entity!==a&&(this.entity=a,this.selected=this.selectionProvider.getSelection(this.entity))},B.prototype.toggleSelected=function(a){if(!this.config.enableRowSelection&&!this.config.enableCellSelection)return!0;var b=a.target||a;return"checkbox"===b.type&&"ngSelectionCell ng-scope"!==b.parentElement.className?!0:this.config.selectWithCheckboxOnly&&"checkbox"!==b.type?(this.selectionProvider.lastClickedRow=this,!0):(this.beforeSelectionChange(this,a)&&this.continueSelection(a),!1)},B.prototype.alternatingRowClass=function(){var a=this.rowIndex%2===0,b={ngRow:!0,selected:this.selected,even:a,odd:!a,"ui-state-default":this.config.jqueryUITheme&&a,"ui-state-active":this.config.jqueryUITheme&&!a};return b},B.prototype.getProperty=function(a){return this.utils.evalProperty(this.entity,a)},B.prototype.copy=function(){return this.clone=new B(this.entity,this.config,this.selectionProvider,this.rowIndex,this.utils),this.clone.isClone=!0,this.clone.elm=this.elm,this.clone.orig=this,this.clone},B.prototype.setVars=function(a){a.clone=this,this.entity=a.entity,this.selected=a.selected,this.orig=a};var C=function(a,b,d,e,f){var k=this;k.aggCache={},k.parentCache=[],k.dataChanged=!0,k.parsedData=[],k.rowConfig={},k.selectionProvider=b.selectionProvider,k.rowHeight=30,k.numberOfAggregates=0,k.groupedData=void 0,k.rowHeight=a.config.rowHeight,k.rowConfig={enableRowSelection:a.config.enableRowSelection,rowClasses:a.config.rowClasses,selectedItems:b.selectedItems,selectWithCheckboxOnly:a.config.selectWithCheckboxOnly,beforeSelectionChangeCallback:a.config.beforeSelectionChange,afterSelectionChangeCallback:a.config.afterSelectionChange,jqueryUITheme:a.config.jqueryUITheme,enableCellSelection:a.config.enableCellSelection,rowHeight:a.config.rowHeight},k.renderedRange=new A(0,a.minRowsToRender()+c),k.buildEntityRow=function(a,b){return new B(a,k.rowConfig,k.selectionProvider,b,f)},k.buildAggregateRow=function(b,c){var d=k.aggCache[b.aggIndex];return d||(d=new t(b,k,k.rowConfig.rowHeight,a.config.groupsCollapsedByDefault),k.aggCache[b.aggIndex]=d),d.rowIndex=c,d.offsetTop=c*k.rowConfig.rowHeight,d},k.UpdateViewableRange=function(a){k.renderedRange=a,k.renderedChange()},k.filteredRowsChanged=function(){a.lateBoundColumns&&a.filteredRows.length>0&&(a.config.columnDefs=void 0,a.buildColumns(),a.lateBoundColumns=!1,b.$evalAsync(function(){b.adjustScrollLeft(0)})),k.dataChanged=!0,a.config.groups.length>0&&k.getGrouping(a.config.groups),k.UpdateViewableRange(k.renderedRange)},k.renderedChange=function(){if(!k.groupedData||a.config.groups.length<1)return k.renderedChangeNoGroups(),void a.refreshDomSizes();k.wasGrouped=!0,k.parentCache=[];var b=0,c=k.parsedData.filter(function(a){return a.isAggRow?a.parent&&a.parent.collapsed?!1:!0:(a[i]||(a.rowIndex=b++),!a[i])});k.totalRows=c.length;for(var d=[],e=k.renderedRange.topRow;e<k.renderedRange.bottomRow;e++)c[e]&&(c[e].offsetTop=e*a.config.rowHeight,d.push(c[e]));a.setRenderedRows(d)},k.renderedChangeNoGroups=function(){for(var b=[],c=k.renderedRange.topRow;c<k.renderedRange.bottomRow;c++)a.filteredRows[c]&&(a.filteredRows[c].rowIndex=c,a.filteredRows[c].offsetTop=c*a.config.rowHeight,b.push(a.filteredRows[c]));a.setRenderedRows(b)},k.fixRowCache=function(){var b=a.data.length,c=b-a.rowCache.length;if(0>c)a.rowCache.length=a.rowMap.length=b;else for(var d=a.rowCache.length;b>d;d++)a.rowCache[d]=a.rowFactory.buildEntityRow(a.data[d],d)},k.parseGroupData=function(a){if(a.values)for(var b=0;b<a.values.length;b++)k.parentCache[k.parentCache.length-1].children.push(a.values[b]),k.parsedData.push(a.values[b]);else for(var c in a)if(c!==g&&c!==h&&c!==j&&a.hasOwnProperty(c)){var d=k.buildAggregateRow({gField:a[g],gLabel:c,gDepth:a[h],isAggRow:!0,_ng_hidden_:!1,children:[],aggChildren:[],aggIndex:k.numberOfAggregates,aggLabelFilter:a[j].aggLabelFilter},0);k.numberOfAggregates++,d.parent=k.parentCache[d.depth-1],d.parent&&(d.parent.collapsed=!1,d.parent.aggChildren.push(d)),k.parsedData.push(d),k.parentCache[d.depth]=d,k.parseGroupData(a[c])}},k.getGrouping=function(c){function l(a,b){return a.filter(function(a){return a.field===b})}k.aggCache=[],k.numberOfAggregates=0,k.groupedData={};for(var m=a.filteredRows,n=c.length,o=b.columns,p=0;p<m.length;p++){var q=m[p].entity;if(!q)return;m[p][i]=a.config.groupsCollapsedByDefault;for(var r=k.groupedData,s=0;s<c.length;s++){var t=c[s],v=l(o,t)[0],w=f.evalProperty(q,t);w=w?w.toString():"null",r[w]||(r[w]={}),r[g]||(r[g]=t),r[h]||(r[h]=s),r[j]||(r[j]=v),r=r[w]}r.values||(r.values=[]),r.values.push(m[p])}if(o.length>0)for(var x=0;x<c.length;x++)!o[x].isAggCol&&n>=x&&o.splice(0,0,new u({colDef:{field:"",width:25,sortable:!1,resizable:!1,headerCellTemplate:'<div class="ngAggHeader"></div>',pinned:a.config.pinSelectionCheckbox},enablePinning:a.config.enablePinning,isAggCol:!0,headerRowHeight:a.config.headerRowHeight},b,a,d,e,f));a.fixColumnIndexes(),b.adjustScrollLeft(0),k.parsedData.length=0,k.parseGroupData(k.groupedData),k.fixRowCache()},a.config.groups.length>0&&a.filteredRows.length>0&&k.getGrouping(a.config.groups)},D=function(a,c,d){var e=this,f=[];e.extFilter=c.config.filterOptions.useExternalFilter,a.showFilter=c.config.showFilter,a.filterText="",e.fieldMap={};var g=function(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c.toLowerCase()]=a[c]);return b},h=function(a,b,c){var e;for(var f in b)if(b.hasOwnProperty(f)){var i=c[f.toLowerCase()];if(!i)continue;var j=b[f];if("object"!=typeof j||j instanceof Date){var k=null,l=null;if(i&&i.cellFilter&&(l=i.cellFilter.split(":"),k=d(l[0])),null!==j&&void 0!==j){if("function"==typeof k){var m=k(j,l[1].slice(1,-1)).toString();e=a.regex.test(m)}else e=a.regex.test(j.toString());if(e)return!0}}else{var n=g(i);if(e=h(a,j,n))return!0}}return!1},i=function(a,b){var c,f=e.fieldMap[a.columnDisplay];if(!f)return!1;var g=f.cellFilter.split(":"),h=f.cellFilter?d(g[0]):null,i=b[a.column]||b[f.field.split(".")[0]];if(null===i||void 0===i)return!1;if("function"==typeof h){var j=h("object"==typeof i?k(i,f.field):i,g[1]).toString();c=a.regex.test(j)}else c=a.regex.test("object"==typeof i?k(i,f.field).toString():i.toString());return c?!0:!1},j=function(a){for(var b=0,c=f.length;c>b;b++){var d,g=f[b];if(d=g.column?i(g,a):h(g,a,e.fieldMap),!d)return!1}return!0};e.evalFilter=function(){c.filteredRows=0===f.length?c.rowCache:c.rowCache.filter(function(a){return j(a.entity)});for(var a=0;a<c.filteredRows.length;a++)c.filteredRows[a].rowIndex=a;c.rowFactory.filteredRowsChanged()};var k=function(a,b){if("object"!=typeof a||"string"!=typeof b)return a;var c=b.split("."),d=a;if(c.length>1){for(var e=1,f=c.length;f>e;e++)if(d=d[c[e]],!d)return a;return d}return a},l=function(a,b){try{return new RegExp(a,b)}catch(c){return new RegExp(a.replace(/(\^|\$|\(|\)|<|>|\[|\]|\{|\}|\\|\||\.|\*|\+|\?)/g,"\\$1"))}},m=function(a){f=[];var c;if(c=b.trim(a))for(var d=c.split(";"),e=0;e<d.length;e++){var g=d[e].split(":");if(g.length>1){var h=b.trim(g[0]),i=b.trim(g[1]);h&&i&&f.push({column:h,columnDisplay:h.replace(/\s+/g,"").toLowerCase(),regex:l(i,"i")})}else{var j=b.trim(g[0]);j&&f.push({column:"",regex:l(j,"i")})}}};e.extFilter||a.$on("$destroy",a.$watch("columns",function(a){for(var b=0;b<a.length;b++){var c=a[b];if(c.field)if(c.field.match(/\./g)){for(var d=c.field.split("."),f=e.fieldMap,g=0;g<d.length-1;g++)f[d[g]]=f[d[g]]||{},f=f[d[g]];f[d[d.length-1]]=c}else e.fieldMap[c.field.toLowerCase()]=c;c.displayName&&(e.fieldMap[c.displayName.toLowerCase().replace(/\s+/g,"")]=c)}})),a.$on("$destroy",a.$watch(function(){return c.config.filterOptions.filterText},function(b){a.filterText=b})),a.$on("$destroy",a.$watch("filterText",function(b){e.extFilter||(a.$emit("ngGridEventFilter",b),m(b),e.evalFilter())}))},E=function(a,b,c){var d=this;d.multi=a.config.multiSelect,d.selectedItems=a.config.selectedItems,d.selectedIndex=a.config.selectedIndex,d.lastClickedRow=void 0,d.ignoreSelectedItemChanges=!1,d.pKeyParser=c(a.config.primaryKey),d.ChangeSelection=function(c,e){var f=e.which||e.keyCode,g=40===f||38===f;if(e&&e.shiftKey&&!e.keyCode&&d.multi&&a.config.enableRowSelection){if(d.lastClickedRow){var h;h=b.configGroups.length>0?a.rowFactory.parsedData.filter(function(a){return!a.isAggRow}):a.filteredRows;var i=c.rowIndex,j=d.lastClickedRowIndex;if(i===j)return!1;j>i?(i^=j,j=i^j,i^=j,i--):j++;for(var k=[];i>=j;j++)k.push(h[j]);if(k[k.length-1].beforeSelectionChange(k,e)){for(var l=0;l<k.length;l++){var m=k[l],n=m.selected;m.selected=!n,m.clone&&(m.clone.selected=m.selected);var o=d.selectedItems.indexOf(m.entity);-1===o?d.selectedItems.push(m.entity):d.selectedItems.splice(o,1)}k[k.length-1].afterSelectionChange(k,e)}return d.lastClickedRow=c,d.lastClickedRowIndex=c.rowIndex,!0}}else d.multi?(!e.keyCode||g&&!a.config.selectWithCheckboxOnly)&&d.setSelection(c,!c.selected):d.lastClickedRow===c?d.setSelection(d.lastClickedRow,a.config.keepLastSelected?!0:!c.selected):(d.lastClickedRow&&d.setSelection(d.lastClickedRow,!1),d.setSelection(c,!c.selected));return d.lastClickedRow=c,d.lastClickedRowIndex=c.rowIndex,!0},d.getSelection=function(a){return-1!==d.getSelectionIndex(a)},d.getSelectionIndex=function(b){var c=-1;if(a.config.primaryKey){var e=d.pKeyParser(b);angular.forEach(d.selectedItems,function(a,b){e===d.pKeyParser(a)&&(c=b)})}else c=d.selectedItems.indexOf(b);return c},d.setSelection=function(b,c){if(a.config.enableRowSelection){if(c)-1===d.getSelectionIndex(b.entity)&&(!d.multi&&d.selectedItems.length>0&&d.toggleSelectAll(!1,!0),d.selectedItems.push(b.entity));else{var e=d.getSelectionIndex(b.entity);-1!==e&&d.selectedItems.splice(e,1)}b.selected=c,b.orig&&(b.orig.selected=c),b.clone&&(b.clone.selected=c),b.afterSelectionChange(b)}},d.toggleSelectAll=function(b,c,e){var f=e?a.filteredRows:a.rowCache;if(c||a.config.beforeSelectionChange(f,b)){var g=d.selectedItems.length;g>0&&(d.selectedItems.length=0);for(var h=0;h<f.length;h++)f[h].selected=b,f[h].clone&&(f[h].clone.selected=b),b&&d.selectedItems.push(f[h].entity);c||a.config.afterSelectionChange(f,b)}}},F=function(a,b){a.headerCellStyle=function(a){return{height:a.headerRowHeight+"px"}},a.rowStyle=function(b){var c={top:b.offsetTop+"px",height:a.rowHeight+"px"};return b.isAggRow&&(c.left=b.offsetLeft),c},a.canvasStyle=function(){return{height:b.maxCanvasHt+"px"}},a.headerScrollerStyle=function(){return{height:b.config.headerRowHeight+"px"}},a.topPanelStyle=function(){return{width:b.rootDim.outerWidth+"px",height:a.topPanelHeight()+"px"}},a.headerStyle=function(){return{width:b.rootDim.outerWidth+"px",height:b.config.headerRowHeight+"px"}},a.groupPanelStyle=function(){return{width:b.rootDim.outerWidth+"px",height:"32px"}},a.viewportStyle=function(){return{width:b.rootDim.outerWidth+"px",height:a.viewportDimHeight()+"px"}},a.footerStyle=function(){return{width:b.rootDim.outerWidth+"px",height:a.footerRowHeight+"px"}}};q.directive("ngCellHasFocus",["$domUtilityService",function(a){var b=function(b){b.isFocused=!0,a.digest(b),b.$broadcast("ngGridEventStartCellEdit"),b.$emit("ngGridEventStartCellEdit"),b.$on("$destroy",b.$on("ngGridEventEndCellEdit",function(){b.isFocused=!1,a.digest(b)}))};return function(a,c){function d(){return a.enableCellEditOnFocus?j=!0:c.focus(),!0}function e(d){a.enableCellEditOnFocus&&(d.preventDefault(),j=!1,b(a,c))}function f(){return i=!0,a.enableCellEditOnFocus&&!j&&b(a,c),!0}function g(){return i=!1,!0}function h(d){return a.enableCellEditOnFocus||(i&&37!==d.keyCode&&38!==d.keyCode&&39!==d.keyCode&&40!==d.keyCode&&9!==d.keyCode&&!d.shiftKey&&13!==d.keyCode&&b(a,c),i&&d.shiftKey&&d.keyCode>=65&&d.keyCode<=90&&b(a,c),27===d.keyCode&&c.focus()),!0}var i=!1,j=!1;a.editCell=function(){a.enableCellEditOnFocus||setTimeout(function(){b(a,c)},0)},c.bind("mousedown",d),c.bind("click",e),c.bind("focus",f),c.bind("blur",g),c.bind("keydown",h),c.on("$destroy",function(){c.off("mousedown",d),c.off("click",e),c.off("focus",f),c.off("blur",g),c.off("keydown",h)})}}]),q.directive("ngCellText",function(){return function(a,b){function c(a){a.preventDefault()}function d(a){a.preventDefault()}b.bind("mouseover",c),b.bind("mouseleave",d),b.on("$destroy",function(){b.off("mouseover",c),b.off("mouseleave",d)})}}),q.directive("ngCell",["$compile","$domUtilityService",function(a,c){var d={scope:!1,compile:function(){return{pre:function(c,d){var e,f=c.col.cellTemplate.replace(l,"row.entity."+c.col.field);
+c.col.enableCellEdit?(e=c.col.cellEditTemplate,e=e.replace(o,c.col.cellEditableCondition),e=e.replace(m,f),e=e.replace(n,c.col.editableCellTemplate.replace(l,"row.entity."+c.col.field))):e=f;var g=b(e);d.append(g),a(g)(c),c.enableCellSelection&&-1===g[0].className.indexOf("ngSelectionCell")&&(g[0].setAttribute("tabindex",0),g.addClass("ngCellElement"))},post:function(a,b){a.enableCellSelection&&a.domAccessProvider.selectionHandlers(a,b),a.$on("$destroy",a.$on("ngGridEventDigestCell",function(){c.digest(a)}))}}}};return d}]),q.directive("ngEditCellIf",[function(){return{transclude:"element",priority:1e3,terminal:!0,restrict:"A",compile:function(a,b,c){return function(a,b,d){var e,f;a.$on("$destroy",a.$watch(d.ngEditCellIf,function(d){e&&(e.remove(),e=void 0),f&&(f.$destroy(),f=void 0),d&&(f=a.$new(),c(f,function(a){e=a,b.after(a)}))}))}}}}]),q.directive("ngGridFooter",["$compile","$templateCache",function(a,b){var c={scope:!1,compile:function(){return{pre:function(c,d){0===d.children().length&&d.append(a(b.get(c.gridId+"footerTemplate.html"))(c))}}}};return c}]),q.directive("ngGridMenu",["$compile","$templateCache",function(a,b){var c={scope:!1,compile:function(){return{pre:function(c,d){0===d.children().length&&d.append(a(b.get(c.gridId+"menuTemplate.html"))(c))}}}};return c}]),q.directive("ngGrid",["$compile","$filter","$templateCache","$sortService","$domUtilityService","$utilityService","$timeout","$parse","$http","$q",function(a,c,d,e,f,g,h,i,j,k){var l={scope:!0,compile:function(){return{pre:function(l,m,n){var o=b(m),p=l.$eval(n.ngGrid);p.gridDim=new v({outerHeight:b(o).height(),outerWidth:b(o).width()});var q=new z(l,p,e,f,c,d,g,h,i,j,k);return l.$on("$destroy",function(){p.gridDim=null,p.selectRow=null,p.selectItem=null,p.selectAll=null,p.selectVisible=null,p.groupBy=null,p.sortBy=null,p.gridId=null,p.ngGrid=null,p.$gridScope=null,p.$gridServices=null,l.domAccessProvider.grid=null,angular.element(q.styleSheet).remove(),q.styleSheet=null}),q.init().then(function(){if("string"==typeof p.columnDefs?l.$on("$destroy",l.$parent.$watch(p.columnDefs,function(a){return a?(q.lateBoundColumns=!1,l.columns=[],q.config.columnDefs=a,q.buildColumns(),q.eventProvider.assignEvents(),void f.RebuildGrid(l,q)):(q.refreshDomSizes(),void q.buildColumns())},!0)):q.buildColumns(),"string"==typeof p.totalServerItems?l.$on("$destroy",l.$parent.$watch(p.totalServerItems,function(a){l.totalServerItems=angular.isDefined(a)?a:0})):l.totalServerItems=0,"string"==typeof p.data){var c=function(a){q.data=b.extend([],a),q.rowFactory.fixRowCache(),angular.forEach(q.data,function(a,b){var c=q.rowMap[b]||b;q.rowCache[c]&&q.rowCache[c].ensureEntity(a),q.rowMap[c]=b}),q.searchProvider.evalFilter(),q.configureColumnWidths(),q.refreshDomSizes(),q.config.sortInfo.fields.length>0&&(q.sortColumnsInit(),l.$emit("ngGridEventSorted",q.config.sortInfo)),l.$emit("ngGridEventData",q.gridId)};l.$on("$destroy",l.$parent.$watch(p.data,c)),l.$on("$destroy",l.$parent.$watch(p.data+".length",function(){c(l.$eval(p.data)),l.adjustScrollTop(q.$viewport.scrollTop(),!0)}))}return q.footerController=new y(l,q),m.addClass("ngGrid").addClass(q.gridId.toString()),p.enableHighlighting||m.addClass("unselectable"),p.jqueryUITheme&&m.addClass("ui-widget"),m.append(a(d.get("gridTemplate.html"))(l)),f.AssignGridContainers(l,m,q),q.eventProvider=new x(q,l,f,h),p.selectRow=function(a,b){q.rowCache[a]&&(q.rowCache[a].clone&&q.rowCache[a].clone.setSelection(b?!0:!1),q.rowCache[a].setSelection(b?!0:!1))},p.selectItem=function(a,b){p.selectRow(q.rowMap[a],b)},p.selectAll=function(a){l.toggleSelectAll(a)},p.selectVisible=function(a){l.toggleSelectAll(a,!0)},p.groupBy=function(a){if(a)l.groupBy(l.columns.filter(function(b){return b.field===a})[0]);else{var c=b.extend(!0,[],l.configGroups);angular.forEach(c,l.groupBy)}},p.sortBy=function(a){var b=l.columns.filter(function(b){return b.field===a})[0];b&&b.sort()},p.gridId=q.gridId,p.ngGrid=q,p.$gridScope=l,p.$gridServices={SortService:e,DomUtilityService:f,UtilityService:g},l.$on("$destroy",l.$on("ngGridEventDigestGrid",function(){f.digest(l.$parent)})),l.$on("$destroy",l.$on("ngGridEventDigestGridParent",function(){f.digest(l.$parent)})),l.$evalAsync(function(){l.adjustScrollLeft(0)}),angular.forEach(p.plugins,function(a){"function"==typeof a&&(a=new a);var b=l.$new();a.init(b,q,p.$gridServices),p.plugins[g.getInstanceType(a)]=a,l.$on("$destroy",function(){b.$destroy()})}),"function"==typeof p.init&&p.init(q,l),null})}}}};return l}]),q.directive("ngHeaderCell",["$compile",function(a){var b={scope:!1,compile:function(){return{pre:function(b,c){c.append(a(b.col.headerCellTemplate)(b))}}}};return b}]),q.directive("ngHeaderRow",["$compile","$templateCache",function(a,b){var c={scope:!1,compile:function(){return{pre:function(c,d){0===d.children().length&&d.append(a(b.get(c.gridId+"headerRowTemplate.html"))(c))}}}};return c}]),q.directive("ngInput",[function(){return{require:"ngModel",link:function(a,b,c,d){function e(c){switch(c.keyCode){case 37:case 38:case 39:case 40:c.stopPropagation();break;case 27:a.$$phase||a.$apply(function(){d.$setViewValue(h),b.blur()});break;case 13:(a.enableCellEditOnFocus&&a.totalFilteredItemsLength()-1>a.row.rowIndex&&a.row.rowIndex>0||a.col.enableCellEdit)&&b.blur()}return!0}function f(a){a.stopPropagation()}function g(a){a.stopPropagation()}var h,i=a.$watch("ngModel",function(){h=d.$modelValue,i()});b.bind("keydown",e),b.bind("click",f),b.bind("mousedown",g),b.on("$destroy",function(){b.off("keydown",e),b.off("click",f),b.off("mousedown",g)}),a.$on("$destroy",a.$on("ngGridEventStartCellEdit",function(){b.focus(),b.select()})),angular.element(b).bind("blur",function(){a.$emit("ngGridEventEndCellEdit")})}}}]),q.directive("ngRow",["$compile","$domUtilityService","$templateCache",function(a,b,c){var d={scope:!1,compile:function(){return{pre:function(d,e){if(d.row.elm=e,d.row.clone&&(d.row.clone.elm=e),d.row.isAggRow){var f=c.get(d.gridId+"aggregateTemplate.html");f=d.row.aggLabelFilter?f.replace(k,"| "+d.row.aggLabelFilter):f.replace(k,""),e.append(a(f)(d))}else e.append(a(c.get(d.gridId+"rowTemplate.html"))(d));d.$on("$destroy",d.$on("ngGridEventDigestRow",function(){b.digest(d)}))}}}};return d}]),q.directive("ngViewport",[function(){return function(a,b){function c(b){var c=b.target.scrollLeft,d=b.target.scrollTop;return a.$headerContainer&&a.$headerContainer.scrollLeft(c),a.adjustScrollLeft(c),a.adjustScrollTop(d),a.forceSyncScrolling?i():(clearTimeout(g),g=setTimeout(i,150)),f=c,h=d,e=!1,!0}function d(){return e=!0,b.focus&&b.focus(),!0}var e,f,g,h=0,i=function(){a.$root.$$phase||a.$digest()};b.bind("scroll",c),b.bind("mousewheel DOMMouseScroll",d),b.on("$destroy",function(){b.off("scroll",c),b.off("mousewheel DOMMouseScroll",d)}),a.enableCellSelection||a.domAccessProvider.selectionHandlers(a,b)}}]),a.ngGrid.i18n.da={ngAggregateLabel:"artikler",ngGroupPanelDescription:"Grupér rækker udfra en kolonne ved at trække dens overskift hertil.",ngSearchPlaceHolder:"Søg...",ngMenuText:"Vælg kolonner:",ngShowingItemsLabel:"Viste rækker:",ngTotalItemsLabel:"Rækker totalt:",ngSelectedItemsLabel:"Valgte rækker:",ngPageSizeLabel:"Side størrelse:",ngPagerFirstTitle:"Første side",ngPagerNextTitle:"Næste side",ngPagerPrevTitle:"Forrige side",ngPagerLastTitle:"Sidste side"},a.ngGrid.i18n.de={ngAggregateLabel:"eintrag",ngGroupPanelDescription:"Ziehen Sie eine Spaltenüberschrift hierhin um nach dieser Spalte zu gruppieren.",ngSearchPlaceHolder:"Suche...",ngMenuText:"Spalten auswählen:",ngShowingItemsLabel:"Zeige Einträge:",ngTotalItemsLabel:"Einträge gesamt:",ngSelectedItemsLabel:"Ausgewählte Einträge:",ngPageSizeLabel:"Einträge pro Seite:",ngPagerFirstTitle:"Erste Seite",ngPagerNextTitle:"Nächste Seite",ngPagerPrevTitle:"Vorherige Seite",ngPagerLastTitle:"Letzte Seite"},a.ngGrid.i18n.en={ngAggregateLabel:"items",ngGroupPanelDescription:"Drag a column header here and drop it to group by that column.",ngSearchPlaceHolder:"Search...",ngMenuText:"Choose Columns:",ngShowingItemsLabel:"Showing Items:",ngTotalItemsLabel:"Total Items:",ngSelectedItemsLabel:"Selected Items:",ngPageSizeLabel:"Page Size:",ngPagerFirstTitle:"First Page",ngPagerNextTitle:"Next Page",ngPagerPrevTitle:"Previous Page",ngPagerLastTitle:"Last Page"},a.ngGrid.i18n.es={ngAggregateLabel:"Artículos",ngGroupPanelDescription:"Arrastre un encabezado de columna aquí y soltarlo para agrupar por esa columna.",ngSearchPlaceHolder:"Buscar...",ngMenuText:"Elegir columnas:",ngShowingItemsLabel:"Artículos Mostrando:",ngTotalItemsLabel:"Artículos Totales:",ngSelectedItemsLabel:"Artículos Seleccionados:",ngPageSizeLabel:"Tamaño de Página:",ngPagerFirstTitle:"Primera Página",ngPagerNextTitle:"Página Siguiente",ngPagerPrevTitle:"Página Anterior",ngPagerLastTitle:"Última Página"},a.ngGrid.i18n.fa={ngAggregateLabel:"موردها",ngGroupPanelDescription:"یک عنوان ستون اینجا را بردار و به گروهی از آن ستون بیانداز.",ngSearchPlaceHolder:"جستجو...",ngMenuText:"انتخاب ستون‌ها:",ngShowingItemsLabel:"نمایش موردها:",ngTotalItemsLabel:"همهٔ موردها:",ngSelectedItemsLabel:"موردهای انتخاب‌شده:",ngPageSizeLabel:"اندازهٔ صفحه:",ngPagerFirstTitle:"صفحهٔ اول",ngPagerNextTitle:"صفحهٔ بعد",ngPagerPrevTitle:"صفحهٔ قبل",ngPagerLastTitle:"آخرین صفحه"},a.ngGrid.i18n.fr={ngAggregateLabel:"articles",ngGroupPanelDescription:"Faites glisser un en-tête de colonne ici et déposez-le vers un groupe par cette colonne.",ngSearchPlaceHolder:"Recherche...",ngMenuText:"Choisir des colonnes:",ngShowingItemsLabel:"Articles Affichage des:",ngTotalItemsLabel:"Nombre total d'articles:",ngSelectedItemsLabel:"Éléments Articles:",ngPageSizeLabel:"Taille de page:",ngPagerFirstTitle:"Première page",ngPagerNextTitle:"Page Suivante",ngPagerPrevTitle:"Page précédente",ngPagerLastTitle:"Dernière page"},a.ngGrid.i18n.nl={ngAggregateLabel:"items",ngGroupPanelDescription:"Sleep hier een kolomkop om op te groeperen.",ngSearchPlaceHolder:"Zoeken...",ngMenuText:"Kies kolommen:",ngShowingItemsLabel:"Toon items:",ngTotalItemsLabel:"Totaal items:",ngSelectedItemsLabel:"Geselecteerde items:",ngPageSizeLabel:"Pagina grootte:, ",ngPagerFirstTitle:"Eerste pagina",ngPagerNextTitle:"Volgende pagina",ngPagerPrevTitle:"Vorige pagina",ngPagerLastTitle:"Laatste pagina"},a.ngGrid.i18n["pt-br"]={ngAggregateLabel:"itens",ngGroupPanelDescription:"Arraste e solte uma coluna aqui para agrupar por essa coluna",ngSearchPlaceHolder:"Procurar...",ngMenuText:"Selecione as colunas:",ngShowingItemsLabel:"Mostrando os Itens:",ngTotalItemsLabel:"Total de Itens:",ngSelectedItemsLabel:"Items Selecionados:",ngPageSizeLabel:"Tamanho da Página:",ngPagerFirstTitle:"Primeira Página",ngPagerNextTitle:"Próxima Página",ngPagerPrevTitle:"Página Anterior",ngPagerLastTitle:"Última Página"},a.ngGrid.i18n["zh-cn"]={ngAggregateLabel:"条目",ngGroupPanelDescription:"拖曳表头到此处以进行分组",ngSearchPlaceHolder:"搜索...",ngMenuText:"数据分组与选择列:",ngShowingItemsLabel:"当前显示条目:",ngTotalItemsLabel:"条目总数:",ngSelectedItemsLabel:"选中条目:",ngPageSizeLabel:"每页显示数:",ngPagerFirstTitle:"回到首页",ngPagerNextTitle:"下一页",ngPagerPrevTitle:"上一页",ngPagerLastTitle:"前往尾页"},a.ngGrid.i18n["zh-tw"]={ngAggregateLabel:"筆",ngGroupPanelDescription:"拖拉表頭到此處以進行分組",ngSearchPlaceHolder:"搜尋...",ngMenuText:"選擇欄位:",ngShowingItemsLabel:"目前顯示筆數:",ngTotalItemsLabel:"總筆數:",ngSelectedItemsLabel:"選取筆數:",ngPageSizeLabel:"每頁顯示:",ngPagerFirstTitle:"第一頁",ngPagerNextTitle:"下一頁",ngPagerPrevTitle:"上一頁",ngPagerLastTitle:"最後頁"},angular.module("ngGrid").run(["$templateCache",function(a){a.put("aggregateTemplate.html",'<div ng-click="row.toggleExpand()" ng-style="rowStyle(row)" class="ngAggregate">\r\n    <span class="ngAggregateText">{{row.label CUSTOM_FILTERS}} ({{row.totalChildren()}} {{AggItemsLabel}})</span>\r\n    <div class="{{row.aggClass()}}"></div>\r\n</div>\r\n'),a.put("cellEditTemplate.html",'<div ng-cell-has-focus ng-dblclick="CELL_EDITABLE_CONDITION && editCell()">\r\n	<div ng-edit-cell-if="!(isFocused && CELL_EDITABLE_CONDITION)">	\r\n		DISPLAY_CELL_TEMPLATE\r\n	</div>\r\n	<div ng-edit-cell-if="isFocused && CELL_EDITABLE_CONDITION">\r\n		EDITABLE_CELL_TEMPLATE\r\n	</div>\r\n</div>\r\n'),a.put("cellTemplate.html",'<div class="ngCellText" ng-class="col.colIndex()"><span ng-cell-text>{{COL_FIELD CUSTOM_FILTERS}}</span></div>'),a.put("checkboxCellTemplate.html",'<div class="ngSelectionCell"><input tabindex="-1" class="ngSelectionCheckbox" type="checkbox" ng-checked="row.selected" /></div>'),a.put("checkboxHeaderTemplate.html",'<input class="ngSelectionHeader" type="checkbox" ng-show="multiSelect" ng-model="allSelected" ng-change="toggleSelectAll(allSelected, true)"/>'),a.put("editableCellTemplate.html",'<input ng-class="\'colt\' + col.index" ng-input="COL_FIELD" ng-model="COL_FIELD" />'),a.put("footerTemplate.html",'<div ng-show="showFooter" class="ngFooterPanel" ng-class="{\'ui-widget-content\': jqueryUITheme, \'ui-corner-bottom\': jqueryUITheme}" ng-style="footerStyle()">\r\n    <div class="ngTotalSelectContainer" >\r\n        <div class="ngFooterTotalItems" ng-class="{\'ngNoMultiSelect\': !multiSelect}" >\r\n            <span class="ngLabel">{{i18n.ngTotalItemsLabel}} {{maxRows()}}</span><span ng-show="filterText.length > 0" class="ngLabel">({{i18n.ngShowingItemsLabel}} {{totalFilteredItemsLength()}})</span>\r\n        </div>\r\n        <div class="ngFooterSelectedItems" ng-show="multiSelect">\r\n            <span class="ngLabel">{{i18n.ngSelectedItemsLabel}} {{selectedItems.length}}</span>\r\n        </div>\r\n    </div>\r\n    <div class="ngPagerContainer" style="float: right; margin-top: 10px;" ng-show="enablePaging" ng-class="{\'ngNoMultiSelect\': !multiSelect}">\r\n        <div style="float:left; margin-right: 10px;" class="ngRowCountPicker">\r\n            <span style="float: left; margin-top: 3px;" class="ngLabel">{{i18n.ngPageSizeLabel}}</span>\r\n            <select style="float: left;height: 27px; width: 100px" ng-model="pagingOptions.pageSize" >\r\n                <option ng-repeat="size in pagingOptions.pageSizes">{{size}}</option>\r\n            </select>\r\n        </div>\r\n        <div style="float:left; margin-right: 10px; line-height:25px;" class="ngPagerControl" style="float: left; min-width: 135px;">\r\n            <button type="button" class="ngPagerButton" ng-click="pageToFirst()" ng-disabled="cantPageBackward()" title="{{i18n.ngPagerFirstTitle}}"><div class="ngPagerFirstTriangle"><div class="ngPagerFirstBar"></div></div></button>\r\n            <button type="button" class="ngPagerButton" ng-click="pageBackward()" ng-disabled="cantPageBackward()" title="{{i18n.ngPagerPrevTitle}}"><div class="ngPagerFirstTriangle ngPagerPrevTriangle"></div></button>\r\n            <input class="ngPagerCurrent" min="1" max="{{currentMaxPages}}" type="number" style="width:50px; height: 24px; margin-top: 1px; padding: 0 4px;" ng-model="pagingOptions.currentPage"/>\r\n            <span class="ngGridMaxPagesNumber" ng-show="maxPages() > 0">/ {{maxPages()}}</span>\r\n            <button type="button" class="ngPagerButton" ng-click="pageForward()" ng-disabled="cantPageForward()" title="{{i18n.ngPagerNextTitle}}"><div class="ngPagerLastTriangle ngPagerNextTriangle"></div></button>\r\n            <button type="button" class="ngPagerButton" ng-click="pageToLast()" ng-disabled="cantPageToLast()" title="{{i18n.ngPagerLastTitle}}"><div class="ngPagerLastTriangle"><div class="ngPagerLastBar"></div></div></button>\r\n        </div>\r\n    </div>\r\n</div>\r\n'),a.put("gridTemplate.html",'<div class="ngTopPanel" ng-class="{\'ui-widget-header\':jqueryUITheme, \'ui-corner-top\': jqueryUITheme}" ng-style="topPanelStyle()">\r\n    <div class="ngGroupPanel" ng-show="showGroupPanel()" ng-style="groupPanelStyle()">\r\n        <div class="ngGroupPanelDescription" ng-show="configGroups.length == 0">{{i18n.ngGroupPanelDescription}}</div>\r\n        <ul ng-show="configGroups.length > 0" class="ngGroupList">\r\n            <li class="ngGroupItem" ng-repeat="group in configGroups">\r\n                <span class="ngGroupElement">\r\n                    <span class="ngGroupName">{{group.displayName}}\r\n                        <span ng-click="removeGroup($index)" class="ngRemoveGroup">x</span>\r\n                    </span>\r\n                    <span ng-hide="$last" class="ngGroupArrow"></span>\r\n                </span>\r\n            </li>\r\n        </ul>\r\n    </div>\r\n    <div class="ngHeaderContainer" ng-style="headerStyle()">\r\n        <div ng-header-row class="ngHeaderScroller" ng-style="headerScrollerStyle()"></div>\r\n    </div>\r\n    <div ng-grid-menu></div>\r\n</div>\r\n<div class="ngViewport" unselectable="on" ng-viewport ng-class="{\'ui-widget-content\': jqueryUITheme}" ng-style="viewportStyle()">\r\n    <div class="ngCanvas" ng-style="canvasStyle()">\r\n        <div ng-style="rowStyle(row)" ng-repeat="row in renderedRows" ng-click="row.toggleSelected($event)" ng-class="row.alternatingRowClass()" ng-row></div>\r\n    </div>\r\n</div>\r\n<div ng-grid-footer></div>\r\n'),a.put("headerCellTemplate.html",'<div class="ngHeaderSortColumn {{col.headerClass}}" ng-style="{\'cursor\': col.cursor}" ng-class="{ \'ngSorted\': !col.noSortVisible() }">\r\n    <div ng-click="col.sort($event)" ng-class="\'colt\' + col.index" class="ngHeaderText">{{col.displayName}}</div>\r\n    <div class="ngSortButtonDown" ng-click="col.sort($event)" ng-show="col.showSortButtonDown()"></div>\r\n    <div class="ngSortButtonUp" ng-click="col.sort($event)" ng-show="col.showSortButtonUp()"></div>\r\n    <div class="ngSortPriority">{{col.sortPriority}}</div>\r\n    <div ng-class="{ ngPinnedIcon: col.pinned, ngUnPinnedIcon: !col.pinned }" ng-click="togglePin(col)" ng-show="col.pinnable"></div>\r\n</div>\r\n<div ng-show="col.resizable" class="ngHeaderGrip" ng-click="col.gripClick($event)" ng-mousedown="col.gripOnMouseDown($event)"></div>\r\n'),a.put("headerRowTemplate.html",'<div ng-style="{ height: col.headerRowHeight }" ng-repeat="col in renderedColumns" ng-class="col.colIndex()" class="ngHeaderCell">\r\n	<div class="ngVerticalBar" ng-style="{height: col.headerRowHeight}" ng-class="{ ngVerticalBarVisible: !$last }">&nbsp;</div>\r\n	<div ng-header-cell></div>\r\n</div>'),a.put("menuTemplate.html",'<div ng-show="showColumnMenu || showFilter"  class="ngHeaderButton" ng-click="toggleShowMenu()">\r\n    <div class="ngHeaderButtonArrow"></div>\r\n</div>\r\n<div ng-show="showMenu" class="ngColMenu">\r\n    <div ng-show="showFilter">\r\n        <input placeholder="{{i18n.ngSearchPlaceHolder}}" type="text" ng-model="filterText"/>\r\n    </div>\r\n    <div ng-show="showColumnMenu">\r\n        <span class="ngMenuText">{{i18n.ngMenuText}}</span>\r\n        <ul class="ngColList">\r\n            <li class="ngColListItem" ng-repeat="col in columns | ngColumns">\r\n                <label><input ng-disabled="col.pinned" type="checkbox" class="ngColListCheckbox" ng-model="col.visible"/>{{col.displayName}}</label>\r\n				<a title="Group By" ng-class="col.groupedByClass()" ng-show="col.groupable && col.visible" ng-click="groupBy(col)"></a>\r\n				<span class="ngGroupingNumber" ng-show="col.groupIndex > 0">{{col.groupIndex}}</span>          \r\n            </li>\r\n        </ul>\r\n    </div>\r\n</div>'),a.put("rowTemplate.html",'<div ng-style="{ \'cursor\': row.cursor }" ng-repeat="col in renderedColumns" ng-class="col.colIndex()" class="ngCell {{col.cellClass}}">\r\n	<div class="ngVerticalBar" ng-style="{height: rowHeight}" ng-class="{ ngVerticalBarVisible: !$last }">&nbsp;</div>\r\n	<div ng-cell></div>\r\n</div>')}])}(window,jQuery),d3=function(){function a(a){return null!=a&&!isNaN(a)}function b(a){return a.length}function c(a){for(var b=1;a*b%1;)b*=10;return b}function d(a,b){try{for(var c in b)Object.defineProperty(a.prototype,c,{value:b[c],enumerable:!1})}catch(d){a.prototype=b}}function e(){}function f(){}function g(a,b,c){return function(){var d=c.apply(b,arguments);return d===b?a:d}}function h(a,b){if(b in a)return b;b=b.charAt(0).toUpperCase()+b.substring(1);for(var c=0,d=lh.length;d>c;++c){var e=lh[c]+b;if(e in a)return e}}function i(){}function j(){}function k(a){function b(){for(var b,d=c,e=-1,f=d.length;++e<f;)(b=d[e].on)&&b.apply(this,arguments);return a}var c=[],d=new e;return b.on=function(b,e){var f,g=d.get(b);return arguments.length<2?g&&g.on:(g&&(g.on=null,c=c.slice(0,f=c.indexOf(g)).concat(c.slice(f+1)),d.remove(b)),e&&c.push(d.set(b,{on:e})),a)},b}function l(){Wg.event.preventDefault()}function m(){for(var a,b=Wg.event;a=b.sourceEvent;)b=a;return b}function n(a){for(var b=new j,c=0,d=arguments.length;++c<d;)b[arguments[c]]=k(b);return b.of=function(c,d){return function(e){try{var f=e.sourceEvent=Wg.event;e.target=a,Wg.event=e,b[e.type].apply(c,d)}finally{Wg.event=f}}},b}function o(a){return nh(a,sh),a}function p(a){return"function"==typeof a?a:function(){return oh(a,this)}}function q(a){return"function"==typeof a?a:function(){return ph(a,this)}}function r(a,b){function c(){this.removeAttribute(a)}function d(){this.removeAttributeNS(a.space,a.local)}function e(){this.setAttribute(a,b)}function f(){this.setAttributeNS(a.space,a.local,b)}function g(){var c=b.apply(this,arguments);null==c?this.removeAttribute(a):this.setAttribute(a,c)}function h(){var c=b.apply(this,arguments);null==c?this.removeAttributeNS(a.space,a.local):this.setAttributeNS(a.space,a.local,c)}return a=Wg.ns.qualify(a),null==b?a.local?d:c:"function"==typeof b?a.local?h:g:a.local?f:e}function s(a){return a.trim().replace(/\s+/g," ")}function t(a){return new RegExp("(?:^|\\s+)"+Wg.requote(a)+"(?:\\s+|$)","g")}function u(a){return a.trim().split(/^|\s+/)}function v(a,b){function c(){for(var c=-1;++c<e;)a[c](this,b)}function d(){for(var c=-1,d=b.apply(this,arguments);++c<e;)a[c](this,d)}a=u(a).map(w);var e=a.length;return"function"==typeof b?d:c}function w(a){var b=t(a);return function(c,d){if(e=c.classList)return d?e.add(a):e.remove(a);var e=c.getAttribute("class")||"";d?(b.lastIndex=0,b.test(e)||c.setAttribute("class",s(e+" "+a))):c.setAttribute("class",s(e.replace(b," ")))}}function x(a,b,c){function d(){this.style.removeProperty(a)}function e(){this.style.setProperty(a,b,c)}function f(){var d=b.apply(this,arguments);null==d?this.style.removeProperty(a):this.style.setProperty(a,d,c)}return null==b?d:"function"==typeof b?f:e}function y(a,b){function c(){delete this[a]}function d(){this[a]=b}function e(){var c=b.apply(this,arguments);null==c?delete this[a]:this[a]=c}return null==b?c:"function"==typeof b?e:d}function z(a){return"function"==typeof a?a:(a=Wg.ns.qualify(a)).local?function(){return this.ownerDocument.createElementNS(a.space,a.local)}:function(){return this.ownerDocument.createElementNS(this.namespaceURI,a)}}function A(a){return{__data__:a}}function B(a){return function(){return rh(this,a)}}function C(a){return arguments.length||(a=Wg.ascending),function(b,c){return b&&c?a(b.__data__,c.__data__):!b-!c}}function D(a,b){for(var c=0,d=a.length;d>c;c++)for(var e,f=a[c],g=0,h=f.length;h>g;g++)(e=f[g])&&b(e,g,c);return a}function E(a){return nh(a,uh),a}function F(a){var b,c;return function(d,e,f){var g,h=a[f].update,i=h.length;for(f!=c&&(c=f,b=0),e>=b&&(b=e+1);!(g=h[b])&&++b<i;);return g}}function G(){var a=this.__transition__;a&&++a.active}function H(a,b,c){function d(){var b=this[g];b&&(this.removeEventListener(a,b,b.$),delete this[g])}function e(){var e=j(b,Yg(arguments));d.call(this),this.addEventListener(a,this[g]=e,e.$=c),e._=b}function f(){var b,c=new RegExp("^__on([^.]+)"+Wg.requote(a)+"$");for(var d in this)if(b=d.match(c)){var e=this[d];this.removeEventListener(b[1],e,e.$),delete this[d]}}var g="__on"+a,h=a.indexOf("."),j=I;h>0&&(a=a.substring(0,h));var k=wh.get(a);return k&&(a=k,j=J),h?b?e:d:b?i:f}function I(a,b){return function(c){var d=Wg.event;Wg.event=c,b[0]=this.__data__;try{a.apply(this,b)}finally{Wg.event=d}}}function J(a,b){var c=I(a,b);return function(a){var b=this,d=a.relatedTarget;d&&(d===b||8&d.compareDocumentPosition(b))||c.call(b,a)}}function K(){var a=".dragsuppress-"+ ++yh,b="click"+a,c=Wg.select(_g).on("touchmove"+a,l).on("dragstart"+a,l).on("selectstart"+a,l);if(xh){var d=$g.style,e=d[xh];d[xh]="none"}return function(f){function g(){c.on(b,null)}c.on(a,null),xh&&(d[xh]=e),f&&(c.on(b,function(){l(),g()},!0),setTimeout(g,0))}}function L(a,b){b.changedTouches&&(b=b.changedTouches[0]);var c=a.ownerSVGElement||a;if(c.createSVGPoint){var d=c.createSVGPoint();if(0>zh&&(_g.scrollX||_g.scrollY)){c=Wg.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var e=c[0][0].getScreenCTM();zh=!(e.f||e.e),c.remove()}return zh?(d.x=b.pageX,d.y=b.pageY):(d.x=b.clientX,d.y=b.clientY),d=d.matrixTransform(a.getScreenCTM().inverse()),[d.x,d.y]}var f=a.getBoundingClientRect();return[b.clientX-f.left-a.clientLeft,b.clientY-f.top-a.clientTop]}function M(a){return a>0?1:0>a?-1:0}function N(a){return a>1?0:-1>a?Ah:Math.acos(a)}function O(a){return a>1?Ch:-1>a?-Ch:Math.asin(a)}function P(a){return((a=Math.exp(a))-1/a)/2}function Q(a){return((a=Math.exp(a))+1/a)/2}function R(a){return((a=Math.exp(2*a))-1)/(a+1)}function S(a){return(a=Math.sin(a/2))*a}function T(){}function U(a,b,c){return new V(a,b,c)}function V(a,b,c){this.h=a,this.s=b,this.l=c}function W(a,b,c){function d(a){return a>360?a-=360:0>a&&(a+=360),60>a?f+(g-f)*a/60:180>a?g:240>a?f+(g-f)*(240-a)/60:f}function e(a){return Math.round(255*d(a))}var f,g;return a=isNaN(a)?0:(a%=360)<0?a+360:a,b=isNaN(b)?0:0>b?0:b>1?1:b,c=0>c?0:c>1?1:c,g=.5>=c?c*(1+b):c+b-c*b,f=2*c-g,hb(e(a+120),e(a),e(a-120))}function X(a,b,c){return new Y(a,b,c)}function Y(a,b,c){this.h=a,this.c=b,this.l=c}function Z(a,b,c){return isNaN(a)&&(a=0),isNaN(b)&&(b=0),$(c,Math.cos(a*=Fh)*b,Math.sin(a)*b)}function $(a,b,c){return new _(a,b,c)}function _(a,b,c){this.l=a,this.a=b,this.b=c}function ab(a,b,c){var d=(a+16)/116,e=d+b/500,f=d-c/200;return e=cb(e)*Qh,d=cb(d)*Rh,f=cb(f)*Sh,hb(eb(3.2404542*e-1.5371385*d-.4985314*f),eb(-.969266*e+1.8760108*d+.041556*f),eb(.0556434*e-.2040259*d+1.0572252*f))}function bb(a,b,c){return a>0?X(Math.atan2(c,b)*Gh,Math.sqrt(b*b+c*c),a):X(0/0,0/0,a)}function cb(a){return a>.206893034?a*a*a:(a-4/29)/7.787037}function db(a){return a>.008856?Math.pow(a,1/3):7.787037*a+4/29}function eb(a){return Math.round(255*(.00304>=a?12.92*a:1.055*Math.pow(a,1/2.4)-.055))}function fb(a){return hb(a>>16,a>>8&255,255&a)}function gb(a){return fb(a)+""}function hb(a,b,c){return new ib(a,b,c)}function ib(a,b,c){this.r=a,this.g=b,this.b=c}function jb(a){return 16>a?"0"+Math.max(0,a).toString(16):Math.min(255,a).toString(16)}function kb(a,b,c){var d,e,f,g=0,h=0,i=0;if(d=/([a-z]+)\((.*)\)/i.exec(a))switch(e=d[2].split(","),d[1]){case"hsl":return c(parseFloat(e[0]),parseFloat(e[1])/100,parseFloat(e[2])/100);case"rgb":return b(ob(e[0]),ob(e[1]),ob(e[2]))}return(f=Vh.get(a))?b(f.r,f.g,f.b):(null!=a&&"#"===a.charAt(0)&&(4===a.length?(g=a.charAt(1),g+=g,h=a.charAt(2),h+=h,i=a.charAt(3),i+=i):7===a.length&&(g=a.substring(1,3),h=a.substring(3,5),i=a.substring(5,7)),g=parseInt(g,16),h=parseInt(h,16),i=parseInt(i,16)),b(g,h,i))}function lb(a,b,c){var d,e,f=Math.min(a/=255,b/=255,c/=255),g=Math.max(a,b,c),h=g-f,i=(g+f)/2;return h?(e=.5>i?h/(g+f):h/(2-g-f),d=a==g?(b-c)/h+(c>b?6:0):b==g?(c-a)/h+2:(a-b)/h+4,d*=60):(d=0/0,e=i>0&&1>i?0:d),U(d,e,i)}function mb(a,b,c){a=nb(a),b=nb(b),c=nb(c);var d=db((.4124564*a+.3575761*b+.1804375*c)/Qh),e=db((.2126729*a+.7151522*b+.072175*c)/Rh),f=db((.0193339*a+.119192*b+.9503041*c)/Sh);return $(116*e-16,500*(d-e),200*(e-f))}function nb(a){return(a/=255)<=.04045?a/12.92:Math.pow((a+.055)/1.055,2.4)}function ob(a){var b=parseFloat(a);return"%"===a.charAt(a.length-1)?Math.round(2.55*b):b}function pb(a){return"function"==typeof a?a:function(){return a}}function qb(a){return a}function rb(a){return function(b,c,d){return 2===arguments.length&&"function"==typeof c&&(d=c,c=null),sb(b,c,a,d)}}function sb(a,b,c,d){function e(){var a,b=i.status;if(!b&&i.responseText||b>=200&&300>b||304===b){try{a=c.call(f,i)}catch(d){return void g.error.call(f,d)}g.load.call(f,a)}else g.error.call(f,i)}var f={},g=Wg.dispatch("beforesend","progress","load","error"),h={},i=new XMLHttpRequest,j=null;return!_g.XDomainRequest||"withCredentials"in i||!/^(http(s)?:)?\/\//.test(a)||(i=new XDomainRequest),"onload"in i?i.onload=i.onerror=e:i.onreadystatechange=function(){i.readyState>3&&e()},i.onprogress=function(a){var b=Wg.event;Wg.event=a;try{g.progress.call(f,i)}finally{Wg.event=b}},f.header=function(a,b){return a=(a+"").toLowerCase(),arguments.length<2?h[a]:(null==b?delete h[a]:h[a]=b+"",f)},f.mimeType=function(a){return arguments.length?(b=null==a?null:a+"",f):b},f.responseType=function(a){return arguments.length?(j=a,f):j},f.response=function(a){return c=a,f},["get","post"].forEach(function(a){f[a]=function(){return f.send.apply(f,[a].concat(Yg(arguments)))}}),f.send=function(c,d,e){if(2===arguments.length&&"function"==typeof d&&(e=d,d=null),i.open(c,a,!0),null==b||"accept"in h||(h.accept=b+",*/*"),i.setRequestHeader)for(var k in h)i.setRequestHeader(k,h[k]);return null!=b&&i.overrideMimeType&&i.overrideMimeType(b),null!=j&&(i.responseType=j),null!=e&&f.on("error",e).on("load",function(a){e(null,a)}),g.beforesend.call(f,i),i.send(null==d?null:d),f},f.abort=function(){return i.abort(),f},Wg.rebind(f,g,"on"),null==d?f:f.get(tb(d))}function tb(a){return 1===a.length?function(b,c){a(null==b?c:null)}:a}function ub(){var a=vb(),b=wb()-a;b>24?(isFinite(b)&&(clearTimeout(Zh),Zh=setTimeout(ub,b)),Yh=0):(Yh=1,_h(ub))}function vb(){var a=Date.now();for($h=Wh;$h;)a>=$h.t&&($h.f=$h.c(a-$h.t)),$h=$h.n;return a}function wb(){for(var a,b=Wh,c=1/0;b;)b.f?b=a?a.n=b.n:Wh=b.n:(b.t<c&&(c=b.t),b=(a=b).n);return Xh=a,c}function xb(a,b){var c=Math.pow(10,3*ih(8-b));return{scale:b>8?function(a){return a/c}:function(a){return a*c},symbol:a}}function yb(a,b){return b-(a?Math.ceil(Math.log(a)/Math.LN10):1)}function zb(a){return a+""}function Ab(){}function Bb(a,b,c){var d=c.s=a+b,e=d-a,f=d-e;c.t=a-f+(b-e)}function Cb(a,b){a&&li.hasOwnProperty(a.type)&&li[a.type](a,b)}function Db(a,b,c){var d,e=-1,f=a.length-c;for(b.lineStart();++e<f;)d=a[e],b.point(d[0],d[1],d[2]);b.lineEnd()}function Eb(a,b){var c=-1,d=a.length;for(b.polygonStart();++c<d;)Db(a[c],b,1);b.polygonEnd()}function Fb(){function a(a,b){a*=Fh,b=b*Fh/2+Ah/4;var c=a-d,g=Math.cos(b),h=Math.sin(b),i=f*h,j=e*g+i*Math.cos(c),k=i*Math.sin(c);ni.add(Math.atan2(k,j)),d=a,e=g,f=h}var b,c,d,e,f;oi.point=function(g,h){oi.point=a,d=(b=g)*Fh,e=Math.cos(h=(c=h)*Fh/2+Ah/4),f=Math.sin(h)},oi.lineEnd=function(){a(b,c)}}function Gb(a){var b=a[0],c=a[1],d=Math.cos(c);return[d*Math.cos(b),d*Math.sin(b),Math.sin(c)]}function Hb(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]}function Ib(a,b){return[a[1]*b[2]-a[2]*b[1],a[2]*b[0]-a[0]*b[2],a[0]*b[1]-a[1]*b[0]]}function Jb(a,b){a[0]+=b[0],a[1]+=b[1],a[2]+=b[2]}function Kb(a,b){return[a[0]*b,a[1]*b,a[2]*b]}function Lb(a){var b=Math.sqrt(a[0]*a[0]+a[1]*a[1]+a[2]*a[2]);a[0]/=b,a[1]/=b,a[2]/=b}function Mb(a){return[Math.atan2(a[1],a[0]),O(a[2])]}function Nb(a,b){return ih(a[0]-b[0])<Dh&&ih(a[1]-b[1])<Dh}function Ob(a,b){a*=Fh;var c=Math.cos(b*=Fh);Pb(c*Math.cos(a),c*Math.sin(a),Math.sin(b))}function Pb(a,b,c){++pi,ri+=(a-ri)/pi,si+=(b-si)/pi,ti+=(c-ti)/pi}function Qb(){function a(a,e){a*=Fh;var f=Math.cos(e*=Fh),g=f*Math.cos(a),h=f*Math.sin(a),i=Math.sin(e),j=Math.atan2(Math.sqrt((j=c*i-d*h)*j+(j=d*g-b*i)*j+(j=b*h-c*g)*j),b*g+c*h+d*i);qi+=j,ui+=j*(b+(b=g)),vi+=j*(c+(c=h)),wi+=j*(d+(d=i)),Pb(b,c,d)}var b,c,d;Ai.point=function(e,f){e*=Fh;var g=Math.cos(f*=Fh);b=g*Math.cos(e),c=g*Math.sin(e),d=Math.sin(f),Ai.point=a,Pb(b,c,d)}}function Rb(){Ai.point=Ob}function Sb(){function a(a,b){a*=Fh;var c=Math.cos(b*=Fh),g=c*Math.cos(a),h=c*Math.sin(a),i=Math.sin(b),j=e*i-f*h,k=f*g-d*i,l=d*h-e*g,m=Math.sqrt(j*j+k*k+l*l),n=d*g+e*h+f*i,o=m&&-N(n)/m,p=Math.atan2(m,n);xi+=o*j,yi+=o*k,zi+=o*l,qi+=p,ui+=p*(d+(d=g)),vi+=p*(e+(e=h)),wi+=p*(f+(f=i)),Pb(d,e,f)}var b,c,d,e,f;Ai.point=function(g,h){b=g,c=h,Ai.point=a,g*=Fh;var i=Math.cos(h*=Fh);d=i*Math.cos(g),e=i*Math.sin(g),f=Math.sin(h),Pb(d,e,f)
+},Ai.lineEnd=function(){a(b,c),Ai.lineEnd=Rb,Ai.point=Ob}}function Tb(){return!0}function Ub(a,b,c,d,e){var f=[],g=[];if(a.forEach(function(a){if(!((b=a.length-1)<=0)){var b,c=a[0],d=a[b];if(Nb(c,d)){e.lineStart();for(var h=0;b>h;++h)e.point((c=a[h])[0],c[1]);return void e.lineEnd()}var i=new Wb(c,a,null,!0),j=new Wb(c,null,i,!1);i.o=j,f.push(i),g.push(j),i=new Wb(d,a,null,!1),j=new Wb(d,null,i,!0),i.o=j,f.push(i),g.push(j)}}),g.sort(b),Vb(f),Vb(g),f.length){for(var h=0,i=c,j=g.length;j>h;++h)g[h].e=i=!i;for(var k,l,m=f[0];;){for(var n=m,o=!0;n.v;)if((n=n.n)===m)return;k=n.z,e.lineStart();do{if(n.v=n.o.v=!0,n.e){if(o)for(var h=0,j=k.length;j>h;++h)e.point((l=k[h])[0],l[1]);else d(n.x,n.n.x,1,e);n=n.n}else{if(o){k=n.p.z;for(var h=k.length-1;h>=0;--h)e.point((l=k[h])[0],l[1])}else d(n.x,n.p.x,-1,e);n=n.p}n=n.o,k=n.z,o=!o}while(!n.v);e.lineEnd()}}}function Vb(a){if(b=a.length){for(var b,c,d=0,e=a[0];++d<b;)e.n=c=a[d],c.p=e,e=c;e.n=c=a[0],c.p=e}}function Wb(a,b,c,d){this.x=a,this.z=b,this.o=c,this.e=d,this.v=!1,this.n=this.p=null}function Xb(a,b,c,d){return function(e,f){function g(b,c){var d=e(b,c);a(b=d[0],c=d[1])&&f.point(b,c)}function h(a,b){var c=e(a,b);q.point(c[0],c[1])}function i(){s.point=h,q.lineStart()}function j(){s.point=g,q.lineEnd()}function k(a,b){p.push([a,b]);var c=e(a,b);u.point(c[0],c[1])}function l(){u.lineStart(),p=[]}function m(){k(p[0][0],p[0][1]),u.lineEnd();var a,b=u.clean(),c=t.buffer(),d=c.length;if(p.pop(),o.push(p),p=null,d){if(1&b){a=c[0];var e,d=a.length-1,g=-1;for(f.lineStart();++g<d;)f.point((e=a[g])[0],e[1]);return void f.lineEnd()}d>1&&2&b&&c.push(c.pop().concat(c.shift())),n.push(c.filter(Yb))}}var n,o,p,q=b(f),r=e.invert(d[0],d[1]),s={point:g,lineStart:i,lineEnd:j,polygonStart:function(){s.point=k,s.lineStart=l,s.lineEnd=m,n=[],o=[],f.polygonStart()},polygonEnd:function(){s.point=g,s.lineStart=i,s.lineEnd=j,n=Wg.merge(n);var a=_b(r,o);n.length?Ub(n,$b,a,c,f):a&&(f.lineStart(),c(null,null,1,f),f.lineEnd()),f.polygonEnd(),n=o=null},sphere:function(){f.polygonStart(),f.lineStart(),c(null,null,1,f),f.lineEnd(),f.polygonEnd()}},t=Zb(),u=b(t);return s}}function Yb(a){return a.length>1}function Zb(){var a,b=[];return{lineStart:function(){b.push(a=[])},point:function(b,c){a.push([b,c])},lineEnd:i,buffer:function(){var c=b;return b=[],a=null,c},rejoin:function(){b.length>1&&b.push(b.pop().concat(b.shift()))}}}function $b(a,b){return((a=a.x)[0]<0?a[1]-Ch-Dh:Ch-a[1])-((b=b.x)[0]<0?b[1]-Ch-Dh:Ch-b[1])}function _b(a,b){var c=a[0],d=a[1],e=[Math.sin(c),-Math.cos(c),0],f=0,g=0;ni.reset();for(var h=0,i=b.length;i>h;++h){var j=b[h],k=j.length;if(k)for(var l=j[0],m=l[0],n=l[1]/2+Ah/4,o=Math.sin(n),p=Math.cos(n),q=1;;){q===k&&(q=0),a=j[q];var r=a[0],s=a[1]/2+Ah/4,t=Math.sin(s),u=Math.cos(s),v=r-m,w=ih(v)>Ah,x=o*t;if(ni.add(Math.atan2(x*Math.sin(v),p*u+x*Math.cos(v))),f+=w?v+(v>=0?Bh:-Bh):v,w^m>=c^r>=c){var y=Ib(Gb(l),Gb(a));Lb(y);var z=Ib(e,y);Lb(z);var A=(w^v>=0?-1:1)*O(z[2]);(d>A||d===A&&(y[0]||y[1]))&&(g+=w^v>=0?1:-1)}if(!q++)break;m=r,o=t,p=u,l=a}}return(-Dh>f||Dh>f&&0>ni)^1&g}function ac(a){var b,c=0/0,d=0/0,e=0/0;return{lineStart:function(){a.lineStart(),b=1},point:function(f,g){var h=f>0?Ah:-Ah,i=ih(f-c);ih(i-Ah)<Dh?(a.point(c,d=(d+g)/2>0?Ch:-Ch),a.point(e,d),a.lineEnd(),a.lineStart(),a.point(h,d),a.point(f,d),b=0):e!==h&&i>=Ah&&(ih(c-e)<Dh&&(c-=e*Dh),ih(f-h)<Dh&&(f-=h*Dh),d=bc(c,d,f,g),a.point(e,d),a.lineEnd(),a.lineStart(),a.point(h,d),b=0),a.point(c=f,d=g),e=h},lineEnd:function(){a.lineEnd(),c=d=0/0},clean:function(){return 2-b}}}function bc(a,b,c,d){var e,f,g=Math.sin(a-c);return ih(g)>Dh?Math.atan((Math.sin(b)*(f=Math.cos(d))*Math.sin(c)-Math.sin(d)*(e=Math.cos(b))*Math.sin(a))/(e*f*g)):(b+d)/2}function cc(a,b,c,d){var e;if(null==a)e=c*Ch,d.point(-Ah,e),d.point(0,e),d.point(Ah,e),d.point(Ah,0),d.point(Ah,-e),d.point(0,-e),d.point(-Ah,-e),d.point(-Ah,0),d.point(-Ah,e);else if(ih(a[0]-b[0])>Dh){var f=a[0]<b[0]?Ah:-Ah;e=c*f/2,d.point(-f,e),d.point(0,e),d.point(f,e)}else d.point(b[0],b[1])}function dc(a){function b(a,b){return Math.cos(a)*Math.cos(b)>f}function c(a){var c,f,i,j,k;return{lineStart:function(){j=i=!1,k=1},point:function(l,m){var n,o=[l,m],p=b(l,m),q=g?p?0:e(l,m):p?e(l+(0>l?Ah:-Ah),m):0;if(!c&&(j=i=p)&&a.lineStart(),p!==i&&(n=d(c,o),(Nb(c,n)||Nb(o,n))&&(o[0]+=Dh,o[1]+=Dh,p=b(o[0],o[1]))),p!==i)k=0,p?(a.lineStart(),n=d(o,c),a.point(n[0],n[1])):(n=d(c,o),a.point(n[0],n[1]),a.lineEnd()),c=n;else if(h&&c&&g^p){var r;q&f||!(r=d(o,c,!0))||(k=0,g?(a.lineStart(),a.point(r[0][0],r[0][1]),a.point(r[1][0],r[1][1]),a.lineEnd()):(a.point(r[1][0],r[1][1]),a.lineEnd(),a.lineStart(),a.point(r[0][0],r[0][1])))}!p||c&&Nb(c,o)||a.point(o[0],o[1]),c=o,i=p,f=q},lineEnd:function(){i&&a.lineEnd(),c=null},clean:function(){return k|(j&&i)<<1}}}function d(a,b,c){var d=Gb(a),e=Gb(b),g=[1,0,0],h=Ib(d,e),i=Hb(h,h),j=h[0],k=i-j*j;if(!k)return!c&&a;var l=f*i/k,m=-f*j/k,n=Ib(g,h),o=Kb(g,l),p=Kb(h,m);Jb(o,p);var q=n,r=Hb(o,q),s=Hb(q,q),t=r*r-s*(Hb(o,o)-1);if(!(0>t)){var u=Math.sqrt(t),v=Kb(q,(-r-u)/s);if(Jb(v,o),v=Mb(v),!c)return v;var w,x=a[0],y=b[0],z=a[1],A=b[1];x>y&&(w=x,x=y,y=w);var B=y-x,C=ih(B-Ah)<Dh,D=C||Dh>B;if(!C&&z>A&&(w=z,z=A,A=w),D?C?z+A>0^v[1]<(ih(v[0]-x)<Dh?z:A):z<=v[1]&&v[1]<=A:B>Ah^(x<=v[0]&&v[0]<=y)){var E=Kb(q,(-r+u)/s);return Jb(E,o),[v,Mb(E)]}}}function e(b,c){var d=g?a:Ah-a,e=0;return-d>b?e|=1:b>d&&(e|=2),-d>c?e|=4:c>d&&(e|=8),e}var f=Math.cos(a),g=f>0,h=ih(f)>Dh,i=Fc(a,6*Fh);return Xb(b,c,i,g?[0,-a]:[-Ah,a-Ah])}function ec(a,b,c,d){return function(e){var f,g=e.a,h=e.b,i=g.x,j=g.y,k=h.x,l=h.y,m=0,n=1,o=k-i,p=l-j;if(f=a-i,o||!(f>0)){if(f/=o,0>o){if(m>f)return;n>f&&(n=f)}else if(o>0){if(f>n)return;f>m&&(m=f)}if(f=c-i,o||!(0>f)){if(f/=o,0>o){if(f>n)return;f>m&&(m=f)}else if(o>0){if(m>f)return;n>f&&(n=f)}if(f=b-j,p||!(f>0)){if(f/=p,0>p){if(m>f)return;n>f&&(n=f)}else if(p>0){if(f>n)return;f>m&&(m=f)}if(f=d-j,p||!(0>f)){if(f/=p,0>p){if(f>n)return;f>m&&(m=f)}else if(p>0){if(m>f)return;n>f&&(n=f)}return m>0&&(e.a={x:i+m*o,y:j+m*p}),1>n&&(e.b={x:i+n*o,y:j+n*p}),e}}}}}}function fc(a,b,c,d){function e(d,e){return ih(d[0]-a)<Dh?e>0?0:3:ih(d[0]-c)<Dh?e>0?2:1:ih(d[1]-b)<Dh?e>0?1:0:e>0?3:2}function f(a,b){return g(a.x,b.x)}function g(a,b){var c=e(a,1),d=e(b,1);return c!==d?c-d:0===c?b[1]-a[1]:1===c?a[0]-b[0]:2===c?a[1]-b[1]:b[0]-a[0]}return function(h){function i(a){for(var b=0,c=r.length,d=a[1],e=0;c>e;++e)for(var f,g=1,h=r[e],i=h.length,k=h[0];i>g;++g)f=h[g],k[1]<=d?f[1]>d&&j(k,f,a)>0&&++b:f[1]<=d&&j(k,f,a)<0&&--b,k=f;return 0!==b}function j(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1])}function k(f,h,i,j){var k=0,l=0;if(null==f||(k=e(f,i))!==(l=e(h,i))||g(f,h)<0^i>0){do j.point(0===k||3===k?a:c,k>1?d:b);while((k=(k+i+4)%4)!==l)}else j.point(h[0],h[1])}function l(e,f){return e>=a&&c>=e&&f>=b&&d>=f}function m(a,b){l(a,b)&&h.point(a,b)}function n(){E.point=p,r&&r.push(s=[]),z=!0,y=!1,w=x=0/0}function o(){q&&(p(t,u),v&&y&&C.rejoin(),q.push(C.buffer())),E.point=m,y&&h.lineEnd()}function p(a,b){a=Math.max(-Ci,Math.min(Ci,a)),b=Math.max(-Ci,Math.min(Ci,b));var c=l(a,b);if(r&&s.push([a,b]),z)t=a,u=b,v=c,z=!1,c&&(h.lineStart(),h.point(a,b));else if(c&&y)h.point(a,b);else{var d={a:{x:w,y:x},b:{x:a,y:b}};D(d)?(y||(h.lineStart(),h.point(d.a.x,d.a.y)),h.point(d.b.x,d.b.y),c||h.lineEnd(),A=!1):c&&(h.lineStart(),h.point(a,b),A=!1)}w=a,x=b,y=c}var q,r,s,t,u,v,w,x,y,z,A,B=h,C=Zb(),D=ec(a,b,c,d),E={point:m,lineStart:n,lineEnd:o,polygonStart:function(){h=C,q=[],r=[],A=!0},polygonEnd:function(){h=B,q=Wg.merge(q);var b=i([a,d]),c=A&&b,e=q.length;(c||e)&&(h.polygonStart(),c&&(h.lineStart(),k(null,null,1,h),h.lineEnd()),e&&Ub(q,f,b,k,h),h.polygonEnd()),q=r=s=null}};return E}}function gc(a,b){function c(c,d){return c=a(c,d),b(c[0],c[1])}return a.invert&&b.invert&&(c.invert=function(c,d){return c=b.invert(c,d),c&&a.invert(c[0],c[1])}),c}function hc(a){var b=0,c=Ah/3,d=xc(a),e=d(b,c);return e.parallels=function(a){return arguments.length?d(b=a[0]*Ah/180,c=a[1]*Ah/180):[b/Ah*180,c/Ah*180]},e}function ic(a,b){function c(a,b){var c=Math.sqrt(f-2*e*Math.sin(b))/e;return[c*Math.sin(a*=e),g-c*Math.cos(a)]}var d=Math.sin(a),e=(d+Math.sin(b))/2,f=1+d*(2*e-d),g=Math.sqrt(f)/e;return c.invert=function(a,b){var c=g-b;return[Math.atan2(a,c)/e,O((f-(a*a+c*c)*e*e)/(2*e))]},c}function jc(){function a(a,b){Ei+=e*a-d*b,d=a,e=b}var b,c,d,e;Ji.point=function(f,g){Ji.point=a,b=d=f,c=e=g},Ji.lineEnd=function(){a(b,c)}}function kc(a,b){Fi>a&&(Fi=a),a>Hi&&(Hi=a),Gi>b&&(Gi=b),b>Ii&&(Ii=b)}function lc(){function a(a,b){g.push("M",a,",",b,f)}function b(a,b){g.push("M",a,",",b),h.point=c}function c(a,b){g.push("L",a,",",b)}function d(){h.point=a}function e(){g.push("Z")}var f=mc(4.5),g=[],h={point:a,lineStart:function(){h.point=b},lineEnd:d,polygonStart:function(){h.lineEnd=e},polygonEnd:function(){h.lineEnd=d,h.point=a},pointRadius:function(a){return f=mc(a),h},result:function(){if(g.length){var a=g.join("");return g=[],a}}};return h}function mc(a){return"m0,"+a+"a"+a+","+a+" 0 1,1 0,"+-2*a+"a"+a+","+a+" 0 1,1 0,"+2*a+"z"}function nc(a,b){ri+=a,si+=b,++ti}function oc(){function a(a,d){var e=a-b,f=d-c,g=Math.sqrt(e*e+f*f);ui+=g*(b+a)/2,vi+=g*(c+d)/2,wi+=g,nc(b=a,c=d)}var b,c;Li.point=function(d,e){Li.point=a,nc(b=d,c=e)}}function pc(){Li.point=nc}function qc(){function a(a,b){var c=a-d,f=b-e,g=Math.sqrt(c*c+f*f);ui+=g*(d+a)/2,vi+=g*(e+b)/2,wi+=g,g=e*a-d*b,xi+=g*(d+a),yi+=g*(e+b),zi+=3*g,nc(d=a,e=b)}var b,c,d,e;Li.point=function(f,g){Li.point=a,nc(b=d=f,c=e=g)},Li.lineEnd=function(){a(b,c)}}function rc(a){function b(b,c){a.moveTo(b,c),a.arc(b,c,g,0,Bh)}function c(b,c){a.moveTo(b,c),h.point=d}function d(b,c){a.lineTo(b,c)}function e(){h.point=b}function f(){a.closePath()}var g=4.5,h={point:b,lineStart:function(){h.point=c},lineEnd:e,polygonStart:function(){h.lineEnd=f},polygonEnd:function(){h.lineEnd=e,h.point=b},pointRadius:function(a){return g=a,h},result:i};return h}function sc(a){function b(a){return(h?d:c)(a)}function c(b){return vc(b,function(c,d){c=a(c,d),b.point(c[0],c[1])})}function d(b){function c(c,d){c=a(c,d),b.point(c[0],c[1])}function d(){t=0/0,y.point=f,b.lineStart()}function f(c,d){var f=Gb([c,d]),g=a(c,d);e(t,u,s,v,w,x,t=g[0],u=g[1],s=c,v=f[0],w=f[1],x=f[2],h,b),b.point(t,u)}function g(){y.point=c,b.lineEnd()}function i(){d(),y.point=j,y.lineEnd=k}function j(a,b){f(l=a,m=b),n=t,o=u,p=v,q=w,r=x,y.point=f}function k(){e(t,u,s,v,w,x,n,o,l,p,q,r,h,b),y.lineEnd=g,g()}var l,m,n,o,p,q,r,s,t,u,v,w,x,y={point:c,lineStart:d,lineEnd:g,polygonStart:function(){b.polygonStart(),y.lineStart=i},polygonEnd:function(){b.polygonEnd(),y.lineStart=d}};return y}function e(b,c,d,h,i,j,k,l,m,n,o,p,q,r){var s=k-b,t=l-c,u=s*s+t*t;if(u>4*f&&q--){var v=h+n,w=i+o,x=j+p,y=Math.sqrt(v*v+w*w+x*x),z=Math.asin(x/=y),A=ih(ih(x)-1)<Dh||ih(d-m)<Dh?(d+m)/2:Math.atan2(w,v),B=a(A,z),C=B[0],D=B[1],E=C-b,F=D-c,G=t*E-s*F;(G*G/u>f||ih((s*E+t*F)/u-.5)>.3||g>h*n+i*o+j*p)&&(e(b,c,d,h,i,j,C,D,A,v/=y,w/=y,x,q,r),r.point(C,D),e(C,D,A,v,w,x,k,l,m,n,o,p,q,r))}}var f=.5,g=Math.cos(30*Fh),h=16;return b.precision=function(a){return arguments.length?(h=(f=a*a)>0&&16,b):Math.sqrt(f)},b}function tc(a){var b=sc(function(b,c){return a([b*Gh,c*Gh])});return function(a){return yc(b(a))}}function uc(a){this.stream=a}function vc(a,b){return{point:b,sphere:function(){a.sphere()},lineStart:function(){a.lineStart()},lineEnd:function(){a.lineEnd()},polygonStart:function(){a.polygonStart()},polygonEnd:function(){a.polygonEnd()}}}function wc(a){return xc(function(){return a})()}function xc(a){function b(a){return a=h(a[0]*Fh,a[1]*Fh),[a[0]*m+i,j-a[1]*m]}function c(a){return a=h.invert((a[0]-i)/m,(j-a[1])/m),a&&[a[0]*Gh,a[1]*Gh]}function d(){h=gc(g=Bc(r,s,t),f);var a=f(p,q);return i=n-a[0]*m,j=o+a[1]*m,e()}function e(){return k&&(k.valid=!1,k=null),b}var f,g,h,i,j,k,l=sc(function(a,b){return a=f(a,b),[a[0]*m+i,j-a[1]*m]}),m=150,n=480,o=250,p=0,q=0,r=0,s=0,t=0,u=Bi,v=qb,w=null,x=null;return b.stream=function(a){return k&&(k.valid=!1),k=yc(u(g,l(v(a)))),k.valid=!0,k},b.clipAngle=function(a){return arguments.length?(u=null==a?(w=a,Bi):dc((w=+a)*Fh),e()):w},b.clipExtent=function(a){return arguments.length?(x=a,v=a?fc(a[0][0],a[0][1],a[1][0],a[1][1]):qb,e()):x},b.scale=function(a){return arguments.length?(m=+a,d()):m},b.translate=function(a){return arguments.length?(n=+a[0],o=+a[1],d()):[n,o]},b.center=function(a){return arguments.length?(p=a[0]%360*Fh,q=a[1]%360*Fh,d()):[p*Gh,q*Gh]},b.rotate=function(a){return arguments.length?(r=a[0]%360*Fh,s=a[1]%360*Fh,t=a.length>2?a[2]%360*Fh:0,d()):[r*Gh,s*Gh,t*Gh]},Wg.rebind(b,l,"precision"),function(){return f=a.apply(this,arguments),b.invert=f.invert&&c,d()}}function yc(a){return vc(a,function(b,c){a.point(b*Fh,c*Fh)})}function zc(a,b){return[a,b]}function Ac(a,b){return[a>Ah?a-Bh:-Ah>a?a+Bh:a,b]}function Bc(a,b,c){return a?b||c?gc(Dc(a),Ec(b,c)):Dc(a):b||c?Ec(b,c):Ac}function Cc(a){return function(b,c){return b+=a,[b>Ah?b-Bh:-Ah>b?b+Bh:b,c]}}function Dc(a){var b=Cc(a);return b.invert=Cc(-a),b}function Ec(a,b){function c(a,b){var c=Math.cos(b),h=Math.cos(a)*c,i=Math.sin(a)*c,j=Math.sin(b),k=j*d+h*e;return[Math.atan2(i*f-k*g,h*d-j*e),O(k*f+i*g)]}var d=Math.cos(a),e=Math.sin(a),f=Math.cos(b),g=Math.sin(b);return c.invert=function(a,b){var c=Math.cos(b),h=Math.cos(a)*c,i=Math.sin(a)*c,j=Math.sin(b),k=j*f-i*g;return[Math.atan2(i*f+j*g,h*d+k*e),O(k*d-h*e)]},c}function Fc(a,b){var c=Math.cos(a),d=Math.sin(a);return function(e,f,g,h){var i=g*b;null!=e?(e=Gc(c,e),f=Gc(c,f),(g>0?f>e:e>f)&&(e+=g*Bh)):(e=a+g*Bh,f=a-.5*i);for(var j,k=e;g>0?k>f:f>k;k-=i)h.point((j=Mb([c,-d*Math.cos(k),-d*Math.sin(k)]))[0],j[1])}}function Gc(a,b){var c=Gb(b);c[0]-=a,Lb(c);var d=N(-c[1]);return((-c[2]<0?-d:d)+2*Math.PI-Dh)%(2*Math.PI)}function Hc(a,b,c){var d=Wg.range(a,b-Dh,c).concat(b);return function(a){return d.map(function(b){return[a,b]})}}function Ic(a,b,c){var d=Wg.range(a,b-Dh,c).concat(b);return function(a){return d.map(function(b){return[b,a]})}}function Jc(a){return a.source}function Kc(a){return a.target}function Lc(a,b,c,d){var e=Math.cos(b),f=Math.sin(b),g=Math.cos(d),h=Math.sin(d),i=e*Math.cos(a),j=e*Math.sin(a),k=g*Math.cos(c),l=g*Math.sin(c),m=2*Math.asin(Math.sqrt(S(d-b)+e*g*S(c-a))),n=1/Math.sin(m),o=m?function(a){var b=Math.sin(a*=m)*n,c=Math.sin(m-a)*n,d=c*i+b*k,e=c*j+b*l,g=c*f+b*h;return[Math.atan2(e,d)*Gh,Math.atan2(g,Math.sqrt(d*d+e*e))*Gh]}:function(){return[a*Gh,b*Gh]};return o.distance=m,o}function Mc(){function a(a,e){var f=Math.sin(e*=Fh),g=Math.cos(e),h=ih((a*=Fh)-b),i=Math.cos(h);Mi+=Math.atan2(Math.sqrt((h=g*Math.sin(h))*h+(h=d*f-c*g*i)*h),c*f+d*g*i),b=a,c=f,d=g}var b,c,d;Ni.point=function(e,f){b=e*Fh,c=Math.sin(f*=Fh),d=Math.cos(f),Ni.point=a},Ni.lineEnd=function(){Ni.point=Ni.lineEnd=i}}function Nc(a,b){function c(b,c){var d=Math.cos(b),e=Math.cos(c),f=a(d*e);return[f*e*Math.sin(b),f*Math.sin(c)]}return c.invert=function(a,c){var d=Math.sqrt(a*a+c*c),e=b(d),f=Math.sin(e),g=Math.cos(e);return[Math.atan2(a*f,d*g),Math.asin(d&&c*f/d)]},c}function Oc(a,b){function c(a,b){var c=ih(ih(b)-Ch)<Dh?0:g/Math.pow(e(b),f);return[c*Math.sin(f*a),g-c*Math.cos(f*a)]}var d=Math.cos(a),e=function(a){return Math.tan(Ah/4+a/2)},f=a===b?Math.sin(a):Math.log(d/Math.cos(b))/Math.log(e(b)/e(a)),g=d*Math.pow(e(a),f)/f;return f?(c.invert=function(a,b){var c=g-b,d=M(f)*Math.sqrt(a*a+c*c);return[Math.atan2(a,c)/f,2*Math.atan(Math.pow(g/d,1/f))-Ch]},c):Qc}function Pc(a,b){function c(a,b){var c=f-b;return[c*Math.sin(e*a),f-c*Math.cos(e*a)]}var d=Math.cos(a),e=a===b?Math.sin(a):(d-Math.cos(b))/(b-a),f=d/e+a;return ih(e)<Dh?zc:(c.invert=function(a,b){var c=f-b;return[Math.atan2(a,c)/e,f-M(e)*Math.sqrt(a*a+c*c)]},c)}function Qc(a,b){return[a,Math.log(Math.tan(Ah/4+b/2))]}function Rc(a){var b,c=wc(a),d=c.scale,e=c.translate,f=c.clipExtent;return c.scale=function(){var a=d.apply(c,arguments);return a===c?b?c.clipExtent(null):c:a},c.translate=function(){var a=e.apply(c,arguments);return a===c?b?c.clipExtent(null):c:a},c.clipExtent=function(a){var g=f.apply(c,arguments);if(g===c){if(b=null==a){var h=Ah*d(),i=e();f([[i[0]-h,i[1]-h],[i[0]+h,i[1]+h]])}}else b&&(g=null);return g},c.clipExtent(null)}function Sc(a,b){return[Math.log(Math.tan(Ah/4+b/2)),-a]}function Tc(a){return a[0]}function Uc(a){return a[1]}function Vc(a,b,c,d){var e,f,g,h,i,j,k;return e=d[a],f=e[0],g=e[1],e=d[b],h=e[0],i=e[1],e=d[c],j=e[0],k=e[1],(k-g)*(h-f)-(i-g)*(j-f)>0}function Wc(a,b,c){return(c[0]-b[0])*(a[1]-b[1])<(c[1]-b[1])*(a[0]-b[0])}function Xc(a,b,c,d){var e=a[0],f=c[0],g=b[0]-e,h=d[0]-f,i=a[1],j=c[1],k=b[1]-i,l=d[1]-j,m=(h*(i-j)-l*(e-f))/(l*g-h*k);return[e+m*g,i+m*k]}function Yc(a){var b=a[0],c=a[a.length-1];return!(b[0]-c[0]||b[1]-c[1])}function Zc(){sd(this),this.edge=this.site=this.circle=null}function $c(a){var b=Zi.pop()||new Zc;return b.site=a,b}function _c(a){jd(a),Wi.remove(a),Zi.push(a),sd(a)}function ad(a){var b=a.circle,c=b.x,d=b.cy,e={x:c,y:d},f=a.P,g=a.N,h=[a];_c(a);for(var i=f;i.circle&&ih(c-i.circle.x)<Dh&&ih(d-i.circle.cy)<Dh;)f=i.P,h.unshift(i),_c(i),i=f;h.unshift(i),jd(i);for(var j=g;j.circle&&ih(c-j.circle.x)<Dh&&ih(d-j.circle.cy)<Dh;)g=j.N,h.push(j),_c(j),j=g;h.push(j),jd(j);var k,l=h.length;for(k=1;l>k;++k)j=h[k],i=h[k-1],pd(j.edge,i.site,j.site,e);i=h[0],j=h[l-1],j.edge=nd(i.site,j.site,null,e),id(i),id(j)}function bd(a){for(var b,c,d,e,f=a.x,g=a.y,h=Wi._;h;)if(d=cd(h,g)-f,d>Dh)h=h.L;else{if(e=f-dd(h,g),!(e>Dh)){d>-Dh?(b=h.P,c=h):e>-Dh?(b=h,c=h.N):b=c=h;break}if(!h.R){b=h;break}h=h.R}var i=$c(a);if(Wi.insert(b,i),b||c){if(b===c)return jd(b),c=$c(b.site),Wi.insert(i,c),i.edge=c.edge=nd(b.site,i.site),id(b),void id(c);if(!c)return void(i.edge=nd(b.site,i.site));jd(b),jd(c);var j=b.site,k=j.x,l=j.y,m=a.x-k,n=a.y-l,o=c.site,p=o.x-k,q=o.y-l,r=2*(m*q-n*p),s=m*m+n*n,t=p*p+q*q,u={x:(q*s-n*t)/r+k,y:(m*t-p*s)/r+l};pd(c.edge,j,o,u),i.edge=nd(j,a,null,u),c.edge=nd(a,o,null,u),id(b),id(c)}}function cd(a,b){var c=a.site,d=c.x,e=c.y,f=e-b;if(!f)return d;var g=a.P;if(!g)return-1/0;c=g.site;var h=c.x,i=c.y,j=i-b;if(!j)return h;var k=h-d,l=1/f-1/j,m=k/j;return l?(-m+Math.sqrt(m*m-2*l*(k*k/(-2*j)-i+j/2+e-f/2)))/l+d:(d+h)/2}function dd(a,b){var c=a.N;if(c)return cd(c,b);var d=a.site;return d.y===b?d.x:1/0}function ed(a){this.site=a,this.edges=[]}function fd(a){for(var b,c,d,e,f,g,h,i,j,k,l=a[0][0],m=a[1][0],n=a[0][1],o=a[1][1],p=Vi,q=p.length;q--;)if(f=p[q],f&&f.prepare())for(h=f.edges,i=h.length,g=0;i>g;)k=h[g].end(),d=k.x,e=k.y,j=h[++g%i].start(),b=j.x,c=j.y,(ih(d-b)>Dh||ih(e-c)>Dh)&&(h.splice(g,0,new qd(od(f.site,k,ih(d-l)<Dh&&o-e>Dh?{x:l,y:ih(b-l)<Dh?c:o}:ih(e-o)<Dh&&m-d>Dh?{x:ih(c-o)<Dh?b:m,y:o}:ih(d-m)<Dh&&e-n>Dh?{x:m,y:ih(b-m)<Dh?c:n}:ih(e-n)<Dh&&d-l>Dh?{x:ih(c-n)<Dh?b:l,y:n}:null),f.site,null)),++i)}function gd(a,b){return b.angle-a.angle}function hd(){sd(this),this.x=this.y=this.arc=this.site=this.cy=null}function id(a){var b=a.P,c=a.N;if(b&&c){var d=b.site,e=a.site,f=c.site;if(d!==f){var g=e.x,h=e.y,i=d.x-g,j=d.y-h,k=f.x-g,l=f.y-h,m=2*(i*l-j*k);if(!(m>=-Eh)){var n=i*i+j*j,o=k*k+l*l,p=(l*n-j*o)/m,q=(i*o-k*n)/m,l=q+h,r=$i.pop()||new hd;r.arc=a,r.site=e,r.x=p+g,r.y=l+Math.sqrt(p*p+q*q),r.cy=l,a.circle=r;for(var s=null,t=Yi._;t;)if(r.y<t.y||r.y===t.y&&r.x<=t.x){if(!t.L){s=t.P;break}t=t.L}else{if(!t.R){s=t;break}t=t.R}Yi.insert(s,r),s||(Xi=r)}}}}function jd(a){var b=a.circle;b&&(b.P||(Xi=b.N),Yi.remove(b),$i.push(b),sd(b),a.circle=null)}function kd(a){for(var b,c=Ui,d=ec(a[0][0],a[0][1],a[1][0],a[1][1]),e=c.length;e--;)b=c[e],(!ld(b,a)||!d(b)||ih(b.a.x-b.b.x)<Dh&&ih(b.a.y-b.b.y)<Dh)&&(b.a=b.b=null,c.splice(e,1))}function ld(a,b){var c=a.b;if(c)return!0;var d,e,f=a.a,g=b[0][0],h=b[1][0],i=b[0][1],j=b[1][1],k=a.l,l=a.r,m=k.x,n=k.y,o=l.x,p=l.y,q=(m+o)/2,r=(n+p)/2;if(p===n){if(g>q||q>=h)return;if(m>o){if(f){if(f.y>=j)return}else f={x:q,y:i};c={x:q,y:j}}else{if(f){if(f.y<i)return}else f={x:q,y:j};c={x:q,y:i}}}else if(d=(m-o)/(p-n),e=r-d*q,-1>d||d>1)if(m>o){if(f){if(f.y>=j)return}else f={x:(i-e)/d,y:i};c={x:(j-e)/d,y:j}}else{if(f){if(f.y<i)return}else f={x:(j-e)/d,y:j};c={x:(i-e)/d,y:i}}else if(p>n){if(f){if(f.x>=h)return}else f={x:g,y:d*g+e};c={x:h,y:d*h+e}}else{if(f){if(f.x<g)return}else f={x:h,y:d*h+e};c={x:g,y:d*g+e}}return a.a=f,a.b=c,!0}function md(a,b){this.l=a,this.r=b,this.a=this.b=null}function nd(a,b,c,d){var e=new md(a,b);return Ui.push(e),c&&pd(e,a,b,c),d&&pd(e,b,a,d),Vi[a.i].edges.push(new qd(e,a,b)),Vi[b.i].edges.push(new qd(e,b,a)),e}function od(a,b,c){var d=new md(a,null);return d.a=b,d.b=c,Ui.push(d),d}function pd(a,b,c,d){a.a||a.b?a.l===c?a.b=d:a.a=d:(a.a=d,a.l=b,a.r=c)}function qd(a,b,c){var d=a.a,e=a.b;this.edge=a,this.site=b,this.angle=c?Math.atan2(c.y-b.y,c.x-b.x):a.l===b?Math.atan2(e.x-d.x,d.y-e.y):Math.atan2(d.x-e.x,e.y-d.y)}function rd(){this._=null}function sd(a){a.U=a.C=a.L=a.R=a.P=a.N=null}function td(a,b){var c=b,d=b.R,e=c.U;e?e.L===c?e.L=d:e.R=d:a._=d,d.U=e,c.U=d,c.R=d.L,c.R&&(c.R.U=c),d.L=c}function ud(a,b){var c=b,d=b.L,e=c.U;e?e.L===c?e.L=d:e.R=d:a._=d,d.U=e,c.U=d,c.L=d.R,c.L&&(c.L.U=c),d.R=c}function vd(a){for(;a.L;)a=a.L;return a}function wd(a,b){var c,d,e,f=a.sort(xd).pop();for(Ui=[],Vi=new Array(a.length),Wi=new rd,Yi=new rd;;)if(e=Xi,f&&(!e||f.y<e.y||f.y===e.y&&f.x<e.x))(f.x!==c||f.y!==d)&&(Vi[f.i]=new ed(f),bd(f),c=f.x,d=f.y),f=a.pop();else{if(!e)break;ad(e.arc)}b&&(kd(b),fd(b));var g={cells:Vi,edges:Ui};return Wi=Yi=Ui=Vi=null,g}function xd(a,b){return b.y-a.y||b.x-a.x}function yd(a,b,c){return(a.x-c.x)*(b.y-a.y)-(a.x-b.x)*(c.y-a.y)}function zd(a){return a.x}function Ad(a){return a.y}function Bd(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function Cd(a,b,c,d,e,f){if(!a(b,c,d,e,f)){var g=.5*(c+e),h=.5*(d+f),i=b.nodes;i[0]&&Cd(a,i[0],c,d,g,h),i[1]&&Cd(a,i[1],g,d,e,h),i[2]&&Cd(a,i[2],c,h,g,f),i[3]&&Cd(a,i[3],g,h,e,f)}}function Dd(a,b){a=Wg.rgb(a),b=Wg.rgb(b);var c=a.r,d=a.g,e=a.b,f=b.r-c,g=b.g-d,h=b.b-e;return function(a){return"#"+jb(Math.round(c+f*a))+jb(Math.round(d+g*a))+jb(Math.round(e+h*a))}}function Ed(a,b){var c,d={},e={};for(c in a)c in b?d[c]=Hd(a[c],b[c]):e[c]=a[c];for(c in b)c in a||(e[c]=b[c]);return function(a){for(c in d)e[c]=d[c](a);return e}}function Fd(a,b){return b-=a=+a,function(c){return a+b*c}}function Gd(a,b){var c,d,e,f,g,h=0,i=0,j=[],k=[];for(a+="",b+="",aj.lastIndex=0,d=0;c=aj.exec(b);++d)c.index&&j.push(b.substring(h,i=c.index)),k.push({i:j.length,x:c[0]}),j.push(null),h=aj.lastIndex;for(h<b.length&&j.push(b.substring(h)),d=0,f=k.length;(c=aj.exec(a))&&f>d;++d)if(g=k[d],g.x==c[0]){if(g.i)if(null==j[g.i+1])for(j[g.i-1]+=g.x,j.splice(g.i,1),e=d+1;f>e;++e)k[e].i--;else for(j[g.i-1]+=g.x+j[g.i+1],j.splice(g.i,2),e=d+1;f>e;++e)k[e].i-=2;else if(null==j[g.i+1])j[g.i]=g.x;else for(j[g.i]=g.x+j[g.i+1],j.splice(g.i+1,1),e=d+1;f>e;++e)k[e].i--;k.splice(d,1),f--,d--}else g.x=Fd(parseFloat(c[0]),parseFloat(g.x));for(;f>d;)g=k.pop(),null==j[g.i+1]?j[g.i]=g.x:(j[g.i]=g.x+j[g.i+1],j.splice(g.i+1,1)),f--;return 1===j.length?null==j[0]?(g=k[0].x,function(a){return g(a)+""}):function(){return b}:function(a){for(d=0;f>d;++d)j[(g=k[d]).i]=g.x(a);return j.join("")}}function Hd(a,b){for(var c,d=Wg.interpolators.length;--d>=0&&!(c=Wg.interpolators[d](a,b)););return c}function Id(a,b){var c,d=[],e=[],f=a.length,g=b.length,h=Math.min(a.length,b.length);for(c=0;h>c;++c)d.push(Hd(a[c],b[c]));for(;f>c;++c)e[c]=a[c];for(;g>c;++c)e[c]=b[c];return function(a){for(c=0;h>c;++c)e[c]=d[c](a);return e}}function Jd(a){return function(b){return 0>=b?0:b>=1?1:a(b)}}function Kd(a){return function(b){return 1-a(1-b)}}function Ld(a){return function(b){return.5*(.5>b?a(2*b):2-a(2-2*b))}}function Md(a){return a*a}function Nd(a){return a*a*a}function Od(a){if(0>=a)return 0;if(a>=1)return 1;var b=a*a,c=b*a;return 4*(.5>a?c:3*(a-b)+c-.75)}function Pd(a){return function(b){return Math.pow(b,a)}}function Qd(a){return 1-Math.cos(a*Ch)}function Rd(a){return Math.pow(2,10*(a-1))}function Sd(a){return 1-Math.sqrt(1-a*a)}function Td(a,b){var c;return arguments.length<2&&(b=.45),arguments.length?c=b/Bh*Math.asin(1/a):(a=1,c=b/4),function(d){return 1+a*Math.pow(2,-10*d)*Math.sin((d-c)*Bh/b)}}function Ud(a){return a||(a=1.70158),function(b){return b*b*((a+1)*b-a)}}function Vd(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375}function Wd(a,b){a=Wg.hcl(a),b=Wg.hcl(b);var c=a.h,d=a.c,e=a.l,f=b.h-c,g=b.c-d,h=b.l-e;return isNaN(g)&&(g=0,d=isNaN(d)?b.c:d),isNaN(f)?(f=0,c=isNaN(c)?b.h:c):f>180?f-=360:-180>f&&(f+=360),function(a){return Z(c+f*a,d+g*a,e+h*a)+""}}function Xd(a,b){a=Wg.hsl(a),b=Wg.hsl(b);var c=a.h,d=a.s,e=a.l,f=b.h-c,g=b.s-d,h=b.l-e;return isNaN(g)&&(g=0,d=isNaN(d)?b.s:d),isNaN(f)?(f=0,c=isNaN(c)?b.h:c):f>180?f-=360:-180>f&&(f+=360),function(a){return W(c+f*a,d+g*a,e+h*a)+""}}function Yd(a,b){a=Wg.lab(a),b=Wg.lab(b);var c=a.l,d=a.a,e=a.b,f=b.l-c,g=b.a-d,h=b.b-e;return function(a){return ab(c+f*a,d+g*a,e+h*a)+""}}function Zd(a,b){return b-=a,function(c){return Math.round(a+b*c)}}function $d(a){var b=[a.a,a.b],c=[a.c,a.d],d=ae(b),e=_d(b,c),f=ae(be(c,b,-e))||0;b[0]*c[1]<c[0]*b[1]&&(b[0]*=-1,b[1]*=-1,d*=-1,e*=-1),this.rotate=(d?Math.atan2(b[1],b[0]):Math.atan2(-c[0],c[1]))*Gh,this.translate=[a.e,a.f],this.scale=[d,f],this.skew=f?Math.atan2(e,f)*Gh:0}function _d(a,b){return a[0]*b[0]+a[1]*b[1]}function ae(a){var b=Math.sqrt(_d(a,a));return b&&(a[0]/=b,a[1]/=b),b}function be(a,b,c){return a[0]+=c*b[0],a[1]+=c*b[1],a}function ce(a,b){var c,d=[],e=[],f=Wg.transform(a),g=Wg.transform(b),h=f.translate,i=g.translate,j=f.rotate,k=g.rotate,l=f.skew,m=g.skew,n=f.scale,o=g.scale;return h[0]!=i[0]||h[1]!=i[1]?(d.push("translate(",null,",",null,")"),e.push({i:1,x:Fd(h[0],i[0])},{i:3,x:Fd(h[1],i[1])})):d.push(i[0]||i[1]?"translate("+i+")":""),j!=k?(j-k>180?k+=360:k-j>180&&(j+=360),e.push({i:d.push(d.pop()+"rotate(",null,")")-2,x:Fd(j,k)})):k&&d.push(d.pop()+"rotate("+k+")"),l!=m?e.push({i:d.push(d.pop()+"skewX(",null,")")-2,x:Fd(l,m)}):m&&d.push(d.pop()+"skewX("+m+")"),n[0]!=o[0]||n[1]!=o[1]?(c=d.push(d.pop()+"scale(",null,",",null,")"),e.push({i:c-4,x:Fd(n[0],o[0])},{i:c-2,x:Fd(n[1],o[1])})):(1!=o[0]||1!=o[1])&&d.push(d.pop()+"scale("+o+")"),c=e.length,function(a){for(var b,f=-1;++f<c;)d[(b=e[f]).i]=b.x(a);return d.join("")}}function de(a,b){return b=b-(a=+a)?1/(b-a):0,function(c){return(c-a)*b}}function ee(a,b){return b=b-(a=+a)?1/(b-a):0,function(c){return Math.max(0,Math.min(1,(c-a)*b))}}function fe(a){for(var b=a.source,c=a.target,d=he(b,c),e=[b];b!==d;)b=b.parent,e.push(b);for(var f=e.length;c!==d;)e.splice(f,0,c),c=c.parent;return e}function ge(a){for(var b=[],c=a.parent;null!=c;)b.push(a),a=c,c=c.parent;return b.push(a),b}function he(a,b){if(a===b)return a;for(var c=ge(a),d=ge(b),e=c.pop(),f=d.pop(),g=null;e===f;)g=e,e=c.pop(),f=d.pop();return g}function ie(a){a.fixed|=2}function je(a){a.fixed&=-7}function ke(a){a.fixed|=4,a.px=a.x,a.py=a.y}function le(a){a.fixed&=-5}function me(a,b,c){var d=0,e=0;if(a.charge=0,!a.leaf)for(var f,g=a.nodes,h=g.length,i=-1;++i<h;)f=g[i],null!=f&&(me(f,b,c),a.charge+=f.charge,d+=f.charge*f.cx,e+=f.charge*f.cy);if(a.point){a.leaf||(a.point.x+=Math.random()-.5,a.point.y+=Math.random()-.5);var j=b*c[a.point.index];a.charge+=a.pointCharge=j,d+=j*a.point.x,e+=j*a.point.y}a.cx=d/a.charge,a.cy=e/a.charge}function ne(a,b){return Wg.rebind(a,b,"sort","children","value"),a.nodes=a,a.links=re,a}function oe(a){return a.children}function pe(a){return a.value}function qe(a,b){return b.value-a.value}function re(a){return Wg.merge(a.map(function(a){return(a.children||[]).map(function(b){return{source:a,target:b}})}))}function se(a){return a.x}function te(a){return a.y}function ue(a,b,c){a.y0=b,a.y=c}function ve(a){return Wg.range(a.length)}function we(a){for(var b=-1,c=a[0].length,d=[];++b<c;)d[b]=0;return d}function xe(a){for(var b,c=1,d=0,e=a[0][1],f=a.length;f>c;++c)(b=a[c][1])>e&&(d=c,e=b);return d}function ye(a){return a.reduce(ze,0)}function ze(a,b){return a+b[1]}function Ae(a,b){return Be(a,Math.ceil(Math.log(b.length)/Math.LN2+1))}function Be(a,b){for(var c=-1,d=+a[0],e=(a[1]-d)/b,f=[];++c<=b;)f[c]=e*c+d;return f}function Ce(a){return[Wg.min(a),Wg.max(a)]}function De(a,b){return a.parent==b.parent?1:2}function Ee(a){var b=a.children;return b&&b.length?b[0]:a._tree.thread}function Fe(a){var b,c=a.children;return c&&(b=c.length)?c[b-1]:a._tree.thread}function Ge(a,b){var c=a.children;if(c&&(e=c.length))for(var d,e,f=-1;++f<e;)b(d=Ge(c[f],b),a)>0&&(a=d);return a}function He(a,b){return a.x-b.x}function Ie(a,b){return b.x-a.x}function Je(a,b){return a.depth-b.depth}function Ke(a,b){function c(a,d){var e=a.children;if(e&&(g=e.length))for(var f,g,h=null,i=-1;++i<g;)f=e[i],c(f,h),h=f;b(a,d)}c(a,null)}function Le(a){for(var b,c=0,d=0,e=a.children,f=e.length;--f>=0;)b=e[f]._tree,b.prelim+=c,b.mod+=c,c+=b.shift+(d+=b.change)}function Me(a,b,c){a=a._tree,b=b._tree;var d=c/(b.number-a.number);a.change+=d,b.change-=d,b.shift+=c,b.prelim+=c,b.mod+=c}function Ne(a,b,c){return a._tree.ancestor.parent==b.parent?a._tree.ancestor:c}function Oe(a,b){return a.value-b.value}function Pe(a,b){var c=a._pack_next;a._pack_next=b,b._pack_prev=a,b._pack_next=c,c._pack_prev=b}function Qe(a,b){a._pack_next=b,b._pack_prev=a}function Re(a,b){var c=b.x-a.x,d=b.y-a.y,e=a.r+b.r;return.999*e*e>c*c+d*d}function Se(a){function b(a){k=Math.min(a.x-a.r,k),l=Math.max(a.x+a.r,l),m=Math.min(a.y-a.r,m),n=Math.max(a.y+a.r,n)}if((c=a.children)&&(j=c.length)){var c,d,e,f,g,h,i,j,k=1/0,l=-1/0,m=1/0,n=-1/0;if(c.forEach(Te),d=c[0],d.x=-d.r,d.y=0,b(d),j>1&&(e=c[1],e.x=e.r,e.y=0,b(e),j>2))for(f=c[2],We(d,e,f),b(f),Pe(d,f),d._pack_prev=f,Pe(f,e),e=d._pack_next,g=3;j>g;g++){We(d,e,f=c[g]);var o=0,p=1,q=1;for(h=e._pack_next;h!==e;h=h._pack_next,p++)if(Re(h,f)){o=1;break}if(1==o)for(i=d._pack_prev;i!==h._pack_prev&&!Re(i,f);i=i._pack_prev,q++);o?(q>p||p==q&&e.r<d.r?Qe(d,e=h):Qe(d=i,e),g--):(Pe(d,f),e=f,b(f))}var r=(k+l)/2,s=(m+n)/2,t=0;for(g=0;j>g;g++)f=c[g],f.x-=r,f.y-=s,t=Math.max(t,f.r+Math.sqrt(f.x*f.x+f.y*f.y));a.r=t,c.forEach(Ue)}}function Te(a){a._pack_next=a._pack_prev=a}function Ue(a){delete a._pack_next,delete a._pack_prev}function Ve(a,b,c,d){var e=a.children;if(a.x=b+=d*a.x,a.y=c+=d*a.y,a.r*=d,e)for(var f=-1,g=e.length;++f<g;)Ve(e[f],b,c,d)}function We(a,b,c){var d=a.r+c.r,e=b.x-a.x,f=b.y-a.y;if(d&&(e||f)){var g=b.r+c.r,h=e*e+f*f;g*=g,d*=d;var i=.5+(d-g)/(2*h),j=Math.sqrt(Math.max(0,2*g*(d+h)-(d-=h)*d-g*g))/(2*h);c.x=a.x+i*e+j*f,c.y=a.y+i*f-j*e}else c.x=a.x+d,c.y=a.y}function Xe(a){return 1+Wg.max(a,function(a){return a.y})}function Ye(a){return a.reduce(function(a,b){return a+b.x},0)/a.length}function Ze(a){var b=a.children;return b&&b.length?Ze(b[0]):a}function $e(a){var b,c=a.children;return c&&(b=c.length)?$e(c[b-1]):a}function _e(a){return{x:a.x,y:a.y,dx:a.dx,dy:a.dy}}function af(a,b){var c=a.x+b[3],d=a.y+b[0],e=a.dx-b[1]-b[3],f=a.dy-b[0]-b[2];return 0>e&&(c+=e/2,e=0),0>f&&(d+=f/2,f=0),{x:c,y:d,dx:e,dy:f}}function bf(a){var b=a[0],c=a[a.length-1];return c>b?[b,c]:[c,b]}function cf(a){return a.rangeExtent?a.rangeExtent():bf(a.range())}function df(a,b,c,d){var e=c(a[0],a[1]),f=d(b[0],b[1]);return function(a){return f(e(a))}}function ef(a,b){var c,d=0,e=a.length-1,f=a[d],g=a[e];return f>g&&(c=d,d=e,e=c,c=f,f=g,g=c),a[d]=b.floor(f),a[e]=b.ceil(g),a}function ff(a){return a?{floor:function(b){return Math.floor(b/a)*a},ceil:function(b){return Math.ceil(b/a)*a}}:kj}function gf(a,b,c,d){var e=[],f=[],g=0,h=Math.min(a.length,b.length)-1;for(a[h]<a[0]&&(a=a.slice().reverse(),b=b.slice().reverse());++g<=h;)e.push(c(a[g-1],a[g])),f.push(d(b[g-1],b[g]));return function(b){var c=Wg.bisect(a,b,1,h)-1;return f[c](e[c](b))}}function hf(a,b,c,d){function e(){var e=Math.min(a.length,b.length)>2?gf:df,i=d?ee:de;return g=e(a,b,i,c),h=e(b,a,i,Hd),f}function f(a){return g(a)}var g,h;return f.invert=function(a){return h(a)},f.domain=function(b){return arguments.length?(a=b.map(Number),e()):a},f.range=function(a){return arguments.length?(b=a,e()):b},f.rangeRound=function(a){return f.range(a).interpolate(Zd)},f.clamp=function(a){return arguments.length?(d=a,e()):d},f.interpolate=function(a){return arguments.length?(c=a,e()):c},f.ticks=function(b){return mf(a,b)},f.tickFormat=function(b,c){return nf(a,b,c)},f.nice=function(b){return kf(a,b),e()
+},f.copy=function(){return hf(a,b,c,d)},e()}function jf(a,b){return Wg.rebind(a,b,"range","rangeRound","interpolate","clamp")}function kf(a,b){return ef(a,ff(lf(a,b)[2]))}function lf(a,b){null==b&&(b=10);var c=bf(a),d=c[1]-c[0],e=Math.pow(10,Math.floor(Math.log(d/b)/Math.LN10)),f=b/d*e;return.15>=f?e*=10:.35>=f?e*=5:.75>=f&&(e*=2),c[0]=Math.ceil(c[0]/e)*e,c[1]=Math.floor(c[1]/e)*e+.5*e,c[2]=e,c}function mf(a,b){return Wg.range.apply(Wg,lf(a,b))}function nf(a,b,c){var d=lf(a,b);return Wg.format(c?c.replace(fi,function(a,b,c,e,f,g,h,i,j,k){return[b,c,e,f,g,h,i,j||"."+pf(k,d),k].join("")}):",."+of(d[2])+"f")}function of(a){return-Math.floor(Math.log(a)/Math.LN10+.01)}function pf(a,b){var c=of(b[2]);return a in lj?Math.abs(c-of(Math.max(Math.abs(b[0]),Math.abs(b[1]))))+ +("e"!==a):c-2*("%"===a)}function qf(a,b,c,d){function e(a){return(c?Math.log(0>a?0:a):-Math.log(a>0?0:-a))/Math.log(b)}function f(a){return c?Math.pow(b,a):-Math.pow(b,-a)}function g(b){return a(e(b))}return g.invert=function(b){return f(a.invert(b))},g.domain=function(b){return arguments.length?(c=b[0]>=0,a.domain((d=b.map(Number)).map(e)),g):d},g.base=function(c){return arguments.length?(b=+c,a.domain(d.map(e)),g):b},g.nice=function(){var b=ef(d.map(e),c?Math:nj);return a.domain(b),d=b.map(f),g},g.ticks=function(){var a=bf(d),g=[],h=a[0],i=a[1],j=Math.floor(e(h)),k=Math.ceil(e(i)),l=b%1?2:b;if(isFinite(k-j)){if(c){for(;k>j;j++)for(var m=1;l>m;m++)g.push(f(j)*m);g.push(f(j))}else for(g.push(f(j));j++<k;)for(var m=l-1;m>0;m--)g.push(f(j)*m);for(j=0;g[j]<h;j++);for(k=g.length;g[k-1]>i;k--);g=g.slice(j,k)}return g},g.tickFormat=function(a,b){if(!arguments.length)return mj;arguments.length<2?b=mj:"function"!=typeof b&&(b=Wg.format(b));var d,h=Math.max(.1,a/g.ticks().length),i=c?(d=1e-12,Math.ceil):(d=-1e-12,Math.floor);return function(a){return a/f(i(e(a)+d))<=h?b(a):""}},g.copy=function(){return qf(a.copy(),b,c,d)},jf(g,a)}function rf(a,b,c){function d(b){return a(e(b))}var e=sf(b),f=sf(1/b);return d.invert=function(b){return f(a.invert(b))},d.domain=function(b){return arguments.length?(a.domain((c=b.map(Number)).map(e)),d):c},d.ticks=function(a){return mf(c,a)},d.tickFormat=function(a,b){return nf(c,a,b)},d.nice=function(a){return d.domain(kf(c,a))},d.exponent=function(g){return arguments.length?(e=sf(b=g),f=sf(1/b),a.domain(c.map(e)),d):b},d.copy=function(){return rf(a.copy(),b,c)},jf(d,a)}function sf(a){return function(b){return 0>b?-Math.pow(-b,a):Math.pow(b,a)}}function tf(a,b){function c(c){return g[((f.get(c)||"range"===b.t&&f.set(c,a.push(c)))-1)%g.length]}function d(b,c){return Wg.range(a.length).map(function(a){return b+c*a})}var f,g,h;return c.domain=function(d){if(!arguments.length)return a;a=[],f=new e;for(var g,h=-1,i=d.length;++h<i;)f.has(g=d[h])||f.set(g,a.push(g));return c[b.t].apply(c,b.a)},c.range=function(a){return arguments.length?(g=a,h=0,b={t:"range",a:arguments},c):g},c.rangePoints=function(e,f){arguments.length<2&&(f=0);var i=e[0],j=e[1],k=(j-i)/(Math.max(1,a.length-1)+f);return g=d(a.length<2?(i+j)/2:i+k*f/2,k),h=0,b={t:"rangePoints",a:arguments},c},c.rangeBands=function(e,f,i){arguments.length<2&&(f=0),arguments.length<3&&(i=f);var j=e[1]<e[0],k=e[j-0],l=e[1-j],m=(l-k)/(a.length-f+2*i);return g=d(k+m*i,m),j&&g.reverse(),h=m*(1-f),b={t:"rangeBands",a:arguments},c},c.rangeRoundBands=function(e,f,i){arguments.length<2&&(f=0),arguments.length<3&&(i=f);var j=e[1]<e[0],k=e[j-0],l=e[1-j],m=Math.floor((l-k)/(a.length-f+2*i)),n=l-k-(a.length-f)*m;return g=d(k+Math.round(n/2),m),j&&g.reverse(),h=Math.round(m*(1-f)),b={t:"rangeRoundBands",a:arguments},c},c.rangeBand=function(){return h},c.rangeExtent=function(){return bf(b.a[0])},c.copy=function(){return tf(a,b)},c.domain(a)}function uf(a,b){function c(){var c=0,f=b.length;for(e=[];++c<f;)e[c-1]=Wg.quantile(a,c/f);return d}function d(a){return isNaN(a=+a)?void 0:b[Wg.bisect(e,a)]}var e;return d.domain=function(b){return arguments.length?(a=b.filter(function(a){return!isNaN(a)}).sort(Wg.ascending),c()):a},d.range=function(a){return arguments.length?(b=a,c()):b},d.quantiles=function(){return e},d.invertExtent=function(c){return c=b.indexOf(c),0>c?[0/0,0/0]:[c>0?e[c-1]:a[0],c<e.length?e[c]:a[a.length-1]]},d.copy=function(){return uf(a,b)},c()}function vf(a,b,c){function d(b){return c[Math.max(0,Math.min(g,Math.floor(f*(b-a))))]}function e(){return f=c.length/(b-a),g=c.length-1,d}var f,g;return d.domain=function(c){return arguments.length?(a=+c[0],b=+c[c.length-1],e()):[a,b]},d.range=function(a){return arguments.length?(c=a,e()):c},d.invertExtent=function(b){return b=c.indexOf(b),b=0>b?0/0:b/f+a,[b,b+1/f]},d.copy=function(){return vf(a,b,c)},e()}function wf(a,b){function c(c){return c>=c?b[Wg.bisect(a,c)]:void 0}return c.domain=function(b){return arguments.length?(a=b,c):a},c.range=function(a){return arguments.length?(b=a,c):b},c.invertExtent=function(c){return c=b.indexOf(c),[a[c-1],a[c]]},c.copy=function(){return wf(a,b)},c}function xf(a){function b(a){return+a}return b.invert=b,b.domain=b.range=function(c){return arguments.length?(a=c.map(b),b):a},b.ticks=function(b){return mf(a,b)},b.tickFormat=function(b,c){return nf(a,b,c)},b.copy=function(){return xf(a)},b}function yf(a){return a.innerRadius}function zf(a){return a.outerRadius}function Af(a){return a.startAngle}function Bf(a){return a.endAngle}function Cf(a){function b(b){function g(){j.push("M",f(a(k),h))}for(var i,j=[],k=[],l=-1,m=b.length,n=pb(c),o=pb(d);++l<m;)e.call(this,i=b[l],l)?k.push([+n.call(this,i,l),+o.call(this,i,l)]):k.length&&(g(),k=[]);return k.length&&g(),j.length?j.join(""):null}var c=Tc,d=Uc,e=Tb,f=Df,g=f.key,h=.7;return b.x=function(a){return arguments.length?(c=a,b):c},b.y=function(a){return arguments.length?(d=a,b):d},b.defined=function(a){return arguments.length?(e=a,b):e},b.interpolate=function(a){return arguments.length?(g="function"==typeof a?f=a:(f=uj.get(a)||Df).key,b):g},b.tension=function(a){return arguments.length?(h=a,b):h},b}function Df(a){return a.join("L")}function Ef(a){return Df(a)+"Z"}function Ff(a){for(var b=0,c=a.length,d=a[0],e=[d[0],",",d[1]];++b<c;)e.push("H",(d[0]+(d=a[b])[0])/2,"V",d[1]);return c>1&&e.push("H",d[0]),e.join("")}function Gf(a){for(var b=0,c=a.length,d=a[0],e=[d[0],",",d[1]];++b<c;)e.push("V",(d=a[b])[1],"H",d[0]);return e.join("")}function Hf(a){for(var b=0,c=a.length,d=a[0],e=[d[0],",",d[1]];++b<c;)e.push("H",(d=a[b])[0],"V",d[1]);return e.join("")}function If(a,b){return a.length<4?Df(a):a[1]+Lf(a.slice(1,a.length-1),Mf(a,b))}function Jf(a,b){return a.length<3?Df(a):a[0]+Lf((a.push(a[0]),a),Mf([a[a.length-2]].concat(a,[a[1]]),b))}function Kf(a,b){return a.length<3?Df(a):a[0]+Lf(a,Mf(a,b))}function Lf(a,b){if(b.length<1||a.length!=b.length&&a.length!=b.length+2)return Df(a);var c=a.length!=b.length,d="",e=a[0],f=a[1],g=b[0],h=g,i=1;if(c&&(d+="Q"+(f[0]-2*g[0]/3)+","+(f[1]-2*g[1]/3)+","+f[0]+","+f[1],e=a[1],i=2),b.length>1){h=b[1],f=a[i],i++,d+="C"+(e[0]+g[0])+","+(e[1]+g[1])+","+(f[0]-h[0])+","+(f[1]-h[1])+","+f[0]+","+f[1];for(var j=2;j<b.length;j++,i++)f=a[i],h=b[j],d+="S"+(f[0]-h[0])+","+(f[1]-h[1])+","+f[0]+","+f[1]}if(c){var k=a[i];d+="Q"+(f[0]+2*h[0]/3)+","+(f[1]+2*h[1]/3)+","+k[0]+","+k[1]}return d}function Mf(a,b){for(var c,d=[],e=(1-b)/2,f=a[0],g=a[1],h=1,i=a.length;++h<i;)c=f,f=g,g=a[h],d.push([e*(g[0]-c[0]),e*(g[1]-c[1])]);return d}function Nf(a){if(a.length<3)return Df(a);var b=1,c=a.length,d=a[0],e=d[0],f=d[1],g=[e,e,e,(d=a[1])[0]],h=[f,f,f,d[1]],i=[e,",",f,"L",Rf(xj,g),",",Rf(xj,h)];for(a.push(a[c-1]);++b<=c;)d=a[b],g.shift(),g.push(d[0]),h.shift(),h.push(d[1]),Sf(i,g,h);return a.pop(),i.push("L",d),i.join("")}function Of(a){if(a.length<4)return Df(a);for(var b,c=[],d=-1,e=a.length,f=[0],g=[0];++d<3;)b=a[d],f.push(b[0]),g.push(b[1]);for(c.push(Rf(xj,f)+","+Rf(xj,g)),--d;++d<e;)b=a[d],f.shift(),f.push(b[0]),g.shift(),g.push(b[1]),Sf(c,f,g);return c.join("")}function Pf(a){for(var b,c,d=-1,e=a.length,f=e+4,g=[],h=[];++d<4;)c=a[d%e],g.push(c[0]),h.push(c[1]);for(b=[Rf(xj,g),",",Rf(xj,h)],--d;++d<f;)c=a[d%e],g.shift(),g.push(c[0]),h.shift(),h.push(c[1]),Sf(b,g,h);return b.join("")}function Qf(a,b){var c=a.length-1;if(c)for(var d,e,f=a[0][0],g=a[0][1],h=a[c][0]-f,i=a[c][1]-g,j=-1;++j<=c;)d=a[j],e=j/c,d[0]=b*d[0]+(1-b)*(f+e*h),d[1]=b*d[1]+(1-b)*(g+e*i);return Nf(a)}function Rf(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]}function Sf(a,b,c){a.push("C",Rf(vj,b),",",Rf(vj,c),",",Rf(wj,b),",",Rf(wj,c),",",Rf(xj,b),",",Rf(xj,c))}function Tf(a,b){return(b[1]-a[1])/(b[0]-a[0])}function Uf(a){for(var b=0,c=a.length-1,d=[],e=a[0],f=a[1],g=d[0]=Tf(e,f);++b<c;)d[b]=(g+(g=Tf(e=f,f=a[b+1])))/2;return d[b]=g,d}function Vf(a){for(var b,c,d,e,f=[],g=Uf(a),h=-1,i=a.length-1;++h<i;)b=Tf(a[h],a[h+1]),ih(b)<Dh?g[h]=g[h+1]=0:(c=g[h]/b,d=g[h+1]/b,e=c*c+d*d,e>9&&(e=3*b/Math.sqrt(e),g[h]=e*c,g[h+1]=e*d));for(h=-1;++h<=i;)e=(a[Math.min(i,h+1)][0]-a[Math.max(0,h-1)][0])/(6*(1+g[h]*g[h])),f.push([e||0,g[h]*e||0]);return f}function Wf(a){return a.length<3?Df(a):a[0]+Lf(a,Vf(a))}function Xf(a){for(var b,c,d,e=-1,f=a.length;++e<f;)b=a[e],c=b[0],d=b[1]+sj,b[0]=c*Math.cos(d),b[1]=c*Math.sin(d);return a}function Yf(a){function b(b){function i(){p.push("M",h(a(r),l),k,j(a(q.reverse()),l),"Z")}for(var m,n,o,p=[],q=[],r=[],s=-1,t=b.length,u=pb(c),v=pb(e),w=c===d?function(){return n}:pb(d),x=e===f?function(){return o}:pb(f);++s<t;)g.call(this,m=b[s],s)?(q.push([n=+u.call(this,m,s),o=+v.call(this,m,s)]),r.push([+w.call(this,m,s),+x.call(this,m,s)])):q.length&&(i(),q=[],r=[]);return q.length&&i(),p.length?p.join(""):null}var c=Tc,d=Tc,e=0,f=Uc,g=Tb,h=Df,i=h.key,j=h,k="L",l=.7;return b.x=function(a){return arguments.length?(c=d=a,b):d},b.x0=function(a){return arguments.length?(c=a,b):c},b.x1=function(a){return arguments.length?(d=a,b):d},b.y=function(a){return arguments.length?(e=f=a,b):f},b.y0=function(a){return arguments.length?(e=a,b):e},b.y1=function(a){return arguments.length?(f=a,b):f},b.defined=function(a){return arguments.length?(g=a,b):g},b.interpolate=function(a){return arguments.length?(i="function"==typeof a?h=a:(h=uj.get(a)||Df).key,j=h.reverse||h,k=h.closed?"M":"L",b):i},b.tension=function(a){return arguments.length?(l=a,b):l},b}function Zf(a){return a.radius}function $f(a){return[a.x,a.y]}function _f(a){return function(){var b=a.apply(this,arguments),c=b[0],d=b[1]+sj;return[c*Math.cos(d),c*Math.sin(d)]}}function ag(){return 64}function bg(){return"circle"}function cg(a){var b=Math.sqrt(a/Ah);return"M0,"+b+"A"+b+","+b+" 0 1,1 0,"+-b+"A"+b+","+b+" 0 1,1 0,"+b+"Z"}function dg(a,b){return nh(a,Dj),a.id=b,a}function eg(a,b,c,d){var e=a.id;return D(a,"function"==typeof c?function(a,f,g){a.__transition__[e].tween.set(b,d(c.call(a,a.__data__,f,g)))}:(c=d(c),function(a){a.__transition__[e].tween.set(b,c)}))}function fg(a){return null==a&&(a=""),function(){this.textContent=a}}function gg(a,b,c,d){var f=a.__transition__||(a.__transition__={active:0,count:0}),g=f[c];if(!g){var h=d.time;g=f[c]={tween:new e,time:h,ease:d.ease,delay:d.delay,duration:d.duration},++f.count,Wg.timer(function(d){function e(d){return f.active>c?j():(f.active=c,g.event&&g.event.start.call(a,k,b),g.tween.forEach(function(c,d){(d=d.call(a,k,b))&&p.push(d)}),void Wg.timer(function(){return o.c=i(d||1)?Tb:i,1},0,h))}function i(d){if(f.active!==c)return j();for(var e=d/n,h=l(e),i=p.length;i>0;)p[--i].call(a,h);return e>=1?(g.event&&g.event.end.call(a,k,b),j()):void 0}function j(){return--f.count?delete f[c]:delete a.__transition__,1}var k=a.__data__,l=g.ease,m=g.delay,n=g.duration,o=$h,p=[];return o.t=m+h,d>=m?e(d-m):void(o.c=e)},0,h)}}function hg(a,b){a.attr("transform",function(a){return"translate("+b(a)+",0)"})}function ig(a,b){a.attr("transform",function(a){return"translate(0,"+b(a)+")"})}function jg(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function kg(a,b,c){function d(b){var c=a(b),d=f(c,1);return d-b>b-c?c:d}function e(c){return b(c=a(new Kj(c-1)),1),c}function f(a,c){return b(a=new Kj(+a),c),a}function g(a,d,f){var g=e(a),h=[];if(f>1)for(;d>g;)c(g)%f||h.push(new Date(+g)),b(g,1);else for(;d>g;)h.push(new Date(+g)),b(g,1);return h}function h(a,b,c){try{Kj=jg;var d=new jg;return d._=a,g(d,b,c)}finally{Kj=Date}}a.floor=a,a.round=d,a.ceil=e,a.offset=f,a.range=g;var i=a.utc=lg(a);return i.floor=i,i.round=lg(d),i.ceil=lg(e),i.offset=lg(f),i.range=h,a}function lg(a){return function(b,c){try{Kj=jg;var d=new jg;return d._=b,a(d,c)._}finally{Kj=Date}}}function mg(a){function b(b){for(var d,e,f,g=[],h=-1,i=0;++h<c;)37===a.charCodeAt(h)&&(g.push(a.substring(i,h)),null!=(e=bk[d=a.charAt(++h)])&&(d=a.charAt(++h)),(f=ck[d])&&(d=f(b,null==e?"e"===d?" ":"0":e)),g.push(d),i=h+1);return g.push(a.substring(i,h)),g.join("")}var c=a.length;return b.parse=function(b){var c={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},d=ng(c,a,b,0);if(d!=b.length)return null;"p"in c&&(c.H=c.H%12+12*c.p);var e=null!=c.Z&&Kj!==jg,f=new(e?jg:Kj);return"j"in c?f.setFullYear(c.y,0,c.j):"w"in c&&("W"in c||"U"in c)?(f.setFullYear(c.y,0,1),f.setFullYear(c.y,0,"W"in c?(c.w+6)%7+7*c.W-(f.getDay()+5)%7:c.w+7*c.U-(f.getDay()+6)%7)):f.setFullYear(c.y,c.m,c.d),f.setHours(c.H+Math.floor(c.Z/100),c.M+c.Z%100,c.S,c.L),e?f._:f},b.toString=function(){return a},b}function ng(a,b,c,d){for(var e,f,g,h=0,i=b.length,j=c.length;i>h;){if(d>=j)return-1;if(e=b.charCodeAt(h++),37===e){if(g=b.charAt(h++),f=dk[g in bk?b.charAt(h++):g],!f||(d=f(a,c,d))<0)return-1}else if(e!=c.charCodeAt(d++))return-1}return d}function og(a){return new RegExp("^(?:"+a.map(Wg.requote).join("|")+")","i")}function pg(a){for(var b=new e,c=-1,d=a.length;++c<d;)b.set(a[c].toLowerCase(),c);return b}function qg(a,b,c){var d=0>a?"-":"",e=(d?-a:a)+"",f=e.length;return d+(c>f?new Array(c-f+1).join(b)+e:e)}function rg(a,b,c){Wj.lastIndex=0;var d=Wj.exec(b.substring(c));return d?(a.w=Xj.get(d[0].toLowerCase()),c+d[0].length):-1}function sg(a,b,c){Uj.lastIndex=0;var d=Uj.exec(b.substring(c));return d?(a.w=Vj.get(d[0].toLowerCase()),c+d[0].length):-1}function tg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+1));return d?(a.w=+d[0],c+d[0].length):-1}function ug(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c));return d?(a.U=+d[0],c+d[0].length):-1}function vg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c));return d?(a.W=+d[0],c+d[0].length):-1}function wg(a,b,c){$j.lastIndex=0;var d=$j.exec(b.substring(c));return d?(a.m=_j.get(d[0].toLowerCase()),c+d[0].length):-1}function xg(a,b,c){Yj.lastIndex=0;var d=Yj.exec(b.substring(c));return d?(a.m=Zj.get(d[0].toLowerCase()),c+d[0].length):-1}function yg(a,b,c){return ng(a,ck.c.toString(),b,c)}function zg(a,b,c){return ng(a,ck.x.toString(),b,c)}function Ag(a,b,c){return ng(a,ck.X.toString(),b,c)}function Bg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+4));return d?(a.y=+d[0],c+d[0].length):-1}function Cg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+2));return d?(a.y=Eg(+d[0]),c+d[0].length):-1}function Dg(a,b,c){return/^[+-]\d{4}$/.test(b=b.substring(c,c+5))?(a.Z=+b,c+5):-1}function Eg(a){return a+(a>68?1900:2e3)}function Fg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+2));return d?(a.m=d[0]-1,c+d[0].length):-1}function Gg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+2));return d?(a.d=+d[0],c+d[0].length):-1}function Hg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+3));return d?(a.j=+d[0],c+d[0].length):-1}function Ig(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+2));return d?(a.H=+d[0],c+d[0].length):-1}function Jg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+2));return d?(a.M=+d[0],c+d[0].length):-1}function Kg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+2));return d?(a.S=+d[0],c+d[0].length):-1}function Lg(a,b,c){ek.lastIndex=0;var d=ek.exec(b.substring(c,c+3));return d?(a.L=+d[0],c+d[0].length):-1}function Mg(a,b,c){var d=fk.get(b.substring(c,c+=2).toLowerCase());return null==d?-1:(a.p=d,c)}function Ng(a){var b=a.getTimezoneOffset(),c=b>0?"-":"+",d=~~(ih(b)/60),e=ih(b)%60;return c+qg(d,"0",2)+qg(e,"0",2)}function Og(a,b,c){ak.lastIndex=0;var d=ak.exec(b.substring(c,c+1));return d?c+d[0].length:-1}function Pg(a){function b(a){try{Kj=jg;var b=new Kj;return b._=a,c(b)}finally{Kj=Date}}var c=mg(a);return b.parse=function(a){try{Kj=jg;var b=c.parse(a);return b&&b._}finally{Kj=Date}},b.toString=c.toString,b}function Qg(a){return a.toISOString()}function Rg(a,b,c){function d(b){return a(b)}function e(a,c){var d=a[1]-a[0],e=d/c,f=Wg.bisect(hk,e);return f==hk.length?[b.year,lf(a.map(function(a){return a/31536e6}),c)[2]]:f?b[e/hk[f-1]<hk[f]/e?f-1:f]:[lk,lf(a,c)[2]]}return d.invert=function(b){return Sg(a.invert(b))},d.domain=function(b){return arguments.length?(a.domain(b),d):a.domain().map(Sg)},d.nice=function(a,b){function c(c){return!isNaN(c)&&!a.range(c,Sg(+c+1),b).length}var f=d.domain(),g=bf(f),h=null==a?e(g,10):"number"==typeof a&&e(g,a);return h&&(a=h[0],b=h[1]),d.domain(ef(f,b>1?{floor:function(b){for(;c(b=a.floor(b));)b=Sg(b-1);return b},ceil:function(b){for(;c(b=a.ceil(b));)b=Sg(+b+1);return b}}:a))},d.ticks=function(a,b){var c=bf(d.domain()),f=null==a?e(c,10):"number"==typeof a?e(c,a):!a.range&&[{range:a},b];return f&&(a=f[0],b=f[1]),a.range(c[0],Sg(+c[1]+1),1>b?1:b)},d.tickFormat=function(){return c},d.copy=function(){return Rg(a.copy(),b,c)},jf(d,a)}function Sg(a){return new Date(a)}function Tg(a){return function(b){for(var c=a.length-1,d=a[c];!d[1](b);)d=a[--c];return d[0](b)}}function Ug(a){return JSON.parse(a.responseText)}function Vg(a){var b=Zg.createRange();return b.selectNode(Zg.body),b.createContextualFragment(a.responseText)}var Wg={version:"3.3.13"};Date.now||(Date.now=function(){return+new Date});var Xg=[].slice,Yg=function(a){return Xg.call(a)},Zg=document,$g=Zg.documentElement,_g=window;try{Yg($g.childNodes)[0].nodeType}catch(ah){Yg=function(a){for(var b=a.length,c=new Array(b);b--;)c[b]=a[b];return c}}try{Zg.createElement("div").style.setProperty("opacity",0,"")}catch(bh){var ch=_g.Element.prototype,dh=ch.setAttribute,eh=ch.setAttributeNS,fh=_g.CSSStyleDeclaration.prototype,gh=fh.setProperty;ch.setAttribute=function(a,b){dh.call(this,a,b+"")},ch.setAttributeNS=function(a,b,c){eh.call(this,a,b,c+"")},fh.setProperty=function(a,b,c){gh.call(this,a,b+"",c)}}Wg.ascending=function(a,b){return b>a?-1:a>b?1:a>=b?0:0/0},Wg.descending=function(a,b){return a>b?-1:b>a?1:b>=a?0:0/0},Wg.min=function(a,b){var c,d,e=-1,f=a.length;if(1===arguments.length){for(;++e<f&&!(null!=(c=a[e])&&c>=c);)c=void 0;for(;++e<f;)null!=(d=a[e])&&c>d&&(c=d)}else{for(;++e<f&&!(null!=(c=b.call(a,a[e],e))&&c>=c);)c=void 0;for(;++e<f;)null!=(d=b.call(a,a[e],e))&&c>d&&(c=d)}return c},Wg.max=function(a,b){var c,d,e=-1,f=a.length;if(1===arguments.length){for(;++e<f&&!(null!=(c=a[e])&&c>=c);)c=void 0;for(;++e<f;)null!=(d=a[e])&&d>c&&(c=d)}else{for(;++e<f&&!(null!=(c=b.call(a,a[e],e))&&c>=c);)c=void 0;for(;++e<f;)null!=(d=b.call(a,a[e],e))&&d>c&&(c=d)}return c},Wg.extent=function(a,b){var c,d,e,f=-1,g=a.length;if(1===arguments.length){for(;++f<g&&!(null!=(c=e=a[f])&&c>=c);)c=e=void 0;for(;++f<g;)null!=(d=a[f])&&(c>d&&(c=d),d>e&&(e=d))}else{for(;++f<g&&!(null!=(c=e=b.call(a,a[f],f))&&c>=c);)c=void 0;for(;++f<g;)null!=(d=b.call(a,a[f],f))&&(c>d&&(c=d),d>e&&(e=d))}return[c,e]},Wg.sum=function(a,b){var c,d=0,e=a.length,f=-1;if(1===arguments.length)for(;++f<e;)isNaN(c=+a[f])||(d+=c);else for(;++f<e;)isNaN(c=+b.call(a,a[f],f))||(d+=c);return d},Wg.mean=function(b,c){var d,e=b.length,f=0,g=-1,h=0;if(1===arguments.length)for(;++g<e;)a(d=b[g])&&(f+=(d-f)/++h);else for(;++g<e;)a(d=c.call(b,b[g],g))&&(f+=(d-f)/++h);return h?f:void 0},Wg.quantile=function(a,b){var c=(a.length-1)*b+1,d=Math.floor(c),e=+a[d-1],f=c-d;return f?e+f*(a[d]-e):e},Wg.median=function(b,c){return arguments.length>1&&(b=b.map(c)),b=b.filter(a),b.length?Wg.quantile(b.sort(Wg.ascending),.5):void 0},Wg.bisector=function(a){return{left:function(b,c,d,e){for(arguments.length<3&&(d=0),arguments.length<4&&(e=b.length);e>d;){var f=d+e>>>1;a.call(b,b[f],f)<c?d=f+1:e=f}return d},right:function(b,c,d,e){for(arguments.length<3&&(d=0),arguments.length<4&&(e=b.length);e>d;){var f=d+e>>>1;c<a.call(b,b[f],f)?e=f:d=f+1}return d}}};var hh=Wg.bisector(function(a){return a});Wg.bisectLeft=hh.left,Wg.bisect=Wg.bisectRight=hh.right,Wg.shuffle=function(a){for(var b,c,d=a.length;d;)c=Math.random()*d--|0,b=a[d],a[d]=a[c],a[c]=b;return a},Wg.permute=function(a,b){for(var c=b.length,d=new Array(c);c--;)d[c]=a[b[c]];return d},Wg.pairs=function(a){for(var b,c=0,d=a.length-1,e=a[0],f=new Array(0>d?0:d);d>c;)f[c]=[b=e,e=a[++c]];return f},Wg.zip=function(){if(!(e=arguments.length))return[];for(var a=-1,c=Wg.min(arguments,b),d=new Array(c);++a<c;)for(var e,f=-1,g=d[a]=new Array(e);++f<e;)g[f]=arguments[f][a];return d},Wg.transpose=function(a){return Wg.zip.apply(Wg,a)},Wg.keys=function(a){var b=[];for(var c in a)b.push(c);return b},Wg.values=function(a){var b=[];for(var c in a)b.push(a[c]);return b},Wg.entries=function(a){var b=[];for(var c in a)b.push({key:c,value:a[c]});return b},Wg.merge=function(a){for(var b,c,d,e=a.length,f=-1,g=0;++f<e;)g+=a[f].length;for(c=new Array(g);--e>=0;)for(d=a[e],b=d.length;--b>=0;)c[--g]=d[b];return c};var ih=Math.abs;Wg.range=function(a,b,d){if(arguments.length<3&&(d=1,arguments.length<2&&(b=a,a=0)),(b-a)/d===1/0)throw new Error("infinite range");var e,f=[],g=c(ih(d)),h=-1;if(a*=g,b*=g,d*=g,0>d)for(;(e=a+d*++h)>b;)f.push(e/g);else for(;(e=a+d*++h)<b;)f.push(e/g);return f},Wg.map=function(a){var b=new e;if(a instanceof e)a.forEach(function(a,c){b.set(a,c)});else for(var c in a)b.set(c,a[c]);return b},d(e,{has:function(a){return jh+a in this},get:function(a){return this[jh+a]},set:function(a,b){return this[jh+a]=b},remove:function(a){return a=jh+a,a in this&&delete this[a]},keys:function(){var a=[];return this.forEach(function(b){a.push(b)}),a},values:function(){var a=[];return this.forEach(function(b,c){a.push(c)}),a},entries:function(){var a=[];return this.forEach(function(b,c){a.push({key:b,value:c})}),a},forEach:function(a){for(var b in this)b.charCodeAt(0)===kh&&a.call(this,b.substring(1),this[b])}});var jh="\x00",kh=jh.charCodeAt(0);Wg.nest=function(){function a(b,h,i){if(i>=g.length)return d?d.call(f,h):c?h.sort(c):h;for(var j,k,l,m,n=-1,o=h.length,p=g[i++],q=new e;++n<o;)(m=q.get(j=p(k=h[n])))?m.push(k):q.set(j,[k]);return b?(k=b(),l=function(c,d){k.set(c,a(b,d,i))}):(k={},l=function(c,d){k[c]=a(b,d,i)}),q.forEach(l),k}function b(a,c){if(c>=g.length)return a;var d=[],e=h[c++];return a.forEach(function(a,e){d.push({key:a,values:b(e,c)})}),e?d.sort(function(a,b){return e(a.key,b.key)}):d}var c,d,f={},g=[],h=[];return f.map=function(b,c){return a(c,b,0)},f.entries=function(c){return b(a(Wg.map,c,0),0)},f.key=function(a){return g.push(a),f},f.sortKeys=function(a){return h[g.length-1]=a,f},f.sortValues=function(a){return c=a,f},f.rollup=function(a){return d=a,f},f},Wg.set=function(a){var b=new f;if(a)for(var c=0,d=a.length;d>c;++c)b.add(a[c]);return b},d(f,{has:function(a){return jh+a in this},add:function(a){return this[jh+a]=!0,a},remove:function(a){return a=jh+a,a in this&&delete this[a]},values:function(){var a=[];return this.forEach(function(b){a.push(b)}),a},forEach:function(a){for(var b in this)b.charCodeAt(0)===kh&&a.call(this,b.substring(1))}}),Wg.behavior={},Wg.rebind=function(a,b){for(var c,d=1,e=arguments.length;++d<e;)a[c=arguments[d]]=g(a,b,b[c]);return a};var lh=["webkit","ms","moz","Moz","o","O"];Wg.dispatch=function(){for(var a=new j,b=-1,c=arguments.length;++b<c;)a[arguments[b]]=k(a);return a},j.prototype.on=function(a,b){var c=a.indexOf("."),d="";if(c>=0&&(d=a.substring(c+1),a=a.substring(0,c)),a)return arguments.length<2?this[a].on(d):this[a].on(d,b);if(2===arguments.length){if(null==b)for(a in this)this.hasOwnProperty(a)&&this[a].on(d,null);return this}},Wg.event=null,Wg.requote=function(a){return a.replace(mh,"\\$&")};var mh=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,nh={}.__proto__?function(a,b){a.__proto__=b}:function(a,b){for(var c in b)a[c]=b[c]},oh=function(a,b){return b.querySelector(a)},ph=function(a,b){return b.querySelectorAll(a)},qh=$g[h($g,"matchesSelector")],rh=function(a,b){return qh.call(a,b)};"function"==typeof Sizzle&&(oh=function(a,b){return Sizzle(a,b)[0]||null},ph=function(a,b){return Sizzle.uniqueSort(Sizzle(a,b))},rh=Sizzle.matchesSelector),Wg.selection=function(){return vh};var sh=Wg.selection.prototype=[];sh.select=function(a){var b,c,d,e,f=[];a=p(a);for(var g=-1,h=this.length;++g<h;){f.push(b=[]),b.parentNode=(d=this[g]).parentNode;for(var i=-1,j=d.length;++i<j;)(e=d[i])?(b.push(c=a.call(e,e.__data__,i,g)),c&&"__data__"in e&&(c.__data__=e.__data__)):b.push(null)}return o(f)},sh.selectAll=function(a){var b,c,d=[];a=q(a);for(var e=-1,f=this.length;++e<f;)for(var g=this[e],h=-1,i=g.length;++h<i;)(c=g[h])&&(d.push(b=Yg(a.call(c,c.__data__,h,e))),b.parentNode=c);return o(d)};var th={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};Wg.ns={prefix:th,qualify:function(a){var b=a.indexOf(":"),c=a;return b>=0&&(c=a.substring(0,b),a=a.substring(b+1)),th.hasOwnProperty(c)?{space:th[c],local:a}:a}},sh.attr=function(a,b){if(arguments.length<2){if("string"==typeof a){var c=this.node();return a=Wg.ns.qualify(a),a.local?c.getAttributeNS(a.space,a.local):c.getAttribute(a)}for(b in a)this.each(r(b,a[b]));return this}return this.each(r(a,b))},sh.classed=function(a,b){if(arguments.length<2){if("string"==typeof a){var c=this.node(),d=(a=u(a)).length,e=-1;if(b=c.classList){for(;++e<d;)if(!b.contains(a[e]))return!1}else for(b=c.getAttribute("class");++e<d;)if(!t(a[e]).test(b))return!1;return!0}for(b in a)this.each(v(b,a[b]));return this}return this.each(v(a,b))},sh.style=function(a,b,c){var d=arguments.length;if(3>d){if("string"!=typeof a){2>d&&(b="");for(c in a)this.each(x(c,a[c],b));return this}if(2>d)return _g.getComputedStyle(this.node(),null).getPropertyValue(a);c=""}return this.each(x(a,b,c))},sh.property=function(a,b){if(arguments.length<2){if("string"==typeof a)return this.node()[a];for(b in a)this.each(y(b,a[b]));return this}return this.each(y(a,b))},sh.text=function(a){return arguments.length?this.each("function"==typeof a?function(){var b=a.apply(this,arguments);this.textContent=null==b?"":b}:null==a?function(){this.textContent=""}:function(){this.textContent=a}):this.node().textContent},sh.html=function(a){return arguments.length?this.each("function"==typeof a?function(){var b=a.apply(this,arguments);this.innerHTML=null==b?"":b}:null==a?function(){this.innerHTML=""}:function(){this.innerHTML=a}):this.node().innerHTML},sh.append=function(a){return a=z(a),this.select(function(){return this.appendChild(a.apply(this,arguments))})},sh.insert=function(a,b){return a=z(a),b=p(b),this.select(function(){return this.insertBefore(a.apply(this,arguments),b.apply(this,arguments)||null)})},sh.remove=function(){return this.each(function(){var a=this.parentNode;a&&a.removeChild(this)})},sh.data=function(a,b){function c(a,c){var d,f,g,h=a.length,l=c.length,m=Math.min(h,l),n=new Array(l),o=new Array(l),p=new Array(h);if(b){var q,r=new e,s=new e,t=[];for(d=-1;++d<h;)q=b.call(f=a[d],f.__data__,d),r.has(q)?p[d]=f:r.set(q,f),t.push(q);for(d=-1;++d<l;)q=b.call(c,g=c[d],d),(f=r.get(q))?(n[d]=f,f.__data__=g):s.has(q)||(o[d]=A(g)),s.set(q,g),r.remove(q);for(d=-1;++d<h;)r.has(t[d])&&(p[d]=a[d])}else{for(d=-1;++d<m;)f=a[d],g=c[d],f?(f.__data__=g,n[d]=f):o[d]=A(g);for(;l>d;++d)o[d]=A(c[d]);for(;h>d;++d)p[d]=a[d]}o.update=n,o.parentNode=n.parentNode=p.parentNode=a.parentNode,i.push(o),j.push(n),k.push(p)}var d,f,g=-1,h=this.length;if(!arguments.length){for(a=new Array(h=(d=this[0]).length);++g<h;)(f=d[g])&&(a[g]=f.__data__);return a}var i=E([]),j=o([]),k=o([]);if("function"==typeof a)for(;++g<h;)c(d=this[g],a.call(d,d.parentNode.__data__,g));else for(;++g<h;)c(d=this[g],a);return j.enter=function(){return i},j.exit=function(){return k},j},sh.datum=function(a){return arguments.length?this.property("__data__",a):this.property("__data__")},sh.filter=function(a){var b,c,d,e=[];"function"!=typeof a&&(a=B(a));for(var f=0,g=this.length;g>f;f++){e.push(b=[]),b.parentNode=(c=this[f]).parentNode;for(var h=0,i=c.length;i>h;h++)(d=c[h])&&a.call(d,d.__data__,h,f)&&b.push(d)}return o(e)},sh.order=function(){for(var a=-1,b=this.length;++a<b;)for(var c,d=this[a],e=d.length-1,f=d[e];--e>=0;)(c=d[e])&&(f&&f!==c.nextSibling&&f.parentNode.insertBefore(c,f),f=c);return this},sh.sort=function(a){a=C.apply(this,arguments);for(var b=-1,c=this.length;++b<c;)this[b].sort(a);return this.order()},sh.each=function(a){return D(this,function(b,c,d){a.call(b,b.__data__,c,d)})},sh.call=function(a){var b=Yg(arguments);return a.apply(b[0]=this,b),this},sh.empty=function(){return!this.node()},sh.node=function(){for(var a=0,b=this.length;b>a;a++)for(var c=this[a],d=0,e=c.length;e>d;d++){var f=c[d];if(f)return f}return null},sh.size=function(){var a=0;return this.each(function(){++a}),a};var uh=[];Wg.selection.enter=E,Wg.selection.enter.prototype=uh,uh.append=sh.append,uh.empty=sh.empty,uh.node=sh.node,uh.call=sh.call,uh.size=sh.size,uh.select=function(a){for(var b,c,d,e,f,g=[],h=-1,i=this.length;++h<i;){d=(e=this[h]).update,g.push(b=[]),b.parentNode=e.parentNode;for(var j=-1,k=e.length;++j<k;)(f=e[j])?(b.push(d[j]=c=a.call(e.parentNode,f.__data__,j,h)),c.__data__=f.__data__):b.push(null)}return o(g)},uh.insert=function(a,b){return arguments.length<2&&(b=F(this)),sh.insert.call(this,a,b)},sh.transition=function(){for(var a,b,c=zj||++Ej,d=[],e=Aj||{time:Date.now(),ease:Od,delay:0,duration:250},f=-1,g=this.length;++f<g;){d.push(a=[]);for(var h=this[f],i=-1,j=h.length;++i<j;)(b=h[i])&&gg(b,i,c,e),a.push(b)}return dg(d,c)},sh.interrupt=function(){return this.each(G)},Wg.select=function(a){var b=["string"==typeof a?oh(a,Zg):a];return b.parentNode=$g,o([b])},Wg.selectAll=function(a){var b=Yg("string"==typeof a?ph(a,Zg):a);return b.parentNode=$g,o([b])};var vh=Wg.select($g);sh.on=function(a,b,c){var d=arguments.length;if(3>d){if("string"!=typeof a){2>d&&(b=!1);for(c in a)this.each(H(c,a[c],b));return this}if(2>d)return(d=this.node()["__on"+a])&&d._;c=!1}return this.each(H(a,b,c))};var wh=Wg.map({mouseenter:"mouseover",mouseleave:"mouseout"});wh.forEach(function(a){"on"+a in Zg&&wh.remove(a)});var xh="onselectstart"in Zg?null:h($g.style,"userSelect"),yh=0;Wg.mouse=function(a){return L(a,m())};var zh=/WebKit/.test(_g.navigator.userAgent)?-1:0;Wg.touches=function(a,b){return arguments.length<2&&(b=m().touches),b?Yg(b).map(function(b){var c=L(a,b);return c.identifier=b.identifier,c}):[]},Wg.behavior.drag=function(){function a(){this.on("mousedown.drag",g).on("touchstart.drag",h)}function b(){return Wg.event.changedTouches[0].identifier}function c(a,b){return Wg.touches(a).filter(function(a){return a.identifier===b})[0]}function d(a,b,c,d){return function(){function g(){var a=b(k,n),c=a[0]-p[0],d=a[1]-p[1];q|=c|d,p=a,l({type:"drag",x:a[0]+i[0],y:a[1]+i[1],dx:c,dy:d})}function h(){r.on(c+"."+o,null).on(d+"."+o,null),s(q&&Wg.event.target===m),l({type:"dragend"})}var i,j=this,k=j.parentNode,l=e.of(j,arguments),m=Wg.event.target,n=a(),o=null==n?"drag":"drag-"+n,p=b(k,n),q=0,r=Wg.select(_g).on(c+"."+o,g).on(d+"."+o,h),s=K();f?(i=f.apply(j,arguments),i=[i.x-p[0],i.y-p[1]]):i=[0,0],l({type:"dragstart"})}}var e=n(a,"drag","dragstart","dragend"),f=null,g=d(i,Wg.mouse,"mousemove","mouseup"),h=d(b,c,"touchmove","touchend");return a.origin=function(b){return arguments.length?(f=b,a):f},Wg.rebind(a,e,"on")};var Ah=Math.PI,Bh=2*Ah,Ch=Ah/2,Dh=1e-6,Eh=Dh*Dh,Fh=Ah/180,Gh=180/Ah,Hh=Math.SQRT2,Ih=2,Jh=4;Wg.interpolateZoom=function(a,b){function c(a){var b=a*s;if(r){var c=Q(p),g=f/(Ih*m)*(c*R(Hh*b+p)-P(p));return[d+g*j,e+g*k,f*c/Q(Hh*b+p)]}return[d+a*j,e+a*k,f*Math.exp(Hh*b)]}var d=a[0],e=a[1],f=a[2],g=b[0],h=b[1],i=b[2],j=g-d,k=h-e,l=j*j+k*k,m=Math.sqrt(l),n=(i*i-f*f+Jh*l)/(2*f*Ih*m),o=(i*i-f*f-Jh*l)/(2*i*Ih*m),p=Math.log(Math.sqrt(n*n+1)-n),q=Math.log(Math.sqrt(o*o+1)-o),r=q-p,s=(r||Math.log(i/f))/Hh;return c.duration=1e3*s,c},Wg.behavior.zoom=function(){function a(a){a.on(B,j).on(Mh+".zoom",m).on(C,o).on("dblclick.zoom",p).on(E,k)
+}function b(a){return[(a[0]-y.x)/y.k,(a[1]-y.y)/y.k]}function c(a){return[a[0]*y.k+y.x,a[1]*y.k+y.y]}function d(a){y.k=Math.max(A[0],Math.min(A[1],a))}function e(a,b){b=c(b),y.x+=a[0]-b[0],y.y+=a[1]-b[1]}function f(){v&&v.domain(u.range().map(function(a){return(a-y.x)/y.k}).map(u.invert)),x&&x.domain(w.range().map(function(a){return(a-y.y)/y.k}).map(w.invert))}function g(a){a({type:"zoomstart"})}function h(a){f(),a({type:"zoom",scale:y.k,translate:[y.x,y.y]})}function i(a){a({type:"zoomend"})}function j(){function a(){k=1,e(Wg.mouse(d),m),h(f)}function c(){l.on(C,_g===d?o:null).on(D,null),n(k&&Wg.event.target===j),i(f)}var d=this,f=F.of(d,arguments),j=Wg.event.target,k=0,l=Wg.select(_g).on(C,a).on(D,c),m=b(Wg.mouse(d)),n=K();G.call(d),g(f)}function k(){function a(){var a=Wg.touches(o);return n=y.k,a.forEach(function(a){a.identifier in q&&(q[a.identifier]=b(a))}),a}function c(){for(var b=Wg.event.changedTouches,c=0,f=b.length;f>c;++c)q[b[c].identifier]=null;var g=a(),i=Date.now();if(1===g.length){if(500>i-t){var j=g[0],k=q[j.identifier];d(2*y.k),e(j,k),l(),h(p)}t=i}else if(g.length>1){var j=g[0],m=g[1],n=j[0]-m[0],o=j[1]-m[1];r=n*n+o*o}}function f(){for(var a,b,c,f,g=Wg.touches(o),i=0,j=g.length;j>i;++i,f=null)if(c=g[i],f=q[c.identifier]){if(b)break;a=c,b=f}if(f){var k=(k=c[0]-a[0])*k+(k=c[1]-a[1])*k,l=r&&Math.sqrt(k/r);a=[(a[0]+c[0])/2,(a[1]+c[1])/2],b=[(b[0]+f[0])/2,(b[1]+f[1])/2],d(l*n)}t=null,e(a,b),h(p)}function m(){if(Wg.event.touches.length){for(var b=Wg.event.changedTouches,c=0,d=b.length;d>c;++c)delete q[b[c].identifier];for(var e in q)return void a()}w.on(u,null).on(v,null),x.on(B,j).on(E,k),z(),i(p)}var n,o=this,p=F.of(o,arguments),q={},r=0,s=Wg.event.changedTouches[0].identifier,u="touchmove.zoom-"+s,v="touchend.zoom-"+s,w=Wg.select(_g).on(u,f).on(v,m),x=Wg.select(o).on(B,null).on(E,c),z=K();G.call(o),c(),g(p)}function m(){var a=F.of(this,arguments);s?clearTimeout(s):(G.call(this),g(a)),s=setTimeout(function(){s=null,i(a)},50),l();var c=r||Wg.mouse(this);q||(q=b(c)),d(Math.pow(2,.002*Kh())*y.k),e(c,q),h(a)}function o(){q=null}function p(){var a=F.of(this,arguments),c=Wg.mouse(this),f=b(c),j=Math.log(y.k)/Math.LN2;g(a),d(Math.pow(2,Wg.event.shiftKey?Math.ceil(j)-1:Math.floor(j)+1)),e(c,f),h(a),i(a)}var q,r,s,t,u,v,w,x,y={x:0,y:0,k:1},z=[960,500],A=Lh,B="mousedown.zoom",C="mousemove.zoom",D="mouseup.zoom",E="touchstart.zoom",F=n(a,"zoomstart","zoom","zoomend");return a.event=function(a){a.each(function(){var a=F.of(this,arguments),b=y;zj?Wg.select(this).transition().each("start.zoom",function(){y=this.__chart__||{x:0,y:0,k:1},g(a)}).tween("zoom:zoom",function(){var c=z[0],d=z[1],e=c/2,f=d/2,g=Wg.interpolateZoom([(e-y.x)/y.k,(f-y.y)/y.k,c/y.k],[(e-b.x)/b.k,(f-b.y)/b.k,c/b.k]);return function(b){var d=g(b),i=c/d[2];this.__chart__=y={x:e-d[0]*i,y:f-d[1]*i,k:i},h(a)}}).each("end.zoom",function(){i(a)}):(this.__chart__=y,g(a),h(a),i(a))})},a.translate=function(b){return arguments.length?(y={x:+b[0],y:+b[1],k:y.k},f(),a):[y.x,y.y]},a.scale=function(b){return arguments.length?(y={x:y.x,y:y.y,k:+b},f(),a):y.k},a.scaleExtent=function(b){return arguments.length?(A=null==b?Lh:[+b[0],+b[1]],a):A},a.center=function(b){return arguments.length?(r=b&&[+b[0],+b[1]],a):r},a.size=function(b){return arguments.length?(z=b&&[+b[0],+b[1]],a):z},a.x=function(b){return arguments.length?(v=b,u=b.copy(),y={x:0,y:0,k:1},a):v},a.y=function(b){return arguments.length?(x=b,w=b.copy(),y={x:0,y:0,k:1},a):x},Wg.rebind(a,F,"on")};var Kh,Lh=[0,1/0],Mh="onwheel"in Zg?(Kh=function(){return-Wg.event.deltaY*(Wg.event.deltaMode?120:1)},"wheel"):"onmousewheel"in Zg?(Kh=function(){return Wg.event.wheelDelta},"mousewheel"):(Kh=function(){return-Wg.event.detail},"MozMousePixelScroll");T.prototype.toString=function(){return this.rgb()+""},Wg.hsl=function(a,b,c){return 1===arguments.length?a instanceof V?U(a.h,a.s,a.l):kb(""+a,lb,U):U(+a,+b,+c)};var Nh=V.prototype=new T;Nh.brighter=function(a){return a=Math.pow(.7,arguments.length?a:1),U(this.h,this.s,this.l/a)},Nh.darker=function(a){return a=Math.pow(.7,arguments.length?a:1),U(this.h,this.s,a*this.l)},Nh.rgb=function(){return W(this.h,this.s,this.l)},Wg.hcl=function(a,b,c){return 1===arguments.length?a instanceof Y?X(a.h,a.c,a.l):a instanceof _?bb(a.l,a.a,a.b):bb((a=mb((a=Wg.rgb(a)).r,a.g,a.b)).l,a.a,a.b):X(+a,+b,+c)};var Oh=Y.prototype=new T;Oh.brighter=function(a){return X(this.h,this.c,Math.min(100,this.l+Ph*(arguments.length?a:1)))},Oh.darker=function(a){return X(this.h,this.c,Math.max(0,this.l-Ph*(arguments.length?a:1)))},Oh.rgb=function(){return Z(this.h,this.c,this.l).rgb()},Wg.lab=function(a,b,c){return 1===arguments.length?a instanceof _?$(a.l,a.a,a.b):a instanceof Y?Z(a.l,a.c,a.h):mb((a=Wg.rgb(a)).r,a.g,a.b):$(+a,+b,+c)};var Ph=18,Qh=.95047,Rh=1,Sh=1.08883,Th=_.prototype=new T;Th.brighter=function(a){return $(Math.min(100,this.l+Ph*(arguments.length?a:1)),this.a,this.b)},Th.darker=function(a){return $(Math.max(0,this.l-Ph*(arguments.length?a:1)),this.a,this.b)},Th.rgb=function(){return ab(this.l,this.a,this.b)},Wg.rgb=function(a,b,c){return 1===arguments.length?a instanceof ib?hb(a.r,a.g,a.b):kb(""+a,hb,W):hb(~~a,~~b,~~c)};var Uh=ib.prototype=new T;Uh.brighter=function(a){a=Math.pow(.7,arguments.length?a:1);var b=this.r,c=this.g,d=this.b,e=30;return b||c||d?(b&&e>b&&(b=e),c&&e>c&&(c=e),d&&e>d&&(d=e),hb(Math.min(255,~~(b/a)),Math.min(255,~~(c/a)),Math.min(255,~~(d/a)))):hb(e,e,e)},Uh.darker=function(a){return a=Math.pow(.7,arguments.length?a:1),hb(~~(a*this.r),~~(a*this.g),~~(a*this.b))},Uh.hsl=function(){return lb(this.r,this.g,this.b)},Uh.toString=function(){return"#"+jb(this.r)+jb(this.g)+jb(this.b)};var Vh=Wg.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});Vh.forEach(function(a,b){Vh.set(a,fb(b))}),Wg.functor=pb,Wg.xhr=rb(qb),Wg.dsv=function(a,b){function c(a,c,f){arguments.length<3&&(f=c,c=null);var g=sb(a,b,null==c?d:e(c),f);return g.row=function(a){return arguments.length?g.response(null==(c=a)?d:e(a)):c},g}function d(a){return c.parse(a.responseText)}function e(a){return function(b){return c.parse(b.responseText,a)}}function g(b){return b.map(h).join(a)}function h(a){return i.test(a)?'"'+a.replace(/\"/g,'""')+'"':a}var i=new RegExp('["'+a+"\n]"),j=a.charCodeAt(0);return c.parse=function(a,b){var d;return c.parseRows(a,function(a,c){if(d)return d(a,c-1);var e=new Function("d","return {"+a.map(function(a,b){return JSON.stringify(a)+": d["+b+"]"}).join(",")+"}");d=b?function(a,c){return b(e(a),c)}:e})},c.parseRows=function(a,b){function c(){if(k>=i)return g;if(e)return e=!1,f;var b=k;if(34===a.charCodeAt(b)){for(var c=b;c++<i;)if(34===a.charCodeAt(c)){if(34!==a.charCodeAt(c+1))break;++c}k=c+2;var d=a.charCodeAt(c+1);return 13===d?(e=!0,10===a.charCodeAt(c+2)&&++k):10===d&&(e=!0),a.substring(b+1,c).replace(/""/g,'"')}for(;i>k;){var d=a.charCodeAt(k++),h=1;if(10===d)e=!0;else if(13===d)e=!0,10===a.charCodeAt(k)&&(++k,++h);else if(d!==j)continue;return a.substring(b,k-h)}return a.substring(b)}for(var d,e,f={},g={},h=[],i=a.length,k=0,l=0;(d=c())!==g;){for(var m=[];d!==f&&d!==g;)m.push(d),d=c();(!b||(m=b(m,l++)))&&h.push(m)}return h},c.format=function(b){if(Array.isArray(b[0]))return c.formatRows(b);var d=new f,e=[];return b.forEach(function(a){for(var b in a)d.has(b)||e.push(d.add(b))}),[e.map(h).join(a)].concat(b.map(function(b){return e.map(function(a){return h(b[a])}).join(a)})).join("\n")},c.formatRows=function(a){return a.map(g).join("\n")},c},Wg.csv=Wg.dsv(",","text/csv"),Wg.tsv=Wg.dsv("	","text/tab-separated-values");var Wh,Xh,Yh,Zh,$h,_h=_g[h(_g,"requestAnimationFrame")]||function(a){setTimeout(a,17)};Wg.timer=function(a,b,c){var d=arguments.length;2>d&&(b=0),3>d&&(c=Date.now());var e=c+b,f={c:a,t:e,f:!1,n:null};Xh?Xh.n=f:Wh=f,Xh=f,Yh||(Zh=clearTimeout(Zh),Yh=1,_h(ub))},Wg.timer.flush=function(){vb(),wb()};var ai=".",bi=",",ci=[3,3],di="$",ei=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"].map(xb);Wg.formatPrefix=function(a,b){var c=0;return a&&(0>a&&(a*=-1),b&&(a=Wg.round(a,yb(a,b))),c=1+Math.floor(1e-12+Math.log(a)/Math.LN10),c=Math.max(-24,Math.min(24,3*Math.floor((0>=c?c+1:c-1)/3)))),ei[8+c/3]},Wg.round=function(a,b){return b?Math.round(a*(b=Math.pow(10,b)))/b:Math.round(a)},Wg.format=function(a){var b=fi.exec(a),c=b[1]||" ",d=b[2]||">",e=b[3]||"",f=b[4]||"",g=b[5],h=+b[6],i=b[7],j=b[8],k=b[9],l=1,m="",n=!1;switch(j&&(j=+j.substring(1)),(g||"0"===c&&"="===d)&&(g=c="0",d="=",i&&(h-=Math.floor((h-1)/4))),k){case"n":i=!0,k="g";break;case"%":l=100,m="%",k="f";break;case"p":l=100,m="%",k="r";break;case"b":case"o":case"x":case"X":"#"===f&&(f="0"+k.toLowerCase());case"c":case"d":n=!0,j=0;break;case"s":l=-1,k="r"}"#"===f?f="":"$"===f&&(f=di),"r"!=k||j||(k="g"),null!=j&&("g"==k?j=Math.max(1,Math.min(21,j)):("e"==k||"f"==k)&&(j=Math.max(0,Math.min(20,j)))),k=gi.get(k)||zb;var o=g&&i;return function(a){if(n&&a%1)return"";var b=0>a||0===a&&0>1/a?(a=-a,"-"):e;if(0>l){var p=Wg.formatPrefix(a,j);a=p.scale(a),m=p.symbol}else a*=l;a=k(a,j);var q=a.lastIndexOf("."),r=0>q?a:a.substring(0,q),s=0>q?"":ai+a.substring(q+1);!g&&i&&(r=hi(r));var t=f.length+r.length+s.length+(o?0:b.length),u=h>t?new Array(t=h-t+1).join(c):"";return o&&(r=hi(u+r)),b+=f,a=r+s,("<"===d?b+a+u:">"===d?u+b+a:"^"===d?u.substring(0,t>>=1)+b+a+u.substring(t):b+(o?a:u+a))+m}};var fi=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,gi=Wg.map({b:function(a){return a.toString(2)},c:function(a){return String.fromCharCode(a)},o:function(a){return a.toString(8)},x:function(a){return a.toString(16)},X:function(a){return a.toString(16).toUpperCase()},g:function(a,b){return a.toPrecision(b)},e:function(a,b){return a.toExponential(b)},f:function(a,b){return a.toFixed(b)},r:function(a,b){return(a=Wg.round(a,yb(a,b))).toFixed(Math.max(0,Math.min(20,yb(a*(1+1e-15),b))))}}),hi=qb;if(ci){var ii=ci.length;hi=function(a){for(var b=a.length,c=[],d=0,e=ci[0];b>0&&e>0;)c.push(a.substring(b-=e,b+e)),e=ci[d=(d+1)%ii];return c.reverse().join(bi)}}Wg.geo={},Ab.prototype={s:0,t:0,add:function(a){Bb(a,this.t,ji),Bb(ji.s,this.s,this),this.s?this.t+=ji.t:this.s=ji.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var ji=new Ab;Wg.geo.stream=function(a,b){a&&ki.hasOwnProperty(a.type)?ki[a.type](a,b):Cb(a,b)};var ki={Feature:function(a,b){Cb(a.geometry,b)},FeatureCollection:function(a,b){for(var c=a.features,d=-1,e=c.length;++d<e;)Cb(c[d].geometry,b)}},li={Sphere:function(a,b){b.sphere()},Point:function(a,b){a=a.coordinates,b.point(a[0],a[1],a[2])},MultiPoint:function(a,b){for(var c=a.coordinates,d=-1,e=c.length;++d<e;)a=c[d],b.point(a[0],a[1],a[2])},LineString:function(a,b){Db(a.coordinates,b,0)},MultiLineString:function(a,b){for(var c=a.coordinates,d=-1,e=c.length;++d<e;)Db(c[d],b,0)},Polygon:function(a,b){Eb(a.coordinates,b)},MultiPolygon:function(a,b){for(var c=a.coordinates,d=-1,e=c.length;++d<e;)Eb(c[d],b)},GeometryCollection:function(a,b){for(var c=a.geometries,d=-1,e=c.length;++d<e;)Cb(c[d],b)}};Wg.geo.area=function(a){return mi=0,Wg.geo.stream(a,oi),mi};var mi,ni=new Ab,oi={sphere:function(){mi+=4*Ah},point:i,lineStart:i,lineEnd:i,polygonStart:function(){ni.reset(),oi.lineStart=Fb},polygonEnd:function(){var a=2*ni;mi+=0>a?4*Ah+a:a,oi.lineStart=oi.lineEnd=oi.point=i}};Wg.geo.bounds=function(){function a(a,b){t.push(u=[k=a,m=a]),l>b&&(l=b),b>n&&(n=b)}function b(b,c){var d=Gb([b*Fh,c*Fh]);if(r){var e=Ib(r,d),f=[e[1],-e[0],0],g=Ib(f,e);Lb(g),g=Mb(g);var i=b-o,j=i>0?1:-1,p=g[0]*Gh*j,q=ih(i)>180;if(q^(p>j*o&&j*b>p)){var s=g[1]*Gh;s>n&&(n=s)}else if(p=(p+360)%360-180,q^(p>j*o&&j*b>p)){var s=-g[1]*Gh;l>s&&(l=s)}else l>c&&(l=c),c>n&&(n=c);q?o>b?h(k,b)>h(k,m)&&(m=b):h(b,m)>h(k,m)&&(k=b):m>=k?(k>b&&(k=b),b>m&&(m=b)):b>o?h(k,b)>h(k,m)&&(m=b):h(b,m)>h(k,m)&&(k=b)}else a(b,c);r=d,o=b}function c(){v.point=b}function d(){u[0]=k,u[1]=m,v.point=a,r=null}function e(a,c){if(r){var d=a-o;s+=ih(d)>180?d+(d>0?360:-360):d}else p=a,q=c;oi.point(a,c),b(a,c)}function f(){oi.lineStart()}function g(){e(p,q),oi.lineEnd(),ih(s)>Dh&&(k=-(m=180)),u[0]=k,u[1]=m,r=null}function h(a,b){return(b-=a)<0?b+360:b}function i(a,b){return a[0]-b[0]}function j(a,b){return b[0]<=b[1]?b[0]<=a&&a<=b[1]:a<b[0]||b[1]<a}var k,l,m,n,o,p,q,r,s,t,u,v={point:a,lineStart:c,lineEnd:d,polygonStart:function(){v.point=e,v.lineStart=f,v.lineEnd=g,s=0,oi.polygonStart()},polygonEnd:function(){oi.polygonEnd(),v.point=a,v.lineStart=c,v.lineEnd=d,0>ni?(k=-(m=180),l=-(n=90)):s>Dh?n=90:-Dh>s&&(l=-90),u[0]=k,u[1]=m}};return function(a){n=m=-(k=l=1/0),t=[],Wg.geo.stream(a,v);var b=t.length;if(b){t.sort(i);for(var c,d=1,e=t[0],f=[e];b>d;++d)c=t[d],j(c[0],e)||j(c[1],e)?(h(e[0],c[1])>h(e[0],e[1])&&(e[1]=c[1]),h(c[0],e[1])>h(e[0],e[1])&&(e[0]=c[0])):f.push(e=c);for(var g,c,o=-1/0,b=f.length-1,d=0,e=f[b];b>=d;e=c,++d)c=f[d],(g=h(e[1],c[0]))>o&&(o=g,k=c[0],m=e[1])}return t=u=null,1/0===k||1/0===l?[[0/0,0/0],[0/0,0/0]]:[[k,l],[m,n]]}}(),Wg.geo.centroid=function(a){pi=qi=ri=si=ti=ui=vi=wi=xi=yi=zi=0,Wg.geo.stream(a,Ai);var b=xi,c=yi,d=zi,e=b*b+c*c+d*d;return Eh>e&&(b=ui,c=vi,d=wi,Dh>qi&&(b=ri,c=si,d=ti),e=b*b+c*c+d*d,Eh>e)?[0/0,0/0]:[Math.atan2(c,b)*Gh,O(d/Math.sqrt(e))*Gh]};var pi,qi,ri,si,ti,ui,vi,wi,xi,yi,zi,Ai={sphere:i,point:Ob,lineStart:Qb,lineEnd:Rb,polygonStart:function(){Ai.lineStart=Sb},polygonEnd:function(){Ai.lineStart=Qb}},Bi=Xb(Tb,ac,cc,[-Ah,-Ah/2]),Ci=1e9;Wg.geo.clipExtent=function(){var a,b,c,d,e,f,g={stream:function(a){return e&&(e.valid=!1),e=f(a),e.valid=!0,e},extent:function(h){return arguments.length?(f=fc(a=+h[0][0],b=+h[0][1],c=+h[1][0],d=+h[1][1]),e&&(e.valid=!1,e=null),g):[[a,b],[c,d]]}};return g.extent([[0,0],[960,500]])},(Wg.geo.conicEqualArea=function(){return hc(ic)}).raw=ic,Wg.geo.albers=function(){return Wg.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},Wg.geo.albersUsa=function(){function a(a){var f=a[0],g=a[1];return b=null,c(f,g),b||(d(f,g),b)||e(f,g),b}var b,c,d,e,f=Wg.geo.albers(),g=Wg.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),h=Wg.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),i={point:function(a,c){b=[a,c]}};return a.invert=function(a){var b=f.scale(),c=f.translate(),d=(a[0]-c[0])/b,e=(a[1]-c[1])/b;return(e>=.12&&.234>e&&d>=-.425&&-.214>d?g:e>=.166&&.234>e&&d>=-.214&&-.115>d?h:f).invert(a)},a.stream=function(a){var b=f.stream(a),c=g.stream(a),d=h.stream(a);return{point:function(a,e){b.point(a,e),c.point(a,e),d.point(a,e)},sphere:function(){b.sphere(),c.sphere(),d.sphere()},lineStart:function(){b.lineStart(),c.lineStart(),d.lineStart()},lineEnd:function(){b.lineEnd(),c.lineEnd(),d.lineEnd()},polygonStart:function(){b.polygonStart(),c.polygonStart(),d.polygonStart()},polygonEnd:function(){b.polygonEnd(),c.polygonEnd(),d.polygonEnd()}}},a.precision=function(b){return arguments.length?(f.precision(b),g.precision(b),h.precision(b),a):f.precision()},a.scale=function(b){return arguments.length?(f.scale(b),g.scale(.35*b),h.scale(b),a.translate(f.translate())):f.scale()},a.translate=function(b){if(!arguments.length)return f.translate();var j=f.scale(),k=+b[0],l=+b[1];return c=f.translate(b).clipExtent([[k-.455*j,l-.238*j],[k+.455*j,l+.238*j]]).stream(i).point,d=g.translate([k-.307*j,l+.201*j]).clipExtent([[k-.425*j+Dh,l+.12*j+Dh],[k-.214*j-Dh,l+.234*j-Dh]]).stream(i).point,e=h.translate([k-.205*j,l+.212*j]).clipExtent([[k-.214*j+Dh,l+.166*j+Dh],[k-.115*j-Dh,l+.234*j-Dh]]).stream(i).point,a},a.scale(1070)};var Di,Ei,Fi,Gi,Hi,Ii,Ji={point:i,lineStart:i,lineEnd:i,polygonStart:function(){Ei=0,Ji.lineStart=jc},polygonEnd:function(){Ji.lineStart=Ji.lineEnd=Ji.point=i,Di+=ih(Ei/2)}},Ki={point:kc,lineStart:i,lineEnd:i,polygonStart:i,polygonEnd:i},Li={point:nc,lineStart:oc,lineEnd:pc,polygonStart:function(){Li.lineStart=qc},polygonEnd:function(){Li.point=nc,Li.lineStart=oc,Li.lineEnd=pc}};Wg.geo.path=function(){function a(a){return a&&("function"==typeof h&&f.pointRadius(+h.apply(this,arguments)),g&&g.valid||(g=e(f)),Wg.geo.stream(a,g)),f.result()}function b(){return g=null,a}var c,d,e,f,g,h=4.5;return a.area=function(a){return Di=0,Wg.geo.stream(a,e(Ji)),Di},a.centroid=function(a){return ri=si=ti=ui=vi=wi=xi=yi=zi=0,Wg.geo.stream(a,e(Li)),zi?[xi/zi,yi/zi]:wi?[ui/wi,vi/wi]:ti?[ri/ti,si/ti]:[0/0,0/0]},a.bounds=function(a){return Hi=Ii=-(Fi=Gi=1/0),Wg.geo.stream(a,e(Ki)),[[Fi,Gi],[Hi,Ii]]},a.projection=function(a){return arguments.length?(e=(c=a)?a.stream||tc(a):qb,b()):c},a.context=function(a){return arguments.length?(f=null==(d=a)?new lc:new rc(a),"function"!=typeof h&&f.pointRadius(h),b()):d},a.pointRadius=function(b){return arguments.length?(h="function"==typeof b?b:(f.pointRadius(+b),+b),a):h},a.projection(Wg.geo.albersUsa()).context(null)},Wg.geo.transform=function(a){return{stream:function(b){var c=new uc(b);for(var d in a)c[d]=a[d];return c}}},uc.prototype={point:function(a,b){this.stream.point(a,b)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},Wg.geo.projection=wc,Wg.geo.projectionMutator=xc,(Wg.geo.equirectangular=function(){return wc(zc)}).raw=zc.invert=zc,Wg.geo.rotation=function(a){function b(b){return b=a(b[0]*Fh,b[1]*Fh),b[0]*=Gh,b[1]*=Gh,b}return a=Bc(a[0]%360*Fh,a[1]*Fh,a.length>2?a[2]*Fh:0),b.invert=function(b){return b=a.invert(b[0]*Fh,b[1]*Fh),b[0]*=Gh,b[1]*=Gh,b},b},Ac.invert=zc,Wg.geo.circle=function(){function a(){var a="function"==typeof d?d.apply(this,arguments):d,b=Bc(-a[0]*Fh,-a[1]*Fh,0).invert,e=[];return c(null,null,1,{point:function(a,c){e.push(a=b(a,c)),a[0]*=Gh,a[1]*=Gh}}),{type:"Polygon",coordinates:[e]}}var b,c,d=[0,0],e=6;return a.origin=function(b){return arguments.length?(d=b,a):d},a.angle=function(d){return arguments.length?(c=Fc((b=+d)*Fh,e*Fh),a):b},a.precision=function(d){return arguments.length?(c=Fc(b*Fh,(e=+d)*Fh),a):e},a.angle(90)},Wg.geo.distance=function(a,b){var c,d=(b[0]-a[0])*Fh,e=a[1]*Fh,f=b[1]*Fh,g=Math.sin(d),h=Math.cos(d),i=Math.sin(e),j=Math.cos(e),k=Math.sin(f),l=Math.cos(f);return Math.atan2(Math.sqrt((c=l*g)*c+(c=j*k-i*l*h)*c),i*k+j*l*h)},Wg.geo.graticule=function(){function a(){return{type:"MultiLineString",coordinates:b()}}function b(){return Wg.range(Math.ceil(f/q)*q,e,q).map(m).concat(Wg.range(Math.ceil(j/r)*r,i,r).map(n)).concat(Wg.range(Math.ceil(d/o)*o,c,o).filter(function(a){return ih(a%q)>Dh}).map(k)).concat(Wg.range(Math.ceil(h/p)*p,g,p).filter(function(a){return ih(a%r)>Dh}).map(l))}var c,d,e,f,g,h,i,j,k,l,m,n,o=10,p=o,q=90,r=360,s=2.5;return a.lines=function(){return b().map(function(a){return{type:"LineString",coordinates:a}})},a.outline=function(){return{type:"Polygon",coordinates:[m(f).concat(n(i).slice(1),m(e).reverse().slice(1),n(j).reverse().slice(1))]}},a.extent=function(b){return arguments.length?a.majorExtent(b).minorExtent(b):a.minorExtent()},a.majorExtent=function(b){return arguments.length?(f=+b[0][0],e=+b[1][0],j=+b[0][1],i=+b[1][1],f>e&&(b=f,f=e,e=b),j>i&&(b=j,j=i,i=b),a.precision(s)):[[f,j],[e,i]]},a.minorExtent=function(b){return arguments.length?(d=+b[0][0],c=+b[1][0],h=+b[0][1],g=+b[1][1],d>c&&(b=d,d=c,c=b),h>g&&(b=h,h=g,g=b),a.precision(s)):[[d,h],[c,g]]},a.step=function(b){return arguments.length?a.majorStep(b).minorStep(b):a.minorStep()},a.majorStep=function(b){return arguments.length?(q=+b[0],r=+b[1],a):[q,r]},a.minorStep=function(b){return arguments.length?(o=+b[0],p=+b[1],a):[o,p]},a.precision=function(b){return arguments.length?(s=+b,k=Hc(h,g,90),l=Ic(d,c,s),m=Hc(j,i,90),n=Ic(f,e,s),a):s},a.majorExtent([[-180,-90+Dh],[180,90-Dh]]).minorExtent([[-180,-80-Dh],[180,80+Dh]])},Wg.geo.greatArc=function(){function a(){return{type:"LineString",coordinates:[b||d.apply(this,arguments),c||e.apply(this,arguments)]}}var b,c,d=Jc,e=Kc;return a.distance=function(){return Wg.geo.distance(b||d.apply(this,arguments),c||e.apply(this,arguments))},a.source=function(c){return arguments.length?(d=c,b="function"==typeof c?null:c,a):d},a.target=function(b){return arguments.length?(e=b,c="function"==typeof b?null:b,a):e},a.precision=function(){return arguments.length?a:0},a},Wg.geo.interpolate=function(a,b){return Lc(a[0]*Fh,a[1]*Fh,b[0]*Fh,b[1]*Fh)},Wg.geo.length=function(a){return Mi=0,Wg.geo.stream(a,Ni),Mi};var Mi,Ni={sphere:i,point:i,lineStart:Mc,lineEnd:i,polygonStart:i,polygonEnd:i},Oi=Nc(function(a){return Math.sqrt(2/(1+a))},function(a){return 2*Math.asin(a/2)});(Wg.geo.azimuthalEqualArea=function(){return wc(Oi)}).raw=Oi;var Pi=Nc(function(a){var b=Math.acos(a);return b&&b/Math.sin(b)},qb);(Wg.geo.azimuthalEquidistant=function(){return wc(Pi)}).raw=Pi,(Wg.geo.conicConformal=function(){return hc(Oc)}).raw=Oc,(Wg.geo.conicEquidistant=function(){return hc(Pc)}).raw=Pc;var Qi=Nc(function(a){return 1/a},Math.atan);(Wg.geo.gnomonic=function(){return wc(Qi)}).raw=Qi,Qc.invert=function(a,b){return[a,2*Math.atan(Math.exp(b))-Ch]},(Wg.geo.mercator=function(){return Rc(Qc)}).raw=Qc;var Ri=Nc(function(){return 1},Math.asin);(Wg.geo.orthographic=function(){return wc(Ri)}).raw=Ri;var Si=Nc(function(a){return 1/(1+a)},function(a){return 2*Math.atan(a)});(Wg.geo.stereographic=function(){return wc(Si)}).raw=Si,Sc.invert=function(a,b){return[-b,2*Math.atan(Math.exp(a))-Ch]},(Wg.geo.transverseMercator=function(){var a=Rc(Sc),b=a.center,c=a.rotate;return a.center=function(a){return a?b([-a[1],a[0]]):(a=b(),[-a[1],a[0]])},a.rotate=function(a){return a?c([a[0],a[1],a.length>2?a[2]+90:90]):(a=c(),[a[0],a[1],a[2]-90])},a.rotate([0,0])}).raw=Sc,Wg.geom={},Wg.geom.hull=function(a){function b(a){if(a.length<3)return[];var b,e,f,g,h,i,j,k,l,m,n,o,p=pb(c),q=pb(d),r=a.length,s=r-1,t=[],u=[],v=0;if(p===Tc&&d===Uc)b=a;else for(f=0,b=[];r>f;++f)b.push([+p.call(this,e=a[f],f),+q.call(this,e,f)]);for(f=1;r>f;++f)(b[f][1]<b[v][1]||b[f][1]==b[v][1]&&b[f][0]<b[v][0])&&(v=f);for(f=0;r>f;++f)f!==v&&(i=b[f][1]-b[v][1],h=b[f][0]-b[v][0],t.push({angle:Math.atan2(i,h),index:f}));for(t.sort(function(a,b){return a.angle-b.angle}),n=t[0].angle,m=t[0].index,l=0,f=1;s>f;++f){if(g=t[f].index,n==t[f].angle){if(h=b[m][0]-b[v][0],i=b[m][1]-b[v][1],j=b[g][0]-b[v][0],k=b[g][1]-b[v][1],h*h+i*i>=j*j+k*k){t[f].index=-1;continue}t[l].index=-1}n=t[f].angle,l=f,m=g}for(u.push(v),f=0,g=0;2>f;++g)t[g].index>-1&&(u.push(t[g].index),f++);for(o=u.length;s>g;++g)if(!(t[g].index<0)){for(;!Vc(u[o-2],u[o-1],t[g].index,b);)--o;u[o++]=t[g].index}var w=[];for(f=o-1;f>=0;--f)w.push(a[u[f]]);return w}var c=Tc,d=Uc;return arguments.length?b(a):(b.x=function(a){return arguments.length?(c=a,b):c},b.y=function(a){return arguments.length?(d=a,b):d},b)},Wg.geom.polygon=function(a){return nh(a,Ti),a};var Ti=Wg.geom.polygon.prototype=[];Ti.area=function(){for(var a,b=-1,c=this.length,d=this[c-1],e=0;++b<c;)a=d,d=this[b],e+=a[1]*d[0]-a[0]*d[1];return.5*e},Ti.centroid=function(a){var b,c,d=-1,e=this.length,f=0,g=0,h=this[e-1];for(arguments.length||(a=-1/(6*this.area()));++d<e;)b=h,h=this[d],c=b[0]*h[1]-h[0]*b[1],f+=(b[0]+h[0])*c,g+=(b[1]+h[1])*c;return[f*a,g*a]},Ti.clip=function(a){for(var b,c,d,e,f,g,h=Yc(a),i=-1,j=this.length-Yc(this),k=this[j-1];++i<j;){for(b=a.slice(),a.length=0,e=this[i],f=b[(d=b.length-h)-1],c=-1;++c<d;)g=b[c],Wc(g,k,e)?(Wc(f,k,e)||a.push(Xc(f,g,k,e)),a.push(g)):Wc(f,k,e)&&a.push(Xc(f,g,k,e)),f=g;h&&a.push(a[0]),k=e}return a};var Ui,Vi,Wi,Xi,Yi,Zi=[],$i=[];ed.prototype.prepare=function(){for(var a,b=this.edges,c=b.length;c--;)a=b[c].edge,a.b&&a.a||b.splice(c,1);return b.sort(gd),b.length},qd.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},rd.prototype={insert:function(a,b){var c,d,e;if(a){if(b.P=a,b.N=a.N,a.N&&(a.N.P=b),a.N=b,a.R){for(a=a.R;a.L;)a=a.L;a.L=b}else a.R=b;c=a}else this._?(a=vd(this._),b.P=null,b.N=a,a.P=a.L=b,c=a):(b.P=b.N=null,this._=b,c=null);for(b.L=b.R=null,b.U=c,b.C=!0,a=b;c&&c.C;)d=c.U,c===d.L?(e=d.R,e&&e.C?(c.C=e.C=!1,d.C=!0,a=d):(a===c.R&&(td(this,c),a=c,c=a.U),c.C=!1,d.C=!0,ud(this,d))):(e=d.L,e&&e.C?(c.C=e.C=!1,d.C=!0,a=d):(a===c.L&&(ud(this,c),a=c,c=a.U),c.C=!1,d.C=!0,td(this,d))),c=a.U;this._.C=!1},remove:function(a){a.N&&(a.N.P=a.P),a.P&&(a.P.N=a.N),a.N=a.P=null;var b,c,d,e=a.U,f=a.L,g=a.R;if(c=f?g?vd(g):f:g,e?e.L===a?e.L=c:e.R=c:this._=c,f&&g?(d=c.C,c.C=a.C,c.L=f,f.U=c,c!==g?(e=c.U,c.U=a.U,a=c.R,e.L=a,c.R=g,g.U=c):(c.U=e,e=c,a=c.R)):(d=a.C,a=c),a&&(a.U=e),!d){if(a&&a.C)return void(a.C=!1);do{if(a===this._)break;if(a===e.L){if(b=e.R,b.C&&(b.C=!1,e.C=!0,td(this,e),b=e.R),b.L&&b.L.C||b.R&&b.R.C){b.R&&b.R.C||(b.L.C=!1,b.C=!0,ud(this,b),b=e.R),b.C=e.C,e.C=b.R.C=!1,td(this,e),a=this._;break}}else if(b=e.L,b.C&&(b.C=!1,e.C=!0,ud(this,e),b=e.L),b.L&&b.L.C||b.R&&b.R.C){b.L&&b.L.C||(b.R.C=!1,b.C=!0,td(this,b),b=e.L),b.C=e.C,e.C=b.L.C=!1,ud(this,e),a=this._;break}b.C=!0,a=e,e=e.U}while(!a.C);a&&(a.C=!1)}}},Wg.geom.voronoi=function(a){function b(a){var b=new Array(a.length),d=h[0][0],e=h[0][1],f=h[1][0],g=h[1][1];return wd(c(a),h).cells.forEach(function(c,h){var i=c.edges,j=c.site,k=b[h]=i.length?i.map(function(a){var b=a.start();return[b.x,b.y]}):j.x>=d&&j.x<=f&&j.y>=e&&j.y<=g?[[d,g],[f,g],[f,e],[d,e]]:[];k.point=a[h]}),b}function c(a){return a.map(function(a,b){return{x:Math.round(f(a,b)/Dh)*Dh,y:Math.round(g(a,b)/Dh)*Dh,i:b}})}var d=Tc,e=Uc,f=d,g=e,h=_i;return a?b(a):(b.links=function(a){return wd(c(a)).edges.filter(function(a){return a.l&&a.r}).map(function(b){return{source:a[b.l.i],target:a[b.r.i]}})},b.triangles=function(a){var b=[];return wd(c(a)).cells.forEach(function(c,d){for(var e,f,g=c.site,h=c.edges.sort(gd),i=-1,j=h.length,k=h[j-1].edge,l=k.l===g?k.r:k.l;++i<j;)e=k,f=l,k=h[i].edge,l=k.l===g?k.r:k.l,d<f.i&&d<l.i&&yd(g,f,l)<0&&b.push([a[d],a[f.i],a[l.i]])}),b},b.x=function(a){return arguments.length?(f=pb(d=a),b):d},b.y=function(a){return arguments.length?(g=pb(e=a),b):e},b.clipExtent=function(a){return arguments.length?(h=null==a?_i:a,b):h===_i?null:h},b.size=function(a){return arguments.length?b.clipExtent(a&&[[0,0],a]):h===_i?null:h&&h[1]},b)};var _i=[[-1e6,-1e6],[1e6,1e6]];Wg.geom.delaunay=function(a){return Wg.geom.voronoi().triangles(a)},Wg.geom.quadtree=function(a,b,c,d,e){function f(a){function f(a,b,c,d,e,f,g,h){if(!isNaN(c)&&!isNaN(d))if(a.leaf){var i=a.x,k=a.y;if(null!=i)if(ih(i-c)+ih(k-d)<.01)j(a,b,c,d,e,f,g,h);else{var l=a.point;a.x=a.y=a.point=null,j(a,l,i,k,e,f,g,h),j(a,b,c,d,e,f,g,h)}else a.x=c,a.y=d,a.point=b}else j(a,b,c,d,e,f,g,h)}function j(a,b,c,d,e,g,h,i){var j=.5*(e+h),k=.5*(g+i),l=c>=j,m=d>=k,n=(m<<1)+l;a.leaf=!1,a=a.nodes[n]||(a.nodes[n]=Bd()),l?e=j:h=j,m?g=k:i=k,f(a,b,c,d,e,g,h,i)}var k,l,m,n,o,p,q,r,s,t=pb(h),u=pb(i);if(null!=b)p=b,q=c,r=d,s=e;else if(r=s=-(p=q=1/0),l=[],m=[],o=a.length,g)for(n=0;o>n;++n)k=a[n],k.x<p&&(p=k.x),k.y<q&&(q=k.y),k.x>r&&(r=k.x),k.y>s&&(s=k.y),l.push(k.x),m.push(k.y);else for(n=0;o>n;++n){var v=+t(k=a[n],n),w=+u(k,n);p>v&&(p=v),q>w&&(q=w),v>r&&(r=v),w>s&&(s=w),l.push(v),m.push(w)}var x=r-p,y=s-q;x>y?s=q+x:r=p+y;var z=Bd();if(z.add=function(a){f(z,a,+t(a,++n),+u(a,n),p,q,r,s)},z.visit=function(a){Cd(a,z,p,q,r,s)},n=-1,null==b){for(;++n<o;)f(z,a[n],l[n],m[n],p,q,r,s);--n}else a.forEach(z.add);return l=m=a=k=null,z}var g,h=Tc,i=Uc;return(g=arguments.length)?(h=zd,i=Ad,3===g&&(e=c,d=b,c=b=0),f(a)):(f.x=function(a){return arguments.length?(h=a,f):h},f.y=function(a){return arguments.length?(i=a,f):i},f.extent=function(a){return arguments.length?(null==a?b=c=d=e=null:(b=+a[0][0],c=+a[0][1],d=+a[1][0],e=+a[1][1]),f):null==b?null:[[b,c],[d,e]]},f.size=function(a){return arguments.length?(null==a?b=c=d=e=null:(b=c=0,d=+a[0],e=+a[1]),f):null==b?null:[d-b,e-c]},f)},Wg.interpolateRgb=Dd,Wg.interpolateObject=Ed,Wg.interpolateNumber=Fd,Wg.interpolateString=Gd;var aj=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;Wg.interpolate=Hd,Wg.interpolators=[function(a,b){var c=typeof b;return("string"===c?Vh.has(b)||/^(#|rgb\(|hsl\()/.test(b)?Dd:Gd:b instanceof T?Dd:"object"===c?Array.isArray(b)?Id:Ed:Fd)(a,b)}],Wg.interpolateArray=Id;var bj=function(){return qb},cj=Wg.map({linear:bj,poly:Pd,quad:function(){return Md},cubic:function(){return Nd},sin:function(){return Qd},exp:function(){return Rd},circle:function(){return Sd},elastic:Td,back:Ud,bounce:function(){return Vd}}),dj=Wg.map({"in":qb,out:Kd,"in-out":Ld,"out-in":function(a){return Ld(Kd(a))}});Wg.ease=function(a){var b=a.indexOf("-"),c=b>=0?a.substring(0,b):a,d=b>=0?a.substring(b+1):"in";return c=cj.get(c)||bj,d=dj.get(d)||qb,Jd(d(c.apply(null,Xg.call(arguments,1))))},Wg.interpolateHcl=Wd,Wg.interpolateHsl=Xd,Wg.interpolateLab=Yd,Wg.interpolateRound=Zd,Wg.transform=function(a){var b=Zg.createElementNS(Wg.ns.prefix.svg,"g");return(Wg.transform=function(a){if(null!=a){b.setAttribute("transform",a);var c=b.transform.baseVal.consolidate()}return new $d(c?c.matrix:ej)})(a)},$d.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var ej={a:1,b:0,c:0,d:1,e:0,f:0};Wg.interpolateTransform=ce,Wg.layout={},Wg.layout.bundle=function(){return function(a){for(var b=[],c=-1,d=a.length;++c<d;)b.push(fe(a[c]));return b}},Wg.layout.chord=function(){function a(){var a,j,l,m,n,o={},p=[],q=Wg.range(f),r=[];for(c=[],d=[],a=0,m=-1;++m<f;){for(j=0,n=-1;++n<f;)j+=e[m][n];p.push(j),r.push(Wg.range(f)),a+=j}for(g&&q.sort(function(a,b){return g(p[a],p[b])}),h&&r.forEach(function(a,b){a.sort(function(a,c){return h(e[b][a],e[b][c])})}),a=(Bh-k*f)/a,j=0,m=-1;++m<f;){for(l=j,n=-1;++n<f;){var s=q[m],t=r[s][n],u=e[s][t],v=j,w=j+=u*a;
+o[s+"-"+t]={index:s,subindex:t,startAngle:v,endAngle:w,value:u}}d[s]={index:s,startAngle:l,endAngle:j,value:(j-l)/a},j+=k}for(m=-1;++m<f;)for(n=m-1;++n<f;){var x=o[m+"-"+n],y=o[n+"-"+m];(x.value||y.value)&&c.push(x.value<y.value?{source:y,target:x}:{source:x,target:y})}i&&b()}function b(){c.sort(function(a,b){return i((a.source.value+a.target.value)/2,(b.source.value+b.target.value)/2)})}var c,d,e,f,g,h,i,j={},k=0;return j.matrix=function(a){return arguments.length?(f=(e=a)&&e.length,c=d=null,j):e},j.padding=function(a){return arguments.length?(k=a,c=d=null,j):k},j.sortGroups=function(a){return arguments.length?(g=a,c=d=null,j):g},j.sortSubgroups=function(a){return arguments.length?(h=a,c=null,j):h},j.sortChords=function(a){return arguments.length?(i=a,c&&b(),j):i},j.chords=function(){return c||a(),c},j.groups=function(){return d||a(),d},j},Wg.layout.force=function(){function a(a){return function(b,c,d,e){if(b.point!==a){var f=b.cx-a.x,g=b.cy-a.y,h=1/Math.sqrt(f*f+g*g);if(p>(e-c)*h){var i=b.charge*h*h;return a.px-=f*i,a.py-=g*i,!0}if(b.point&&isFinite(h)){var i=b.pointCharge*h*h;a.px-=f*i,a.py-=g*i}}return!b.charge}}function b(a){a.px=Wg.event.x,a.py=Wg.event.y,h.resume()}var c,d,e,f,g,h={},i=Wg.dispatch("start","tick","end"),j=[1,1],k=.9,l=fj,m=gj,n=-30,o=.1,p=.8,q=[],r=[];return h.tick=function(){if((d*=.99)<.005)return i.end({type:"end",alpha:d=0}),!0;var b,c,h,l,m,p,s,t,u,v=q.length,w=r.length;for(c=0;w>c;++c)h=r[c],l=h.source,m=h.target,t=m.x-l.x,u=m.y-l.y,(p=t*t+u*u)&&(p=d*f[c]*((p=Math.sqrt(p))-e[c])/p,t*=p,u*=p,m.x-=t*(s=l.weight/(m.weight+l.weight)),m.y-=u*s,l.x+=t*(s=1-s),l.y+=u*s);if((s=d*o)&&(t=j[0]/2,u=j[1]/2,c=-1,s))for(;++c<v;)h=q[c],h.x+=(t-h.x)*s,h.y+=(u-h.y)*s;if(n)for(me(b=Wg.geom.quadtree(q),d,g),c=-1;++c<v;)(h=q[c]).fixed||b.visit(a(h));for(c=-1;++c<v;)h=q[c],h.fixed?(h.x=h.px,h.y=h.py):(h.x-=(h.px-(h.px=h.x))*k,h.y-=(h.py-(h.py=h.y))*k);i.tick({type:"tick",alpha:d})},h.nodes=function(a){return arguments.length?(q=a,h):q},h.links=function(a){return arguments.length?(r=a,h):r},h.size=function(a){return arguments.length?(j=a,h):j},h.linkDistance=function(a){return arguments.length?(l="function"==typeof a?a:+a,h):l},h.distance=h.linkDistance,h.linkStrength=function(a){return arguments.length?(m="function"==typeof a?a:+a,h):m},h.friction=function(a){return arguments.length?(k=+a,h):k},h.charge=function(a){return arguments.length?(n="function"==typeof a?a:+a,h):n},h.gravity=function(a){return arguments.length?(o=+a,h):o},h.theta=function(a){return arguments.length?(p=+a,h):p},h.alpha=function(a){return arguments.length?(a=+a,d?d=a>0?a:0:a>0&&(i.start({type:"start",alpha:d=a}),Wg.timer(h.tick)),h):d},h.start=function(){function a(a,d){if(!c){for(c=new Array(i),h=0;i>h;++h)c[h]=[];for(h=0;j>h;++h){var e=r[h];c[e.source.index].push(e.target),c[e.target.index].push(e.source)}}for(var f,g=c[b],h=-1,j=g.length;++h<j;)if(!isNaN(f=g[h][a]))return f;return Math.random()*d}var b,c,d,i=q.length,k=r.length,o=j[0],p=j[1];for(b=0;i>b;++b)(d=q[b]).index=b,d.weight=0;for(b=0;k>b;++b)d=r[b],"number"==typeof d.source&&(d.source=q[d.source]),"number"==typeof d.target&&(d.target=q[d.target]),++d.source.weight,++d.target.weight;for(b=0;i>b;++b)d=q[b],isNaN(d.x)&&(d.x=a("x",o)),isNaN(d.y)&&(d.y=a("y",p)),isNaN(d.px)&&(d.px=d.x),isNaN(d.py)&&(d.py=d.y);if(e=[],"function"==typeof l)for(b=0;k>b;++b)e[b]=+l.call(this,r[b],b);else for(b=0;k>b;++b)e[b]=l;if(f=[],"function"==typeof m)for(b=0;k>b;++b)f[b]=+m.call(this,r[b],b);else for(b=0;k>b;++b)f[b]=m;if(g=[],"function"==typeof n)for(b=0;i>b;++b)g[b]=+n.call(this,q[b],b);else for(b=0;i>b;++b)g[b]=n;return h.resume()},h.resume=function(){return h.alpha(.1)},h.stop=function(){return h.alpha(0)},h.drag=function(){return c||(c=Wg.behavior.drag().origin(qb).on("dragstart.force",ie).on("drag.force",b).on("dragend.force",je)),arguments.length?void this.on("mouseover.force",ke).on("mouseout.force",le).call(c):c},Wg.rebind(h,i,"on")};var fj=20,gj=1;Wg.layout.hierarchy=function(){function a(b,g,h){var i=e.call(c,b,g);if(b.depth=g,h.push(b),i&&(j=i.length)){for(var j,k,l=-1,m=b.children=new Array(j),n=0,o=g+1;++l<j;)k=m[l]=a(i[l],o,h),k.parent=b,n+=k.value;d&&m.sort(d),f&&(b.value=n)}else delete b.children,f&&(b.value=+f.call(c,b,g)||0);return b}function b(a,d){var e=a.children,g=0;if(e&&(h=e.length))for(var h,i=-1,j=d+1;++i<h;)g+=b(e[i],j);else f&&(g=+f.call(c,a,d)||0);return f&&(a.value=g),g}function c(b){var c=[];return a(b,0,c),c}var d=qe,e=oe,f=pe;return c.sort=function(a){return arguments.length?(d=a,c):d},c.children=function(a){return arguments.length?(e=a,c):e},c.value=function(a){return arguments.length?(f=a,c):f},c.revalue=function(a){return b(a,0),a},c},Wg.layout.partition=function(){function a(b,c,d,e){var f=b.children;if(b.x=c,b.y=b.depth*e,b.dx=d,b.dy=e,f&&(g=f.length)){var g,h,i,j=-1;for(d=b.value?d/b.value:0;++j<g;)a(h=f[j],c,i=h.value*d,e),c+=i}}function b(a){var c=a.children,d=0;if(c&&(e=c.length))for(var e,f=-1;++f<e;)d=Math.max(d,b(c[f]));return 1+d}function c(c,f){var g=d.call(this,c,f);return a(g[0],0,e[0],e[1]/b(g[0])),g}var d=Wg.layout.hierarchy(),e=[1,1];return c.size=function(a){return arguments.length?(e=a,c):e},ne(c,d)},Wg.layout.pie=function(){function a(f){var g=f.map(function(c,d){return+b.call(a,c,d)}),h=+("function"==typeof d?d.apply(this,arguments):d),i=(("function"==typeof e?e.apply(this,arguments):e)-h)/Wg.sum(g),j=Wg.range(f.length);null!=c&&j.sort(c===hj?function(a,b){return g[b]-g[a]}:function(a,b){return c(f[a],f[b])});var k=[];return j.forEach(function(a){var b;k[a]={data:f[a],value:b=g[a],startAngle:h,endAngle:h+=b*i}}),k}var b=Number,c=hj,d=0,e=Bh;return a.value=function(c){return arguments.length?(b=c,a):b},a.sort=function(b){return arguments.length?(c=b,a):c},a.startAngle=function(b){return arguments.length?(d=b,a):d},a.endAngle=function(b){return arguments.length?(e=b,a):e},a};var hj={};Wg.layout.stack=function(){function a(h,i){var j=h.map(function(c,d){return b.call(a,c,d)}),k=j.map(function(b){return b.map(function(b,c){return[f.call(a,b,c),g.call(a,b,c)]})}),l=c.call(a,k,i);j=Wg.permute(j,l),k=Wg.permute(k,l);var m,n,o,p=d.call(a,k,i),q=j.length,r=j[0].length;for(n=0;r>n;++n)for(e.call(a,j[0][n],o=p[n],k[0][n][1]),m=1;q>m;++m)e.call(a,j[m][n],o+=k[m-1][n][1],k[m][n][1]);return h}var b=qb,c=ve,d=we,e=ue,f=se,g=te;return a.values=function(c){return arguments.length?(b=c,a):b},a.order=function(b){return arguments.length?(c="function"==typeof b?b:ij.get(b)||ve,a):c},a.offset=function(b){return arguments.length?(d="function"==typeof b?b:jj.get(b)||we,a):d},a.x=function(b){return arguments.length?(f=b,a):f},a.y=function(b){return arguments.length?(g=b,a):g},a.out=function(b){return arguments.length?(e=b,a):e},a};var ij=Wg.map({"inside-out":function(a){var b,c,d=a.length,e=a.map(xe),f=a.map(ye),g=Wg.range(d).sort(function(a,b){return e[a]-e[b]}),h=0,i=0,j=[],k=[];for(b=0;d>b;++b)c=g[b],i>h?(h+=f[c],j.push(c)):(i+=f[c],k.push(c));return k.reverse().concat(j)},reverse:function(a){return Wg.range(a.length).reverse()},"default":ve}),jj=Wg.map({silhouette:function(a){var b,c,d,e=a.length,f=a[0].length,g=[],h=0,i=[];for(c=0;f>c;++c){for(b=0,d=0;e>b;b++)d+=a[b][c][1];d>h&&(h=d),g.push(d)}for(c=0;f>c;++c)i[c]=(h-g[c])/2;return i},wiggle:function(a){var b,c,d,e,f,g,h,i,j,k=a.length,l=a[0],m=l.length,n=[];for(n[0]=i=j=0,c=1;m>c;++c){for(b=0,e=0;k>b;++b)e+=a[b][c][1];for(b=0,f=0,h=l[c][0]-l[c-1][0];k>b;++b){for(d=0,g=(a[b][c][1]-a[b][c-1][1])/(2*h);b>d;++d)g+=(a[d][c][1]-a[d][c-1][1])/h;f+=g*a[b][c][1]}n[c]=i-=e?f/e*h:0,j>i&&(j=i)}for(c=0;m>c;++c)n[c]-=j;return n},expand:function(a){var b,c,d,e=a.length,f=a[0].length,g=1/e,h=[];for(c=0;f>c;++c){for(b=0,d=0;e>b;b++)d+=a[b][c][1];if(d)for(b=0;e>b;b++)a[b][c][1]/=d;else for(b=0;e>b;b++)a[b][c][1]=g}for(c=0;f>c;++c)h[c]=0;return h},zero:we});Wg.layout.histogram=function(){function a(a,f){for(var g,h,i=[],j=a.map(c,this),k=d.call(this,j,f),l=e.call(this,k,j,f),f=-1,m=j.length,n=l.length-1,o=b?1:1/m;++f<n;)g=i[f]=[],g.dx=l[f+1]-(g.x=l[f]),g.y=0;if(n>0)for(f=-1;++f<m;)h=j[f],h>=k[0]&&h<=k[1]&&(g=i[Wg.bisect(l,h,1,n)-1],g.y+=o,g.push(a[f]));return i}var b=!0,c=Number,d=Ce,e=Ae;return a.value=function(b){return arguments.length?(c=b,a):c},a.range=function(b){return arguments.length?(d=pb(b),a):d},a.bins=function(b){return arguments.length?(e="number"==typeof b?function(a){return Be(a,b)}:pb(b),a):e},a.frequency=function(c){return arguments.length?(b=!!c,a):b},a},Wg.layout.tree=function(){function a(a,f){function g(a,b){var d=a.children,e=a._tree;if(d&&(f=d.length)){for(var f,h,j,k=d[0],l=k,m=-1;++m<f;)j=d[m],g(j,h),l=i(j,h,l),h=j;Le(a);var n=.5*(k._tree.prelim+j._tree.prelim);b?(e.prelim=b._tree.prelim+c(a,b),e.mod=e.prelim-n):e.prelim=n}else b&&(e.prelim=b._tree.prelim+c(a,b))}function h(a,b){a.x=a._tree.prelim+b;var c=a.children;if(c&&(d=c.length)){var d,e=-1;for(b+=a._tree.mod;++e<d;)h(c[e],b)}}function i(a,b,d){if(b){for(var e,f=a,g=a,h=b,i=a.parent.children[0],j=f._tree.mod,k=g._tree.mod,l=h._tree.mod,m=i._tree.mod;h=Fe(h),f=Ee(f),h&&f;)i=Ee(i),g=Fe(g),g._tree.ancestor=a,e=h._tree.prelim+l-f._tree.prelim-j+c(h,f),e>0&&(Me(Ne(h,a,d),a,e),j+=e,k+=e),l+=h._tree.mod,j+=f._tree.mod,m+=i._tree.mod,k+=g._tree.mod;h&&!Fe(g)&&(g._tree.thread=h,g._tree.mod+=l-k),f&&!Ee(i)&&(i._tree.thread=f,i._tree.mod+=j-m,d=a)}return d}var j=b.call(this,a,f),k=j[0];Ke(k,function(a,b){a._tree={ancestor:a,prelim:0,mod:0,change:0,shift:0,number:b?b._tree.number+1:0}}),g(k),h(k,-k._tree.prelim);var l=Ge(k,Ie),m=Ge(k,He),n=Ge(k,Je),o=l.x-c(l,m)/2,p=m.x+c(m,l)/2,q=n.depth||1;return Ke(k,e?function(a){a.x*=d[0],a.y=a.depth*d[1],delete a._tree}:function(a){a.x=(a.x-o)/(p-o)*d[0],a.y=a.depth/q*d[1],delete a._tree}),j}var b=Wg.layout.hierarchy().sort(null).value(null),c=De,d=[1,1],e=!1;return a.separation=function(b){return arguments.length?(c=b,a):c},a.size=function(b){return arguments.length?(e=null==(d=b),a):e?null:d},a.nodeSize=function(b){return arguments.length?(e=null!=(d=b),a):e?d:null},ne(a,b)},Wg.layout.pack=function(){function a(a,f){var g=c.call(this,a,f),h=g[0],i=e[0],j=e[1],k=null==b?Math.sqrt:"function"==typeof b?b:function(){return b};if(h.x=h.y=0,Ke(h,function(a){a.r=+k(a.value)}),Ke(h,Se),d){var l=d*(b?1:Math.max(2*h.r/i,2*h.r/j))/2;Ke(h,function(a){a.r+=l}),Ke(h,Se),Ke(h,function(a){a.r-=l})}return Ve(h,i/2,j/2,b?1:1/Math.max(2*h.r/i,2*h.r/j)),g}var b,c=Wg.layout.hierarchy().sort(Oe),d=0,e=[1,1];return a.size=function(b){return arguments.length?(e=b,a):e},a.radius=function(c){return arguments.length?(b=null==c||"function"==typeof c?c:+c,a):b},a.padding=function(b){return arguments.length?(d=+b,a):d},ne(a,c)},Wg.layout.cluster=function(){function a(a,f){var g,h=b.call(this,a,f),i=h[0],j=0;Ke(i,function(a){var b=a.children;b&&b.length?(a.x=Ye(b),a.y=Xe(b)):(a.x=g?j+=c(a,g):0,a.y=0,g=a)});var k=Ze(i),l=$e(i),m=k.x-c(k,l)/2,n=l.x+c(l,k)/2;return Ke(i,e?function(a){a.x=(a.x-i.x)*d[0],a.y=(i.y-a.y)*d[1]}:function(a){a.x=(a.x-m)/(n-m)*d[0],a.y=(1-(i.y?a.y/i.y:1))*d[1]}),h}var b=Wg.layout.hierarchy().sort(null).value(null),c=De,d=[1,1],e=!1;return a.separation=function(b){return arguments.length?(c=b,a):c},a.size=function(b){return arguments.length?(e=null==(d=b),a):e?null:d},a.nodeSize=function(b){return arguments.length?(e=null!=(d=b),a):e?d:null},ne(a,b)},Wg.layout.treemap=function(){function a(a,b){for(var c,d,e=-1,f=a.length;++e<f;)d=(c=a[e]).value*(0>b?0:b),c.area=isNaN(d)||0>=d?0:d}function b(c){var f=c.children;if(f&&f.length){var g,h,i,j=l(c),k=[],m=f.slice(),o=1/0,p="slice"===n?j.dx:"dice"===n?j.dy:"slice-dice"===n?1&c.depth?j.dy:j.dx:Math.min(j.dx,j.dy);for(a(m,j.dx*j.dy/c.value),k.area=0;(i=m.length)>0;)k.push(g=m[i-1]),k.area+=g.area,"squarify"!==n||(h=d(k,p))<=o?(m.pop(),o=h):(k.area-=k.pop().area,e(k,p,j,!1),p=Math.min(j.dx,j.dy),k.length=k.area=0,o=1/0);k.length&&(e(k,p,j,!0),k.length=k.area=0),f.forEach(b)}}function c(b){var d=b.children;if(d&&d.length){var f,g=l(b),h=d.slice(),i=[];for(a(h,g.dx*g.dy/b.value),i.area=0;f=h.pop();)i.push(f),i.area+=f.area,null!=f.z&&(e(i,f.z?g.dx:g.dy,g,!h.length),i.length=i.area=0);d.forEach(c)}}function d(a,b){for(var c,d=a.area,e=0,f=1/0,g=-1,h=a.length;++g<h;)(c=a[g].area)&&(f>c&&(f=c),c>e&&(e=c));return d*=d,b*=b,d?Math.max(b*e*o/d,d/(b*f*o)):1/0}function e(a,b,c,d){var e,f=-1,g=a.length,h=c.x,j=c.y,k=b?i(a.area/b):0;if(b==c.dx){for((d||k>c.dy)&&(k=c.dy);++f<g;)e=a[f],e.x=h,e.y=j,e.dy=k,h+=e.dx=Math.min(c.x+c.dx-h,k?i(e.area/k):0);e.z=!0,e.dx+=c.x+c.dx-h,c.y+=k,c.dy-=k}else{for((d||k>c.dx)&&(k=c.dx);++f<g;)e=a[f],e.x=h,e.y=j,e.dx=k,j+=e.dy=Math.min(c.y+c.dy-j,k?i(e.area/k):0);e.z=!1,e.dy+=c.y+c.dy-j,c.x+=k,c.dx-=k}}function f(d){var e=g||h(d),f=e[0];return f.x=0,f.y=0,f.dx=j[0],f.dy=j[1],g&&h.revalue(f),a([f],f.dx*f.dy/f.value),(g?c:b)(f),m&&(g=e),e}var g,h=Wg.layout.hierarchy(),i=Math.round,j=[1,1],k=null,l=_e,m=!1,n="squarify",o=.5*(1+Math.sqrt(5));return f.size=function(a){return arguments.length?(j=a,f):j},f.padding=function(a){function b(b){var c=a.call(f,b,b.depth);return null==c?_e(b):af(b,"number"==typeof c?[c,c,c,c]:c)}function c(b){return af(b,a)}if(!arguments.length)return k;var d;return l=null==(k=a)?_e:"function"==(d=typeof a)?b:"number"===d?(a=[a,a,a,a],c):c,f},f.round=function(a){return arguments.length?(i=a?Math.round:Number,f):i!=Number},f.sticky=function(a){return arguments.length?(m=a,g=null,f):m},f.ratio=function(a){return arguments.length?(o=a,f):o},f.mode=function(a){return arguments.length?(n=a+"",f):n},ne(f,h)},Wg.random={normal:function(a,b){var c=arguments.length;return 2>c&&(b=1),1>c&&(a=0),function(){var c,d,e;do c=2*Math.random()-1,d=2*Math.random()-1,e=c*c+d*d;while(!e||e>1);return a+b*c*Math.sqrt(-2*Math.log(e)/e)}},logNormal:function(){var a=Wg.random.normal.apply(Wg,arguments);return function(){return Math.exp(a())}},bates:function(a){var b=Wg.random.irwinHall(a);return function(){return b()/a}},irwinHall:function(a){return function(){for(var b=0,c=0;a>c;c++)b+=Math.random();return b}}},Wg.scale={};var kj={floor:qb,ceil:qb};Wg.scale.linear=function(){return hf([0,1],[0,1],Hd,!1)};var lj={s:1,g:1,p:1,r:1,e:1};Wg.scale.log=function(){return qf(Wg.scale.linear().domain([0,1]),10,!0,[1,10])};var mj=Wg.format(".0e"),nj={floor:function(a){return-Math.ceil(-a)},ceil:function(a){return-Math.floor(-a)}};Wg.scale.pow=function(){return rf(Wg.scale.linear(),1,[0,1])},Wg.scale.sqrt=function(){return Wg.scale.pow().exponent(.5)},Wg.scale.ordinal=function(){return tf([],{t:"range",a:[[]]})},Wg.scale.category10=function(){return Wg.scale.ordinal().range(oj)},Wg.scale.category20=function(){return Wg.scale.ordinal().range(pj)},Wg.scale.category20b=function(){return Wg.scale.ordinal().range(qj)},Wg.scale.category20c=function(){return Wg.scale.ordinal().range(rj)};var oj=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(gb),pj=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(gb),qj=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(gb),rj=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(gb);Wg.scale.quantile=function(){return uf([],[])},Wg.scale.quantize=function(){return vf(0,1,[0,1])},Wg.scale.threshold=function(){return wf([.5],[0,1])},Wg.scale.identity=function(){return xf([0,1])},Wg.svg={},Wg.svg.arc=function(){function a(){var a=b.apply(this,arguments),f=c.apply(this,arguments),g=d.apply(this,arguments)+sj,h=e.apply(this,arguments)+sj,i=(g>h&&(i=g,g=h,h=i),h-g),j=Ah>i?"0":"1",k=Math.cos(g),l=Math.sin(g),m=Math.cos(h),n=Math.sin(h);return i>=tj?a?"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+-f+"A"+f+","+f+" 0 1,1 0,"+f+"M0,"+a+"A"+a+","+a+" 0 1,0 0,"+-a+"A"+a+","+a+" 0 1,0 0,"+a+"Z":"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+-f+"A"+f+","+f+" 0 1,1 0,"+f+"Z":a?"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L"+a*m+","+a*n+"A"+a+","+a+" 0 "+j+",0 "+a*k+","+a*l+"Z":"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L0,0Z"}var b=yf,c=zf,d=Af,e=Bf;return a.innerRadius=function(c){return arguments.length?(b=pb(c),a):b},a.outerRadius=function(b){return arguments.length?(c=pb(b),a):c},a.startAngle=function(b){return arguments.length?(d=pb(b),a):d},a.endAngle=function(b){return arguments.length?(e=pb(b),a):e},a.centroid=function(){var a=(b.apply(this,arguments)+c.apply(this,arguments))/2,f=(d.apply(this,arguments)+e.apply(this,arguments))/2+sj;return[Math.cos(f)*a,Math.sin(f)*a]},a};var sj=-Ch,tj=Bh-Dh;Wg.svg.line=function(){return Cf(qb)};var uj=Wg.map({linear:Df,"linear-closed":Ef,step:Ff,"step-before":Gf,"step-after":Hf,basis:Nf,"basis-open":Of,"basis-closed":Pf,bundle:Qf,cardinal:Kf,"cardinal-open":If,"cardinal-closed":Jf,monotone:Wf});uj.forEach(function(a,b){b.key=a,b.closed=/-closed$/.test(a)});var vj=[0,2/3,1/3,0],wj=[0,1/3,2/3,0],xj=[0,1/6,2/3,1/6];Wg.svg.line.radial=function(){var a=Cf(Xf);return a.radius=a.x,delete a.x,a.angle=a.y,delete a.y,a},Gf.reverse=Hf,Hf.reverse=Gf,Wg.svg.area=function(){return Yf(qb)},Wg.svg.area.radial=function(){var a=Yf(Xf);return a.radius=a.x,delete a.x,a.innerRadius=a.x0,delete a.x0,a.outerRadius=a.x1,delete a.x1,a.angle=a.y,delete a.y,a.startAngle=a.y0,delete a.y0,a.endAngle=a.y1,delete a.y1,a},Wg.svg.chord=function(){function a(a,h){var i=b(this,f,a,h),j=b(this,g,a,h);return"M"+i.p0+d(i.r,i.p1,i.a1-i.a0)+(c(i,j)?e(i.r,i.p1,i.r,i.p0):e(i.r,i.p1,j.r,j.p0)+d(j.r,j.p1,j.a1-j.a0)+e(j.r,j.p1,i.r,i.p0))+"Z"}function b(a,b,c,d){var e=b.call(a,c,d),f=h.call(a,e,d),g=i.call(a,e,d)+sj,k=j.call(a,e,d)+sj;return{r:f,a0:g,a1:k,p0:[f*Math.cos(g),f*Math.sin(g)],p1:[f*Math.cos(k),f*Math.sin(k)]}}function c(a,b){return a.a0==b.a0&&a.a1==b.a1}function d(a,b,c){return"A"+a+","+a+" 0 "+ +(c>Ah)+",1 "+b}function e(a,b,c,d){return"Q 0,0 "+d}var f=Jc,g=Kc,h=Zf,i=Af,j=Bf;return a.radius=function(b){return arguments.length?(h=pb(b),a):h},a.source=function(b){return arguments.length?(f=pb(b),a):f},a.target=function(b){return arguments.length?(g=pb(b),a):g},a.startAngle=function(b){return arguments.length?(i=pb(b),a):i},a.endAngle=function(b){return arguments.length?(j=pb(b),a):j},a},Wg.svg.diagonal=function(){function a(a,e){var f=b.call(this,a,e),g=c.call(this,a,e),h=(f.y+g.y)/2,i=[f,{x:f.x,y:h},{x:g.x,y:h},g];return i=i.map(d),"M"+i[0]+"C"+i[1]+" "+i[2]+" "+i[3]}var b=Jc,c=Kc,d=$f;return a.source=function(c){return arguments.length?(b=pb(c),a):b},a.target=function(b){return arguments.length?(c=pb(b),a):c},a.projection=function(b){return arguments.length?(d=b,a):d},a},Wg.svg.diagonal.radial=function(){var a=Wg.svg.diagonal(),b=$f,c=a.projection;return a.projection=function(a){return arguments.length?c(_f(b=a)):b},a},Wg.svg.symbol=function(){function a(a,d){return(yj.get(b.call(this,a,d))||cg)(c.call(this,a,d))}var b=bg,c=ag;return a.type=function(c){return arguments.length?(b=pb(c),a):b},a.size=function(b){return arguments.length?(c=pb(b),a):c},a};var yj=Wg.map({circle:cg,cross:function(a){var b=Math.sqrt(a/5)/2;return"M"+-3*b+","+-b+"H"+-b+"V"+-3*b+"H"+b+"V"+-b+"H"+3*b+"V"+b+"H"+b+"V"+3*b+"H"+-b+"V"+b+"H"+-3*b+"Z"},diamond:function(a){var b=Math.sqrt(a/(2*Cj)),c=b*Cj;return"M0,"+-b+"L"+c+",0 0,"+b+" "+-c+",0Z"},square:function(a){var b=Math.sqrt(a)/2;return"M"+-b+","+-b+"L"+b+","+-b+" "+b+","+b+" "+-b+","+b+"Z"},"triangle-down":function(a){var b=Math.sqrt(a/Bj),c=b*Bj/2;return"M0,"+c+"L"+b+","+-c+" "+-b+","+-c+"Z"},"triangle-up":function(a){var b=Math.sqrt(a/Bj),c=b*Bj/2;return"M0,"+-c+"L"+b+","+c+" "+-b+","+c+"Z"}});Wg.svg.symbolTypes=yj.keys();var zj,Aj,Bj=Math.sqrt(3),Cj=Math.tan(30*Fh),Dj=[],Ej=0;Dj.call=sh.call,Dj.empty=sh.empty,Dj.node=sh.node,Dj.size=sh.size,Wg.transition=function(a){return arguments.length?zj?a.transition():a:vh.transition()},Wg.transition.prototype=Dj,Dj.select=function(a){var b,c,d,e=this.id,f=[];a=p(a);for(var g=-1,h=this.length;++g<h;){f.push(b=[]);for(var i=this[g],j=-1,k=i.length;++j<k;)(d=i[j])&&(c=a.call(d,d.__data__,j,g))?("__data__"in d&&(c.__data__=d.__data__),gg(c,j,e,d.__transition__[e]),b.push(c)):b.push(null)}return dg(f,e)},Dj.selectAll=function(a){var b,c,d,e,f,g=this.id,h=[];a=q(a);for(var i=-1,j=this.length;++i<j;)for(var k=this[i],l=-1,m=k.length;++l<m;)if(d=k[l]){f=d.__transition__[g],c=a.call(d,d.__data__,l,i),h.push(b=[]);for(var n=-1,o=c.length;++n<o;)(e=c[n])&&gg(e,n,g,f),b.push(e)}return dg(h,g)},Dj.filter=function(a){var b,c,d,e=[];"function"!=typeof a&&(a=B(a));for(var f=0,g=this.length;g>f;f++){e.push(b=[]);for(var c=this[f],h=0,i=c.length;i>h;h++)(d=c[h])&&a.call(d,d.__data__,h,f)&&b.push(d)}return dg(e,this.id)},Dj.tween=function(a,b){var c=this.id;return arguments.length<2?this.node().__transition__[c].tween.get(a):D(this,null==b?function(b){b.__transition__[c].tween.remove(a)}:function(d){d.__transition__[c].tween.set(a,b)})},Dj.attr=function(a,b){function c(){this.removeAttribute(h)}function d(){this.removeAttributeNS(h.space,h.local)}function e(a){return null==a?c:(a+="",function(){var b,c=this.getAttribute(h);return c!==a&&(b=g(c,a),function(a){this.setAttribute(h,b(a))})})}function f(a){return null==a?d:(a+="",function(){var b,c=this.getAttributeNS(h.space,h.local);return c!==a&&(b=g(c,a),function(a){this.setAttributeNS(h.space,h.local,b(a))})})}if(arguments.length<2){for(b in a)this.attr(b,a[b]);return this}var g="transform"==a?ce:Hd,h=Wg.ns.qualify(a);return eg(this,"attr."+a,b,h.local?f:e)},Dj.attrTween=function(a,b){function c(a,c){var d=b.call(this,a,c,this.getAttribute(e));return d&&function(a){this.setAttribute(e,d(a))}}function d(a,c){var d=b.call(this,a,c,this.getAttributeNS(e.space,e.local));return d&&function(a){this.setAttributeNS(e.space,e.local,d(a))}}var e=Wg.ns.qualify(a);return this.tween("attr."+a,e.local?d:c)},Dj.style=function(a,b,c){function d(){this.style.removeProperty(a)}function e(b){return null==b?d:(b+="",function(){var d,e=_g.getComputedStyle(this,null).getPropertyValue(a);return e!==b&&(d=Hd(e,b),function(b){this.style.setProperty(a,d(b),c)})})}var f=arguments.length;if(3>f){if("string"!=typeof a){2>f&&(b="");for(c in a)this.style(c,a[c],b);return this}c=""}return eg(this,"style."+a,b,e)},Dj.styleTween=function(a,b,c){function d(d,e){var f=b.call(this,d,e,_g.getComputedStyle(this,null).getPropertyValue(a));return f&&function(b){this.style.setProperty(a,f(b),c)}}return arguments.length<3&&(c=""),this.tween("style."+a,d)},Dj.text=function(a){return eg(this,"text",a,fg)},Dj.remove=function(){return this.each("end.transition",function(){var a;this.__transition__.count<2&&(a=this.parentNode)&&a.removeChild(this)})},Dj.ease=function(a){var b=this.id;return arguments.length<1?this.node().__transition__[b].ease:("function"!=typeof a&&(a=Wg.ease.apply(Wg,arguments)),D(this,function(c){c.__transition__[b].ease=a}))},Dj.delay=function(a){var b=this.id;return D(this,"function"==typeof a?function(c,d,e){c.__transition__[b].delay=+a.call(c,c.__data__,d,e)}:(a=+a,function(c){c.__transition__[b].delay=a}))},Dj.duration=function(a){var b=this.id;return D(this,"function"==typeof a?function(c,d,e){c.__transition__[b].duration=Math.max(1,a.call(c,c.__data__,d,e))}:(a=Math.max(1,a),function(c){c.__transition__[b].duration=a}))},Dj.each=function(a,b){var c=this.id;if(arguments.length<2){var d=Aj,e=zj;zj=c,D(this,function(b,d,e){Aj=b.__transition__[c],a.call(b,b.__data__,d,e)}),Aj=d,zj=e}else D(this,function(d){var e=d.__transition__[c];(e.event||(e.event=Wg.dispatch("start","end"))).on(a,b)});return this},Dj.transition=function(){for(var a,b,c,d,e=this.id,f=++Ej,g=[],h=0,i=this.length;i>h;h++){g.push(a=[]);for(var b=this[h],j=0,k=b.length;k>j;j++)(c=b[j])&&(d=Object.create(c.__transition__[e]),d.delay+=d.duration,gg(c,j,f,d)),a.push(c)}return dg(g,f)},Wg.svg.axis=function(){function a(a){a.each(function(){var a,j=Wg.select(this),k=this.__chart__||c,l=this.__chart__=c.copy(),m=null==i?l.ticks?l.ticks.apply(l,h):l.domain():i,n=null==b?l.tickFormat?l.tickFormat.apply(l,h):qb:b,o=j.selectAll(".tick").data(m,l),p=o.enter().insert("g",".domain").attr("class","tick").style("opacity",Dh),q=Wg.transition(o.exit()).style("opacity",Dh).remove(),r=Wg.transition(o).style("opacity",1),s=cf(l),t=j.selectAll(".domain").data([0]),u=(t.enter().append("path").attr("class","domain"),Wg.transition(t));p.append("line"),p.append("text");var v=p.select("line"),w=r.select("line"),x=o.select("text").text(n),y=p.select("text"),z=r.select("text");switch(d){case"bottom":a=hg,v.attr("y2",e),y.attr("y",Math.max(e,0)+g),w.attr("x2",0).attr("y2",e),z.attr("x",0).attr("y",Math.max(e,0)+g),x.attr("dy",".71em").style("text-anchor","middle"),u.attr("d","M"+s[0]+","+f+"V0H"+s[1]+"V"+f);break;case"top":a=hg,v.attr("y2",-e),y.attr("y",-(Math.max(e,0)+g)),w.attr("x2",0).attr("y2",-e),z.attr("x",0).attr("y",-(Math.max(e,0)+g)),x.attr("dy","0em").style("text-anchor","middle"),u.attr("d","M"+s[0]+","+-f+"V0H"+s[1]+"V"+-f);break;case"left":a=ig,v.attr("x2",-e),y.attr("x",-(Math.max(e,0)+g)),w.attr("x2",-e).attr("y2",0),z.attr("x",-(Math.max(e,0)+g)).attr("y",0),x.attr("dy",".32em").style("text-anchor","end"),u.attr("d","M"+-f+","+s[0]+"H0V"+s[1]+"H"+-f);break;case"right":a=ig,v.attr("x2",e),y.attr("x",Math.max(e,0)+g),w.attr("x2",e).attr("y2",0),z.attr("x",Math.max(e,0)+g).attr("y",0),x.attr("dy",".32em").style("text-anchor","start"),u.attr("d","M"+f+","+s[0]+"H0V"+s[1]+"H"+f)}if(l.rangeBand){var A=l,B=A.rangeBand()/2;k=l=function(a){return A(a)+B}}else k.rangeBand?k=l:q.call(a,l);p.call(a,k),r.call(a,l)})}var b,c=Wg.scale.linear(),d=Fj,e=6,f=6,g=3,h=[10],i=null;return a.scale=function(b){return arguments.length?(c=b,a):c},a.orient=function(b){return arguments.length?(d=b in Gj?b+"":Fj,a):d},a.ticks=function(){return arguments.length?(h=arguments,a):h},a.tickValues=function(b){return arguments.length?(i=b,a):i},a.tickFormat=function(c){return arguments.length?(b=c,a):b},a.tickSize=function(b){var c=arguments.length;return c?(e=+b,f=+arguments[c-1],a):e},a.innerTickSize=function(b){return arguments.length?(e=+b,a):e},a.outerTickSize=function(b){return arguments.length?(f=+b,a):f},a.tickPadding=function(b){return arguments.length?(g=+b,a):g},a.tickSubdivide=function(){return arguments.length&&a},a};var Fj="bottom",Gj={top:1,right:1,bottom:1,left:1};Wg.svg.brush=function(){function a(f){f.each(function(){var f=Wg.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",e).on("touchstart.brush",e),g=f.selectAll(".background").data([0]);g.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),f.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var h=f.selectAll(".resize").data(q,qb);h.exit().remove(),h.enter().append("g").attr("class",function(a){return"resize "+a}).style("cursor",function(a){return Hj[a]}).append("rect").attr("x",function(a){return/[ew]$/.test(a)?-3:null}).attr("y",function(a){return/^[ns]/.test(a)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),h.style("display",a.empty()?"none":null);var k,l=Wg.transition(f),m=Wg.transition(g);i&&(k=cf(i),m.attr("x",k[0]).attr("width",k[1]-k[0]),c(l)),j&&(k=cf(j),m.attr("y",k[0]).attr("height",k[1]-k[0]),d(l)),b(l)})}function b(a){a.selectAll(".resize").attr("transform",function(a){return"translate("+k[+/e$/.test(a)]+","+m[+/^s/.test(a)]+")"})}function c(a){a.select(".extent").attr("x",k[0]),a.selectAll(".extent,.n>rect,.s>rect").attr("width",k[1]-k[0])}function d(a){a.select(".extent").attr("y",m[0]),a.selectAll(".extent,.e>rect,.w>rect").attr("height",m[1]-m[0])}function e(){function e(){32==Wg.event.keyCode&&(C||(t=null,E[0]-=k[1],E[1]-=m[1],C=2),l())}function n(){32==Wg.event.keyCode&&2==C&&(E[0]+=k[1],E[1]+=m[1],C=0,l())}function q(){var a=Wg.mouse(v),e=!1;u&&(a[0]+=u[0],a[1]+=u[1]),C||(Wg.event.altKey?(t||(t=[(k[0]+k[1])/2,(m[0]+m[1])/2]),E[0]=k[+(a[0]<t[0])],E[1]=m[+(a[1]<t[1])]):t=null),A&&r(a,i,0)&&(c(y),e=!0),B&&r(a,j,1)&&(d(y),e=!0),e&&(b(y),x({type:"brush",mode:C?"move":"resize"}))}function r(a,b,c){var d,e,h=cf(b),i=h[0],j=h[1],l=E[c],n=c?m:k,q=n[1]-n[0];return C&&(i-=l,j-=q+l),d=(c?p:o)?Math.max(i,Math.min(j,a[c])):a[c],C?e=(d+=l)+q:(t&&(l=Math.max(i,Math.min(j,2*t[c]-d))),d>l?(e=d,d=l):e=l),n[0]!=d||n[1]!=e?(c?g=null:f=null,n[0]=d,n[1]=e,!0):void 0}function s(){q(),y.style("pointer-events","all").selectAll(".resize").style("display",a.empty()?"none":null),Wg.select("body").style("cursor",null),F.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),D(),x({type:"brushend"})}var t,u,v=this,w=Wg.select(Wg.event.target),x=h.of(v,arguments),y=Wg.select(v),z=w.datum(),A=!/^(n|s)$/.test(z)&&i,B=!/^(e|w)$/.test(z)&&j,C=w.classed("extent"),D=K(),E=Wg.mouse(v),F=Wg.select(_g).on("keydown.brush",e).on("keyup.brush",n);if(Wg.event.changedTouches?F.on("touchmove.brush",q).on("touchend.brush",s):F.on("mousemove.brush",q).on("mouseup.brush",s),y.interrupt().selectAll("*").interrupt(),C)E[0]=k[0]-E[0],E[1]=m[0]-E[1];else if(z){var G=+/w$/.test(z),H=+/^n/.test(z);u=[k[1-G]-E[0],m[1-H]-E[1]],E[0]=k[G],E[1]=m[H]}else Wg.event.altKey&&(t=E.slice());y.style("pointer-events","none").selectAll(".resize").style("display",null),Wg.select("body").style("cursor",w.style("cursor")),x({type:"brushstart"}),q()}var f,g,h=n(a,"brushstart","brush","brushend"),i=null,j=null,k=[0,0],m=[0,0],o=!0,p=!0,q=Ij[0];return a.event=function(a){a.each(function(){var a=h.of(this,arguments),b={x:k,y:m,i:f,j:g},c=this.__chart__||b;this.__chart__=b,zj?Wg.select(this).transition().each("start.brush",function(){f=c.i,g=c.j,k=c.x,m=c.y,a({type:"brushstart"})}).tween("brush:brush",function(){var c=Id(k,b.x),d=Id(m,b.y);return f=g=null,function(e){k=b.x=c(e),m=b.y=d(e),a({type:"brush",mode:"resize"})}}).each("end.brush",function(){f=b.i,g=b.j,a({type:"brush",mode:"resize"}),a({type:"brushend"})}):(a({type:"brushstart"}),a({type:"brush",mode:"resize"}),a({type:"brushend"}))})},a.x=function(b){return arguments.length?(i=b,q=Ij[!i<<1|!j],a):i},a.y=function(b){return arguments.length?(j=b,q=Ij[!i<<1|!j],a):j},a.clamp=function(b){return arguments.length?(i&&j?(o=!!b[0],p=!!b[1]):i?o=!!b:j&&(p=!!b),a):i&&j?[o,p]:i?o:j?p:null},a.extent=function(b){var c,d,e,h,l;return arguments.length?(i&&(c=b[0],d=b[1],j&&(c=c[0],d=d[0]),f=[c,d],i.invert&&(c=i(c),d=i(d)),c>d&&(l=c,c=d,d=l),(c!=k[0]||d!=k[1])&&(k=[c,d])),j&&(e=b[0],h=b[1],i&&(e=e[1],h=h[1]),g=[e,h],j.invert&&(e=j(e),h=j(h)),e>h&&(l=e,e=h,h=l),(e!=m[0]||h!=m[1])&&(m=[e,h])),a):(i&&(f?(c=f[0],d=f[1]):(c=k[0],d=k[1],i.invert&&(c=i.invert(c),d=i.invert(d)),c>d&&(l=c,c=d,d=l))),j&&(g?(e=g[0],h=g[1]):(e=m[0],h=m[1],j.invert&&(e=j.invert(e),h=j.invert(h)),e>h&&(l=e,e=h,h=l))),i&&j?[[c,e],[d,h]]:i?[c,d]:j&&[e,h])},a.clear=function(){return a.empty()||(k=[0,0],m=[0,0],f=g=null),a},a.empty=function(){return!!i&&k[0]==k[1]||!!j&&m[0]==m[1]},Wg.rebind(a,h,"on")};var Hj={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Ij=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Jj=Wg.time={},Kj=Date,Lj=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];jg.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){Mj.setUTCDate.apply(this._,arguments)},setDay:function(){Mj.setUTCDay.apply(this._,arguments)
+},setFullYear:function(){Mj.setUTCFullYear.apply(this._,arguments)},setHours:function(){Mj.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){Mj.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){Mj.setUTCMinutes.apply(this._,arguments)},setMonth:function(){Mj.setUTCMonth.apply(this._,arguments)},setSeconds:function(){Mj.setUTCSeconds.apply(this._,arguments)},setTime:function(){Mj.setTime.apply(this._,arguments)}};var Mj=Date.prototype,Nj="%a %b %e %X %Y",Oj="%m/%d/%Y",Pj="%H:%M:%S",Qj=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Rj=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],Sj=["January","February","March","April","May","June","July","August","September","October","November","December"],Tj=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];Jj.year=kg(function(a){return a=Jj.day(a),a.setMonth(0,1),a},function(a,b){a.setFullYear(a.getFullYear()+b)},function(a){return a.getFullYear()}),Jj.years=Jj.year.range,Jj.years.utc=Jj.year.utc.range,Jj.day=kg(function(a){var b=new Kj(2e3,0);return b.setFullYear(a.getFullYear(),a.getMonth(),a.getDate()),b},function(a,b){a.setDate(a.getDate()+b)},function(a){return a.getDate()-1}),Jj.days=Jj.day.range,Jj.days.utc=Jj.day.utc.range,Jj.dayOfYear=function(a){var b=Jj.year(a);return Math.floor((a-b-6e4*(a.getTimezoneOffset()-b.getTimezoneOffset()))/864e5)},Lj.forEach(function(a,b){a=a.toLowerCase(),b=7-b;var c=Jj[a]=kg(function(a){return(a=Jj.day(a)).setDate(a.getDate()-(a.getDay()+b)%7),a},function(a,b){a.setDate(a.getDate()+7*Math.floor(b))},function(a){var c=Jj.year(a).getDay();return Math.floor((Jj.dayOfYear(a)+(c+b)%7)/7)-(c!==b)});Jj[a+"s"]=c.range,Jj[a+"s"].utc=c.utc.range,Jj[a+"OfYear"]=function(a){var c=Jj.year(a).getDay();return Math.floor((Jj.dayOfYear(a)+(c+b)%7)/7)}}),Jj.week=Jj.sunday,Jj.weeks=Jj.sunday.range,Jj.weeks.utc=Jj.sunday.utc.range,Jj.weekOfYear=Jj.sundayOfYear,Jj.format=mg;var Uj=og(Qj),Vj=pg(Qj),Wj=og(Rj),Xj=pg(Rj),Yj=og(Sj),Zj=pg(Sj),$j=og(Tj),_j=pg(Tj),ak=/^%/,bk={"-":"",_:" ",0:"0"},ck={a:function(a){return Rj[a.getDay()]},A:function(a){return Qj[a.getDay()]},b:function(a){return Tj[a.getMonth()]},B:function(a){return Sj[a.getMonth()]},c:mg(Nj),d:function(a,b){return qg(a.getDate(),b,2)},e:function(a,b){return qg(a.getDate(),b,2)},H:function(a,b){return qg(a.getHours(),b,2)},I:function(a,b){return qg(a.getHours()%12||12,b,2)},j:function(a,b){return qg(1+Jj.dayOfYear(a),b,3)},L:function(a,b){return qg(a.getMilliseconds(),b,3)},m:function(a,b){return qg(a.getMonth()+1,b,2)},M:function(a,b){return qg(a.getMinutes(),b,2)},p:function(a){return a.getHours()>=12?"PM":"AM"},S:function(a,b){return qg(a.getSeconds(),b,2)},U:function(a,b){return qg(Jj.sundayOfYear(a),b,2)},w:function(a){return a.getDay()},W:function(a,b){return qg(Jj.mondayOfYear(a),b,2)},x:mg(Oj),X:mg(Pj),y:function(a,b){return qg(a.getFullYear()%100,b,2)},Y:function(a,b){return qg(a.getFullYear()%1e4,b,4)},Z:Ng,"%":function(){return"%"}},dk={a:rg,A:sg,b:wg,B:xg,c:yg,d:Gg,e:Gg,H:Ig,I:Ig,j:Hg,L:Lg,m:Fg,M:Jg,p:Mg,S:Kg,U:ug,w:tg,W:vg,x:zg,X:Ag,y:Cg,Y:Bg,Z:Dg,"%":Og},ek=/^\s*\d+/,fk=Wg.map({am:0,pm:1});mg.utc=Pg;var gk=Pg("%Y-%m-%dT%H:%M:%S.%LZ");mg.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?Qg:gk,Qg.parse=function(a){var b=new Date(a);return isNaN(b)?null:b},Qg.toString=gk.toString,Jj.second=kg(function(a){return new Kj(1e3*Math.floor(a/1e3))},function(a,b){a.setTime(a.getTime()+1e3*Math.floor(b))},function(a){return a.getSeconds()}),Jj.seconds=Jj.second.range,Jj.seconds.utc=Jj.second.utc.range,Jj.minute=kg(function(a){return new Kj(6e4*Math.floor(a/6e4))},function(a,b){a.setTime(a.getTime()+6e4*Math.floor(b))},function(a){return a.getMinutes()}),Jj.minutes=Jj.minute.range,Jj.minutes.utc=Jj.minute.utc.range,Jj.hour=kg(function(a){var b=a.getTimezoneOffset()/60;return new Kj(36e5*(Math.floor(a/36e5-b)+b))},function(a,b){a.setTime(a.getTime()+36e5*Math.floor(b))},function(a){return a.getHours()}),Jj.hours=Jj.hour.range,Jj.hours.utc=Jj.hour.utc.range,Jj.month=kg(function(a){return a=Jj.day(a),a.setDate(1),a},function(a,b){a.setMonth(a.getMonth()+b)},function(a){return a.getMonth()}),Jj.months=Jj.month.range,Jj.months.utc=Jj.month.utc.range;var hk=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],ik=[[Jj.second,1],[Jj.second,5],[Jj.second,15],[Jj.second,30],[Jj.minute,1],[Jj.minute,5],[Jj.minute,15],[Jj.minute,30],[Jj.hour,1],[Jj.hour,3],[Jj.hour,6],[Jj.hour,12],[Jj.day,1],[Jj.day,2],[Jj.week,1],[Jj.month,1],[Jj.month,3],[Jj.year,1]],jk=[[mg("%Y"),Tb],[mg("%B"),function(a){return a.getMonth()}],[mg("%b %d"),function(a){return 1!=a.getDate()}],[mg("%a %d"),function(a){return a.getDay()&&1!=a.getDate()}],[mg("%I %p"),function(a){return a.getHours()}],[mg("%I:%M"),function(a){return a.getMinutes()}],[mg(":%S"),function(a){return a.getSeconds()}],[mg(".%L"),function(a){return a.getMilliseconds()}]],kk=Tg(jk);ik.year=Jj.year,Jj.scale=function(){return Rg(Wg.scale.linear(),ik,kk)};var lk={range:function(a,b,c){return Wg.range(+a,+b,c).map(Sg)},floor:qb,ceil:qb},mk=ik.map(function(a){return[a[0].utc,a[1]]}),nk=[[Pg("%Y"),Tb],[Pg("%B"),function(a){return a.getUTCMonth()}],[Pg("%b %d"),function(a){return 1!=a.getUTCDate()}],[Pg("%a %d"),function(a){return a.getUTCDay()&&1!=a.getUTCDate()}],[Pg("%I %p"),function(a){return a.getUTCHours()}],[Pg("%I:%M"),function(a){return a.getUTCMinutes()}],[Pg(":%S"),function(a){return a.getUTCSeconds()}],[Pg(".%L"),function(a){return a.getUTCMilliseconds()}]],ok=Tg(nk);return mk.year=Jj.year.utc,Jj.scale.utc=function(){return Rg(Wg.scale.linear(),mk,ok)},Wg.text=rb(function(a){return a.responseText}),Wg.json=function(a,b){return sb(a,"application/json",Ug,b)},Wg.html=function(a,b){return sb(a,"text/html",Vg,b)},Wg.xml=rb(function(a){return a.responseXML}),Wg}(),function(a,b){"object"==typeof exports?module.exports=b(require("./punycode"),require("./IPv6"),require("./SecondLevelDomains")):"function"==typeof define&&define.amd?define(["./punycode","./IPv6","./SecondLevelDomains"],b):a.URI=b(a.punycode,a.IPv6,a.SecondLevelDomains,a)}(this,function(a,b,c,d){"use strict";function e(a,b){return this instanceof e?(void 0===a&&(a="undefined"!=typeof location?location.href+"":""),this.href(a),void 0!==b?this.absoluteTo(b):this):new e(a,b)}function f(a){return a.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function g(a){return void 0===a?"Undefined":String(Object.prototype.toString.call(a)).slice(8,-1)}function h(a){return"Array"===g(a)}function i(a,b){var c,d,e={};if(h(b))for(c=0,d=b.length;d>c;c++)e[b[c]]=!0;else e[b]=!0;for(c=0,d=a.length;d>c;c++)void 0!==e[a[c]]&&(a.splice(c,1),d--,c--);return a}function j(a,b){var c,d;if(h(b)){for(c=0,d=b.length;d>c;c++)if(!j(a,b[c]))return!1;return!0}var e=g(b);for(c=0,d=a.length;d>c;c++)if("RegExp"===e){if("string"==typeof a[c]&&a[c].match(b))return!0}else if(a[c]===b)return!0;return!1}function k(a,b){if(!h(a)||!h(b))return!1;if(a.length!==b.length)return!1;a.sort(),b.sort();for(var c=0,d=a.length;d>c;c++)if(a[c]!==b[c])return!1;return!0}function l(a){return escape(a)}function m(a){return encodeURIComponent(a).replace(/[!'()*]/g,l).replace(/\*/g,"%2A")}var n=d&&d.URI,o=e.prototype,p=Object.prototype.hasOwnProperty;e._parts=function(){return{protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null,query:null,fragment:null,duplicateQueryParameters:e.duplicateQueryParameters,escapeQuerySpace:e.escapeQuerySpace}},e.duplicateQueryParameters=!1,e.escapeQuerySpace=!0,e.protocol_expression=/^[a-z][a-z0-9-+-]*$/i,e.idn_expression=/[^a-z0-9\.-]/i,e.punycode_expression=/(xn--)/i,e.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,e.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,e.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi,e.defaultPorts={http:"80",https:"443",ftp:"21",gopher:"70",ws:"80",wss:"443"},e.invalid_hostname_characters=/[^a-zA-Z0-9\.-]/,e.domAttributes={a:"href",blockquote:"cite",link:"href",base:"href",script:"src",form:"action",img:"src",area:"href",iframe:"src",embed:"src",source:"src",track:"src",input:"src"},e.getDomAttribute=function(a){if(!a||!a.nodeName)return void 0;var b=a.nodeName.toLowerCase();return"input"===b&&"image"!==a.type?void 0:e.domAttributes[b]},e.encode=m,e.decode=decodeURIComponent,e.iso8859=function(){e.encode=escape,e.decode=unescape},e.unicode=function(){e.encode=m,e.decode=decodeURIComponent},e.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/gi,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/gi,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}}},e.encodeQuery=function(a,b){var c=e.encode(a+"");return b?c.replace(/%20/g,"+"):c},e.decodeQuery=function(a,b){a+="";try{return e.decode(b?a.replace(/\+/g,"%20"):a)}catch(c){return a}},e.recodePath=function(a){for(var b=(a+"").split("/"),c=0,d=b.length;d>c;c++)b[c]=e.encodePathSegment(e.decode(b[c]));return b.join("/")},e.decodePath=function(a){for(var b=(a+"").split("/"),c=0,d=b.length;d>c;c++)b[c]=e.decodePathSegment(b[c]);return b.join("/")};var q,r={encode:"encode",decode:"decode"},s=function(a,b){return function(c){return e[b](c+"").replace(e.characters[a][b].expression,function(c){return e.characters[a][b].map[c]})}};for(q in r)e[q+"PathSegment"]=s("pathname",r[q]);e.encodeReserved=s("reserved","encode"),e.parse=function(a,b){var c;return b||(b={}),c=a.indexOf("#"),c>-1&&(b.fragment=a.substring(c+1)||null,a=a.substring(0,c)),c=a.indexOf("?"),c>-1&&(b.query=a.substring(c+1)||null,a=a.substring(0,c)),"//"===a.substring(0,2)?(b.protocol=null,a=a.substring(2),a=e.parseAuthority(a,b)):(c=a.indexOf(":"),c>-1&&(b.protocol=a.substring(0,c)||null,b.protocol&&!b.protocol.match(e.protocol_expression)?b.protocol=void 0:"file"===b.protocol?a=a.substring(c+3):"//"===a.substring(c+1,c+3)?(a=a.substring(c+3),a=e.parseAuthority(a,b)):(a=a.substring(c+1),b.urn=!0))),b.path=a,b},e.parseHost=function(a,b){var c,d,e=a.indexOf("/");return-1===e&&(e=a.length),"["===a.charAt(0)?(c=a.indexOf("]"),b.hostname=a.substring(1,c)||null,b.port=a.substring(c+2,e)||null):a.indexOf(":")!==a.lastIndexOf(":")?(b.hostname=a.substring(0,e)||null,b.port=null):(d=a.substring(0,e).split(":"),b.hostname=d[0]||null,b.port=d[1]||null),b.hostname&&"/"!==a.substring(e).charAt(0)&&(e++,a="/"+a),a.substring(e)||"/"},e.parseAuthority=function(a,b){return a=e.parseUserinfo(a,b),e.parseHost(a,b)},e.parseUserinfo=function(a,b){var c,d=a.indexOf("/"),f=d>-1?a.lastIndexOf("@",d):a.indexOf("@");return f>-1&&(-1===d||d>f)?(c=a.substring(0,f).split(":"),b.username=c[0]?e.decode(c[0]):null,c.shift(),b.password=c[0]?e.decode(c.join(":")):null,a=a.substring(f+1)):(b.username=null,b.password=null),a},e.parseQuery=function(a,b){if(!a)return{};if(a=a.replace(/&+/g,"&").replace(/^\?*&*|&+$/g,""),!a)return{};for(var c,d,f,g={},h=a.split("&"),i=h.length,j=0;i>j;j++)c=h[j].split("="),d=e.decodeQuery(c.shift(),b),f=c.length?e.decodeQuery(c.join("="),b):null,g[d]?("string"==typeof g[d]&&(g[d]=[g[d]]),g[d].push(f)):g[d]=f;return g},e.build=function(a){var b="";return a.protocol&&(b+=a.protocol+":"),a.urn||!b&&!a.hostname||(b+="//"),b+=e.buildAuthority(a)||"","string"==typeof a.path&&("/"!==a.path.charAt(0)&&"string"==typeof a.hostname&&(b+="/"),b+=a.path),"string"==typeof a.query&&a.query&&(b+="?"+a.query),"string"==typeof a.fragment&&a.fragment&&(b+="#"+a.fragment),b},e.buildHost=function(a){var b="";return a.hostname?(e.ip6_expression.test(a.hostname)?b+=a.port?"["+a.hostname+"]:"+a.port:a.hostname:(b+=a.hostname,a.port&&(b+=":"+a.port)),b):""},e.buildAuthority=function(a){return e.buildUserinfo(a)+e.buildHost(a)},e.buildUserinfo=function(a){var b="";return a.username&&(b+=e.encode(a.username),a.password&&(b+=":"+e.encode(a.password)),b+="@"),b},e.buildQuery=function(a,b,c){var d,f,g,i,j="";for(f in a)if(p.call(a,f)&&f)if(h(a[f]))for(d={},g=0,i=a[f].length;i>g;g++)void 0!==a[f][g]&&void 0===d[a[f][g]+""]&&(j+="&"+e.buildQueryParameter(f,a[f][g],c),b!==!0&&(d[a[f][g]+""]=!0));else void 0!==a[f]&&(j+="&"+e.buildQueryParameter(f,a[f],c));return j.substring(1)},e.buildQueryParameter=function(a,b,c){return e.encodeQuery(a,c)+(null!==b?"="+e.encodeQuery(b,c):"")},e.addQuery=function(a,b,c){if("object"==typeof b)for(var d in b)p.call(b,d)&&e.addQuery(a,d,b[d]);else{if("string"!=typeof b)throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");if(void 0===a[b])return void(a[b]=c);"string"==typeof a[b]&&(a[b]=[a[b]]),h(c)||(c=[c]),a[b]=a[b].concat(c)}},e.removeQuery=function(a,b,c){var d,f,g;if(h(b))for(d=0,f=b.length;f>d;d++)a[b[d]]=void 0;else if("object"==typeof b)for(g in b)p.call(b,g)&&e.removeQuery(a,g,b[g]);else{if("string"!=typeof b)throw new TypeError("URI.addQuery() accepts an object, string as the first parameter");void 0!==c?a[b]===c?a[b]=void 0:h(a[b])&&(a[b]=i(a[b],c)):a[b]=void 0}},e.hasQuery=function(a,b,c,d){if("object"==typeof b){for(var f in b)if(p.call(b,f)&&!e.hasQuery(a,f,b[f]))return!1;return!0}if("string"!=typeof b)throw new TypeError("URI.hasQuery() accepts an object, string as the name parameter");switch(g(c)){case"Undefined":return b in a;case"Boolean":var i=Boolean(h(a[b])?a[b].length:a[b]);return c===i;case"Function":return!!c(a[b],b,a);case"Array":if(!h(a[b]))return!1;var l=d?j:k;return l(a[b],c);case"RegExp":return h(a[b])?d?j(a[b],c):!1:Boolean(a[b]&&a[b].match(c));case"Number":c=String(c);case"String":return h(a[b])?d?j(a[b],c):!1:a[b]===c;default:throw new TypeError("URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter")}},e.commonPath=function(a,b){var c,d=Math.min(a.length,b.length);for(c=0;d>c;c++)if(a.charAt(c)!==b.charAt(c)){c--;break}return 1>c?a.charAt(0)===b.charAt(0)&&"/"===a.charAt(0)?"/":"":(("/"!==a.charAt(c)||"/"!==b.charAt(c))&&(c=a.substring(0,c).lastIndexOf("/")),a.substring(0,c+1))},e.withinString=function(a,b){return a.replace(e.find_uri_expression,b)},e.ensureValidHostname=function(b){if(b.match(e.invalid_hostname_characters)){if(!a)throw new TypeError("Hostname '"+b+"' contains characters other than [A-Z0-9.-] and Punycode.js is not available");if(a.toASCII(b).match(e.invalid_hostname_characters))throw new TypeError("Hostname '"+b+"' contains characters other than [A-Z0-9.-]")}},e.noConflict=function(a){if(a){var c={URI:this.noConflict()};return URITemplate&&"function"==typeof URITemplate.noConflict&&(c.URITemplate=URITemplate.noConflict()),b&&"function"==typeof b.noConflict&&(c.IPv6=b.noConflict()),SecondLevelDomains&&"function"==typeof SecondLevelDomains.noConflict&&(c.SecondLevelDomains=SecondLevelDomains.noConflict()),c}return d.URI===this&&(d.URI=n),this},o.build=function(a){return a===!0?this._deferred_build=!0:(void 0===a||this._deferred_build)&&(this._string=e.build(this._parts),this._deferred_build=!1),this},o.clone=function(){return new e(this)},o.valueOf=o.toString=function(){return this.build(!1)._string},r={protocol:"protocol",username:"username",password:"password",hostname:"hostname",port:"port"},s=function(a){return function(b,c){return void 0===b?this._parts[a]||"":(this._parts[a]=b||null,this.build(!c),this)}};for(q in r)o[q]=s(r[q]);r={query:"?",fragment:"#"},s=function(a,b){return function(c,d){return void 0===c?this._parts[a]||"":(null!==c&&(c+="",c.charAt(0)===b&&(c=c.substring(1))),this._parts[a]=c,this.build(!d),this)}};for(q in r)o[q]=s(q,r[q]);r={search:["?","query"],hash:["#","fragment"]},s=function(a,b){return function(c,d){var e=this[a](c,d);return"string"==typeof e&&e.length?b+e:e}};for(q in r)o[q]=s(r[q][1],r[q][0]);o.pathname=function(a,b){if(void 0===a||a===!0){var c=this._parts.path||(this._parts.hostname?"/":"");return a?e.decodePath(c):c}return this._parts.path=a?e.recodePath(a):"/",this.build(!b),this},o.path=o.pathname,o.href=function(a,b){var c;if(void 0===a)return this.toString();this._string="",this._parts=e._parts();var d=a instanceof e,f="object"==typeof a&&(a.hostname||a.path||a.pathname);if(a.nodeName){var g=e.getDomAttribute(a);a=a[g]||"",f=!1}if(!d&&f&&void 0!==a.pathname&&(a=a.toString()),"string"==typeof a)this._parts=e.parse(a,this._parts);else{if(!d&&!f)throw new TypeError("invalid input");var h=d?a._parts:a;for(c in h)p.call(this._parts,c)&&(this._parts[c]=h[c])}return this.build(!b),this},o.is=function(a){var b=!1,d=!1,f=!1,g=!1,h=!1,i=!1,j=!1,k=!this._parts.urn;switch(this._parts.hostname&&(k=!1,d=e.ip4_expression.test(this._parts.hostname),f=e.ip6_expression.test(this._parts.hostname),b=d||f,g=!b,h=g&&c&&c.has(this._parts.hostname),i=g&&e.idn_expression.test(this._parts.hostname),j=g&&e.punycode_expression.test(this._parts.hostname)),a.toLowerCase()){case"relative":return k;case"absolute":return!k;case"domain":case"name":return g;case"sld":return h;case"ip":return b;case"ip4":case"ipv4":case"inet4":return d;case"ip6":case"ipv6":case"inet6":return f;case"idn":return i;case"url":return!this._parts.urn;case"urn":return!!this._parts.urn;case"punycode":return j}return null};var t=o.protocol,u=o.port,v=o.hostname;o.protocol=function(a,b){if(void 0!==a&&a&&(a=a.replace(/:(\/\/)?$/,""),a.match(/[^a-zA-z0-9\.+-]/)))throw new TypeError("Protocol '"+a+"' contains characters other than [A-Z0-9.+-]");return t.call(this,a,b)},o.scheme=o.protocol,o.port=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0!==a&&(0===a&&(a=null),a&&(a+="",":"===a.charAt(0)&&(a=a.substring(1)),a.match(/[^0-9]/))))throw new TypeError("Port '"+a+"' contains characters other than [0-9]");return u.call(this,a,b)},o.hostname=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0!==a){var c={};e.parseHost(a,c),a=c.hostname}return v.call(this,a,b)},o.host=function(a,b){return this._parts.urn?void 0===a?"":this:void 0===a?this._parts.hostname?e.buildHost(this._parts):"":(e.parseHost(a,this._parts),this.build(!b),this)},o.authority=function(a,b){return this._parts.urn?void 0===a?"":this:void 0===a?this._parts.hostname?e.buildAuthority(this._parts):"":(e.parseAuthority(a,this._parts),this.build(!b),this)},o.userinfo=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0===a){if(!this._parts.username)return"";var c=e.buildUserinfo(this._parts);return c.substring(0,c.length-1)}return"@"!==a[a.length-1]&&(a+="@"),e.parseUserinfo(a,this._parts),this.build(!b),this},o.resource=function(a,b){var c;return void 0===a?this.path()+this.search()+this.hash():(c=e.parse(a),this._parts.path=c.path,this._parts.query=c.query,this._parts.fragment=c.fragment,this.build(!b),this)},o.subdomain=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0===a){if(!this._parts.hostname||this.is("IP"))return"";var c=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,c)||""}var d=this._parts.hostname.length-this.domain().length,g=this._parts.hostname.substring(0,d),h=new RegExp("^"+f(g));return a&&"."!==a.charAt(a.length-1)&&(a+="."),a&&e.ensureValidHostname(a),this._parts.hostname=this._parts.hostname.replace(h,a),this.build(!b),this},o.domain=function(a,b){if(this._parts.urn)return void 0===a?"":this;if("boolean"==typeof a&&(b=a,a=void 0),void 0===a){if(!this._parts.hostname||this.is("IP"))return"";var c=this._parts.hostname.match(/\./g);if(c&&c.length<2)return this._parts.hostname;var d=this._parts.hostname.length-this.tld(b).length-1;return d=this._parts.hostname.lastIndexOf(".",d-1)+1,this._parts.hostname.substring(d)||""}if(!a)throw new TypeError("cannot set domain empty");if(e.ensureValidHostname(a),!this._parts.hostname||this.is("IP"))this._parts.hostname=a;else{var g=new RegExp(f(this.domain())+"$");this._parts.hostname=this._parts.hostname.replace(g,a)}return this.build(!b),this},o.tld=function(a,b){if(this._parts.urn)return void 0===a?"":this;if("boolean"==typeof a&&(b=a,a=void 0),void 0===a){if(!this._parts.hostname||this.is("IP"))return"";var d=this._parts.hostname.lastIndexOf("."),e=this._parts.hostname.substring(d+1);return b!==!0&&c&&c.list[e.toLowerCase()]?c.get(this._parts.hostname)||e:e}var g;if(!a)throw new TypeError("cannot set TLD empty");if(a.match(/[^a-zA-Z0-9-]/)){if(!c||!c.is(a))throw new TypeError("TLD '"+a+"' contains characters other than [A-Z0-9]");g=new RegExp(f(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(g,a)}else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");g=new RegExp(f(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(g,a)}return this.build(!b),this},o.directory=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0===a||a===!0){if(!this._parts.path&&!this._parts.hostname)return"";if("/"===this._parts.path)return"/";var c=this._parts.path.length-this.filename().length-1,d=this._parts.path.substring(0,c)||(this._parts.hostname?"/":"");return a?e.decodePath(d):d}var g=this._parts.path.length-this.filename().length,h=this._parts.path.substring(0,g),i=new RegExp("^"+f(h));return this.is("relative")||(a||(a="/"),"/"!==a.charAt(0)&&(a="/"+a)),a&&"/"!==a.charAt(a.length-1)&&(a+="/"),a=e.recodePath(a),this._parts.path=this._parts.path.replace(i,a),this.build(!b),this},o.filename=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0===a||a===!0){if(!this._parts.path||"/"===this._parts.path)return"";var c=this._parts.path.lastIndexOf("/"),d=this._parts.path.substring(c+1);return a?e.decodePathSegment(d):d}var g=!1;"/"===a.charAt(0)&&(a=a.substring(1)),a.match(/\.?\//)&&(g=!0);var h=new RegExp(f(this.filename())+"$");return a=e.recodePath(a),this._parts.path=this._parts.path.replace(h,a),g?this.normalizePath(b):this.build(!b),this},o.suffix=function(a,b){if(this._parts.urn)return void 0===a?"":this;if(void 0===a||a===!0){if(!this._parts.path||"/"===this._parts.path)return"";var c,d,g=this.filename(),h=g.lastIndexOf(".");return-1===h?"":(c=g.substring(h+1),d=/^[a-z0-9%]+$/i.test(c)?c:"",a?e.decodePathSegment(d):d)}"."===a.charAt(0)&&(a=a.substring(1));var i,j=this.suffix();if(j)i=new RegExp(a?f(j)+"$":f("."+j)+"$");else{if(!a)return this;this._parts.path+="."+e.recodePath(a)}return i&&(a=e.recodePath(a),this._parts.path=this._parts.path.replace(i,a)),this.build(!b),this},o.segment=function(a,b,c){var d=this._parts.urn?":":"/",e=this.path(),f="/"===e.substring(0,1),g=e.split(d);if(void 0!==a&&"number"!=typeof a&&(c=b,b=a,a=void 0),void 0!==a&&"number"!=typeof a)throw new Error("Bad segment '"+a+"', must be 0-based integer");if(f&&g.shift(),0>a&&(a=Math.max(g.length+a,0)),void 0===b)return void 0===a?g:g[a];if(null===a||void 0===g[a])if(h(b)){g=[];for(var i=0,j=b.length;j>i;i++)(b[i].length||g.length&&g[g.length-1].length)&&(g.length&&!g[g.length-1].length&&g.pop(),g.push(b[i]))}else(b||"string"==typeof b)&&(""===g[g.length-1]?g[g.length-1]=b:g.push(b));else b||"string"==typeof b&&b.length?g[a]=b:g.splice(a,1);return f&&g.unshift(""),this.path(g.join(d),c)},o.segmentCoded=function(a,b,c){var d,f,g;if("number"!=typeof a&&(c=b,b=a,a=void 0),void 0===b){if(d=this.segment(a,b,c),h(d))for(f=0,g=d.length;g>f;f++)d[f]=e.decode(d[f]);else d=void 0!==d?e.decode(d):void 0;return d}if(h(b))for(f=0,g=b.length;g>f;f++)b[f]=e.decode(b[f]);else b="string"==typeof b?e.encode(b):b;return this.segment(a,b,c)};var w=o.query;return o.query=function(a,b){if(a===!0)return e.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if("function"==typeof a){var c=e.parseQuery(this._parts.query,this._parts.escapeQuerySpace),d=a.call(this,c);return this._parts.query=e.buildQuery(d||c,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!b),this}return void 0!==a&&"string"!=typeof a?(this._parts.query=e.buildQuery(a,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!b),this):w.call(this,a,b)},o.setQuery=function(a,b,c){var d=e.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if("object"==typeof a)for(var f in a)p.call(a,f)&&(d[f]=a[f]);else{if("string"!=typeof a)throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");d[a]=void 0!==b?b:null}return this._parts.query=e.buildQuery(d,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),"string"!=typeof a&&(c=b),this.build(!c),this},o.addQuery=function(a,b,c){var d=e.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return e.addQuery(d,a,void 0===b?null:b),this._parts.query=e.buildQuery(d,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),"string"!=typeof a&&(c=b),this.build(!c),this},o.removeQuery=function(a,b,c){var d=e.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return e.removeQuery(d,a,b),this._parts.query=e.buildQuery(d,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),"string"!=typeof a&&(c=b),this.build(!c),this},o.hasQuery=function(a,b,c){var d=e.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return e.hasQuery(d,a,b,c)},o.setSearch=o.setQuery,o.addSearch=o.addQuery,o.removeSearch=o.removeQuery,o.hasSearch=o.hasQuery,o.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizeQuery(!1).normalizeFragment(!1).build():this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()},o.normalizeProtocol=function(a){return"string"==typeof this._parts.protocol&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!a)),this},o.normalizeHostname=function(c){return this._parts.hostname&&(this.is("IDN")&&a?this._parts.hostname=a.toASCII(this._parts.hostname):this.is("IPv6")&&b&&(this._parts.hostname=b.best(this._parts.hostname)),this._parts.hostname=this._parts.hostname.toLowerCase(),this.build(!c)),this},o.normalizePort=function(a){return"string"==typeof this._parts.protocol&&this._parts.port===e.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!a)),this},o.normalizePath=function(a){if(this._parts.urn)return this;if(!this._parts.path||"/"===this._parts.path)return this;var b,c,d,f=this._parts.path;for("/"!==f.charAt(0)&&(b=!0,f="/"+f),f=f.replace(/(\/(\.\/)+)|(\/\.$)/g,"/").replace(/\/{2,}/g,"/");;){if(c=f.indexOf("/../"),-1===c)break;if(0===c){f=f.substring(3);break}d=f.substring(0,c).lastIndexOf("/"),-1===d&&(d=c),f=f.substring(0,d)+f.substring(c+3)}return b&&this.is("relative")&&(f=f.substring(1)),f=e.recodePath(f),this._parts.path=f,this.build(!a),this},o.normalizePathname=o.normalizePath,o.normalizeQuery=function(a){return"string"==typeof this._parts.query&&(this._parts.query.length?this.query(e.parseQuery(this._parts.query,this._parts.escapeQuerySpace)):this._parts.query=null,this.build(!a)),this},o.normalizeFragment=function(a){return this._parts.fragment||(this._parts.fragment=null,this.build(!a)),this},o.normalizeSearch=o.normalizeQuery,o.normalizeHash=o.normalizeFragment,o.iso8859=function(){var a=e.encode,b=e.decode;return e.encode=escape,e.decode=decodeURIComponent,this.normalize(),e.encode=a,e.decode=b,this},o.unicode=function(){var a=e.encode,b=e.decode;return e.encode=m,e.decode=unescape,this.normalize(),e.encode=a,e.decode=b,this},o.readable=function(){var b=this.clone();b.username("").password("").normalize();var c="";if(b._parts.protocol&&(c+=b._parts.protocol+"://"),b._parts.hostname&&(b.is("punycode")&&a?(c+=a.toUnicode(b._parts.hostname),b._parts.port&&(c+=":"+b._parts.port)):c+=b.host()),b._parts.hostname&&b._parts.path&&"/"!==b._parts.path.charAt(0)&&(c+="/"),c+=b.path(!0),b._parts.query){for(var d="",f=0,g=b._parts.query.split("&"),h=g.length;h>f;f++){var i=(g[f]||"").split("=");d+="&"+e.decodeQuery(i[0],this._parts.escapeQuerySpace).replace(/&/g,"%26"),void 0!==i[1]&&(d+="="+e.decodeQuery(i[1],this._parts.escapeQuerySpace).replace(/&/g,"%26"))}c+="?"+d.substring(1)}return c+=e.decodeQuery(b.hash(),!0)},o.absoluteTo=function(a){var b,c,d,f=this.clone(),g=["protocol","username","password","hostname","port"];if(this._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(a instanceof e||(a=new e(a)),f._parts.protocol||(f._parts.protocol=a._parts.protocol),this._parts.hostname)return f;for(c=0;d=g[c];c++)f._parts[d]=a._parts[d];for(g=["query","path"],c=0;d=g[c];c++)!f._parts[d]&&a._parts[d]&&(f._parts[d]=a._parts[d]);return"/"!==f.path().charAt(0)&&(b=a.directory(),f._parts.path=(b?b+"/":"")+f._parts.path,f.normalizePath()),f.build(),f},o.relativeTo=function(a){var b,c,d,f,g,h=this.clone().normalize();if(h._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(a=new e(a).normalize(),b=h._parts,c=a._parts,f=h.path(),g=a.path(),"/"!==f.charAt(0))throw new Error("URI is already relative");if("/"!==g.charAt(0))throw new Error("Cannot calculate a URI relative to another relative URI");if(b.protocol===c.protocol&&(b.protocol=null),b.username!==c.username||b.password!==c.password)return h.build();if(null!==b.protocol||null!==b.username||null!==b.password)return h.build();if(b.hostname!==c.hostname||b.port!==c.port)return h.build();if(b.hostname=null,b.port=null,f===g)return b.path="",h.build();if(d=e.commonPath(h.path(),a.path()),!d)return h.build();var i=c.path.substring(d.length).replace(/[^\/]*$/,"").replace(/.*?\//g,"../");return b.path=i+b.path.substring(d.length),h.build()},o.equals=function(a){var b,c,d,f=this.clone(),g=new e(a),i={},j={},l={};if(f.normalize(),g.normalize(),f.toString()===g.toString())return!0;if(b=f.query(),c=g.query(),f.query(""),g.query(""),f.toString()!==g.toString())return!1;if(b.length!==c.length)return!1;i=e.parseQuery(b,this._parts.escapeQuerySpace),j=e.parseQuery(c,this._parts.escapeQuerySpace);for(d in i)if(p.call(i,d)){if(h(i[d])){if(!k(i[d],j[d]))return!1}else if(i[d]!==j[d])return!1;l[d]=!0}for(d in j)if(p.call(j,d)&&!l[d])return!1;return!0},o.duplicateQueryParameters=function(a){return this._parts.duplicateQueryParameters=!!a,this},o.escapeQuerySpace=function(a){return this._parts.escapeQuerySpace=!!a,this},e}),function(){function a(a,b,c){null!=a&&("number"==typeof a?this.fromNumber(a,b,c):null==b&&"string"!=typeof a?this.fromString(a,256):this.fromString(a,b))}function b(){return new a(null)}function c(a,b,c,d,e,f){for(;--f>=0;){var g=b*this[a++]+c[d]+e;e=Math.floor(g/67108864),c[d++]=67108863&g}return e}function d(a,b,c,d,e,f){for(var g=32767&b,h=b>>15;--f>=0;){var i=32767&this[a],j=this[a++]>>15,k=h*i+j*g;i=g*i+((32767&k)<<15)+c[d]+(1073741823&e),e=(i>>>30)+(k>>>15)+h*j+(e>>>30),c[d++]=1073741823&i}return e}function e(a,b,c,d,e,f){for(var g=16383&b,h=b>>14;--f>=0;){var i=16383&this[a],j=this[a++]>>14,k=h*i+j*g;
+i=g*i+((16383&k)<<14)+c[d]+e,e=(i>>28)+(k>>14)+h*j,c[d++]=268435455&i}return e}function f(a){return fc.charAt(a)}function g(a,b){var c=gc[a.charCodeAt(b)];return null==c?-1:c}function h(a){for(var b=this.t-1;b>=0;--b)a[b]=this[b];a.t=this.t,a.s=this.s}function i(a){this.t=1,this.s=0>a?-1:0,a>0?this[0]=a:-1>a?this[0]=a+DV:this.t=0}function j(a){var c=b();return c.fromInt(a),c}function k(b,c){var d;if(16==c)d=4;else if(8==c)d=3;else if(256==c)d=8;else if(2==c)d=1;else if(32==c)d=5;else{if(4!=c)return void this.fromRadix(b,c);d=2}this.t=0,this.s=0;for(var e=b.length,f=!1,h=0;--e>=0;){var i=8==d?255&b[e]:g(b,e);0>i?"-"==b.charAt(e)&&(f=!0):(f=!1,0==h?this[this.t++]=i:h+d>this.DB?(this[this.t-1]|=(i&(1<<this.DB-h)-1)<<h,this[this.t++]=i>>this.DB-h):this[this.t-1]|=i<<h,h+=d,h>=this.DB&&(h-=this.DB))}8==d&&0!=(128&b[0])&&(this.s=-1,h>0&&(this[this.t-1]|=(1<<this.DB-h)-1<<h)),this.clamp(),f&&a.ZERO.subTo(this,this)}function l(){for(var a=this.s&this.DM;this.t>0&&this[this.t-1]==a;)--this.t}function m(a){if(this.s<0)return"-"+this.negate().toString(a);var b;if(16==a)b=4;else if(8==a)b=3;else if(2==a)b=1;else if(32==a)b=5;else{if(4!=a)return this.toRadix(a);b=2}var c,d=(1<<b)-1,e=!1,g="",h=this.t,i=this.DB-h*this.DB%b;if(h-->0)for(i<this.DB&&(c=this[h]>>i)>0&&(e=!0,g=f(c));h>=0;)b>i?(c=(this[h]&(1<<i)-1)<<b-i,c|=this[--h]>>(i+=this.DB-b)):(c=this[h]>>(i-=b)&d,0>=i&&(i+=this.DB,--h)),c>0&&(e=!0),e&&(g+=f(c));return e?g:"0"}function n(){var c=b();return a.ZERO.subTo(this,c),c}function o(){return this.s<0?this.negate():this}function p(a){var b=this.s-a.s;if(0!=b)return b;var c=this.t;if(b=c-a.t,0!=b)return this.s<0?-b:b;for(;--c>=0;)if(0!=(b=this[c]-a[c]))return b;return 0}function q(a){var b,c=1;return 0!=(b=a>>>16)&&(a=b,c+=16),0!=(b=a>>8)&&(a=b,c+=8),0!=(b=a>>4)&&(a=b,c+=4),0!=(b=a>>2)&&(a=b,c+=2),0!=(b=a>>1)&&(a=b,c+=1),c}function r(){return this.t<=0?0:this.DB*(this.t-1)+q(this[this.t-1]^this.s&this.DM)}function s(a,b){var c;for(c=this.t-1;c>=0;--c)b[c+a]=this[c];for(c=a-1;c>=0;--c)b[c]=0;b.t=this.t+a,b.s=this.s}function t(a,b){for(var c=a;c<this.t;++c)b[c-a]=this[c];b.t=Math.max(this.t-a,0),b.s=this.s}function u(a,b){var c,d=a%this.DB,e=this.DB-d,f=(1<<e)-1,g=Math.floor(a/this.DB),h=this.s<<d&this.DM;for(c=this.t-1;c>=0;--c)b[c+g+1]=this[c]>>e|h,h=(this[c]&f)<<d;for(c=g-1;c>=0;--c)b[c]=0;b[g]=h,b.t=this.t+g+1,b.s=this.s,b.clamp()}function v(a,b){b.s=this.s;var c=Math.floor(a/this.DB);if(c>=this.t)return void(b.t=0);var d=a%this.DB,e=this.DB-d,f=(1<<d)-1;b[0]=this[c]>>d;for(var g=c+1;g<this.t;++g)b[g-c-1]|=(this[g]&f)<<e,b[g-c]=this[g]>>d;d>0&&(b[this.t-c-1]|=(this.s&f)<<e),b.t=this.t-c,b.clamp()}function w(a,b){for(var c=0,d=0,e=Math.min(a.t,this.t);e>c;)d+=this[c]-a[c],b[c++]=d&this.DM,d>>=this.DB;if(a.t<this.t){for(d-=a.s;c<this.t;)d+=this[c],b[c++]=d&this.DM,d>>=this.DB;d+=this.s}else{for(d+=this.s;c<a.t;)d-=a[c],b[c++]=d&this.DM,d>>=this.DB;d-=a.s}b.s=0>d?-1:0,-1>d?b[c++]=this.DV+d:d>0&&(b[c++]=d),b.t=c,b.clamp()}function x(b,c){var d=this.abs(),e=b.abs(),f=d.t;for(c.t=f+e.t;--f>=0;)c[f]=0;for(f=0;f<e.t;++f)c[f+d.t]=d.am(0,e[f],c,f,0,d.t);c.s=0,c.clamp(),this.s!=b.s&&a.ZERO.subTo(c,c)}function y(a){for(var b=this.abs(),c=a.t=2*b.t;--c>=0;)a[c]=0;for(c=0;c<b.t-1;++c){var d=b.am(c,b[c],a,2*c,0,1);(a[c+b.t]+=b.am(c+1,2*b[c],a,2*c+1,d,b.t-c-1))>=b.DV&&(a[c+b.t]-=b.DV,a[c+b.t+1]=1)}a.t>0&&(a[a.t-1]+=b.am(c,b[c],a,2*c,0,1)),a.s=0,a.clamp()}function z(c,d,e){var f=c.abs();if(!(f.t<=0)){var g=this.abs();if(g.t<f.t)return null!=d&&d.fromInt(0),void(null!=e&&this.copyTo(e));null==e&&(e=b());var h=b(),i=this.s,j=c.s,k=this.DB-q(f[f.t-1]);k>0?(f.lShiftTo(k,h),g.lShiftTo(k,e)):(f.copyTo(h),g.copyTo(e));var l=h.t,m=h[l-1];if(0!=m){var n=m*(1<<this.F1)+(l>1?h[l-2]>>this.F2:0),o=this.FV/n,p=(1<<this.F1)/n,r=1<<this.F2,s=e.t,t=s-l,u=null==d?b():d;for(h.dlShiftTo(t,u),e.compareTo(u)>=0&&(e[e.t++]=1,e.subTo(u,e)),a.ONE.dlShiftTo(l,u),u.subTo(h,h);h.t<l;)h[h.t++]=0;for(;--t>=0;){var v=e[--s]==m?this.DM:Math.floor(e[s]*o+(e[s-1]+r)*p);if((e[s]+=h.am(0,v,e,t,0,l))<v)for(h.dlShiftTo(t,u),e.subTo(u,e);e[s]<--v;)e.subTo(u,e)}null!=d&&(e.drShiftTo(l,d),i!=j&&a.ZERO.subTo(d,d)),e.t=l,e.clamp(),k>0&&e.rShiftTo(k,e),0>i&&a.ZERO.subTo(e,e)}}}function A(c){var d=b();return this.abs().divRemTo(c,null,d),this.s<0&&d.compareTo(a.ZERO)>0&&c.subTo(d,d),d}function B(a){this.m=a}function C(a){return a.s<0||a.compareTo(this.m)>=0?a.mod(this.m):a}function D(a){return a}function E(a){a.divRemTo(this.m,null,a)}function F(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function G(a,b){a.squareTo(b),this.reduce(b)}function H(){if(this.t<1)return 0;var a=this[0];if(0==(1&a))return 0;var b=3&a;return b=b*(2-(15&a)*b)&15,b=b*(2-(255&a)*b)&255,b=b*(2-((65535&a)*b&65535))&65535,b=b*(2-a*b%this.DV)%this.DV,b>0?this.DV-b:-b}function I(a){this.m=a,this.mp=a.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<a.DB-15)-1,this.mt2=2*a.t}function J(c){var d=b();return c.abs().dlShiftTo(this.m.t,d),d.divRemTo(this.m,null,d),c.s<0&&d.compareTo(a.ZERO)>0&&this.m.subTo(d,d),d}function K(a){var c=b();return a.copyTo(c),this.reduce(c),c}function L(a){for(;a.t<=this.mt2;)a[a.t++]=0;for(var b=0;b<this.m.t;++b){var c=32767&a[b],d=c*this.mpl+((c*this.mph+(a[b]>>15)*this.mpl&this.um)<<15)&a.DM;for(c=b+this.m.t,a[c]+=this.m.am(0,d,a,b,0,this.m.t);a[c]>=a.DV;)a[c]-=a.DV,a[++c]++}a.clamp(),a.drShiftTo(this.m.t,a),a.compareTo(this.m)>=0&&a.subTo(this.m,a)}function M(a,b){a.squareTo(b),this.reduce(b)}function N(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function O(){return 0==(this.t>0?1&this[0]:this.s)}function P(c,d){if(c>4294967295||1>c)return a.ONE;var e=b(),f=b(),g=d.convert(this),h=q(c)-1;for(g.copyTo(e);--h>=0;)if(d.sqrTo(e,f),(c&1<<h)>0)d.mulTo(f,g,e);else{var i=e;e=f,f=i}return d.revert(e)}function Q(a,b){var c;return c=256>a||b.isEven()?new B(b):new I(b),this.exp(a,c)}function R(){var a=b();return this.copyTo(a),a}function S(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]}function T(){return 0==this.t?this.s:this[0]<<24>>24}function U(){return 0==this.t?this.s:this[0]<<16>>16}function V(a){return Math.floor(Math.LN2*this.DB/Math.log(a))}function W(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1}function X(a){if(null==a&&(a=10),0==this.signum()||2>a||a>36)return"0";var c=this.chunkSize(a),d=Math.pow(a,c),e=j(d),f=b(),g=b(),h="";for(this.divRemTo(e,f,g);f.signum()>0;)h=(d+g.intValue()).toString(a).substr(1)+h,f.divRemTo(e,f,g);return g.intValue().toString(a)+h}function Y(b,c){this.fromInt(0),null==c&&(c=10);for(var d=this.chunkSize(c),e=Math.pow(c,d),f=!1,h=0,i=0,j=0;j<b.length;++j){var k=g(b,j);0>k?"-"==b.charAt(j)&&0==this.signum()&&(f=!0):(i=c*i+k,++h>=d&&(this.dMultiply(e),this.dAddOffset(i,0),h=0,i=0))}h>0&&(this.dMultiply(Math.pow(c,h)),this.dAddOffset(i,0)),f&&a.ZERO.subTo(this,this)}function Z(b,c,d){if("number"==typeof c)if(2>b)this.fromInt(1);else for(this.fromNumber(b,d),this.testBit(b-1)||this.bitwiseTo(a.ONE.shiftLeft(b-1),fb,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(c);)this.dAddOffset(2,0),this.bitLength()>b&&this.subTo(a.ONE.shiftLeft(b-1),this);else{var e=new Array,f=7&b;e.length=(b>>3)+1,c.nextBytes(e),f>0?e[0]&=(1<<f)-1:e[0]=0,this.fromString(e,256)}}function $(){var a=this.t,b=new Array;b[0]=this.s;var c,d=this.DB-a*this.DB%8,e=0;if(a-->0)for(d<this.DB&&(c=this[a]>>d)!=(this.s&this.DM)>>d&&(b[e++]=c|this.s<<this.DB-d);a>=0;)8>d?(c=(this[a]&(1<<d)-1)<<8-d,c|=this[--a]>>(d+=this.DB-8)):(c=this[a]>>(d-=8)&255,0>=d&&(d+=this.DB,--a)),0!=(128&c)&&(c|=-256),0==e&&(128&this.s)!=(128&c)&&++e,(e>0||c!=this.s)&&(b[e++]=c);return b}function _(a){return 0==this.compareTo(a)}function ab(a){return this.compareTo(a)<0?this:a}function bb(a){return this.compareTo(a)>0?this:a}function cb(a,b,c){var d,e,f=Math.min(a.t,this.t);for(d=0;f>d;++d)c[d]=b(this[d],a[d]);if(a.t<this.t){for(e=a.s&this.DM,d=f;d<this.t;++d)c[d]=b(this[d],e);c.t=this.t}else{for(e=this.s&this.DM,d=f;d<a.t;++d)c[d]=b(e,a[d]);c.t=a.t}c.s=b(this.s,a.s),c.clamp()}function db(a,b){return a&b}function eb(a){var c=b();return this.bitwiseTo(a,db,c),c}function fb(a,b){return a|b}function gb(a){var c=b();return this.bitwiseTo(a,fb,c),c}function hb(a,b){return a^b}function ib(a){var c=b();return this.bitwiseTo(a,hb,c),c}function jb(a,b){return a&~b}function kb(a){var c=b();return this.bitwiseTo(a,jb,c),c}function lb(){for(var a=b(),c=0;c<this.t;++c)a[c]=this.DM&~this[c];return a.t=this.t,a.s=~this.s,a}function mb(a){var c=b();return 0>a?this.rShiftTo(-a,c):this.lShiftTo(a,c),c}function nb(a){var c=b();return 0>a?this.lShiftTo(-a,c):this.rShiftTo(a,c),c}function ob(a){if(0==a)return-1;var b=0;return 0==(65535&a)&&(a>>=16,b+=16),0==(255&a)&&(a>>=8,b+=8),0==(15&a)&&(a>>=4,b+=4),0==(3&a)&&(a>>=2,b+=2),0==(1&a)&&++b,b}function pb(){for(var a=0;a<this.t;++a)if(0!=this[a])return a*this.DB+ob(this[a]);return this.s<0?this.t*this.DB:-1}function qb(a){for(var b=0;0!=a;)a&=a-1,++b;return b}function rb(){for(var a=0,b=this.s&this.DM,c=0;c<this.t;++c)a+=qb(this[c]^b);return a}function sb(a){var b=Math.floor(a/this.DB);return b>=this.t?0!=this.s:0!=(this[b]&1<<a%this.DB)}function tb(b,c){var d=a.ONE.shiftLeft(b);return this.bitwiseTo(d,c,d),d}function ub(a){return this.changeBit(a,fb)}function vb(a){return this.changeBit(a,jb)}function wb(a){return this.changeBit(a,hb)}function xb(a,b){for(var c=0,d=0,e=Math.min(a.t,this.t);e>c;)d+=this[c]+a[c],b[c++]=d&this.DM,d>>=this.DB;if(a.t<this.t){for(d+=a.s;c<this.t;)d+=this[c],b[c++]=d&this.DM,d>>=this.DB;d+=this.s}else{for(d+=this.s;c<a.t;)d+=a[c],b[c++]=d&this.DM,d>>=this.DB;d+=a.s}b.s=0>d?-1:0,d>0?b[c++]=d:-1>d&&(b[c++]=this.DV+d),b.t=c,b.clamp()}function yb(a){var c=b();return this.addTo(a,c),c}function zb(a){var c=b();return this.subTo(a,c),c}function Ab(a){var c=b();return this.multiplyTo(a,c),c}function Bb(){var a=b();return this.squareTo(a),a}function Cb(a){var c=b();return this.divRemTo(a,c,null),c}function Db(a){var c=b();return this.divRemTo(a,null,c),c}function Eb(a){var c=b(),d=b();return this.divRemTo(a,c,d),new Array(c,d)}function Fb(a){this[this.t]=this.am(0,a-1,this,0,0,this.t),++this.t,this.clamp()}function Gb(a,b){if(0!=a){for(;this.t<=b;)this[this.t++]=0;for(this[b]+=a;this[b]>=this.DV;)this[b]-=this.DV,++b>=this.t&&(this[this.t++]=0),++this[b]}}function Hb(){}function Ib(a){return a}function Jb(a,b,c){a.multiplyTo(b,c)}function Kb(a,b){a.squareTo(b)}function Lb(a){return this.exp(a,new Hb)}function Mb(a,b,c){var d=Math.min(this.t+a.t,b);for(c.s=0,c.t=d;d>0;)c[--d]=0;var e;for(e=c.t-this.t;e>d;++d)c[d+this.t]=this.am(0,a[d],c,d,0,this.t);for(e=Math.min(a.t,b);e>d;++d)this.am(0,a[d],c,d,0,b-d);c.clamp()}function Nb(a,b,c){--b;var d=c.t=this.t+a.t-b;for(c.s=0;--d>=0;)c[d]=0;for(d=Math.max(b-this.t,0);d<a.t;++d)c[this.t+d-b]=this.am(b-d,a[d],c,0,0,this.t+d-b);c.clamp(),c.drShiftTo(1,c)}function Ob(c){this.r2=b(),this.q3=b(),a.ONE.dlShiftTo(2*c.t,this.r2),this.mu=this.r2.divide(c),this.m=c}function Pb(a){if(a.s<0||a.t>2*this.m.t)return a.mod(this.m);if(a.compareTo(this.m)<0)return a;var c=b();return a.copyTo(c),this.reduce(c),c}function Qb(a){return a}function Rb(a){for(a.drShiftTo(this.m.t-1,this.r2),a.t>this.m.t+1&&(a.t=this.m.t+1,a.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);a.compareTo(this.r2)<0;)a.dAddOffset(1,this.m.t+1);for(a.subTo(this.r2,a);a.compareTo(this.m)>=0;)a.subTo(this.m,a)}function Sb(a,b){a.squareTo(b),this.reduce(b)}function Tb(a,b,c){a.multiplyTo(b,c),this.reduce(c)}function Ub(a,c){var d,e,f=a.bitLength(),g=j(1);if(0>=f)return g;d=18>f?1:48>f?3:144>f?4:768>f?5:6,e=8>f?new B(c):c.isEven()?new Ob(c):new I(c);var h=new Array,i=3,k=d-1,l=(1<<d)-1;if(h[1]=e.convert(this),d>1){var m=b();for(e.sqrTo(h[1],m);l>=i;)h[i]=b(),e.mulTo(m,h[i-2],h[i]),i+=2}var n,o,p=a.t-1,r=!0,s=b();for(f=q(a[p])-1;p>=0;){for(f>=k?n=a[p]>>f-k&l:(n=(a[p]&(1<<f+1)-1)<<k-f,p>0&&(n|=a[p-1]>>this.DB+f-k)),i=d;0==(1&n);)n>>=1,--i;if((f-=i)<0&&(f+=this.DB,--p),r)h[n].copyTo(g),r=!1;else{for(;i>1;)e.sqrTo(g,s),e.sqrTo(s,g),i-=2;i>0?e.sqrTo(g,s):(o=g,g=s,s=o),e.mulTo(s,h[n],g)}for(;p>=0&&0==(a[p]&1<<f);)e.sqrTo(g,s),o=g,g=s,s=o,--f<0&&(f=this.DB-1,--p)}return e.revert(g)}function Vb(a){var b=this.s<0?this.negate():this.clone(),c=a.s<0?a.negate():a.clone();if(b.compareTo(c)<0){var d=b;b=c,c=d}var e=b.getLowestSetBit(),f=c.getLowestSetBit();if(0>f)return b;for(f>e&&(f=e),f>0&&(b.rShiftTo(f,b),c.rShiftTo(f,c));b.signum()>0;)(e=b.getLowestSetBit())>0&&b.rShiftTo(e,b),(e=c.getLowestSetBit())>0&&c.rShiftTo(e,c),b.compareTo(c)>=0?(b.subTo(c,b),b.rShiftTo(1,b)):(c.subTo(b,c),c.rShiftTo(1,c));return f>0&&c.lShiftTo(f,c),c}function Wb(a){if(0>=a)return 0;var b=this.DV%a,c=this.s<0?a-1:0;if(this.t>0)if(0==b)c=this[0]%a;else for(var d=this.t-1;d>=0;--d)c=(b*c+this[d])%a;return c}function Xb(b){var c=b.isEven();if(this.isEven()&&c||0==b.signum())return a.ZERO;for(var d=b.clone(),e=this.clone(),f=j(1),g=j(0),h=j(0),i=j(1);0!=d.signum();){for(;d.isEven();)d.rShiftTo(1,d),c?(f.isEven()&&g.isEven()||(f.addTo(this,f),g.subTo(b,g)),f.rShiftTo(1,f)):g.isEven()||g.subTo(b,g),g.rShiftTo(1,g);for(;e.isEven();)e.rShiftTo(1,e),c?(h.isEven()&&i.isEven()||(h.addTo(this,h),i.subTo(b,i)),h.rShiftTo(1,h)):i.isEven()||i.subTo(b,i),i.rShiftTo(1,i);d.compareTo(e)>=0?(d.subTo(e,d),c&&f.subTo(h,f),g.subTo(i,g)):(e.subTo(d,e),c&&h.subTo(f,h),i.subTo(g,i))}return 0!=e.compareTo(a.ONE)?a.ZERO:i.compareTo(b)>=0?i.subtract(b):i.signum()<0?(i.addTo(b,i),i.signum()<0?i.add(b):i):i}function Yb(a){var b,c=this.abs();if(1==c.t&&c[0]<=hc[hc.length-1]){for(b=0;b<hc.length;++b)if(c[0]==hc[b])return!0;return!1}if(c.isEven())return!1;for(b=1;b<hc.length;){for(var d=hc[b],e=b+1;e<hc.length&&ic>d;)d*=hc[e++];for(d=c.modInt(d);e>b;)if(d%hc[b++]==0)return!1}return c.millerRabin(a)}function Zb(c){var d=this.subtract(a.ONE),e=d.getLowestSetBit();if(0>=e)return!1;var f=d.shiftRight(e);c=c+1>>1,c>hc.length&&(c=hc.length);for(var g=b(),h=0;c>h;++h){g.fromInt(hc[Math.floor(Math.random()*hc.length)]);var i=g.modPow(f,this);if(0!=i.compareTo(a.ONE)&&0!=i.compareTo(d)){for(var j=1;j++<e&&0!=i.compareTo(d);)if(i=i.modPowInt(2,this),0==i.compareTo(a.ONE))return!1;if(0!=i.compareTo(d))return!1}}return!0}var $b,_b=0xdeadbeefcafe,ac=15715070==(16777215&_b),bc="undefined"!=typeof navigator;bc&&ac&&"Microsoft Internet Explorer"==navigator.appName?(a.prototype.am=d,$b=30):bc&&ac&&"Netscape"!=navigator.appName?(a.prototype.am=c,$b=26):(a.prototype.am=e,$b=28),a.prototype.DB=$b,a.prototype.DM=(1<<$b)-1,a.prototype.DV=1<<$b;var cc=52;a.prototype.FV=Math.pow(2,cc),a.prototype.F1=cc-$b,a.prototype.F2=2*$b-cc;var dc,ec,fc="0123456789abcdefghijklmnopqrstuvwxyz",gc=new Array;for(dc="0".charCodeAt(0),ec=0;9>=ec;++ec)gc[dc++]=ec;for(dc="a".charCodeAt(0),ec=10;36>ec;++ec)gc[dc++]=ec;for(dc="A".charCodeAt(0),ec=10;36>ec;++ec)gc[dc++]=ec;B.prototype.convert=C,B.prototype.revert=D,B.prototype.reduce=E,B.prototype.mulTo=F,B.prototype.sqrTo=G,I.prototype.convert=J,I.prototype.revert=K,I.prototype.reduce=L,I.prototype.mulTo=N,I.prototype.sqrTo=M,a.prototype.copyTo=h,a.prototype.fromInt=i,a.prototype.fromString=k,a.prototype.clamp=l,a.prototype.dlShiftTo=s,a.prototype.drShiftTo=t,a.prototype.lShiftTo=u,a.prototype.rShiftTo=v,a.prototype.subTo=w,a.prototype.multiplyTo=x,a.prototype.squareTo=y,a.prototype.divRemTo=z,a.prototype.invDigit=H,a.prototype.isEven=O,a.prototype.exp=P,a.prototype.toString=m,a.prototype.negate=n,a.prototype.abs=o,a.prototype.compareTo=p,a.prototype.bitLength=r,a.prototype.mod=A,a.prototype.modPowInt=Q,a.ZERO=j(0),a.ONE=j(1),Hb.prototype.convert=Ib,Hb.prototype.revert=Ib,Hb.prototype.mulTo=Jb,Hb.prototype.sqrTo=Kb,Ob.prototype.convert=Pb,Ob.prototype.revert=Qb,Ob.prototype.reduce=Rb,Ob.prototype.mulTo=Tb,Ob.prototype.sqrTo=Sb;var hc=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],ic=(1<<26)/hc[hc.length-1];a.prototype.chunkSize=V,a.prototype.toRadix=X,a.prototype.fromRadix=Y,a.prototype.fromNumber=Z,a.prototype.bitwiseTo=cb,a.prototype.changeBit=tb,a.prototype.addTo=xb,a.prototype.dMultiply=Fb,a.prototype.dAddOffset=Gb,a.prototype.multiplyLowerTo=Mb,a.prototype.multiplyUpperTo=Nb,a.prototype.modInt=Wb,a.prototype.millerRabin=Zb,a.prototype.clone=R,a.prototype.intValue=S,a.prototype.byteValue=T,a.prototype.shortValue=U,a.prototype.signum=W,a.prototype.toByteArray=$,a.prototype.equals=_,a.prototype.min=ab,a.prototype.max=bb,a.prototype.and=eb,a.prototype.or=gb,a.prototype.xor=ib,a.prototype.andNot=kb,a.prototype.not=lb,a.prototype.shiftLeft=mb,a.prototype.shiftRight=nb,a.prototype.getLowestSetBit=pb,a.prototype.bitCount=rb,a.prototype.testBit=sb,a.prototype.setBit=ub,a.prototype.clearBit=vb,a.prototype.flipBit=wb,a.prototype.add=yb,a.prototype.subtract=zb,a.prototype.multiply=Ab,a.prototype.divide=Cb,a.prototype.remainder=Db,a.prototype.divideAndRemainder=Eb,a.prototype.modPow=Ub,a.prototype.modInverse=Xb,a.prototype.pow=Lb,a.prototype.gcd=Vb,a.prototype.isProbablePrime=Yb,a.prototype.square=Bb,"undefined"!=typeof exports?exports=module.exports=a:this.BigInteger=a}.call(this),function(a){var b,c,d,e=a(window),f={jqueryui:{container:"ui-widget ui-widget-content ui-corner-all",notice:"ui-state-highlight",notice_icon:"ui-icon ui-icon-info",info:"",info_icon:"ui-icon ui-icon-info",success:"ui-state-default",success_icon:"ui-icon ui-icon-circle-check",error:"ui-state-error",error_icon:"ui-icon ui-icon-alert",closer:"ui-icon ui-icon-close",pin_up:"ui-icon ui-icon-pin-w",pin_down:"ui-icon ui-icon-pin-s",hi_menu:"ui-state-default ui-corner-bottom",hi_btn:"ui-state-default ui-corner-all",hi_btnhov:"ui-state-hover",hi_hnd:"ui-icon ui-icon-grip-dotted-horizontal"},bootstrap:{container:"alert",notice:"",notice_icon:"icon-exclamation-sign",info:"alert-info",info_icon:"icon-info-sign",success:"alert-success",success_icon:"icon-ok-sign",error:"alert-error",error_icon:"icon-warning-sign",closer:"icon-remove",pin_up:"icon-pause",pin_down:"icon-play",hi_menu:"well",hi_btn:"btn",hi_btnhov:"",hi_hnd:"icon-chevron-down"}},g=function(){d=a("body"),e=a(window),e.bind("resize",function(){c&&clearTimeout(c),c=setTimeout(a.pnotify_position_all,10)})};document.body?g():a(g),a.extend({pnotify_remove_all:function(){var b=e.data("pnotify");b&&b.length&&a.each(b,function(){this.pnotify_remove&&this.pnotify_remove()})},pnotify_position_all:function(){c&&clearTimeout(c),c=null;var b=e.data("pnotify");b&&b.length&&(a.each(b,function(){var a=this.opts.stack;a&&(a.nextpos1=a.firstpos1,a.nextpos2=a.firstpos2,a.addpos2=0,a.animation=!0)}),a.each(b,function(){this.pnotify_position()}))},pnotify:function(g){var h,i;"object"!=typeof g?(i=a.extend({},a.pnotify.defaults),i.text=g):i=a.extend({},a.pnotify.defaults,g);for(var j in i)"string"==typeof j&&j.match(/^pnotify_/)&&(i[j.replace(/^pnotify_/,"")]=i[j]);if(i.before_init&&i.before_init(i)===!1)return null;var k,m=function(b,c){o.css("display","none");var d=document.elementFromPoint(b.clientX,b.clientY);o.css("display","block");var e=a(d),f=e.css("cursor");o.css("cursor","auto"!=f?f:"default"),k&&k.get(0)==d||(k&&(l.call(k.get(0),"mouseleave",b.originalEvent),l.call(k.get(0),"mouseout",b.originalEvent)),l.call(d,"mouseenter",b.originalEvent),l.call(d,"mouseover",b.originalEvent)),l.call(d,c,b.originalEvent),k=e},n=f[i.styling],o=a("<div />",{"class":"ui-pnotify "+i.addclass,css:{display:"none"},mouseenter:function(a){i.nonblock&&a.stopPropagation(),i.mouse_reset&&"out"==h&&(o.stop(!0),h="in",o.css("height","auto").animate({width:i.width,opacity:i.nonblock?i.nonblock_opacity:i.opacity},"fast")),i.nonblock&&o.animate({opacity:i.nonblock_opacity},"fast"),i.hide&&i.mouse_reset&&o.pnotify_cancel_remove(),i.sticker&&!i.nonblock&&o.sticker.trigger("pnotify_icon").css("visibility","visible"),i.closer&&!i.nonblock&&o.closer.css("visibility","visible")},mouseleave:function(b){i.nonblock&&b.stopPropagation(),k=null,o.css("cursor","auto"),i.nonblock&&"out"!=h&&o.animate({opacity:i.opacity},"fast"),i.hide&&i.mouse_reset&&o.pnotify_queue_remove(),i.sticker_hover&&o.sticker.css("visibility","hidden"),i.closer_hover&&o.closer.css("visibility","hidden"),a.pnotify_position_all()},mouseover:function(a){i.nonblock&&a.stopPropagation()},mouseout:function(a){i.nonblock&&a.stopPropagation()},mousemove:function(a){i.nonblock&&(a.stopPropagation(),m(a,"onmousemove"))},mousedown:function(a){i.nonblock&&(a.stopPropagation(),a.preventDefault(),m(a,"onmousedown"))},mouseup:function(a){i.nonblock&&(a.stopPropagation(),a.preventDefault(),m(a,"onmouseup"))},click:function(a){i.nonblock&&(a.stopPropagation(),m(a,"onclick"))},dblclick:function(a){i.nonblock&&(a.stopPropagation(),m(a,"ondblclick"))}});o.opts=i,o.container=a("<div />",{"class":n.container+" ui-pnotify-container "+("error"==i.type?n.error:"info"==i.type?n.info:"success"==i.type?n.success:n.notice)}).appendTo(o),""!=i.cornerclass&&o.container.removeClass("ui-corner-all").addClass(i.cornerclass),i.shadow&&o.container.addClass("ui-pnotify-shadow"),o.pnotify_version="1.2.0",o.pnotify=function(b){var c=i;"string"==typeof b?i.text=b:i=a.extend({},i,b);for(var d in i)"string"==typeof d&&d.match(/^pnotify_/)&&(i[d.replace(/^pnotify_/,"")]=i[d]);return o.opts=i,i.cornerclass!=c.cornerclass&&o.container.removeClass("ui-corner-all").addClass(i.cornerclass),i.shadow!=c.shadow&&(i.shadow?o.container.addClass("ui-pnotify-shadow"):o.container.removeClass("ui-pnotify-shadow")),i.addclass===!1?o.removeClass(c.addclass):i.addclass!==c.addclass&&o.removeClass(c.addclass).addClass(i.addclass),i.title===!1?o.title_container.slideUp("fast"):i.title!==c.title&&(i.title_escape?o.title_container.text(i.title).slideDown(200):o.title_container.html(i.title).slideDown(200)),i.text===!1?o.text_container.slideUp("fast"):i.text!==c.text&&(i.text_escape?o.text_container.text(i.text).slideDown(200):o.text_container.html(i.insert_brs?String(i.text).replace(/\n/g,"<br />"):i.text).slideDown(200)),o.pnotify_history=i.history,o.pnotify_hide=i.hide,i.type!=c.type&&o.container.removeClass(n.error+" "+n.notice+" "+n.success+" "+n.info).addClass("error"==i.type?n.error:"info"==i.type?n.info:"success"==i.type?n.success:n.notice),(i.icon!==c.icon||i.icon===!0&&i.type!=c.type)&&(o.container.find("div.ui-pnotify-icon").remove(),i.icon!==!1&&a("<div />",{"class":"ui-pnotify-icon"}).append(a("<span />",{"class":i.icon===!0?"error"==i.type?n.error_icon:"info"==i.type?n.info_icon:"success"==i.type?n.success_icon:n.notice_icon:i.icon})).prependTo(o.container)),i.width!==c.width&&o.animate({width:i.width}),i.min_height!==c.min_height&&o.container.animate({minHeight:i.min_height}),i.opacity!==c.opacity&&o.fadeTo(i.animate_speed,i.opacity),!i.closer||i.nonblock?o.closer.css("display","none"):o.closer.css("display","block"),!i.sticker||i.nonblock?o.sticker.css("display","none"):o.sticker.css("display","block"),o.sticker.trigger("pnotify_icon"),i.sticker_hover?o.sticker.css("visibility","hidden"):i.nonblock||o.sticker.css("visibility","visible"),i.closer_hover?o.closer.css("visibility","hidden"):i.nonblock||o.closer.css("visibility","visible"),i.hide?c.hide||o.pnotify_queue_remove():o.pnotify_cancel_remove(),o.pnotify_queue_position(),o},o.pnotify_position=function(a){var b=o.opts.stack;if(b){b.nextpos1||(b.nextpos1=b.firstpos1),b.nextpos2||(b.nextpos2=b.firstpos2),b.addpos2||(b.addpos2=0);var c="none"==o.css("display");if(!c||a){var d,f,g,h={};switch(b.dir1){case"down":g="top";break;case"up":g="bottom";break;case"left":g="right";break;case"right":g="left"}d=parseInt(o.css(g)),isNaN(d)&&(d=0),"undefined"!=typeof b.firstpos1||c||(b.firstpos1=d,b.nextpos1=b.firstpos1);var i;switch(b.dir2){case"down":i="top";break;case"up":i="bottom";break;case"left":i="right";break;case"right":i="left"}if(f=parseInt(o.css(i)),isNaN(f)&&(f=0),"undefined"!=typeof b.firstpos2||c||(b.firstpos2=f,b.nextpos2=b.firstpos2),("down"==b.dir1&&b.nextpos1+o.height()>e.height()||"up"==b.dir1&&b.nextpos1+o.height()>e.height()||"left"==b.dir1&&b.nextpos1+o.width()>e.width()||"right"==b.dir1&&b.nextpos1+o.width()>e.width())&&(b.nextpos1=b.firstpos1,b.nextpos2+=b.addpos2+("undefined"==typeof b.spacing2?25:b.spacing2),b.addpos2=0),b.animation&&b.nextpos2<f)switch(b.dir2){case"down":h.top=b.nextpos2+"px";break;case"up":h.bottom=b.nextpos2+"px";break;case"left":h.right=b.nextpos2+"px";break;case"right":h.left=b.nextpos2+"px"}else o.css(i,b.nextpos2+"px");switch(b.dir2){case"down":case"up":o.outerHeight(!0)>b.addpos2&&(b.addpos2=o.height());break;case"left":case"right":o.outerWidth(!0)>b.addpos2&&(b.addpos2=o.width())}if(b.nextpos1)if(b.animation&&(d>b.nextpos1||h.top||h.bottom||h.right||h.left))switch(b.dir1){case"down":h.top=b.nextpos1+"px";break;case"up":h.bottom=b.nextpos1+"px";break;case"left":h.right=b.nextpos1+"px";break;case"right":h.left=b.nextpos1+"px"}else o.css(g,b.nextpos1+"px");switch((h.top||h.bottom||h.right||h.left)&&o.animate(h,{duration:500,queue:!1}),b.dir1){case"down":case"up":b.nextpos1+=o.height()+("undefined"==typeof b.spacing1?25:b.spacing1);break;case"left":case"right":b.nextpos1+=o.width()+("undefined"==typeof b.spacing1?25:b.spacing1)}}}},o.pnotify_queue_position=function(b){c&&clearTimeout(c),b||(b=10),c=setTimeout(a.pnotify_position_all,b)},o.pnotify_display=function(){o.parent().length||o.appendTo(d),i.before_open&&i.before_open(o)===!1||("top"!=i.stack.push&&o.pnotify_position(!0),"fade"==i.animation||"fade"==i.animation.effect_in?o.show().fadeTo(0,0).hide():1!=i.opacity&&o.show().fadeTo(0,i.opacity).hide(),o.animate_in(function(){i.after_open&&i.after_open(o),o.pnotify_queue_position(),i.hide&&o.pnotify_queue_remove()}))},o.pnotify_remove=function(){o.timer&&(window.clearTimeout(o.timer),o.timer=null),i.before_close&&i.before_close(o)===!1||o.animate_out(function(){i.after_close&&i.after_close(o)===!1||(o.pnotify_queue_position(),i.remove&&o.detach())})},o.animate_in=function(a){h="in";var b;b="undefined"!=typeof i.animation.effect_in?i.animation.effect_in:i.animation,"none"==b?(o.show(),a()):"show"==b?o.show(i.animate_speed,a):"fade"==b?o.show().fadeTo(i.animate_speed,i.opacity,a):"slide"==b?o.slideDown(i.animate_speed,a):"function"==typeof b?b("in",a,o):o.show(b,"object"==typeof i.animation.options_in?i.animation.options_in:{},i.animate_speed,a)},o.animate_out=function(a){h="out";var b;b="undefined"!=typeof i.animation.effect_out?i.animation.effect_out:i.animation,"none"==b?(o.hide(),a()):"show"==b?o.hide(i.animate_speed,a):"fade"==b?o.fadeOut(i.animate_speed,a):"slide"==b?o.slideUp(i.animate_speed,a):"function"==typeof b?b("out",a,o):o.hide(b,"object"==typeof i.animation.options_out?i.animation.options_out:{},i.animate_speed,a)},o.pnotify_cancel_remove=function(){o.timer&&window.clearTimeout(o.timer)},o.pnotify_queue_remove=function(){o.pnotify_cancel_remove(),o.timer=window.setTimeout(function(){o.pnotify_remove()},isNaN(i.delay)?0:i.delay)},o.closer=a("<div />",{"class":"ui-pnotify-closer",css:{cursor:"pointer",visibility:i.closer_hover?"hidden":"visible"},click:function(){o.pnotify_remove(),o.sticker.css("visibility","hidden"),o.closer.css("visibility","hidden")}}).append(a("<span />",{"class":n.closer})).appendTo(o.container),(!i.closer||i.nonblock)&&o.closer.css("display","none"),o.sticker=a("<div />",{"class":"ui-pnotify-sticker",css:{cursor:"pointer",visibility:i.sticker_hover?"hidden":"visible"},click:function(){i.hide=!i.hide,i.hide?o.pnotify_queue_remove():o.pnotify_cancel_remove(),a(this).trigger("pnotify_icon")}}).bind("pnotify_icon",function(){a(this).children().removeClass(n.pin_up+" "+n.pin_down).addClass(i.hide?n.pin_up:n.pin_down)}).append(a("<span />",{"class":n.pin_up})).appendTo(o.container),(!i.sticker||i.nonblock)&&o.sticker.css("display","none"),i.icon!==!1&&a("<div />",{"class":"ui-pnotify-icon"}).append(a("<span />",{"class":i.icon===!0?"error"==i.type?n.error_icon:"info"==i.type?n.info_icon:"success"==i.type?n.success_icon:n.notice_icon:i.icon})).prependTo(o.container),o.title_container=a("<h4 />",{"class":"ui-pnotify-title"}).appendTo(o.container),i.title===!1?o.title_container.hide():i.title_escape?o.title_container.text(i.title):o.title_container.html(i.title),o.text_container=a("<div />",{"class":"ui-pnotify-text"}).appendTo(o.container),i.text===!1?o.text_container.hide():i.text_escape?o.text_container.text(i.text):o.text_container.html(i.insert_brs?String(i.text).replace(/\n/g,"<br />"):i.text),"string"==typeof i.width&&o.css("width",i.width),"string"==typeof i.min_height&&o.container.css("min-height",i.min_height),o.pnotify_history=i.history,o.pnotify_hide=i.hide;var p=e.data("pnotify");if((null==p||"object"!=typeof p)&&(p=[]),p="top"==i.stack.push?a.merge([o],p):a.merge(p,[o]),e.data("pnotify",p),"top"==i.stack.push&&o.pnotify_queue_position(1),i.after_init&&i.after_init(o),i.history){var q=e.data("pnotify_history");if("undefined"==typeof q){q=a("<div />",{"class":"ui-pnotify-history-container "+n.hi_menu,mouseleave:function(){q.animate({top:"-"+b+"px"},{duration:100,queue:!1})}}).append(a("<div />",{"class":"ui-pnotify-history-header",text:"Redisplay"})).append(a("<button />",{"class":"ui-pnotify-history-all "+n.hi_btn,text:"All",mouseenter:function(){a(this).addClass(n.hi_btnhov)},mouseleave:function(){a(this).removeClass(n.hi_btnhov)},click:function(){return a.each(p,function(){this.pnotify_history&&(this.is(":visible")?this.pnotify_hide&&this.pnotify_queue_remove():this.pnotify_display&&this.pnotify_display())}),!1}})).append(a("<button />",{"class":"ui-pnotify-history-last "+n.hi_btn,text:"Last",mouseenter:function(){a(this).addClass(n.hi_btnhov)},mouseleave:function(){a(this).removeClass(n.hi_btnhov)},click:function(){var a,b=-1;do{if(a=-1==b?p.slice(b):p.slice(b,b+1),!a[0])break;b--}while(!a[0].pnotify_history||a[0].is(":visible"));return a[0]?(a[0].pnotify_display&&a[0].pnotify_display(),!1):!1}})).appendTo(d);var r=a("<span />",{"class":"ui-pnotify-history-pulldown "+n.hi_hnd,mouseenter:function(){q.animate({top:"0"},{duration:100,queue:!1})}}).appendTo(q);b=r.offset().top+2,q.css({top:"-"+b+"px"}),e.data("pnotify_history",q)}}return i.stack.animation=!1,o.pnotify_display(),o}});var h=/^on/,i=/^(dbl)?click$|^mouse(move|down|up|over|out|enter|leave)$|^contextmenu$/,j=/^(focus|blur|select|change|reset)$|^key(press|down|up)$/,k=/^(scroll|resize|(un)?load|abort|error)$/,l=function(b,c){var d;if(b=b.toLowerCase(),document.createEvent&&this.dispatchEvent){if(b=b.replace(h,""),b.match(i)?(a(this).offset(),d=document.createEvent("MouseEvents"),d.initMouseEvent(b,c.bubbles,c.cancelable,c.view,c.detail,c.screenX,c.screenY,c.clientX,c.clientY,c.ctrlKey,c.altKey,c.shiftKey,c.metaKey,c.button,c.relatedTarget)):b.match(j)?(d=document.createEvent("UIEvents"),d.initUIEvent(b,c.bubbles,c.cancelable,c.view,c.detail)):b.match(k)&&(d=document.createEvent("HTMLEvents"),d.initEvent(b,c.bubbles,c.cancelable)),!d)return;this.dispatchEvent(d)}else b.match(h)||(b="on"+b),d=document.createEventObject(c),this.fireEvent(b,d)};a.pnotify.defaults={title:!1,title_escape:!1,text:!1,text_escape:!1,styling:"bootstrap",addclass:"",cornerclass:"",nonblock:!1,nonblock_opacity:.2,history:!0,width:"300px",min_height:"16px",type:"notice",icon:!0,animation:"fade",animate_speed:"slow",opacity:1,shadow:!0,closer:!0,closer_hover:!0,sticker:!0,sticker_hover:!0,hide:!0,delay:8e3,mouse_reset:!0,remove:!0,insert_brs:!0,stack:{dir1:"down",dir2:"left",push:"bottom",spacing1:25,spacing2:25}}}(jQuery),function(){"use strict";function a(a,b){return Math.abs(a-b)<1e-6
+}var b=function(){function b(b){var d=null,e=[],f=[],g=[],h=angular.extend({},c,b),i=this,j=null;this.center=b.center,this.zoom=h.zoom,this.draggable=h.draggable,this.dragging=!1,this.selector=h.container,this.markers=[],this.options=h.options,this.draw=function(){if(null!=i.center)if(null==d)d=new google.maps.Map(i.selector,angular.extend(i.options,{center:i.center,zoom:i.zoom,draggable:i.draggable,mapTypeId:google.maps.MapTypeId.ROADMAP})),google.maps.event.addListener(d,"dragstart",function(){i.dragging=!0}),google.maps.event.addListener(d,"idle",function(){i.dragging=!1}),google.maps.event.addListener(d,"drag",function(){i.dragging=!0}),google.maps.event.addListener(d,"zoom_changed",function(){i.zoom=d.getZoom(),i.center=d.getCenter()}),google.maps.event.addListener(d,"center_changed",function(){i.center=d.getCenter()}),f.length&&angular.forEach(f,function(a){google.maps.event.addListener(d,a.on,a.handler)});else{google.maps.event.trigger(d,"resize");var b=d.getCenter();a(b.lat(),i.center.lat())&&a(b.lng(),i.center.lng())||d.setCenter(i.center),d.getZoom()!=i.zoom&&d.setZoom(i.zoom)}},this.fit=function(){if(d&&e.length){var a=new google.maps.LatLngBounds;angular.forEach(e,function(b){a.extend(b.getPosition())}),d.fitBounds(a)}},this.on=function(a,b){f.push({on:a,handler:b})},this.addMarker=function(a,b,c,f,g,h,k){if(null==i.findMarker(a,b)){var l=new MarkerWithLabel({position:new google.maps.LatLng(a,b),draggable:!1,raiseOnDrag:!0,map:d,labelContent:g,labelAnchor:new google.maps.Point(25,0),labelClass:"marker-label",labelStyle:{opacity:1}});if(null!=f){var m=new google.maps.InfoWindow({content:f});google.maps.event.addListener(l,"click",function(){null!=j&&j.close(),m.open(d,l),j=m})}return e.unshift(l),i.markers.unshift({lat:a,lng:b,draggable:!1,icon:c,infoWindowContent:f,label:g,url:h,thumbnail:k}),l}},this.findMarker=function(b,c){for(var d=0;d<e.length;d++){var f=e[d].getPosition();if(a(f.lat(),b)&&a(f.lng(),c))return e[d]}return null},this.findMarkerIndex=function(b,c){for(var d=0;d<e.length;d++){var f=e[d].getPosition();if(a(f.lat(),b)&&a(f.lng(),c))return d}return-1},this.addInfoWindow=function(a,b,c){var d=new google.maps.InfoWindow({content:c,position:new google.maps.LatLng(a,b)});return g.push(d),d},this.hasMarker=function(a,b){return null!==i.findMarker(a,b)},this.getMarkerInstances=function(){return e},this.removeMarkers=function(a){var b=this;angular.forEach(a,function(a){var c=a.getPosition(),d=c.lat(),f=c.lng(),g=b.findMarkerIndex(d,f);e.splice(g,1),b.markers.splice(g,1),a.setMap(null)})}}var c={zoom:8,draggable:!1,container:null};return b}(),c=angular.module("google-maps",[]);c.directive("googleMap",["$log","$timeout","$filter",function(c,d){var e=function(a){var b=a.map;self.addInfoWindow=function(a,c,d){b.addInfoWindow(a,c,d)}};return e.$inject=["$scope","$element"],{restrict:"ECA",priority:100,transclude:!0,template:"<div class='angular-google-map' ng-transclude></div>",replace:!1,scope:{center:"=center",markers:"=markers",latitude:"=latitude",longitude:"=longitude",zoom:"=zoom",refresh:"&refresh",windows:"=windows",events:"=events"},controller:e,link:function(e,f,g){if(!angular.isDefined(e.center)||!angular.isDefined(e.center.latitude)||!angular.isDefined(e.center.longitude))return void c.error("angular-google-maps: could not find a valid center property");if(!angular.isDefined(e.zoom))return void c.error("angular-google-maps: map zoom property not set");angular.element(f).addClass("angular-google-map");var h={options:{}};g.options&&(h.options=angular.fromJson(g.options));var i=new b(angular.extend(h,{container:f[0],center:new google.maps.LatLng(e.center.latitude,e.center.longitude),draggable:"true"==g.draggable,zoom:e.zoom}));if(i.on("drag",function(){var a=i.center;d(function(){e.$apply(function(){e.center.latitude=a.lat(),e.center.longitude=a.lng()})})}),i.on("zoom_changed",function(){e.zoom!=i.zoom&&d(function(){e.$apply(function(){e.zoom=i.zoom})})}),i.on("center_changed",function(){var a=i.center;d(function(){e.$apply(function(){i.dragging||(e.center.latitude=a.lat(),e.center.longitude=a.lng())})})}),angular.isDefined(e.events))for(var j in e.events)e.events.hasOwnProperty(j)&&angular.isFunction(e.events[j])&&i.on(j,function(){e.events[j].apply(e,[i,j,arguments])});"true"==g.markClick&&!function(){var a=null;i.on("click",function(b){null==a?(a={latitude:b.latLng.lat(),longitude:b.latLng.lng()},e.markers.push(a)):(a.latitude=b.latLng.lat(),a.longitude=b.latLng.lng()),d(function(){e.latitude=a.latitude,e.longitude=a.longitude,e.$apply()})})}(),e.map=i,angular.isUndefined(e.refresh())?i.draw():e.$watch("refresh()",function(a,b){a&&!b&&i.draw()}),e.$watch("markers",function(b){d(function(){angular.forEach(b,function(a){i.hasMarker(a.latitude,a.longitude)||i.addMarker(a.latitude,a.longitude,a.icon,a.infoWindow,a.label)});var c=[];angular.forEach(i.getMarkerInstances(),function(b){for(var d=b.getPosition(),f=d.lat(),g=d.lng(),h=!1,i=0;i<e.markers.length;i++){var j=e.markers[i];a(j.latitude,f)&&a(j.longitude,g)&&(h=!0)}h||c.push(b)}),c.length&&i.removeMarkers(c),"true"==g.fit&&b&&b.length>1&&i.fit()})},!0),e.$watch("center",function(a,b){a!==b&&(i.dragging||(i.center=new google.maps.LatLng(a.latitude,a.longitude),i.draw()))},!0),e.$watch("zoom",function(a,b){a!==b&&(i.zoom=a,i.draw())})}}}])}(),function(){window.visibly={q:document,p:void 0,prefixes:["webkit","ms","o","moz","khtml"],props:["VisibilityState","visibilitychange","Hidden"],m:["focus","blur"],visibleCallbacks:[],hiddenCallbacks:[],genericCallbacks:[],_callbacks:[],cachedPrefix:"",fn:null,onVisible:function(a){"function"==typeof a&&this.visibleCallbacks.push(a)},onHidden:function(a){"function"==typeof a&&this.hiddenCallbacks.push(a)},getPrefix:function(){if(!this.cachedPrefix)for(var a=0;b=this.prefixes[a++];)if(b+this.props[2]in this.q)return this.cachedPrefix=b,this.cachedPrefix},visibilityState:function(){return this._getProp(0)},hidden:function(){return this._getProp(2)},visibilitychange:function(a){"function"==typeof a&&this.genericCallbacks.push(a);var b=this.genericCallbacks.length;if(b)if(this.cachedPrefix)for(;b--;)this.genericCallbacks[b].call(this,this.visibilityState());else for(;b--;)this.genericCallbacks[b].call(this,arguments[0])},isSupported:function(){return this.cachedPrefix+this.props[2]in this.q},_getProp:function(a){return this.q[this.cachedPrefix+this.props[a]]},_execute:function(a){if(a){this._callbacks=1==a?this.visibleCallbacks:this.hiddenCallbacks;for(var b=this._callbacks.length;b--;)this._callbacks[b]()}},_visible:function(){window.visibly._execute(1),window.visibly.visibilitychange.call(window.visibly,"visible")},_hidden:function(){window.visibly._execute(2),window.visibly.visibilitychange.call(window.visibly,"hidden")},_nativeSwitch:function(){this[this._getProp(2)?"_hidden":"_visible"]()},_listen:function(){try{this.isSupported()?this.q.addEventListener(this.cachedPrefix+this.props[1],function(){window.visibly._nativeSwitch.apply(window.visibly,arguments)},1):this.q.addEventListener?(window.addEventListener(this.m[0],this._visible,1),window.addEventListener(this.m[1],this._hidden,1)):this.q.attachEvent&&(this.q.attachEvent("onfocusin",this._visible),this.q.attachEvent("onfocusout",this._hidden))}catch(a){}},init:function(){this.getPrefix(),this._listen()}},this.visibly.init()}();
\ No newline at end of file
diff --git a/web/demos/package/app/scripts/d63799f1.plugins.js b/web/demos/package/app/scripts/d63799f1.plugins.js
new file mode 100644
index 0000000..52bdd31
--- /dev/null
+++ b/web/demos/package/app/scripts/d63799f1.plugins.js
@@ -0,0 +1,8 @@
+!function(a,b){function c(a){var b=a.length,c=ib.type(a);return ib.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||"function"!==c&&(0===b||"number"==typeof b&&b>0&&b-1 in a)}function d(a){var b=xb[a]={};return ib.each(a.match(kb)||[],function(a,c){b[c]=!0}),b}function e(a,c,d,e){if(ib.acceptData(a)){var f,g,h=ib.expando,i="string"==typeof c,j=a.nodeType,k=j?ib.cache:a,l=j?a[h]:a[h]&&h;if(l&&k[l]&&(e||k[l].data)||!i||d!==b)return l||(j?a[h]=l=_.pop()||ib.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=ib.noop)),("object"==typeof c||"function"==typeof c)&&(e?k[l]=ib.extend(k[l],c):k[l].data=ib.extend(k[l].data,c)),f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[ib.camelCase(c)]=d),i?(g=f[c],null==g&&(g=f[ib.camelCase(c)])):g=f,g}}function f(a,b,c){if(ib.acceptData(a)){var d,e,f,g=a.nodeType,i=g?ib.cache:a,j=g?a[ib.expando]:ib.expando;if(i[j]){if(b&&(f=c?i[j]:i[j].data)){ib.isArray(b)?b=b.concat(ib.map(b,ib.camelCase)):b in f?b=[b]:(b=ib.camelCase(b),b=b in f?[b]:b.split(" "));for(d=0,e=b.length;e>d;d++)delete f[b[d]];if(!(c?h:ib.isEmptyObject)(f))return}(c||(delete i[j].data,h(i[j])))&&(g?ib.cleanData([a],!0):ib.support.deleteExpando||i!=i.window?delete i[j]:i[j]=null)}}}function g(a,c,d){if(d===b&&1===a.nodeType){var e="data-"+c.replace(zb,"-$1").toLowerCase();if(d=a.getAttribute(e),"string"==typeof d){try{d="true"===d?!0:"false"===d?!1:"null"===d?null:+d+""===d?+d:yb.test(d)?ib.parseJSON(d):d}catch(f){}ib.data(a,c,d)}else d=b}return d}function h(a){var b;for(b in a)if(("data"!==b||!ib.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function i(){return!0}function j(){return!1}function k(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}function l(a,b,c){if(b=b||0,ib.isFunction(b))return ib.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return ib.grep(a,function(a){return a===b===c});if("string"==typeof b){var d=ib.grep(a,function(a){return 1===a.nodeType});if(Rb.test(b))return ib.filter(b,d,!c);b=ib.filter(b,d)}return ib.grep(a,function(a){return ib.inArray(a,b)>=0===c})}function m(a){var b=Ub.split("|"),c=a.createDocumentFragment();if(c.createElement)for(;b.length;)c.createElement(b.pop());return c}function n(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function o(a){var b=a.getAttributeNode("type");return a.type=(b&&b.specified)+"/"+a.type,a}function p(a){var b=ec.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function q(a,b){for(var c,d=0;null!=(c=a[d]);d++)ib._data(c,"globalEval",!b||ib._data(b[d],"globalEval"))}function r(a,b){if(1===b.nodeType&&ib.hasData(a)){var c,d,e,f=ib._data(a),g=ib._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)ib.event.add(b,c,h[c][d])}g.data&&(g.data=ib.extend({},g.data))}}function s(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!ib.support.noCloneEvent&&b[ib.expando]){e=ib._data(b);for(d in e.events)ib.removeEvent(b,d,e.handle);b.removeAttribute(ib.expando)}"script"===c&&b.text!==a.text?(o(b).text=a.text,p(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),ib.support.html5Clone&&a.innerHTML&&!ib.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&bc.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}function t(a,c){var d,e,f=0,g=typeof a.getElementsByTagName!==V?a.getElementsByTagName(c||"*"):typeof a.querySelectorAll!==V?a.querySelectorAll(c||"*"):b;if(!g)for(g=[],d=a.childNodes||a;null!=(e=d[f]);f++)!c||ib.nodeName(e,c)?g.push(e):ib.merge(g,t(e,c));return c===b||c&&ib.nodeName(a,c)?ib.merge([a],g):g}function u(a){bc.test(a.type)&&(a.defaultChecked=a.checked)}function v(a,b){if(b in a)return b;for(var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=yc.length;e--;)if(b=yc[e]+c,b in a)return b;return d}function w(a,b){return a=b||a,"none"===ib.css(a,"display")||!ib.contains(a.ownerDocument,a)}function x(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=ib._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&w(d)&&(f[g]=ib._data(d,"olddisplay",B(d.nodeName)))):f[g]||(e=w(d),(c&&"none"!==c||!e)&&ib._data(d,"olddisplay",e?c:ib.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function y(a,b,c){var d=rc.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function z(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=ib.css(a,c+xc[f],!0,e)),d?("content"===c&&(g-=ib.css(a,"padding"+xc[f],!0,e)),"margin"!==c&&(g-=ib.css(a,"border"+xc[f]+"Width",!0,e))):(g+=ib.css(a,"padding"+xc[f],!0,e),"padding"!==c&&(g+=ib.css(a,"border"+xc[f]+"Width",!0,e)));return g}function A(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=kc(a),g=ib.support.boxSizing&&"border-box"===ib.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=lc(a,b,f),(0>e||null==e)&&(e=a.style[b]),sc.test(e))return e;d=g&&(ib.support.boxSizingReliable||e===a.style[b]),e=parseFloat(e)||0}return e+z(a,b,c||(g?"border":"content"),d,f)+"px"}function B(a){var b=W,c=uc[a];return c||(c=C(a,b),"none"!==c&&c||(jc=(jc||ib("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(b.documentElement),b=(jc[0].contentWindow||jc[0].contentDocument).document,b.write("<!doctype html><html><body>"),b.close(),c=C(a,b),jc.detach()),uc[a]=c),c}function C(a,b){var c=ib(b.createElement(a)).appendTo(b.body),d=ib.css(c[0],"display");return c.remove(),d}function D(a,b,c,d){var e;if(ib.isArray(b))ib.each(b,function(b,e){c||Ac.test(a)?d(a,e):D(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==ib.type(b))d(a,b);else for(e in b)D(a+"["+e+"]",b[e],c,d)}function E(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(kb)||[];if(ib.isFunction(c))for(;d=f[e++];)"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function F(a,b,c,d){function e(h){var i;return f[h]=!0,ib.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||g||f[j]?g?!(i=j):void 0:(b.dataTypes.unshift(j),e(j),!1)}),i}var f={},g=a===Rc;return e(b.dataTypes[0])||!f["*"]&&e("*")}function G(a,c){var d,e,f=ib.ajaxSettings.flatOptions||{};for(e in c)c[e]!==b&&((f[e]?a:d||(d={}))[e]=c[e]);return d&&ib.extend(!0,a,d),a}function H(a,c,d){var e,f,g,h,i=a.contents,j=a.dataTypes,k=a.responseFields;for(h in k)h in d&&(c[k[h]]=d[h]);for(;"*"===j[0];)j.shift(),f===b&&(f=a.mimeType||c.getResponseHeader("Content-Type"));if(f)for(h in i)if(i[h]&&i[h].test(f)){j.unshift(h);break}if(j[0]in d)g=j[0];else{for(h in d){if(!j[0]||a.converters[h+" "+j[0]]){g=h;break}e||(e=h)}g=g||e}return g?(g!==j[0]&&j.unshift(g),d[g]):void 0}function I(a,b){var c,d,e,f,g={},h=0,i=a.dataTypes.slice(),j=i[0];if(a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i[1])for(e in a.converters)g[e.toLowerCase()]=a.converters[e];for(;d=i[++h];)if("*"!==d){if("*"!==j&&j!==d){if(e=g[j+" "+d]||g["* "+d],!e)for(c in g)if(f=c.split(" "),f[1]===d&&(e=g[j+" "+f[0]]||g["* "+f[0]])){e===!0?e=g[c]:g[c]!==!0&&(d=f[0],i.splice(h--,0,d));break}if(e!==!0)if(e&&a["throws"])b=e(b);else try{b=e(b)}catch(k){return{state:"parsererror",error:e?k:"No conversion from "+j+" to "+d}}}j=d}return{state:"success",data:b}}function J(){try{return new a.XMLHttpRequest}catch(b){}}function K(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function L(){return setTimeout(function(){$c=b}),$c=ib.now()}function M(a,b){ib.each(b,function(b,c){for(var d=(ed[b]||[]).concat(ed["*"]),e=0,f=d.length;f>e;e++)if(d[e].call(a,b,c))return})}function N(a,b,c){var d,e,f=0,g=dd.length,h=ib.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$c||L(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:ib.extend({},b),opts:ib.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$c||L(),duration:c.duration,tweens:[],createTween:function(b,c){var d=ib.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(O(k,j.opts.specialEasing);g>f;f++)if(d=dd[f].call(j,a,k,j.opts))return d;return M(j,k),ib.isFunction(j.opts.start)&&j.opts.start.call(a,j),ib.fx.timer(ib.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function O(a,b){var c,d,e,f,g;for(e in a)if(d=ib.camelCase(e),f=b[d],c=a[e],ib.isArray(c)&&(f=c[1],c=a[e]=c[0]),e!==d&&(a[d]=c,delete a[e]),g=ib.cssHooks[d],g&&"expand"in g){c=g.expand(c),delete a[d];for(e in c)e in a||(a[e]=c[e],b[e]=f)}else b[d]=f}function P(a,b,c){var d,e,f,g,h,i,j,k,l,m=this,n=a.style,o={},p=[],q=a.nodeType&&w(a);c.queue||(k=ib._queueHooks(a,"fx"),null==k.unqueued&&(k.unqueued=0,l=k.empty.fire,k.empty.fire=function(){k.unqueued||l()}),k.unqueued++,m.always(function(){m.always(function(){k.unqueued--,ib.queue(a,"fx").length||k.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[n.overflow,n.overflowX,n.overflowY],"inline"===ib.css(a,"display")&&"none"===ib.css(a,"float")&&(ib.support.inlineBlockNeedsLayout&&"inline"!==B(a.nodeName)?n.zoom=1:n.display="inline-block")),c.overflow&&(n.overflow="hidden",ib.support.shrinkWrapBlocks||m.always(function(){n.overflow=c.overflow[0],n.overflowX=c.overflow[1],n.overflowY=c.overflow[2]}));for(e in b)if(g=b[e],ad.exec(g)){if(delete b[e],i=i||"toggle"===g,g===(q?"hide":"show"))continue;p.push(e)}if(f=p.length){h=ib._data(a,"fxshow")||ib._data(a,"fxshow",{}),"hidden"in h&&(q=h.hidden),i&&(h.hidden=!q),q?ib(a).show():m.done(function(){ib(a).hide()}),m.done(function(){var b;ib._removeData(a,"fxshow");for(b in o)ib.style(a,b,o[b])});for(e=0;f>e;e++)d=p[e],j=m.createTween(d,q?h[d]:0),o[d]=h[d]||ib.style(a,d),d in h||(h[d]=j.start,q&&(j.end=j.start,j.start="width"===d||"height"===d?1:0))}}function Q(a,b,c,d,e){return new Q.prototype.init(a,b,c,d,e)}function R(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=xc[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function S(a){return ib.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}var T,U,V=typeof b,W=a.document,X=a.location,Y=a.jQuery,Z=a.$,$={},_=[],ab="1.9.1",bb=_.concat,cb=_.push,db=_.slice,eb=_.indexOf,fb=$.toString,gb=$.hasOwnProperty,hb=ab.trim,ib=function(a,b){return new ib.fn.init(a,b,U)},jb=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,kb=/\S+/g,lb=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,mb=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,nb=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,ob=/^[\],:{}\s]*$/,pb=/(?:^|:|,)(?:\s*\[)+/g,qb=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,rb=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,sb=/^-ms-/,tb=/-([\da-z])/gi,ub=function(a,b){return b.toUpperCase()},vb=function(a){(W.addEventListener||"load"===a.type||"complete"===W.readyState)&&(wb(),ib.ready())},wb=function(){W.addEventListener?(W.removeEventListener("DOMContentLoaded",vb,!1),a.removeEventListener("load",vb,!1)):(W.detachEvent("onreadystatechange",vb),a.detachEvent("onload",vb))};ib.fn=ib.prototype={jquery:ab,constructor:ib,init:function(a,c,d){var e,f;if(!a)return this;if("string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:mb.exec(a),!e||!e[1]&&c)return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a);if(e[1]){if(c=c instanceof ib?c[0]:c,ib.merge(this,ib.parseHTML(e[1],c&&c.nodeType?c.ownerDocument||c:W,!0)),nb.test(e[1])&&ib.isPlainObject(c))for(e in c)ib.isFunction(this[e])?this[e](c[e]):this.attr(e,c[e]);return this}if(f=W.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return d.find(a);this.length=1,this[0]=f}return this.context=W,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):ib.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),ib.makeArray(a,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return db.call(this)},get:function(a){return null==a?this.toArray():0>a?this[this.length+a]:this[a]},pushStack:function(a){var b=ib.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return ib.each(this,a,b)},ready:function(a){return ib.ready.promise().done(a),this},slice:function(){return this.pushStack(db.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},map:function(a){return this.pushStack(ib.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:cb,sort:[].sort,splice:[].splice},ib.fn.init.prototype=ib.fn,ib.extend=ib.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[1]||{},i=2),"object"==typeof h||ib.isFunction(h)||(h={}),j===i&&(h=this,--i);j>i;i++)if(null!=(f=arguments[i]))for(e in f)a=h[e],d=f[e],h!==d&&(k&&d&&(ib.isPlainObject(d)||(c=ib.isArray(d)))?(c?(c=!1,g=a&&ib.isArray(a)?a:[]):g=a&&ib.isPlainObject(a)?a:{},h[e]=ib.extend(k,g,d)):d!==b&&(h[e]=d));return h},ib.extend({noConflict:function(b){return a.$===ib&&(a.$=Z),b&&a.jQuery===ib&&(a.jQuery=Y),ib},isReady:!1,readyWait:1,holdReady:function(a){a?ib.readyWait++:ib.ready(!0)},ready:function(a){if(a===!0?!--ib.readyWait:!ib.isReady){if(!W.body)return setTimeout(ib.ready);ib.isReady=!0,a!==!0&&--ib.readyWait>0||(T.resolveWith(W,[ib]),ib.fn.trigger&&ib(W).trigger("ready").off("ready"))}},isFunction:function(a){return"function"===ib.type(a)},isArray:Array.isArray||function(a){return"array"===ib.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return null==a?String(a):"object"==typeof a||"function"==typeof a?$[fb.call(a)]||"object":typeof a},isPlainObject:function(a){if(!a||"object"!==ib.type(a)||a.nodeType||ib.isWindow(a))return!1;try{if(a.constructor&&!gb.call(a,"constructor")&&!gb.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||gb.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||W;var d=nb.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=ib.buildFragment([a],b,e),e&&ib(e).remove(),ib.merge([],d.childNodes))},parseJSON:function(b){return a.JSON&&a.JSON.parse?a.JSON.parse(b):null===b?b:"string"==typeof b&&(b=ib.trim(b),b&&ob.test(b.replace(qb,"@").replace(rb,"]").replace(pb,"")))?new Function("return "+b)():void ib.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||"string"!=typeof c)return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return d&&d.documentElement&&!d.getElementsByTagName("parsererror").length||ib.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&ib.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(sb,"ms-").replace(tb,ub)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,d){var e,f=0,g=a.length,h=c(a);if(d){if(h)for(;g>f&&(e=b.apply(a[f],d),e!==!1);f++);else for(f in a)if(e=b.apply(a[f],d),e===!1)break}else if(h)for(;g>f&&(e=b.call(a[f],f,a[f]),e!==!1);f++);else for(f in a)if(e=b.call(a[f],f,a[f]),e===!1)break;return a},trim:hb&&!hb.call(" ")?function(a){return null==a?"":hb.call(a)}:function(a){return null==a?"":(a+"").replace(lb,"")},makeArray:function(a,b){var d=b||[];return null!=a&&(c(Object(a))?ib.merge(d,"string"==typeof a?[a]:a):cb.call(d,a)),d},inArray:function(a,b,c){var d;if(b){if(eb)return eb.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=c.length,e=a.length,f=0;if("number"==typeof d)for(;d>f;f++)a[e++]=c[f];else for(;c[f]!==b;)a[e++]=c[f++];return a.length=e,a},grep:function(a,b,c){var d,e=[],f=0,g=a.length;for(c=!!c;g>f;f++)d=!!b(a[f],f),c!==d&&e.push(a[f]);return e},map:function(a,b,d){var e,f=0,g=a.length,h=c(a),i=[];if(h)for(;g>f;f++)e=b(a[f],f,d),null!=e&&(i[i.length]=e);else for(f in a)e=b(a[f],f,d),null!=e&&(i[i.length]=e);return bb.apply([],i)},guid:1,proxy:function(a,c){var d,e,f;return"string"==typeof c&&(f=a[c],c=a,a=f),ib.isFunction(a)?(d=db.call(arguments,2),e=function(){return a.apply(c||this,d.concat(db.call(arguments)))},e.guid=a.guid=a.guid||ib.guid++,e):b},access:function(a,c,d,e,f,g,h){var i=0,j=a.length,k=null==d;if("object"===ib.type(d)){f=!0;for(i in d)ib.access(a,c,i,d[i],!0,g,h)}else if(e!==b&&(f=!0,ib.isFunction(e)||(h=!0),k&&(h?(c.call(a,e),c=null):(k=c,c=function(a,b,c){return k.call(ib(a),c)})),c))for(;j>i;i++)c(a[i],d,h?e:e.call(a[i],i,c(a[i],d)));return f?a:k?c.call(a):j?c(a[0],d):g},now:function(){return(new Date).getTime()}}),ib.ready.promise=function(b){if(!T)if(T=ib.Deferred(),"complete"===W.readyState)setTimeout(ib.ready);else if(W.addEventListener)W.addEventListener("DOMContentLoaded",vb,!1),a.addEventListener("load",vb,!1);else{W.attachEvent("onreadystatechange",vb),a.attachEvent("onload",vb);var c=!1;try{c=null==a.frameElement&&W.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!ib.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}wb(),ib.ready()}}()}return T.promise(b)},ib.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){$["[object "+b+"]"]=b.toLowerCase()}),U=ib(W);var xb={};ib.Callbacks=function(a){a="string"==typeof a?xb[a]||d(a):ib.extend({},a);var c,e,f,g,h,i,j=[],k=!a.once&&[],l=function(b){for(e=a.memory&&b,f=!0,h=i||0,i=0,g=j.length,c=!0;j&&g>h;h++)if(j[h].apply(b[0],b[1])===!1&&a.stopOnFalse){e=!1;break}c=!1,j&&(k?k.length&&l(k.shift()):e?j=[]:m.disable())},m={add:function(){if(j){var b=j.length;!function d(b){ib.each(b,function(b,c){var e=ib.type(c);"function"===e?a.unique&&m.has(c)||j.push(c):c&&c.length&&"string"!==e&&d(c)})}(arguments),c?g=j.length:e&&(i=b,l(e))}return this},remove:function(){return j&&ib.each(arguments,function(a,b){for(var d;(d=ib.inArray(b,j,d))>-1;)j.splice(d,1),c&&(g>=d&&g--,h>=d&&h--)}),this},has:function(a){return a?ib.inArray(a,j)>-1:!(!j||!j.length)},empty:function(){return j=[],this},disable:function(){return j=k=e=b,this},disabled:function(){return!j},lock:function(){return k=b,e||m.disable(),this},locked:function(){return!k},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],!j||f&&!k||(c?k.push(b):l(b)),this},fire:function(){return m.fireWith(this,arguments),this},fired:function(){return!!f}};return m},ib.extend({Deferred:function(a){var b=[["resolve","done",ib.Callbacks("once memory"),"resolved"],["reject","fail",ib.Callbacks("once memory"),"rejected"],["notify","progress",ib.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return ib.Deferred(function(c){ib.each(b,function(b,f){var g=f[0],h=ib.isFunction(a[b])&&a[b];e[f[1]](function(){var a=h&&h.apply(this,arguments);a&&ib.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[g+"With"](this===d?c.promise():this,h?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?ib.extend(a,d):d}},e={};return d.pipe=d.then,ib.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b,c,d,e=0,f=db.call(arguments),g=f.length,h=1!==g||a&&ib.isFunction(a.promise)?g:0,i=1===h?a:ib.Deferred(),j=function(a,c,d){return function(e){c[a]=this,d[a]=arguments.length>1?db.call(arguments):e,d===b?i.notifyWith(c,d):--h||i.resolveWith(c,d)}};if(g>1)for(b=new Array(g),c=new Array(g),d=new Array(g);g>e;e++)f[e]&&ib.isFunction(f[e].promise)?f[e].promise().done(j(e,d,f)).fail(i.reject).progress(j(e,c,b)):--h;return h||i.resolveWith(d,f),i.promise()}}),ib.support=function(){var b,c,d,e,f,g,h,i,j,k,l=W.createElement("div");if(l.setAttribute("className","t"),l.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",c=l.getElementsByTagName("*"),d=l.getElementsByTagName("a")[0],!c||!d||!c.length)return{};f=W.createElement("select"),h=f.appendChild(W.createElement("option")),e=l.getElementsByTagName("input")[0],d.style.cssText="top:1px;float:left;opacity:.5",b={getSetAttribute:"t"!==l.className,leadingWhitespace:3===l.firstChild.nodeType,tbody:!l.getElementsByTagName("tbody").length,htmlSerialize:!!l.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:"/a"===d.getAttribute("href"),opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:!!e.value,optSelected:h.selected,enctype:!!W.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==W.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===W.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},e.checked=!0,b.noCloneChecked=e.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!h.disabled;try{delete l.test}catch(m){b.deleteExpando=!1}e=W.createElement("input"),e.setAttribute("value",""),b.input=""===e.getAttribute("value"),e.value="t",e.setAttribute("type","radio"),b.radioValue="t"===e.value,e.setAttribute("checked","t"),e.setAttribute("name","t"),g=W.createDocumentFragment(),g.appendChild(e),b.appendChecked=e.checked,b.checkClone=g.cloneNode(!0).cloneNode(!0).lastChild.checked,l.attachEvent&&(l.attachEvent("onclick",function(){b.noCloneEvent=!1}),l.cloneNode(!0).click());for(k in{submit:!0,change:!0,focusin:!0})l.setAttribute(i="on"+k,"t"),b[k+"Bubbles"]=i in a||l.attributes[i].expando===!1;return l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",b.clearCloneStyle="content-box"===l.style.backgroundClip,ib(function(){var c,d,e,f="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",g=W.getElementsByTagName("body")[0];g&&(c=W.createElement("div"),c.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",g.appendChild(c).appendChild(l),l.innerHTML="<table><tr><td></td><td>t</td></tr></table>",e=l.getElementsByTagName("td"),e[0].style.cssText="padding:0;margin:0;border:0;display:none",j=0===e[0].offsetHeight,e[0].style.display="",e[1].style.display="none",b.reliableHiddenOffsets=j&&0===e[0].offsetHeight,l.innerHTML="",l.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=4===l.offsetWidth,b.doesNotIncludeMarginInBodyOffset=1!==g.offsetTop,a.getComputedStyle&&(b.pixelPosition="1%"!==(a.getComputedStyle(l,null)||{}).top,b.boxSizingReliable="4px"===(a.getComputedStyle(l,null)||{width:"4px"}).width,d=l.appendChild(W.createElement("div")),d.style.cssText=l.style.cssText=f,d.style.marginRight=d.style.width="0",l.style.width="1px",b.reliableMarginRight=!parseFloat((a.getComputedStyle(d,null)||{}).marginRight)),typeof l.style.zoom!==V&&(l.innerHTML="",l.style.cssText=f+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=3===l.offsetWidth,l.style.display="block",l.innerHTML="<div></div>",l.firstChild.style.width="5px",b.shrinkWrapBlocks=3!==l.offsetWidth,b.inlineBlockNeedsLayout&&(g.style.zoom=1)),g.removeChild(c),c=l=e=d=null)}),c=f=g=h=d=e=null,b}();var yb=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,zb=/([A-Z])/g;ib.extend({cache:{},expando:"jQuery"+(ab+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?ib.cache[a[ib.expando]]:a[ib.expando],!!a&&!h(a)},data:function(a,b,c){return e(a,b,c)},removeData:function(a,b){return f(a,b)},_data:function(a,b,c){return e(a,b,c,!0)},_removeData:function(a,b){return f(a,b,!0)},acceptData:function(a){if(a.nodeType&&1!==a.nodeType&&9!==a.nodeType)return!1;var b=a.nodeName&&ib.noData[a.nodeName.toLowerCase()];return!b||b!==!0&&a.getAttribute("classid")===b}}),ib.fn.extend({data:function(a,c){var d,e,f=this[0],h=0,i=null;if(a===b){if(this.length&&(i=ib.data(f),1===f.nodeType&&!ib._data(f,"parsedAttrs"))){for(d=f.attributes;h<d.length;h++)e=d[h].name,e.indexOf("data-")||(e=ib.camelCase(e.slice(5)),g(f,e,i[e]));ib._data(f,"parsedAttrs",!0)}return i}return"object"==typeof a?this.each(function(){ib.data(this,a)}):ib.access(this,function(c){return c===b?f?g(f,a,ib.data(f,a)):null:void this.each(function(){ib.data(this,a,c)})},null,c,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){ib.removeData(this,a)})}}),ib.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=ib._data(a,b),c&&(!d||ib.isArray(c)?d=ib._data(a,b,ib.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=ib.queue(a,b),d=c.length,e=c.shift(),f=ib._queueHooks(a,b),g=function(){ib.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),f.cur=e,e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return ib._data(a,c)||ib._data(a,c,{empty:ib.Callbacks("once memory").add(function(){ib._removeData(a,b+"queue"),ib._removeData(a,c)})})}}),ib.fn.extend({queue:function(a,c){var d=2;return"string"!=typeof a&&(c=a,a="fx",d--),arguments.length<d?ib.queue(this[0],a):c===b?this:this.each(function(){var b=ib.queue(this,a,c);ib._queueHooks(this,a),"fx"===a&&"inprogress"!==b[0]&&ib.dequeue(this,a)})},dequeue:function(a){return this.each(function(){ib.dequeue(this,a)})},delay:function(a,b){return a=ib.fx?ib.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){var d,e=1,f=ib.Deferred(),g=this,h=this.length,i=function(){--e||f.resolveWith(g,[g])};for("string"!=typeof a&&(c=a,a=b),a=a||"fx";h--;)d=ib._data(g[h],a+"queueHooks"),d&&d.empty&&(e++,d.empty.add(i));return i(),f.promise(c)}});var Ab,Bb,Cb=/[\t\r\n]/g,Db=/\r/g,Eb=/^(?:input|select|textarea|button|object)$/i,Fb=/^(?:a|area)$/i,Gb=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,Hb=/^(?:checked|selected)$/i,Ib=ib.support.getSetAttribute,Jb=ib.support.input;ib.fn.extend({attr:function(a,b){return ib.access(this,ib.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){ib.removeAttr(this,a)})},prop:function(a,b){return ib.access(this,ib.prop,a,b,arguments.length>1)},removeProp:function(a){return a=ib.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g=0,h=this.length,i="string"==typeof a&&a;if(ib.isFunction(a))return this.each(function(b){ib(this).addClass(a.call(this,b,this.className))});if(i)for(b=(a||"").match(kb)||[];h>g;g++)if(c=this[g],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(Cb," "):" ")){for(f=0;e=b[f++];)d.indexOf(" "+e+" ")<0&&(d+=e+" ");c.className=ib.trim(d)}return this},removeClass:function(a){var b,c,d,e,f,g=0,h=this.length,i=0===arguments.length||"string"==typeof a&&a;if(ib.isFunction(a))return this.each(function(b){ib(this).removeClass(a.call(this,b,this.className))});if(i)for(b=(a||"").match(kb)||[];h>g;g++)if(c=this[g],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(Cb," "):"")){for(f=0;e=b[f++];)for(;d.indexOf(" "+e+" ")>=0;)d=d.replace(" "+e+" "," ");c.className=a?ib.trim(d):""}return this},toggleClass:function(a,b){var c=typeof a,d="boolean"==typeof b;return this.each(ib.isFunction(a)?function(c){ib(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c)for(var e,f=0,g=ib(this),h=b,i=a.match(kb)||[];e=i[f++];)h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e);else(c===V||"boolean"===c)&&(this.className&&ib._data(this,"__className__",this.className),this.className=this.className||a===!1?"":ib._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(Cb," ").indexOf(b)>=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];{if(arguments.length)return e=ib.isFunction(a),this.each(function(c){var f,g=ib(this);1===this.nodeType&&(f=e?a.call(this,c,g.val()):a,null==f?f="":"number"==typeof f?f+="":ib.isArray(f)&&(f=ib.map(f,function(a){return null==a?"":a+""})),d=ib.valHooks[this.type]||ib.valHooks[this.nodeName.toLowerCase()],d&&"set"in d&&d.set(this,f,"value")!==b||(this.value=f))});if(f)return d=ib.valHooks[f.type]||ib.valHooks[f.nodeName.toLowerCase()],d&&"get"in d&&(c=d.get(f,"value"))!==b?c:(c=f.value,"string"==typeof c?c.replace(Db,""):null==c?"":c)}}}),ib.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(ib.support.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&ib.nodeName(c.parentNode,"optgroup"))){if(b=ib(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c=ib.makeArray(b);return ib(a).find("option").each(function(){this.selected=ib.inArray(ib(this).val(),c)>=0}),c.length||(a.selectedIndex=-1),c}}},attr:function(a,c,d){var e,f,g,h=a.nodeType;if(a&&3!==h&&8!==h&&2!==h)return typeof a.getAttribute===V?ib.prop(a,c,d):(f=1!==h||!ib.isXMLDoc(a),f&&(c=c.toLowerCase(),e=ib.attrHooks[c]||(Gb.test(c)?Bb:Ab)),d===b?e&&f&&"get"in e&&null!==(g=e.get(a,c))?g:(typeof a.getAttribute!==V&&(g=a.getAttribute(c)),null==g?b:g):null!==d?e&&f&&"set"in e&&(g=e.set(a,d,c))!==b?g:(a.setAttribute(c,d+""),d):void ib.removeAttr(a,c))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(kb);if(f&&1===a.nodeType)for(;c=f[e++];)d=ib.propFix[c]||c,Gb.test(c)?!Ib&&Hb.test(c)?a[ib.camelCase("default-"+c)]=a[d]=!1:a[d]=!1:ib.attr(a,c,""),a.removeAttribute(Ib?c:d)},attrHooks:{type:{set:function(a,b){if(!ib.support.radioValue&&"radio"===b&&ib.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,f,g,h=a.nodeType;if(a&&3!==h&&8!==h&&2!==h)return g=1!==h||!ib.isXMLDoc(a),g&&(c=ib.propFix[c]||c,f=ib.propHooks[c]),d!==b?f&&"set"in f&&(e=f.set(a,d,c))!==b?e:a[c]=d:f&&"get"in f&&null!==(e=f.get(a,c))?e:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):Eb.test(a.nodeName)||Fb.test(a.nodeName)&&a.href?0:b}}}}),Bb={get:function(a,c){var d=ib.prop(a,c),e="boolean"==typeof d&&a.getAttribute(c),f="boolean"==typeof d?Jb&&Ib?null!=e:Hb.test(c)?a[ib.camelCase("default-"+c)]:!!e:a.getAttributeNode(c);return f&&f.value!==!1?c.toLowerCase():b
+},set:function(a,b,c){return b===!1?ib.removeAttr(a,c):Jb&&Ib||!Hb.test(c)?a.setAttribute(!Ib&&ib.propFix[c]||c,c):a[ib.camelCase("default-"+c)]=a[c]=!0,c}},Jb&&Ib||(ib.attrHooks.value={get:function(a,c){var d=a.getAttributeNode(c);return ib.nodeName(a,"input")?a.defaultValue:d&&d.specified?d.value:b},set:function(a,b,c){return ib.nodeName(a,"input")?void(a.defaultValue=b):Ab&&Ab.set(a,b,c)}}),Ib||(Ab=ib.valHooks.button={get:function(a,c){var d=a.getAttributeNode(c);return d&&("id"===c||"name"===c||"coords"===c?""!==d.value:d.specified)?d.value:b},set:function(a,c,d){var e=a.getAttributeNode(d);return e||a.setAttributeNode(e=a.ownerDocument.createAttribute(d)),e.value=c+="","value"===d||c===a.getAttribute(d)?c:b}},ib.attrHooks.contenteditable={get:Ab.get,set:function(a,b,c){Ab.set(a,""===b?!1:b,c)}},ib.each(["width","height"],function(a,b){ib.attrHooks[b]=ib.extend(ib.attrHooks[b],{set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}})})),ib.support.hrefNormalized||(ib.each(["href","src","width","height"],function(a,c){ib.attrHooks[c]=ib.extend(ib.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return null==d?b:d}})}),ib.each(["href","src"],function(a,b){ib.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}})),ib.support.style||(ib.attrHooks.style={get:function(a){return a.style.cssText||b},set:function(a,b){return a.style.cssText=b+""}}),ib.support.optSelected||(ib.propHooks.selected=ib.extend(ib.propHooks.selected,{get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}})),ib.support.enctype||(ib.propFix.enctype="encoding"),ib.support.checkOn||ib.each(["radio","checkbox"],function(){ib.valHooks[this]={get:function(a){return null===a.getAttribute("value")?"on":a.value}}}),ib.each(["radio","checkbox"],function(){ib.valHooks[this]=ib.extend(ib.valHooks[this],{set:function(a,b){return ib.isArray(b)?a.checked=ib.inArray(ib(a).val(),b)>=0:void 0}})});var Kb=/^(?:input|select|textarea)$/i,Lb=/^key/,Mb=/^(?:mouse|contextmenu)|click/,Nb=/^(?:focusinfocus|focusoutblur)$/,Ob=/^([^.]*)(?:\.(.+)|)$/;ib.event={global:{},add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,p,q,r=ib._data(a);if(r){for(d.handler&&(j=d,d=j.handler,f=j.selector),d.guid||(d.guid=ib.guid++),(h=r.events)||(h=r.events={}),(l=r.handle)||(l=r.handle=function(a){return typeof ib===V||a&&ib.event.triggered===a.type?b:ib.event.dispatch.apply(l.elem,arguments)},l.elem=a),c=(c||"").match(kb)||[""],i=c.length;i--;)g=Ob.exec(c[i])||[],o=q=g[1],p=(g[2]||"").split(".").sort(),k=ib.event.special[o]||{},o=(f?k.delegateType:k.bindType)||o,k=ib.event.special[o]||{},m=ib.extend({type:o,origType:q,data:e,handler:d,guid:d.guid,selector:f,needsContext:f&&ib.expr.match.needsContext.test(f),namespace:p.join(".")},j),(n=h[o])||(n=h[o]=[],n.delegateCount=0,k.setup&&k.setup.call(a,e,p,l)!==!1||(a.addEventListener?a.addEventListener(o,l,!1):a.attachEvent&&a.attachEvent("on"+o,l))),k.add&&(k.add.call(a,m),m.handler.guid||(m.handler.guid=d.guid)),f?n.splice(n.delegateCount++,0,m):n.push(m),ib.event.global[o]=!0;a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=ib.hasData(a)&&ib._data(a);if(q&&(k=q.events)){for(b=(b||"").match(kb)||[""],j=b.length;j--;)if(h=Ob.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){for(l=ib.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=k[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;f--;)g=m[f],!e&&p!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||ib.removeEvent(a,n,q.handle),delete k[n])}else for(n in k)ib.event.remove(a,n+b[j],c,d,!0);ib.isEmptyObject(k)&&(delete q.handle,ib._removeData(a,"events"))}},trigger:function(c,d,e,f){var g,h,i,j,k,l,m,n=[e||W],o=gb.call(c,"type")?c.type:c,p=gb.call(c,"namespace")?c.namespace.split("."):[];if(i=l=e=e||W,3!==e.nodeType&&8!==e.nodeType&&!Nb.test(o+ib.event.triggered)&&(o.indexOf(".")>=0&&(p=o.split("."),o=p.shift(),p.sort()),h=o.indexOf(":")<0&&"on"+o,c=c[ib.expando]?c:new ib.Event(o,"object"==typeof c&&c),c.isTrigger=!0,c.namespace=p.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,c.result=b,c.target||(c.target=e),d=null==d?[c]:ib.makeArray(d,[c]),k=ib.event.special[o]||{},f||!k.trigger||k.trigger.apply(e,d)!==!1)){if(!f&&!k.noBubble&&!ib.isWindow(e)){for(j=k.delegateType||o,Nb.test(j+o)||(i=i.parentNode);i;i=i.parentNode)n.push(i),l=i;l===(e.ownerDocument||W)&&n.push(l.defaultView||l.parentWindow||a)}for(m=0;(i=n[m++])&&!c.isPropagationStopped();)c.type=m>1?j:k.bindType||o,g=(ib._data(i,"events")||{})[c.type]&&ib._data(i,"handle"),g&&g.apply(i,d),g=h&&i[h],g&&ib.acceptData(i)&&g.apply&&g.apply(i,d)===!1&&c.preventDefault();if(c.type=o,!(f||c.isDefaultPrevented()||k._default&&k._default.apply(e.ownerDocument,d)!==!1||"click"===o&&ib.nodeName(e,"a")||!ib.acceptData(e)||!h||!e[o]||ib.isWindow(e))){l=e[h],l&&(e[h]=null),ib.event.triggered=o;try{e[o]()}catch(q){}ib.event.triggered=b,l&&(e[h]=l)}return c.result}},dispatch:function(a){a=ib.event.fix(a);var c,d,e,f,g,h=[],i=db.call(arguments),j=(ib._data(this,"events")||{})[a.type]||[],k=ib.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){for(h=ib.event.handlers.call(this,a,j),c=0;(f=h[c++])&&!a.isPropagationStopped();)for(a.currentTarget=f.elem,g=0;(e=f.handlers[g++])&&!a.isImmediatePropagationStopped();)(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,d=((ib.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),d!==b&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()));return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,c){var d,e,f,g,h=[],i=c.delegateCount,j=a.target;if(i&&j.nodeType&&(!a.button||"click"!==a.type))for(;j!=this;j=j.parentNode||this)if(1===j.nodeType&&(j.disabled!==!0||"click"!==a.type)){for(f=[],g=0;i>g;g++)e=c[g],d=e.selector+" ",f[d]===b&&(f[d]=e.needsContext?ib(d,this).index(j)>=0:ib.find(d,this,null,[j]).length),f[d]&&f.push(e);f.length&&h.push({elem:j,handlers:f})}return i<c.length&&h.push({elem:this,handlers:c.slice(i)}),h},fix:function(a){if(a[ib.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];for(g||(this.fixHooks[e]=g=Mb.test(e)?this.mouseHooks:Lb.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new ib.Event(f),b=d.length;b--;)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||W),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,c){var d,e,f,g=c.button,h=c.fromElement;return null==a.pageX&&null!=c.clientX&&(e=a.target.ownerDocument||W,f=e.documentElement,d=e.body,a.pageX=c.clientX+(f&&f.scrollLeft||d&&d.scrollLeft||0)-(f&&f.clientLeft||d&&d.clientLeft||0),a.pageY=c.clientY+(f&&f.scrollTop||d&&d.scrollTop||0)-(f&&f.clientTop||d&&d.clientTop||0)),!a.relatedTarget&&h&&(a.relatedTarget=h===a.target?c.toElement:h),a.which||g===b||(a.which=1&g?1:2&g?3:4&g?2:0),a}},special:{load:{noBubble:!0},click:{trigger:function(){return ib.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0}},focus:{trigger:function(){if(this!==W.activeElement&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===W.activeElement&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},beforeunload:{postDispatch:function(a){a.result!==b&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=ib.extend(new ib.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?ib.event.trigger(e,null,b):ib.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},ib.removeEvent=W.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===V&&(a[d]=null),a.detachEvent(d,c))},ib.Event=function(a,b){return this instanceof ib.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?i:j):this.type=a,b&&ib.extend(this,b),this.timeStamp=a&&a.timeStamp||ib.now(),void(this[ib.expando]=!0)):new ib.Event(a,b)},ib.Event.prototype={isDefaultPrevented:j,isPropagationStopped:j,isImmediatePropagationStopped:j,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=i,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=i,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i,this.stopPropagation()}},ib.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){ib.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!ib.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),ib.support.submitBubbles||(ib.event.special.submit={setup:function(){return ib.nodeName(this,"form")?!1:void ib.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=ib.nodeName(c,"input")||ib.nodeName(c,"button")?c.form:b;d&&!ib._data(d,"submitBubbles")&&(ib.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),ib._data(d,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&ib.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return ib.nodeName(this,"form")?!1:void ib.event.remove(this,"._submit")}}),ib.support.changeBubbles||(ib.event.special.change={setup:function(){return Kb.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(ib.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),ib.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),ib.event.simulate("change",this,a,!0)})),!1):void ib.event.add(this,"beforeactivate._change",function(a){var b=a.target;Kb.test(b.nodeName)&&!ib._data(b,"changeBubbles")&&(ib.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||ib.event.simulate("change",this.parentNode,a,!0)}),ib._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return ib.event.remove(this,"._change"),!Kb.test(this.nodeName)}}),ib.support.focusinBubbles||ib.each({focus:"focusin",blur:"focusout"},function(a,b){var c=0,d=function(a){ib.event.simulate(b,a.target,ib.event.fix(a),!0)};ib.event.special[b]={setup:function(){0===c++&&W.addEventListener(a,d,!0)},teardown:function(){0===--c&&W.removeEventListener(a,d,!0)}}}),ib.fn.extend({on:function(a,c,d,e,f){var g,h;if("object"==typeof a){"string"!=typeof c&&(d=d||c,c=b);for(g in a)this.on(g,c,d,a[g],f);return this}if(null==d&&null==e?(e=c,d=c=b):null==e&&("string"==typeof c?(e=d,d=b):(e=d,d=c,c=b)),e===!1)e=j;else if(!e)return this;return 1===f&&(h=e,e=function(a){return ib().off(a),h.apply(this,arguments)},e.guid=h.guid||(h.guid=ib.guid++)),this.each(function(){ib.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){var e,f;if(a&&a.preventDefault&&a.handleObj)return e=a.handleObj,ib(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler),this;if("object"==typeof a){for(f in a)this.off(f,c,a[f]);return this}return(c===!1||"function"==typeof c)&&(d=c,c=b),d===!1&&(d=j),this.each(function(){ib.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)},trigger:function(a,b){return this.each(function(){ib.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?ib.event.trigger(a,b,c,!0):void 0}}),function(a,b){function c(a){return ob.test(a+"")}function d(){var a,b=[];return a=function(c,d){return b.push(c+=" ")>y.cacheLength&&delete a[b.shift()],a[c]=d}}function e(a){return a[N]=!0,a}function f(a){var b=F.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}}function g(a,b,c,d){var e,f,g,h,i,j,k,n,o,p;if((b?b.ownerDocument||b:O)!==F&&E(b),b=b||F,c=c||[],!a||"string"!=typeof a)return c;if(1!==(h=b.nodeType)&&9!==h)return[];if(!H&&!d){if(e=pb.exec(a))if(g=e[1]){if(9===h){if(f=b.getElementById(g),!f||!f.parentNode)return c;if(f.id===g)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(g))&&L(b,f)&&f.id===g)return c.push(f),c}else{if(e[2])return Z.apply(c,$.call(b.getElementsByTagName(a),0)),c;if((g=e[3])&&P.getByClassName&&b.getElementsByClassName)return Z.apply(c,$.call(b.getElementsByClassName(g),0)),c}if(P.qsa&&!I.test(a)){if(k=!0,n=N,o=b,p=9===h&&a,1===h&&"object"!==b.nodeName.toLowerCase()){for(j=l(a),(k=b.getAttribute("id"))?n=k.replace(sb,"\\$&"):b.setAttribute("id",n),n="[id='"+n+"'] ",i=j.length;i--;)j[i]=n+m(j[i]);o=nb.test(a)&&b.parentNode||b,p=j.join(",")}if(p)try{return Z.apply(c,$.call(o.querySelectorAll(p),0)),c}catch(q){}finally{k||b.removeAttribute("id")}}}return u(a.replace(gb,"$1"),b,c,d)}function h(a,b){var c=b&&a,d=c&&(~b.sourceIndex||W)-(~a.sourceIndex||W);if(d)return d;if(c)for(;c=c.nextSibling;)if(c===b)return-1;return a?1:-1}function i(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function j(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function k(a){return e(function(b){return b=+b,e(function(c,d){for(var e,f=a([],c.length,b),g=f.length;g--;)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function l(a,b){var c,d,e,f,h,i,j,k=T[a+" "];if(k)return b?0:k.slice(0);for(h=a,i=[],j=y.preFilter;h;){(!c||(d=hb.exec(h)))&&(d&&(h=h.slice(d[0].length)||h),i.push(e=[])),c=!1,(d=jb.exec(h))&&(c=d.shift(),e.push({value:c,type:d[0].replace(gb," ")}),h=h.slice(c.length));for(f in y.filter)!(d=mb[f].exec(h))||j[f]&&!(d=j[f](d))||(c=d.shift(),e.push({value:c,type:f,matches:d}),h=h.slice(c.length));if(!c)break}return b?h.length:h?g.error(a):T(a,i).slice(0)}function m(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function n(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=R++;return b.first?function(b,c,f){for(;b=b[d];)if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=Q+" "+f;if(g){for(;b=b[d];)if((1===b.nodeType||e)&&a(b,c,g))return!0}else for(;b=b[d];)if(1===b.nodeType||e)if(j=b[N]||(b[N]={}),(i=j[d])&&i[0]===k){if((h=i[1])===!0||h===x)return h===!0}else if(i=j[d]=[k],i[1]=a(b,c,g)||x,i[1]===!0)return!0}}function o(a){return a.length>1?function(b,c,d){for(var e=a.length;e--;)if(!a[e](b,c,d))return!1;return!0}:a[0]}function p(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function q(a,b,c,d,f,g){return d&&!d[N]&&(d=q(d)),f&&!f[N]&&(f=q(f,g)),e(function(e,g,h,i){var j,k,l,m=[],n=[],o=g.length,q=e||t(b||"*",h.nodeType?[h]:h,[]),r=!a||!e&&b?q:p(q,m,a,h,i),s=c?f||(e?a:o||d)?[]:g:r;if(c&&c(r,s,h,i),d)for(j=p(s,n),d(j,[],h,i),k=j.length;k--;)(l=j[k])&&(s[n[k]]=!(r[n[k]]=l));if(e){if(f||a){if(f){for(j=[],k=s.length;k--;)(l=s[k])&&j.push(r[k]=l);f(null,s=[],j,i)}for(k=s.length;k--;)(l=s[k])&&(j=f?_.call(e,l):m[k])>-1&&(e[j]=!(g[j]=l))}}else s=p(s===g?s.splice(o,s.length):s),f?f(null,g,s,i):Z.apply(g,s)})}function r(a){for(var b,c,d,e=a.length,f=y.relative[a[0].type],g=f||y.relative[" "],h=f?1:0,i=n(function(a){return a===b},g,!0),j=n(function(a){return _.call(b,a)>-1},g,!0),k=[function(a,c,d){return!f&&(d||c!==D)||((b=c).nodeType?i(a,c,d):j(a,c,d))}];e>h;h++)if(c=y.relative[a[h].type])k=[n(o(k),c)];else{if(c=y.filter[a[h].type].apply(null,a[h].matches),c[N]){for(d=++h;e>d&&!y.relative[a[d].type];d++);return q(h>1&&o(k),h>1&&m(a.slice(0,h-1)).replace(gb,"$1"),c,d>h&&r(a.slice(h,d)),e>d&&r(a=a.slice(d)),e>d&&m(a))}k.push(c)}return o(k)}function s(a,b){var c=0,d=b.length>0,f=a.length>0,h=function(e,h,i,j,k){var l,m,n,o=[],q=0,r="0",s=e&&[],t=null!=k,u=D,v=e||f&&y.find.TAG("*",k&&h.parentNode||h),w=Q+=null==u?1:Math.random()||.1;for(t&&(D=h!==F&&h,x=c);null!=(l=v[r]);r++){if(f&&l){for(m=0;n=a[m++];)if(n(l,h,i)){j.push(l);break}t&&(Q=w,x=++c)}d&&((l=!n&&l)&&q--,e&&s.push(l))}if(q+=r,d&&r!==q){for(m=0;n=b[m++];)n(s,o,h,i);if(e){if(q>0)for(;r--;)s[r]||o[r]||(o[r]=Y.call(j));o=p(o)}Z.apply(j,o),t&&!e&&o.length>0&&q+b.length>1&&g.uniqueSort(j)}return t&&(Q=w,D=u),s};return d?e(h):h}function t(a,b,c){for(var d=0,e=b.length;e>d;d++)g(a,b[d],c);return c}function u(a,b,c,d){var e,f,g,h,i,j=l(a);if(!d&&1===j.length){if(f=j[0]=j[0].slice(0),f.length>2&&"ID"===(g=f[0]).type&&9===b.nodeType&&!H&&y.relative[f[1].type]){if(b=y.find.ID(g.matches[0].replace(ub,vb),b)[0],!b)return c;a=a.slice(f.shift().value.length)}for(e=mb.needsContext.test(a)?0:f.length;e--&&(g=f[e],!y.relative[h=g.type]);)if((i=y.find[h])&&(d=i(g.matches[0].replace(ub,vb),nb.test(f[0].type)&&b.parentNode||b))){if(f.splice(e,1),a=d.length&&m(f),!a)return Z.apply(c,$.call(d,0)),c;break}}return B(a,j)(d,b,H,c,nb.test(a)),c}function v(){}var w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N="sizzle"+-new Date,O=a.document,P={},Q=0,R=0,S=d(),T=d(),U=d(),V=typeof b,W=1<<31,X=[],Y=X.pop,Z=X.push,$=X.slice,_=X.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},ab="[\\x20\\t\\r\\n\\f]",bb="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",cb=bb.replace("w","w#"),db="([*^$|!~]?=)",eb="\\["+ab+"*("+bb+")"+ab+"*(?:"+db+ab+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+cb+")|)|)"+ab+"*\\]",fb=":("+bb+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+eb.replace(3,8)+")*)|.*)\\)|)",gb=new RegExp("^"+ab+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ab+"+$","g"),hb=new RegExp("^"+ab+"*,"+ab+"*"),jb=new RegExp("^"+ab+"*([\\x20\\t\\r\\n\\f>+~])"+ab+"*"),kb=new RegExp(fb),lb=new RegExp("^"+cb+"$"),mb={ID:new RegExp("^#("+bb+")"),CLASS:new RegExp("^\\.("+bb+")"),NAME:new RegExp("^\\[name=['\"]?("+bb+")['\"]?\\]"),TAG:new RegExp("^("+bb.replace("w","w*")+")"),ATTR:new RegExp("^"+eb),PSEUDO:new RegExp("^"+fb),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ab+"*(even|odd|(([+-]|)(\\d*)n|)"+ab+"*(?:([+-]|)"+ab+"*(\\d+)|))"+ab+"*\\)|)","i"),needsContext:new RegExp("^"+ab+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ab+"*((?:-\\d)?\\d*)"+ab+"*\\)|)(?=[^-]|$)","i")},nb=/[\x20\t\r\n\f]*[+~]/,ob=/^[^{]+\{\s*\[native code/,pb=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,qb=/^(?:input|select|textarea|button)$/i,rb=/^h\d$/i,sb=/'|\\/g,tb=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,ub=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,vb=function(a,b){var c="0x"+b-65536;return c!==c?b:0>c?String.fromCharCode(c+65536):String.fromCharCode(c>>10|55296,1023&c|56320)};try{$.call(O.documentElement.childNodes,0)[0].nodeType}catch(wb){$=function(a){for(var b,c=[];b=this[a++];)c.push(b);return c}}A=g.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},E=g.setDocument=function(a){var d=a?a.ownerDocument||a:O;return d!==F&&9===d.nodeType&&d.documentElement?(F=d,G=d.documentElement,H=A(d),P.tagNameNoComments=f(function(a){return a.appendChild(d.createComment("")),!a.getElementsByTagName("*").length}),P.attributes=f(function(a){a.innerHTML="<select></select>";var b=typeof a.lastChild.getAttribute("multiple");return"boolean"!==b&&"string"!==b}),P.getByClassName=f(function(a){return a.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",a.getElementsByClassName&&a.getElementsByClassName("e").length?(a.lastChild.className="e",2===a.getElementsByClassName("e").length):!1}),P.getByName=f(function(a){a.id=N+0,a.innerHTML="<a name='"+N+"'></a><div name='"+N+"'></div>",G.insertBefore(a,G.firstChild);var b=d.getElementsByName&&d.getElementsByName(N).length===2+d.getElementsByName(N+0).length;return P.getIdNotName=!d.getElementById(N),G.removeChild(a),b}),y.attrHandle=f(function(a){return a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!==V&&"#"===a.firstChild.getAttribute("href")})?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},P.getIdNotName?(y.find.ID=function(a,b){if(typeof b.getElementById!==V&&!H){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},y.filter.ID=function(a){var b=a.replace(ub,vb);return function(a){return a.getAttribute("id")===b}}):(y.find.ID=function(a,c){if(typeof c.getElementById!==V&&!H){var d=c.getElementById(a);return d?d.id===a||typeof d.getAttributeNode!==V&&d.getAttributeNode("id").value===a?[d]:b:[]}},y.filter.ID=function(a){var b=a.replace(ub,vb);return function(a){var c=typeof a.getAttributeNode!==V&&a.getAttributeNode("id");return c&&c.value===b}}),y.find.TAG=P.tagNameNoComments?function(a,b){return typeof b.getElementsByTagName!==V?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){for(;c=f[e++];)1===c.nodeType&&d.push(c);return d}return f},y.find.NAME=P.getByName&&function(a,b){return typeof b.getElementsByName!==V?b.getElementsByName(name):void 0},y.find.CLASS=P.getByClassName&&function(a,b){return typeof b.getElementsByClassName===V||H?void 0:b.getElementsByClassName(a)},J=[],I=[":focus"],(P.qsa=c(d.querySelectorAll))&&(f(function(a){a.innerHTML="<select><option selected=''></option></select>",a.querySelectorAll("[selected]").length||I.push("\\["+ab+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||I.push(":checked")}),f(function(a){a.innerHTML="<input type='hidden' i=''/>",a.querySelectorAll("[i^='']").length&&I.push("[*^$]="+ab+"*(?:\"\"|'')"),a.querySelectorAll(":enabled").length||I.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),I.push(",.*:")})),(P.matchesSelector=c(K=G.matchesSelector||G.mozMatchesSelector||G.webkitMatchesSelector||G.oMatchesSelector||G.msMatchesSelector))&&f(function(a){P.disconnectedMatch=K.call(a,"div"),K.call(a,"[s!='']:x"),J.push("!=",fb)}),I=new RegExp(I.join("|")),J=new RegExp(J.join("|")),L=c(G.contains)||G.compareDocumentPosition?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1},M=G.compareDocumentPosition?function(a,b){var c;return a===b?(C=!0,0):(c=b.compareDocumentPosition&&a.compareDocumentPosition&&a.compareDocumentPosition(b))?1&c||a.parentNode&&11===a.parentNode.nodeType?a===d||L(O,a)?-1:b===d||L(O,b)?1:0:4&c?-1:1:a.compareDocumentPosition?-1:1}:function(a,b){var c,e=0,f=a.parentNode,g=b.parentNode,i=[a],j=[b];if(a===b)return C=!0,0;if(!f||!g)return a===d?-1:b===d?1:f?-1:g?1:0;if(f===g)return h(a,b);for(c=a;c=c.parentNode;)i.unshift(c);for(c=b;c=c.parentNode;)j.unshift(c);for(;i[e]===j[e];)e++;return e?h(i[e],j[e]):i[e]===O?-1:j[e]===O?1:0},C=!1,[0,0].sort(M),P.detectDuplicates=C,F):F},g.matches=function(a,b){return g(a,null,null,b)},g.matchesSelector=function(a,b){if((a.ownerDocument||a)!==F&&E(a),b=b.replace(tb,"='$1']"),!(!P.matchesSelector||H||J&&J.test(b)||I.test(b)))try{var c=K.call(a,b);if(c||P.disconnectedMatch||a.document&&11!==a.document.nodeType)return c}catch(d){}return g(b,F,null,[a]).length>0},g.contains=function(a,b){return(a.ownerDocument||a)!==F&&E(a),L(a,b)},g.attr=function(a,b){var c;return(a.ownerDocument||a)!==F&&E(a),H||(b=b.toLowerCase()),(c=y.attrHandle[b])?c(a):H||P.attributes?a.getAttribute(b):((c=a.getAttributeNode(b))||a.getAttribute(b))&&a[b]===!0?b:c&&c.specified?c.value:null},g.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},g.uniqueSort=function(a){var b,c=[],d=1,e=0;if(C=!P.detectDuplicates,a.sort(M),C){for(;b=a[d];d++)b===a[d-1]&&(e=c.push(d));for(;e--;)a.splice(c[e],1)}return a},z=g.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(1===e||9===e||11===e){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=z(a)}else if(3===e||4===e)return a.nodeValue}else for(;b=a[d];d++)c+=z(b);return c},y=g.selectors={cacheLength:50,createPseudo:e,match:mb,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ub,vb),a[3]=(a[4]||a[5]||"").replace(ub,vb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||g.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&g.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return mb.CHILD.test(a[0])?null:(a[4]?a[2]=a[4]:c&&kb.test(c)&&(b=l(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){return"*"===a?function(){return!0}:(a=a.replace(ub,vb).toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=S[a+" "];return b||(b=new RegExp("(^|"+ab+")"+a+"("+ab+"|$)"))&&S(a,function(a){return b.test(a.className||typeof a.getAttribute!==V&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=g.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){for(;p;){for(l=b;l=l[p];)if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){for(k=q[N]||(q[N]={}),j=k[a]||[],n=j[0]===Q&&j[1],m=j[0]===Q&&j[2],l=n&&q.childNodes[n];l=++n&&l&&l[p]||(m=n=0)||o.pop();)if(1===l.nodeType&&++m&&l===b){k[a]=[Q,n,m];break}}else if(s&&(j=(b[N]||(b[N]={}))[a])&&j[0]===Q)m=j[1];else for(;(l=++n&&l&&l[p]||(m=n=0)||o.pop())&&((h?l.nodeName.toLowerCase()!==r:1!==l.nodeType)||!++m||(s&&((l[N]||(l[N]={}))[a]=[Q,m]),l!==b)););return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,d=y.pseudos[a]||y.setFilters[a.toLowerCase()]||g.error("unsupported pseudo: "+a);return d[N]?d(b):d.length>1?(c=[a,a,"",b],y.setFilters.hasOwnProperty(a.toLowerCase())?e(function(a,c){for(var e,f=d(a,b),g=f.length;g--;)e=_.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:e(function(a){var b=[],c=[],d=B(a.replace(gb,"$1"));return d[N]?e(function(a,b,c,e){for(var f,g=d(a,null,e,[]),h=a.length;h--;)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:e(function(a){return function(b){return g(a,b).length>0}}),contains:e(function(a){return function(b){return(b.textContent||b.innerText||z(b)).indexOf(a)>-1}}),lang:e(function(a){return lb.test(a||"")||g.error("unsupported lang: "+a),a=a.replace(ub,vb).toLowerCase(),function(b){var c;do if(c=H?b.getAttribute("xml:lang")||b.getAttribute("lang"):b.lang)return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===G},focus:function(a){return a===F.activeElement&&(!F.hasFocus||F.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeName>"@"||3===a.nodeType||4===a.nodeType)return!1;return!0},parent:function(a){return!y.pseudos.empty(a)},header:function(a){return rb.test(a.nodeName)},input:function(a){return qb.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||b.toLowerCase()===a.type)},first:k(function(){return[0]}),last:k(function(a,b){return[b-1]}),eq:k(function(a,b,c){return[0>c?c+b:c]}),even:k(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:k(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:k(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:k(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}};for(w in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})y.pseudos[w]=i(w);for(w in{submit:!0,reset:!0})y.pseudos[w]=j(w);B=g.compile=function(a,b){var c,d=[],e=[],f=U[a+" "];if(!f){for(b||(b=l(a)),c=b.length;c--;)f=r(b[c]),f[N]?d.push(f):e.push(f);f=U(a,s(e,d))}return f},y.pseudos.nth=y.pseudos.eq,y.filters=v.prototype=y.pseudos,y.setFilters=new v,E(),g.attr=ib.attr,ib.find=g,ib.expr=g.selectors,ib.expr[":"]=ib.expr.pseudos,ib.unique=g.uniqueSort,ib.text=g.getText,ib.isXMLDoc=g.isXML,ib.contains=g.contains}(a);var Pb=/Until$/,Qb=/^(?:parents|prev(?:Until|All))/,Rb=/^.[^:#\[\.,]*$/,Sb=ib.expr.match.needsContext,Tb={children:!0,contents:!0,next:!0,prev:!0};ib.fn.extend({find:function(a){var b,c,d,e=this.length;if("string"!=typeof a)return d=this,this.pushStack(ib(a).filter(function(){for(b=0;e>b;b++)if(ib.contains(d[b],this))return!0}));for(c=[],b=0;e>b;b++)ib.find(a,this[b],c);return c=this.pushStack(e>1?ib.unique(c):c),c.selector=(this.selector?this.selector+" ":"")+a,c},has:function(a){var b,c=ib(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(ib.contains(this,c[b]))return!0})},not:function(a){return this.pushStack(l(this,a,!1))},filter:function(a){return this.pushStack(l(this,a,!0))},is:function(a){return!!a&&("string"==typeof a?Sb.test(a)?ib(a,this.context).index(this[0])>=0:ib.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=Sb.test(a)||"string"!=typeof a?ib(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c.ownerDocument&&c!==b&&11!==c.nodeType;){if(g?g.index(c)>-1:ib.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}return this.pushStack(f.length>1?ib.unique(f):f)},index:function(a){return a?"string"==typeof a?ib.inArray(this[0],ib(a)):ib.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){var c="string"==typeof a?ib(a,b):ib.makeArray(a&&a.nodeType?[a]:a),d=ib.merge(this.get(),c);return this.pushStack(ib.unique(d))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}}),ib.fn.andSelf=ib.fn.addBack,ib.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return ib.dir(a,"parentNode")},parentsUntil:function(a,b,c){return ib.dir(a,"parentNode",c)},next:function(a){return k(a,"nextSibling")
+},prev:function(a){return k(a,"previousSibling")},nextAll:function(a){return ib.dir(a,"nextSibling")},prevAll:function(a){return ib.dir(a,"previousSibling")},nextUntil:function(a,b,c){return ib.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return ib.dir(a,"previousSibling",c)},siblings:function(a){return ib.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return ib.sibling(a.firstChild)},contents:function(a){return ib.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:ib.merge([],a.childNodes)}},function(a,b){ib.fn[a]=function(c,d){var e=ib.map(this,b,c);return Pb.test(a)||(d=c),d&&"string"==typeof d&&(e=ib.filter(d,e)),e=this.length>1&&!Tb[a]?ib.unique(e):e,this.length>1&&Qb.test(a)&&(e=e.reverse()),this.pushStack(e)}}),ib.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),1===b.length?ib.find.matchesSelector(b[0],a)?[b[0]]:[]:ib.find.matches(a,b)},dir:function(a,c,d){for(var e=[],f=a[c];f&&9!==f.nodeType&&(d===b||1!==f.nodeType||!ib(f).is(d));)1===f.nodeType&&e.push(f),f=f[c];return e},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}});var Ub="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",Vb=/ jQuery\d+="(?:null|\d+)"/g,Wb=new RegExp("<(?:"+Ub+")[\\s/>]","i"),Xb=/^\s+/,Yb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Zb=/<([\w:]+)/,$b=/<tbody/i,_b=/<|&#?\w+;/,ac=/<(?:script|style|link)/i,bc=/^(?:checkbox|radio)$/i,cc=/checked\s*(?:[^=]|=\s*.checked.)/i,dc=/^$|\/(?:java|ecma)script/i,ec=/^true\/(.*)/,fc=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,gc={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:ib.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},hc=m(W),ic=hc.appendChild(W.createElement("div"));gc.optgroup=gc.option,gc.tbody=gc.tfoot=gc.colgroup=gc.caption=gc.thead,gc.th=gc.td,ib.fn.extend({text:function(a){return ib.access(this,function(a){return a===b?ib.text(this):this.empty().append((this[0]&&this[0].ownerDocument||W).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(ib.isFunction(a))return this.each(function(b){ib(this).wrapAll(a.call(this,b))});if(this[0]){var b=ib(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){for(var a=this;a.firstChild&&1===a.firstChild.nodeType;)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(ib.isFunction(a)?function(b){ib(this).wrapInner(a.call(this,b))}:function(){var b=ib(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=ib.isFunction(a);return this.each(function(c){ib(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){ib.nodeName(this,"body")||ib(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(a,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,!1,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=0;null!=(c=this[d]);d++)(!a||ib.filter(a,[c]).length>0)&&(b||1!==c.nodeType||ib.cleanData(t(c)),c.parentNode&&(b&&ib.contains(c.ownerDocument,c)&&q(t(c,"script")),c.parentNode.removeChild(c)));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){for(1===a.nodeType&&ib.cleanData(t(a,!1));a.firstChild;)a.removeChild(a.firstChild);a.options&&ib.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return ib.clone(this,a,b)})},html:function(a){return ib.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return 1===c.nodeType?c.innerHTML.replace(Vb,""):b;if(!("string"!=typeof a||ac.test(a)||!ib.support.htmlSerialize&&Wb.test(a)||!ib.support.leadingWhitespace&&Xb.test(a)||gc[(Zb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(Yb,"<$1></$2>");try{for(;e>d;d++)c=this[d]||{},1===c.nodeType&&(ib.cleanData(t(c,!1)),c.innerHTML=a);c=0}catch(f){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){var b=ib.isFunction(a);return b||"string"==typeof a||(a=ib(a).not(this).detach()),this.domManip([a],!0,function(a){var b=this.nextSibling,c=this.parentNode;c&&(ib(this).remove(),c.insertBefore(a,b))})},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){a=bb.apply([],a);var e,f,g,h,i,j,k=0,l=this.length,m=this,q=l-1,r=a[0],s=ib.isFunction(r);if(s||!(1>=l||"string"!=typeof r||ib.support.checkClone)&&cc.test(r))return this.each(function(e){var f=m.eq(e);s&&(a[0]=r.call(this,e,c?f.html():b)),f.domManip(a,c,d)});if(l&&(j=ib.buildFragment(a,this[0].ownerDocument,!1,this),e=j.firstChild,1===j.childNodes.length&&(j=e),e)){for(c=c&&ib.nodeName(e,"tr"),h=ib.map(t(j,"script"),o),g=h.length;l>k;k++)f=j,k!==q&&(f=ib.clone(f,!0,!0),g&&ib.merge(h,t(f,"script"))),d.call(c&&ib.nodeName(this[k],"table")?n(this[k],"tbody"):this[k],f,k);if(g)for(i=h[h.length-1].ownerDocument,ib.map(h,p),k=0;g>k;k++)f=h[k],dc.test(f.type||"")&&!ib._data(f,"globalEval")&&ib.contains(i,f)&&(f.src?ib.ajax({url:f.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):ib.globalEval((f.text||f.textContent||f.innerHTML||"").replace(fc,"")));j=e=null}return this}}),ib.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){ib.fn[a]=function(a){for(var c,d=0,e=[],f=ib(a),g=f.length-1;g>=d;d++)c=d===g?this:this.clone(!0),ib(f[d])[b](c),cb.apply(e,c.get());return this.pushStack(e)}}),ib.extend({clone:function(a,b,c){var d,e,f,g,h,i=ib.contains(a.ownerDocument,a);if(ib.support.html5Clone||ib.isXMLDoc(a)||!Wb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ic.innerHTML=a.outerHTML,ic.removeChild(f=ic.firstChild)),!(ib.support.noCloneEvent&&ib.support.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||ib.isXMLDoc(a)))for(d=t(f),h=t(a),g=0;null!=(e=h[g]);++g)d[g]&&s(e,d[g]);if(b)if(c)for(h=h||t(a),d=d||t(f),g=0;null!=(e=h[g]);g++)r(e,d[g]);else r(a,f);return d=t(f,"script"),d.length>0&&q(d,!i&&t(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,l=a.length,n=m(b),o=[],p=0;l>p;p++)if(f=a[p],f||0===f)if("object"===ib.type(f))ib.merge(o,f.nodeType?[f]:f);else if(_b.test(f)){for(h=h||n.appendChild(b.createElement("div")),i=(Zb.exec(f)||["",""])[1].toLowerCase(),k=gc[i]||gc._default,h.innerHTML=k[1]+f.replace(Yb,"<$1></$2>")+k[2],e=k[0];e--;)h=h.lastChild;if(!ib.support.leadingWhitespace&&Xb.test(f)&&o.push(b.createTextNode(Xb.exec(f)[0])),!ib.support.tbody)for(f="table"!==i||$b.test(f)?"<table>"!==k[1]||$b.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;e--;)ib.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j);for(ib.merge(o,h.childNodes),h.textContent="";h.firstChild;)h.removeChild(h.firstChild);h=n.lastChild}else o.push(b.createTextNode(f));for(h&&n.removeChild(h),ib.support.appendChecked||ib.grep(t(o,"input"),u),p=0;f=o[p++];)if((!d||-1===ib.inArray(f,d))&&(g=ib.contains(f.ownerDocument,f),h=t(n.appendChild(f),"script"),g&&q(h),c))for(e=0;f=h[e++];)dc.test(f.type||"")&&c.push(f);return h=null,n},cleanData:function(a,b){for(var c,d,e,f,g=0,h=ib.expando,i=ib.cache,j=ib.support.deleteExpando,k=ib.event.special;null!=(c=a[g]);g++)if((b||ib.acceptData(c))&&(e=c[h],f=e&&i[e])){if(f.events)for(d in f.events)k[d]?ib.event.remove(c,d):ib.removeEvent(c,d,f.handle);i[e]&&(delete i[e],j?delete c[h]:typeof c.removeAttribute!==V?c.removeAttribute(h):c[h]=null,_.push(e))}}});var jc,kc,lc,mc=/alpha\([^)]*\)/i,nc=/opacity\s*=\s*([^)]*)/,oc=/^(top|right|bottom|left)$/,pc=/^(none|table(?!-c[ea]).+)/,qc=/^margin/,rc=new RegExp("^("+jb+")(.*)$","i"),sc=new RegExp("^("+jb+")(?!px)[a-z%]+$","i"),tc=new RegExp("^([+-])=("+jb+")","i"),uc={BODY:"block"},vc={position:"absolute",visibility:"hidden",display:"block"},wc={letterSpacing:0,fontWeight:400},xc=["Top","Right","Bottom","Left"],yc=["Webkit","O","Moz","ms"];ib.fn.extend({css:function(a,c){return ib.access(this,function(a,c,d){var e,f,g={},h=0;if(ib.isArray(c)){for(f=kc(a),e=c.length;e>h;h++)g[c[h]]=ib.css(a,c[h],!1,f);return g}return d!==b?ib.style(a,c,d):ib.css(a,c)},a,c,arguments.length>1)},show:function(){return x(this,!0)},hide:function(){return x(this)},toggle:function(a){var b="boolean"==typeof a;return this.each(function(){(b?a:w(this))?ib(this).show():ib(this).hide()})}}),ib.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=lc(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":ib.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var f,g,h,i=ib.camelCase(c),j=a.style;if(c=ib.cssProps[i]||(ib.cssProps[i]=v(j,i)),h=ib.cssHooks[c]||ib.cssHooks[i],d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];if(g=typeof d,"string"===g&&(f=tc.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(ib.css(a,c)),g="number"),!(null==d||"number"===g&&isNaN(d)||("number"!==g||ib.cssNumber[i]||(d+="px"),ib.support.clearCloneStyle||""!==d||0!==c.indexOf("background")||(j[c]="inherit"),h&&"set"in h&&(d=h.set(a,d,e))===b)))try{j[c]=d}catch(k){}}},css:function(a,c,d,e){var f,g,h,i=ib.camelCase(c);return c=ib.cssProps[i]||(ib.cssProps[i]=v(a.style,i)),h=ib.cssHooks[c]||ib.cssHooks[i],h&&"get"in h&&(g=h.get(a,!0,d)),g===b&&(g=lc(a,c,e)),"normal"===g&&c in wc&&(g=wc[c]),""===d||d?(f=parseFloat(g),d===!0||ib.isNumeric(f)?f||0:g):g},swap:function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e}}),a.getComputedStyle?(kc=function(b){return a.getComputedStyle(b,null)},lc=function(a,c,d){var e,f,g,h=d||kc(a),i=h?h.getPropertyValue(c)||h[c]:b,j=a.style;return h&&(""!==i||ib.contains(a.ownerDocument,a)||(i=ib.style(a,c)),sc.test(i)&&qc.test(c)&&(e=j.width,f=j.minWidth,g=j.maxWidth,j.minWidth=j.maxWidth=j.width=i,i=h.width,j.width=e,j.minWidth=f,j.maxWidth=g)),i}):W.documentElement.currentStyle&&(kc=function(a){return a.currentStyle},lc=function(a,c,d){var e,f,g,h=d||kc(a),i=h?h[c]:b,j=a.style;return null==i&&j&&j[c]&&(i=j[c]),sc.test(i)&&!oc.test(c)&&(e=j.left,f=a.runtimeStyle,g=f&&f.left,g&&(f.left=a.currentStyle.left),j.left="fontSize"===c?"1em":i,i=j.pixelLeft+"px",j.left=e,g&&(f.left=g)),""===i?"auto":i}),ib.each(["height","width"],function(a,b){ib.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&pc.test(ib.css(a,"display"))?ib.swap(a,vc,function(){return A(a,b,d)}):A(a,b,d):void 0},set:function(a,c,d){var e=d&&kc(a);return y(a,c,d?z(a,b,d,ib.support.boxSizing&&"border-box"===ib.css(a,"boxSizing",!1,e),e):0)}}}),ib.support.opacity||(ib.cssHooks.opacity={get:function(a,b){return nc.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=ib.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===ib.trim(f.replace(mc,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=mc.test(f)?f.replace(mc,e):f+" "+e)}}),ib(function(){ib.support.reliableMarginRight||(ib.cssHooks.marginRight={get:function(a,b){return b?ib.swap(a,{display:"inline-block"},lc,[a,"marginRight"]):void 0}}),!ib.support.pixelPosition&&ib.fn.position&&ib.each(["top","left"],function(a,b){ib.cssHooks[b]={get:function(a,c){return c?(c=lc(a,b),sc.test(c)?ib(a).position()[b]+"px":c):void 0}}})}),ib.expr&&ib.expr.filters&&(ib.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!ib.support.reliableHiddenOffsets&&"none"===(a.style&&a.style.display||ib.css(a,"display"))},ib.expr.filters.visible=function(a){return!ib.expr.filters.hidden(a)}),ib.each({margin:"",padding:"",border:"Width"},function(a,b){ib.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+xc[d]+b]=f[d]||f[d-2]||f[0];return e}},qc.test(a)||(ib.cssHooks[a+b].set=y)});var zc=/%20/g,Ac=/\[\]$/,Bc=/\r?\n/g,Cc=/^(?:submit|button|image|reset|file)$/i,Dc=/^(?:input|select|textarea|keygen)/i;ib.fn.extend({serialize:function(){return ib.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=ib.prop(this,"elements");return a?ib.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!ib(this).is(":disabled")&&Dc.test(this.nodeName)&&!Cc.test(a)&&(this.checked||!bc.test(a))}).map(function(a,b){var c=ib(this).val();return null==c?null:ib.isArray(c)?ib.map(c,function(a){return{name:b.name,value:a.replace(Bc,"\r\n")}}):{name:b.name,value:c.replace(Bc,"\r\n")}}).get()}}),ib.param=function(a,c){var d,e=[],f=function(a,b){b=ib.isFunction(b)?b():null==b?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(c===b&&(c=ib.ajaxSettings&&ib.ajaxSettings.traditional),ib.isArray(a)||a.jquery&&!ib.isPlainObject(a))ib.each(a,function(){f(this.name,this.value)});else for(d in a)D(d,a[d],c,f);return e.join("&").replace(zc,"+")},ib.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){ib.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),ib.fn.hover=function(a,b){return this.mouseenter(a).mouseleave(b||a)};var Ec,Fc,Gc=ib.now(),Hc=/\?/,Ic=/#.*$/,Jc=/([?&])_=[^&]*/,Kc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Lc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mc=/^(?:GET|HEAD)$/,Nc=/^\/\//,Oc=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Pc=ib.fn.load,Qc={},Rc={},Sc="*/".concat("*");try{Fc=X.href}catch(Tc){Fc=W.createElement("a"),Fc.href="",Fc=Fc.href}Ec=Oc.exec(Fc.toLowerCase())||[],ib.fn.load=function(a,c,d){if("string"!=typeof a&&Pc)return Pc.apply(this,arguments);var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),ib.isFunction(c)?(d=c,c=b):c&&"object"==typeof c&&(g="POST"),h.length>0&&ib.ajax({url:a,type:g,dataType:"html",data:c}).done(function(a){f=arguments,h.html(e?ib("<div>").append(ib.parseHTML(a)).find(e):a)}).complete(d&&function(a,b){h.each(d,f||[a.responseText,b,a])}),this},ib.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){ib.fn[b]=function(a){return this.on(b,a)}}),ib.each(["get","post"],function(a,c){ib[c]=function(a,d,e,f){return ib.isFunction(d)&&(f=f||e,e=d,d=b),ib.ajax({url:a,type:c,dataType:f,data:d,success:e})}}),ib.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Fc,type:"GET",isLocal:Lc.test(Ec[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Sc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":ib.parseJSON,"text xml":ib.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?G(G(a,ib.ajaxSettings),b):G(ib.ajaxSettings,a)},ajaxPrefilter:E(Qc),ajaxTransport:E(Rc),ajax:function(a,c){function d(a,c,d,e){var f,l,s,t,v,x=c;2!==u&&(u=2,i&&clearTimeout(i),k=b,h=e||"",w.readyState=a>0?4:0,d&&(t=H(m,w,d)),a>=200&&300>a||304===a?(m.ifModified&&(v=w.getResponseHeader("Last-Modified"),v&&(ib.lastModified[g]=v),v=w.getResponseHeader("etag"),v&&(ib.etag[g]=v)),204===a?(f=!0,x="nocontent"):304===a?(f=!0,x="notmodified"):(f=I(m,t),x=f.state,l=f.data,s=f.error,f=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),w.status=a,w.statusText=(c||x)+"",f?p.resolveWith(n,[l,x,w]):p.rejectWith(n,[w,x,s]),w.statusCode(r),r=b,j&&o.trigger(f?"ajaxSuccess":"ajaxError",[w,m,f?l:s]),q.fireWith(n,[w,x]),j&&(o.trigger("ajaxComplete",[w,m]),--ib.active||ib.event.trigger("ajaxStop")))}"object"==typeof a&&(c=a,a=b),c=c||{};var e,f,g,h,i,j,k,l,m=ib.ajaxSetup({},c),n=m.context||m,o=m.context&&(n.nodeType||n.jquery)?ib(n):ib.event,p=ib.Deferred(),q=ib.Callbacks("once memory"),r=m.statusCode||{},s={},t={},u=0,v="canceled",w={readyState:0,getResponseHeader:function(a){var b;if(2===u){if(!l)for(l={};b=Kc.exec(h);)l[b[1].toLowerCase()]=b[2];b=l[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===u?h:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return u||(a=t[c]=t[c]||a,s[a]=b),this},overrideMimeType:function(a){return u||(m.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>u)for(b in a)r[b]=[r[b],a[b]];else w.always(a[w.status]);return this},abort:function(a){var b=a||v;return k&&k.abort(b),d(0,b),this}};if(p.promise(w).complete=q.add,w.success=w.done,w.error=w.fail,m.url=((a||m.url||Fc)+"").replace(Ic,"").replace(Nc,Ec[1]+"//"),m.type=c.method||c.type||m.method||m.type,m.dataTypes=ib.trim(m.dataType||"*").toLowerCase().match(kb)||[""],null==m.crossDomain&&(e=Oc.exec(m.url.toLowerCase()),m.crossDomain=!(!e||e[1]===Ec[1]&&e[2]===Ec[2]&&(e[3]||("http:"===e[1]?80:443))==(Ec[3]||("http:"===Ec[1]?80:443)))),m.data&&m.processData&&"string"!=typeof m.data&&(m.data=ib.param(m.data,m.traditional)),F(Qc,m,c,w),2===u)return w;j=m.global,j&&0===ib.active++&&ib.event.trigger("ajaxStart"),m.type=m.type.toUpperCase(),m.hasContent=!Mc.test(m.type),g=m.url,m.hasContent||(m.data&&(g=m.url+=(Hc.test(g)?"&":"?")+m.data,delete m.data),m.cache===!1&&(m.url=Jc.test(g)?g.replace(Jc,"$1_="+Gc++):g+(Hc.test(g)?"&":"?")+"_="+Gc++)),m.ifModified&&(ib.lastModified[g]&&w.setRequestHeader("If-Modified-Since",ib.lastModified[g]),ib.etag[g]&&w.setRequestHeader("If-None-Match",ib.etag[g])),(m.data&&m.hasContent&&m.contentType!==!1||c.contentType)&&w.setRequestHeader("Content-Type",m.contentType),w.setRequestHeader("Accept",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+("*"!==m.dataTypes[0]?", "+Sc+"; q=0.01":""):m.accepts["*"]);for(f in m.headers)w.setRequestHeader(f,m.headers[f]);if(m.beforeSend&&(m.beforeSend.call(n,w,m)===!1||2===u))return w.abort();v="abort";for(f in{success:1,error:1,complete:1})w[f](m[f]);if(k=F(Rc,m,c,w)){w.readyState=1,j&&o.trigger("ajaxSend",[w,m]),m.async&&m.timeout>0&&(i=setTimeout(function(){w.abort("timeout")},m.timeout));try{u=1,k.send(s,d)}catch(x){if(!(2>u))throw x;d(-1,x)}}else d(-1,"No Transport");return w},getScript:function(a,c){return ib.get(a,b,c,"script")},getJSON:function(a,b,c){return ib.get(a,b,c,"json")}}),ib.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return ib.globalEval(a),a}}}),ib.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),ib.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=W.head||ib("head")[0]||W.documentElement;return{send:function(b,e){c=W.createElement("script"),c.async=!0,a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,b){(b||!c.readyState||/loaded|complete/.test(c.readyState))&&(c.onload=c.onreadystatechange=null,c.parentNode&&c.parentNode.removeChild(c),c=null,b||e(200,"success"))},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(b,!0)}}}});var Uc=[],Vc=/(=)\?(?=&|$)|\?\?/;ib.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Uc.pop()||ib.expando+"_"+Gc++;return this[a]=!0,a}}),ib.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.jsonp!==!1&&(Vc.test(c.url)?"url":"string"==typeof c.data&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vc.test(c.data)&&"data");return i||"jsonp"===c.dataTypes[0]?(f=c.jsonpCallback=ib.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,i?c[i]=c[i].replace(Vc,"$1"+f):c.jsonp!==!1&&(c.url+=(Hc.test(c.url)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||ib.error(f+" was not called"),h[0]},c.dataTypes[0]="json",g=a[f],a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,Uc.push(f)),h&&ib.isFunction(g)&&g(h[0]),h=g=b}),"script"):void 0});var Wc,Xc,Yc=0,Zc=a.ActiveXObject&&function(){var a;for(a in Wc)Wc[a](b,!0)};ib.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&J()||K()}:J,Xc=ib.ajaxSettings.xhr(),ib.support.cors=!!Xc&&"withCredentials"in Xc,Xc=ib.support.ajax=!!Xc,Xc&&ib.ajaxTransport(function(c){if(!c.crossDomain||ib.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();if(c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async),c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),c.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l;try{if(d&&(e||4===i.readyState))if(d=b,g&&(i.onreadystatechange=ib.noop,Zc&&delete Wc[g]),e)4!==i.readyState&&i.abort();else{l={},h=i.status,j=i.getAllResponseHeaders(),"string"==typeof i.responseText&&(l.text=i.responseText);try{k=i.statusText}catch(m){k=""}h||!c.isLocal||c.crossDomain?1223===h&&(h=204):h=l.text?200:404}}catch(n){e||f(-1,n)}l&&f(h,k,l,j)},c.async?4===i.readyState?setTimeout(d):(g=++Yc,Zc&&(Wc||(Wc={},ib(a).unload(Zc)),Wc[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(b,!0)}}}});var $c,_c,ad=/^(?:toggle|show|hide)$/,bd=new RegExp("^(?:([+-])=|)("+jb+")([a-z%]*)$","i"),cd=/queueHooks$/,dd=[P],ed={"*":[function(a,b){var c,d,e=this.createTween(a,b),f=bd.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){if(c=+f[2],d=f[3]||(ib.cssNumber[a]?"":"px"),"px"!==d&&h){h=ib.css(e.elem,a,!0)||c||1;do i=i||".5",h/=i,ib.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&1!==i&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};ib.Animation=ib.extend(N,{tweener:function(a,b){ib.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ed[c]=ed[c]||[],ed[c].unshift(b)},prefilter:function(a,b){b?dd.unshift(a):dd.push(a)}}),ib.Tween=Q,Q.prototype={constructor:Q,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(ib.cssNumber[c]?"":"px")},cur:function(){var a=Q.propHooks[this.prop];return a&&a.get?a.get(this):Q.propHooks._default.get(this)},run:function(a){var b,c=Q.propHooks[this.prop];return this.pos=b=this.options.duration?ib.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Q.propHooks._default.set(this),this}},Q.prototype.init.prototype=Q.prototype,Q.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=ib.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){ib.fx.step[a.prop]?ib.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[ib.cssProps[a.prop]]||ib.cssHooks[a.prop])?ib.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Q.propHooks.scrollTop=Q.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},ib.each(["toggle","show","hide"],function(a,b){var c=ib.fn[b];ib.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(R(b,!0),a,d,e)}}),ib.fn.extend({fadeTo:function(a,b,c,d){return this.filter(w).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=ib.isEmptyObject(a),f=ib.speed(b,c,d),g=function(){var b=N(this,ib.extend({},a),f);g.finish=function(){b.stop(!0)},(e||ib._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,c,d){var e=function(a){var b=a.stop;delete a.stop,b(d)};return"string"!=typeof a&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,c=null!=a&&a+"queueHooks",f=ib.timers,g=ib._data(this);if(c)g[c]&&g[c].stop&&e(g[c]);else for(c in g)g[c]&&g[c].stop&&cd.test(c)&&e(g[c]);for(c=f.length;c--;)f[c].elem!==this||null!=a&&f[c].queue!==a||(f[c].anim.stop(d),b=!1,f.splice(c,1));(b||!d)&&ib.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=ib._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=ib.timers,g=d?d.length:0;for(c.finish=!0,ib.queue(this,a,[]),e&&e.cur&&e.cur.finish&&e.cur.finish.call(this),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),ib.each({slideDown:R("show"),slideUp:R("hide"),slideToggle:R("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){ib.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),ib.speed=function(a,b,c){var d=a&&"object"==typeof a?ib.extend({},a):{complete:c||!c&&b||ib.isFunction(a)&&a,duration:a,easing:c&&b||b&&!ib.isFunction(b)&&b};return d.duration=ib.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in ib.fx.speeds?ib.fx.speeds[d.duration]:ib.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){ib.isFunction(d.old)&&d.old.call(this),d.queue&&ib.dequeue(this,d.queue)},d},ib.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},ib.timers=[],ib.fx=Q.prototype.init,ib.fx.tick=function(){var a,c=ib.timers,d=0;for($c=ib.now();d<c.length;d++)a=c[d],a()||c[d]!==a||c.splice(d--,1);c.length||ib.fx.stop(),$c=b},ib.fx.timer=function(a){a()&&ib.timers.push(a)&&ib.fx.start()},ib.fx.interval=13,ib.fx.start=function(){_c||(_c=setInterval(ib.fx.tick,ib.fx.interval))},ib.fx.stop=function(){clearInterval(_c),_c=null},ib.fx.speeds={slow:600,fast:200,_default:400},ib.fx.step={},ib.expr&&ib.expr.filters&&(ib.expr.filters.animated=function(a){return ib.grep(ib.timers,function(b){return a===b.elem}).length}),ib.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){ib.offset.setOffset(this,a,b)});var c,d,e={top:0,left:0},f=this[0],g=f&&f.ownerDocument;if(g)return c=g.documentElement,ib.contains(c,f)?(typeof f.getBoundingClientRect!==V&&(e=f.getBoundingClientRect()),d=S(g),{top:e.top+(d.pageYOffset||c.scrollTop)-(c.clientTop||0),left:e.left+(d.pageXOffset||c.scrollLeft)-(c.clientLeft||0)}):e},ib.offset={setOffset:function(a,b,c){var d=ib.css(a,"position");"static"===d&&(a.style.position="relative");var e,f,g=ib(a),h=g.offset(),i=ib.css(a,"top"),j=ib.css(a,"left"),k=("absolute"===d||"fixed"===d)&&ib.inArray("auto",[i,j])>-1,l={},m={};k?(m=g.position(),e=m.top,f=m.left):(e=parseFloat(i)||0,f=parseFloat(j)||0),ib.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(l.top=b.top-h.top+e),null!=b.left&&(l.left=b.left-h.left+f),"using"in b?b.using.call(a,l):g.css(l)}},ib.fn.extend({position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===ib.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),ib.nodeName(a[0],"html")||(c=a.offset()),c.top+=ib.css(a[0],"borderTopWidth",!0),c.left+=ib.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-ib.css(d,"marginTop",!0),left:b.left-c.left-ib.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||W.documentElement;a&&!ib.nodeName(a,"html")&&"static"===ib.css(a,"position");)a=a.offsetParent;return a||W.documentElement})}}),ib.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);ib.fn[a]=function(e){return ib.access(this,function(a,e,f){var g=S(a);return f===b?g?c in g?g[c]:g.document.documentElement[e]:a[e]:void(g?g.scrollTo(d?ib(g).scrollLeft():f,d?f:ib(g).scrollTop()):a[e]=f)},a,e,arguments.length,null)}}),ib.each({Height:"height",Width:"width"},function(a,c){ib.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){ib.fn[e]=function(e,f){var g=arguments.length&&(d||"boolean"!=typeof e),h=d||(e===!0||f===!0?"margin":"border");return ib.access(this,function(c,d,e){var f;return ib.isWindow(c)?c.document.documentElement["client"+a]:9===c.nodeType?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?ib.css(c,d,h):ib.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=ib,"function"==typeof define&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return ib})}(window),function(a,b,c){"use strict";function d(a){return function(){var b,c,d=arguments[0],e="["+(a?a+":":"")+d+"] ",f=arguments[1],g=arguments,h=function(a){return"function"==typeof a?a.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof a?"undefined":"string"!=typeof a?JSON.stringify(a):a};for(b=e+f.replace(/\{\d+\}/g,function(a){var b,c=+a.slice(1,-1);return c+2<g.length?(b=g[c+2],"function"==typeof b?b.toString().replace(/ ?\{[\s\S]*$/,""):"undefined"==typeof b?"undefined":"string"!=typeof b?R(b):b):a}),b=b+"\nhttp://errors.angularjs.org/1.2.18-build.233+sha.e906aaf/"+(a?a+"/":"")+d,c=2;c<arguments.length;c++)b=b+(2==c?"?":"&")+"p"+(c-2)+"="+encodeURIComponent(h(arguments[c]));return new Error(b)}}function e(a){if(null==a||A(a))return!1;var b=a.length;return 1===a.nodeType&&b?!0:u(a)||x(a)||0===b||"number"==typeof b&&b>0&&b-1 in a}function f(a,b,c){var d;if(a)if(y(a))for(d in a)"prototype"==d||"length"==d||"name"==d||a.hasOwnProperty&&!a.hasOwnProperty(d)||b.call(c,a[d],d);else if(a.forEach&&a.forEach!==f)a.forEach(b,c);else if(e(a))for(d=0;d<a.length;d++)b.call(c,a[d],d);else for(d in a)a.hasOwnProperty(d)&&b.call(c,a[d],d);return a}function g(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b.sort()}function h(a,b,c){for(var d=g(a),e=0;e<d.length;e++)b.call(c,a[d[e]],d[e]);return d}function i(a){return function(b,c){a(c,b)}}function j(){for(var a,b=Bd.length;b;){if(b--,a=Bd[b].charCodeAt(0),57==a)return Bd[b]="A",Bd.join("");if(90!=a)return Bd[b]=String.fromCharCode(a+1),Bd.join("");Bd[b]="0"}return Bd.unshift("0"),Bd.join("")}function k(a,b){b?a.$$hashKey=b:delete a.$$hashKey}function l(a){var b=a.$$hashKey;return f(arguments,function(b){b!==a&&f(b,function(b,c){a[c]=b})}),k(a,b),a}function m(a){return parseInt(a,10)}function n(a,b){return l(new(l(function(){},{prototype:a})),b)}function o(){}function p(a){return a}function q(a){return function(){return a}}function r(a){return"undefined"==typeof a}function s(a){return"undefined"!=typeof a}function t(a){return null!=a&&"object"==typeof a}function u(a){return"string"==typeof a}function v(a){return"number"==typeof a}function w(a){return"[object Date]"===yd.call(a)}function x(a){return"[object Array]"===yd.call(a)}function y(a){return"function"==typeof a}function z(a){return"[object RegExp]"===yd.call(a)}function A(a){return a&&a.document&&a.location&&a.alert&&a.setInterval}function B(a){return a&&a.$evalAsync&&a.$watch}function C(a){return"[object File]"===yd.call(a)}function D(a){return"[object Blob]"===yd.call(a)}function E(a){return!(!a||!(a.nodeName||a.prop&&a.attr&&a.find))}function F(a,b,c){var d=[];return f(a,function(a,e,f){d.push(b.call(c,a,e,f))}),d}function G(a,b){return-1!=H(a,b)}function H(a,b){if(a.indexOf)return a.indexOf(b);
+for(var c=0;c<a.length;c++)if(b===a[c])return c;return-1}function I(a,b){var c=H(a,b);return c>=0&&a.splice(c,1),b}function J(a,b,c,d){if(A(a)||B(a))throw zd("cpws","Can't copy! Making copies of Window or Scope instances is not supported.");if(b){if(a===b)throw zd("cpi","Can't copy! Source and destination are identical.");if(c=c||[],d=d||[],t(a)){var e=H(c,a);if(-1!==e)return d[e];c.push(a),d.push(b)}var g;if(x(a)){b.length=0;for(var h=0;h<a.length;h++)g=J(a[h],null,c,d),t(a[h])&&(c.push(a[h]),d.push(g)),b.push(g)}else{var i=b.$$hashKey;f(b,function(a,c){delete b[c]});for(var j in a)g=J(a[j],null,c,d),t(a[j])&&(c.push(a[j]),d.push(g)),b[j]=g;k(b,i)}}else b=a,a&&(x(a)?b=J(a,[],c,d):w(a)?b=new Date(a.getTime()):z(a)?b=new RegExp(a.source):t(a)&&(b=J(a,{},c,d)));return b}function K(a,b){if(x(a)){b=b||[];for(var c=0;c<a.length;c++)b[c]=a[c]}else if(t(a)){b=b||{};for(var d in a)!nd.call(a,d)||"$"===d.charAt(0)&&"$"===d.charAt(1)||(b[d]=a[d])}return b||a}function L(a,b){if(a===b)return!0;if(null===a||null===b)return!1;if(a!==a&&b!==b)return!0;var d,e,f,g=typeof a,h=typeof b;if(g==h&&"object"==g){if(!x(a)){if(w(a))return w(b)&&a.getTime()==b.getTime();if(z(a)&&z(b))return a.toString()==b.toString();if(B(a)||B(b)||A(a)||A(b)||x(b))return!1;f={};for(e in a)if("$"!==e.charAt(0)&&!y(a[e])){if(!L(a[e],b[e]))return!1;f[e]=!0}for(e in b)if(!f.hasOwnProperty(e)&&"$"!==e.charAt(0)&&b[e]!==c&&!y(b[e]))return!1;return!0}if(!x(b))return!1;if((d=a.length)==b.length){for(e=0;d>e;e++)if(!L(a[e],b[e]))return!1;return!0}}return!1}function M(){return b.securityPolicy&&b.securityPolicy.isActive||b.querySelector&&!(!b.querySelector("[ng-csp]")&&!b.querySelector("[data-ng-csp]"))}function N(a,b,c){return a.concat(wd.call(b,c))}function O(a,b){return wd.call(a,b||0)}function P(a,b){var c=arguments.length>2?O(arguments,2):[];return!y(b)||b instanceof RegExp?b:c.length?function(){return arguments.length?b.apply(a,c.concat(wd.call(arguments,0))):b.apply(a,c)}:function(){return arguments.length?b.apply(a,arguments):b.call(a)}}function Q(a,d){var e=d;return"string"==typeof a&&"$"===a.charAt(0)?e=c:A(d)?e="$WINDOW":d&&b===d?e="$DOCUMENT":B(d)&&(e="$SCOPE"),e}function R(a,b){return"undefined"==typeof a?c:JSON.stringify(a,Q,b?"  ":null)}function S(a){return u(a)?JSON.parse(a):a}function T(a){if("function"==typeof a)a=!0;else if(a&&0!==a.length){var b=md(""+a);a=!("f"==b||"0"==b||"false"==b||"no"==b||"n"==b||"[]"==b)}else a=!1;return a}function U(a){a=sd(a).clone();try{a.empty()}catch(b){}var c=3,d=sd("<div>").append(a).html();try{return a[0].nodeType===c?md(d):d.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+md(b)})}catch(b){return md(d)}}function V(a){try{return decodeURIComponent(a)}catch(b){}}function W(a){var b,c,d={};return f((a||"").split("&"),function(a){if(a&&(b=a.split("="),c=V(b[0]),s(c))){var e=s(b[1])?V(b[1]):!0;d[c]?x(d[c])?d[c].push(e):d[c]=[d[c],e]:d[c]=e}}),d}function X(a){var b=[];return f(a,function(a,c){x(a)?f(a,function(a){b.push(Z(c,!0)+(a===!0?"":"="+Z(a,!0)))}):b.push(Z(c,!0)+(a===!0?"":"="+Z(a,!0)))}),b.length?b.join("&"):""}function Y(a){return Z(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Z(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,b?"%20":"+")}function $(a,c){function d(a){a&&h.push(a)}var e,g,h=[a],i=["ng:app","ng-app","x-ng-app","data-ng-app"],j=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;f(i,function(c){i[c]=!0,d(b.getElementById(c)),c=c.replace(":","\\:"),a.querySelectorAll&&(f(a.querySelectorAll("."+c),d),f(a.querySelectorAll("."+c+"\\:"),d),f(a.querySelectorAll("["+c+"]"),d))}),f(h,function(a){if(!e){var b=" "+a.className+" ",c=j.exec(b);c?(e=a,g=(c[2]||"").replace(/\s+/g,",")):f(a.attributes,function(b){!e&&i[b.name]&&(e=a,g=b.value)})}}),e&&c(e,g?[g]:[])}function _(c,d){var e=function(){if(c=sd(c),c.injector()){var a=c[0]===b?"document":U(c);throw zd("btstrpd","App Already Bootstrapped with this Element '{0}'",a)}d=d||[],d.unshift(["$provide",function(a){a.value("$rootElement",c)}]),d.unshift("ng");var e=Ib(d);return e.invoke(["$rootScope","$rootElement","$compile","$injector","$animate",function(a,b,c,d){a.$apply(function(){b.data("$injector",d),c(b)(a)})}]),e},g=/^NG_DEFER_BOOTSTRAP!/;return a&&!g.test(a.name)?e():(a.name=a.name.replace(g,""),void(Ad.resumeBootstrap=function(a){f(a,function(a){d.push(a)}),e()}))}function ab(a,b){return b=b||"_",a.replace(Dd,function(a,c){return(c?b:"")+a.toLowerCase()})}function bb(){td=a.jQuery,td&&td.fn.on?(sd=td,l(td.fn,{scope:Sd.scope,isolateScope:Sd.isolateScope,controller:Sd.controller,injector:Sd.injector,inheritedData:Sd.inheritedData}),lb("remove",!0,!0,!1),lb("empty",!1,!1,!1),lb("html",!1,!1,!0)):sd=pb,Ad.element=sd}function cb(a,b,c){if(!a)throw zd("areq","Argument '{0}' is {1}",b||"?",c||"required");return a}function db(a,b,c){return c&&x(a)&&(a=a[a.length-1]),cb(y(a),b,"not a function, got "+(a&&"object"==typeof a?a.constructor.name||"Object":typeof a)),a}function eb(a,b){if("hasOwnProperty"===a)throw zd("badname","hasOwnProperty is not a valid {0} name",b)}function fb(a,b,c){if(!b)return a;for(var d,e=b.split("."),f=a,g=e.length,h=0;g>h;h++)d=e[h],a&&(a=(f=a)[d]);return!c&&y(a)?P(f,a):a}function gb(a){var b=a[0],c=a[a.length-1];if(b===c)return sd(b);var d=b,e=[d];do{if(d=d.nextSibling,!d)break;e.push(d)}while(d!==c);return sd(e)}function hb(a){function b(a,b,c){return a[b]||(a[b]=c())}var c=d("$injector"),e=d("ng"),f=b(a,"angular",Object);return f.$$minErr=f.$$minErr||d,b(f,"module",function(){var a={};return function(d,f,g){var h=function(a,b){if("hasOwnProperty"===a)throw e("badname","hasOwnProperty is not a valid {0} name",b)};return h(d,"module"),f&&a.hasOwnProperty(d)&&(a[d]=null),b(a,d,function(){function a(a,c,d){return function(){return b[d||"push"]([a,c,arguments]),i}}if(!f)throw c("nomod","Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.",d);var b=[],e=[],h=a("$injector","invoke"),i={_invokeQueue:b,_runBlocks:e,requires:f,name:d,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:h,run:function(a){return e.push(a),this}};return g&&h(g),i})}})}function ib(b){l(b,{bootstrap:_,copy:J,extend:l,equals:L,element:sd,forEach:f,injector:Ib,noop:o,bind:P,toJson:R,fromJson:S,identity:p,isUndefined:r,isDefined:s,isString:u,isFunction:y,isObject:t,isNumber:v,isElement:E,isArray:x,version:Ed,isDate:w,lowercase:md,uppercase:od,callbacks:{counter:0},$$minErr:d,$$csp:M}),ud=hb(a);try{ud("ngLocale")}catch(c){ud("ngLocale",[]).provider("$locale",dc)}ud("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:Ec}),a.provider("$compile",Pb).directive({a:ye,input:Ie,textarea:Ie,form:Ce,script:qf,select:tf,style:vf,option:uf,ngBind:Ue,ngBindHtml:We,ngBindTemplate:Ve,ngClass:Xe,ngClassEven:Ze,ngClassOdd:Ye,ngCloak:$e,ngController:_e,ngForm:De,ngHide:kf,ngIf:bf,ngInclude:cf,ngInit:ef,ngNonBindable:ff,ngPluralize:gf,ngRepeat:hf,ngShow:jf,ngStyle:lf,ngSwitch:mf,ngSwitchWhen:nf,ngSwitchDefault:of,ngOptions:sf,ngTransclude:pf,ngModel:Oe,ngList:Re,ngChange:Pe,required:Qe,ngRequired:Qe,ngValue:Te}).directive({ngInclude:df}).directive(ze).directive(af),a.provider({$anchorScroll:Jb,$animate:_d,$browser:Mb,$cacheFactory:Nb,$controller:Sb,$document:Tb,$exceptionHandler:Ub,$filter:Pc,$interpolate:bc,$interval:cc,$http:Zb,$httpBackend:_b,$location:qc,$log:rc,$parse:zc,$rootScope:Dc,$q:Ac,$sce:Jc,$sceDelegate:Ic,$sniffer:Kc,$templateCache:Ob,$timeout:Lc,$window:Oc,$$rAF:Cc,$$asyncCallback:Kb})}])}function jb(){return++Hd}function kb(a){return a.replace(Kd,function(a,b,c,d){return d?c.toUpperCase():c}).replace(Ld,"Moz$1")}function lb(a,b,c,d){function e(a){var e,g,h,i,j,k,l,m=c&&a?[this.filter(a)]:[this],n=b;if(!d||null!=a)for(;m.length;)for(e=m.shift(),g=0,h=e.length;h>g;g++)for(i=sd(e[g]),n?i.triggerHandler("$destroy"):n=!n,j=0,k=(l=i.children()).length;k>j;j++)m.push(td(l[j]));return f.apply(this,arguments)}var f=td.fn[a];f=f.$original||f,e.$original=f,td.fn[a]=e}function mb(a){return!Od.test(a)}function nb(a,b){var c,d,e,f,g,h,i=b.createDocumentFragment(),j=[];if(mb(a))j.push(b.createTextNode(a));else{for(c=i.appendChild(b.createElement("div")),d=(Pd.exec(a)||["",""])[1].toLowerCase(),e=Rd[d]||Rd._default,c.innerHTML="<div>&#160;</div>"+e[1]+a.replace(Qd,"<$1></$2>")+e[2],c.removeChild(c.firstChild),f=e[0];f--;)c=c.lastChild;for(g=0,h=c.childNodes.length;h>g;++g)j.push(c.childNodes[g]);c=i.firstChild,c.textContent=""}return i.textContent="",i.innerHTML="",j}function ob(a,c){c=c||b;var d;return(d=Nd.exec(a))?[c.createElement(d[1])]:nb(a,c)}function pb(a){if(a instanceof pb)return a;if(u(a)&&(a=Cd(a)),!(this instanceof pb)){if(u(a)&&"<"!=a.charAt(0))throw Md("nosel","Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");return new pb(a)}if(u(a)){zb(this,ob(a));var c=sd(b.createDocumentFragment());c.append(this)}else zb(this,a)}function qb(a){return a.cloneNode(!0)}function rb(a){tb(a);for(var b=0,c=a.childNodes||[];b<c.length;b++)rb(c[b])}function sb(a,b,c,d){if(s(d))throw Md("offargs","jqLite#off() does not support the `selector` argument");var e=ub(a,"events"),g=ub(a,"handle");g&&(r(b)?f(e,function(b,c){Jd(a,c,b),delete e[c]}):f(b.split(" "),function(b){r(c)?(Jd(a,b,e[b]),delete e[b]):I(e[b]||[],c)}))}function tb(a,b){var d=a[Gd],e=Fd[d];if(e){if(b)return void delete Fd[d].data[b];e.handle&&(e.events.$destroy&&e.handle({},"$destroy"),sb(a)),delete Fd[d],a[Gd]=c}}function ub(a,b,c){var d=a[Gd],e=Fd[d||-1];return s(c)?(e||(a[Gd]=d=jb(),e=Fd[d]={}),void(e[b]=c)):e&&e[b]}function vb(a,b,c){var d=ub(a,"data"),e=s(c),f=!e&&s(b),g=f&&!t(b);if(d||g||ub(a,"data",d={}),e)d[b]=c;else{if(!f)return d;if(g)return d&&d[b];l(d,b)}}function wb(a,b){return a.getAttribute?(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+b+" ")>-1:!1}function xb(a,b){b&&a.setAttribute&&f(b.split(" "),function(b){a.setAttribute("class",Cd((" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+Cd(b)+" "," ")))})}function yb(a,b){if(b&&a.setAttribute){var c=(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");f(b.split(" "),function(a){a=Cd(a),-1===c.indexOf(" "+a+" ")&&(c+=a+" ")}),a.setAttribute("class",Cd(c))}}function zb(a,b){if(b){b=b.nodeName||!s(b.length)||A(b)?[b]:b;for(var c=0;c<b.length;c++)a.push(b[c])}}function Ab(a,b){return Bb(a,"$"+(b||"ngController")+"Controller")}function Bb(a,b,d){a=sd(a),9==a[0].nodeType&&(a=a.find("html"));for(var e=x(b)?b:[b];a.length;){for(var f=a[0],g=0,h=e.length;h>g;g++)if((d=a.data(e[g]))!==c)return d;a=sd(f.parentNode||11===f.nodeType&&f.host)}}function Cb(a){for(var b=0,c=a.childNodes;b<c.length;b++)rb(c[b]);for(;a.firstChild;)a.removeChild(a.firstChild)}function Db(a,b){var c=Td[b.toLowerCase()];return c&&Ud[a.nodeName]&&c}function Eb(a,c){var d=function(d,e){if(d.preventDefault||(d.preventDefault=function(){d.returnValue=!1}),d.stopPropagation||(d.stopPropagation=function(){d.cancelBubble=!0}),d.target||(d.target=d.srcElement||b),r(d.defaultPrevented)){var g=d.preventDefault;d.preventDefault=function(){d.defaultPrevented=!0,g.call(d)},d.defaultPrevented=!1}d.isDefaultPrevented=function(){return d.defaultPrevented||d.returnValue===!1};var h=K(c[e||d.type]||[]);f(h,function(b){b.call(a,d)}),8>=rd?(d.preventDefault=null,d.stopPropagation=null,d.isDefaultPrevented=null):(delete d.preventDefault,delete d.stopPropagation,delete d.isDefaultPrevented)};return d.elem=a,d}function Fb(a){var b,d=typeof a;return"object"==d&&null!==a?"function"==typeof(b=a.$$hashKey)?b=a.$$hashKey():b===c&&(b=a.$$hashKey=j()):b=a,d+":"+b}function Gb(a){f(a,this.put,this)}function Hb(a){var b,c,d,e;return"function"==typeof a?(b=a.$inject)||(b=[],a.length&&(c=a.toString().replace(Yd,""),d=c.match(Vd),f(d[1].split(Wd),function(a){a.replace(Xd,function(a,c,d){b.push(d)})})),a.$inject=b):x(a)?(e=a.length-1,db(a[e],"fn"),b=a.slice(0,e)):db(a,"fn",!0),b}function Ib(a){function b(a){return function(b,c){return t(b)?void f(b,i(a)):a(b,c)}}function c(a,b){if(eb(a,"service"),(y(b)||x(b))&&(b=v.instantiate(b)),!b.$get)throw Zd("pget","Provider '{0}' must define $get factory method.",a);return s[a+n]=b}function d(a,b){return c(a,{$get:b})}function e(a,b){return d(a,["$injector",function(a){return a.instantiate(b)}])}function g(a,b){return d(a,q(b))}function h(a,b){eb(a,"constant"),s[a]=b,w[a]=b}function j(a,b){var c=v.get(a+n),d=c.$get;c.$get=function(){var a=z.invoke(d,c);return z.invoke(b,null,{$delegate:a})}}function k(a){var b,c,d,e,g=[];return f(a,function(a){if(!r.get(a)){r.put(a,!0);try{if(u(a))for(b=ud(a),g=g.concat(k(b.requires)).concat(b._runBlocks),c=b._invokeQueue,d=0,e=c.length;e>d;d++){var f=c[d],h=v.get(f[0]);h[f[1]].apply(h,f[2])}else y(a)?g.push(v.invoke(a)):x(a)?g.push(v.invoke(a)):db(a,"module")}catch(i){throw x(a)&&(a=a[a.length-1]),i.message&&i.stack&&-1==i.stack.indexOf(i.message)&&(i=i.message+"\n"+i.stack),Zd("modulerr","Failed to instantiate module {0} due to:\n{1}",a,i.stack||i.message||i)}}}),g}function l(a,b){function c(c){if(a.hasOwnProperty(c)){if(a[c]===m)throw Zd("cdep","Circular dependency found: {0}",p.join(" <- "));return a[c]}try{return p.unshift(c),a[c]=m,a[c]=b(c)}catch(d){throw a[c]===m&&delete a[c],d}finally{p.shift()}}function d(a,b,d){var e,f,g,h=[],i=Hb(a);for(f=0,e=i.length;e>f;f++){if(g=i[f],"string"!=typeof g)throw Zd("itkn","Incorrect injection token! Expected service name as string, got {0}",g);h.push(d&&d.hasOwnProperty(g)?d[g]:c(g))}return a.$inject||(a=a[e]),a.apply(b,h)}function e(a,b){var c,e,f=function(){};return f.prototype=(x(a)?a[a.length-1]:a).prototype,c=new f,e=d(a,c,b),t(e)||y(e)?e:c}return{invoke:d,instantiate:e,get:c,annotate:Hb,has:function(b){return s.hasOwnProperty(b+n)||a.hasOwnProperty(b)}}}var m={},n="Provider",p=[],r=new Gb,s={$provide:{provider:b(c),factory:b(d),service:b(e),value:b(g),constant:b(h),decorator:j}},v=s.$injector=l(s,function(){throw Zd("unpr","Unknown provider: {0}",p.join(" <- "))}),w={},z=w.$injector=l(w,function(a){var b=v.get(a+n);return z.invoke(b.$get,b)});return f(k(a),function(a){z.invoke(a||o)}),z}function Jb(){var a=!0;this.disableAutoScrolling=function(){a=!1},this.$get=["$window","$location","$rootScope",function(b,c,d){function e(a){var b=null;return f(a,function(a){b||"a"!==md(a.nodeName)||(b=a)}),b}function g(){var a,d=c.hash();d?(a=h.getElementById(d))?a.scrollIntoView():(a=e(h.getElementsByName(d)))?a.scrollIntoView():"top"===d&&b.scrollTo(0,0):b.scrollTo(0,0)}var h=b.document;return a&&d.$watch(function(){return c.hash()},function(){d.$evalAsync(g)}),g}]}function Kb(){this.$get=["$$rAF","$timeout",function(a,b){return a.supported?function(b){return a(b)}:function(a){return b(a,0,!1)}}]}function Lb(a,b,d,e){function g(a){try{a.apply(null,O(arguments,1))}finally{if(s--,0===s)for(;t.length;)try{t.pop()()}catch(b){d.error(b)}}}function h(a,b){!function c(){f(w,function(a){a()}),v=b(c,a)}()}function i(){z=null,x!=j.url()&&(x=j.url(),f(A,function(a){a(j.url())}))}var j=this,k=b[0],l=a.location,m=a.history,n=a.setTimeout,p=a.clearTimeout,q={};j.isMock=!1;var s=0,t=[];j.$$completeOutstandingRequest=g,j.$$incOutstandingRequestCount=function(){s++},j.notifyWhenNoOutstandingRequests=function(a){f(w,function(a){a()}),0===s?a():t.push(a)};var v,w=[];j.addPollFn=function(a){return r(v)&&h(100,n),w.push(a),a};var x=l.href,y=b.find("base"),z=null;j.url=function(b,c){if(l!==a.location&&(l=a.location),m!==a.history&&(m=a.history),b){if(x==b)return;return x=b,e.history?c?m.replaceState(null,"",b):(m.pushState(null,"",b),y.attr("href",y.attr("href"))):(z=b,c?l.replace(b):l.href=b),j}return z||l.href.replace(/%27/g,"'")};var A=[],B=!1;j.onUrlChange=function(b){return B||(e.history&&sd(a).on("popstate",i),e.hashchange?sd(a).on("hashchange",i):j.addPollFn(i),B=!0),A.push(b),b},j.baseHref=function(){var a=y.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""};var C={},D="",E=j.baseHref();j.cookies=function(a,b){var e,f,g,h,i;if(!a){if(k.cookie!==D)for(D=k.cookie,f=D.split("; "),C={},h=0;h<f.length;h++)g=f[h],i=g.indexOf("="),i>0&&(a=unescape(g.substring(0,i)),C[a]===c&&(C[a]=unescape(g.substring(i+1))));return C}b===c?k.cookie=escape(a)+"=;path="+E+";expires=Thu, 01 Jan 1970 00:00:00 GMT":u(b)&&(e=(k.cookie=escape(a)+"="+escape(b)+";path="+E).length+1,e>4096&&d.warn("Cookie '"+a+"' possibly not set or overflowed because it was too large ("+e+" > 4096 bytes)!"))},j.defer=function(a,b){var c;return s++,c=n(function(){delete q[c],g(a)},b||0),q[c]=!0,c},j.defer.cancel=function(a){return q[a]?(delete q[a],p(a),g(o),!0):!1}}function Mb(){this.$get=["$window","$log","$sniffer","$document",function(a,b,c,d){return new Lb(a,d,b,c)}]}function Nb(){this.$get=function(){function a(a,c){function e(a){a!=m&&(n?n==a&&(n=a.n):n=a,f(a.n,a.p),f(a,m),m=a,m.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(a in b)throw d("$cacheFactory")("iid","CacheId '{0}' is already taken!",a);var g=0,h=l({},c,{id:a}),i={},j=c&&c.capacity||Number.MAX_VALUE,k={},m=null,n=null;return b[a]={put:function(a,b){if(j<Number.MAX_VALUE){var c=k[a]||(k[a]={key:a});e(c)}if(!r(b))return a in i||g++,i[a]=b,g>j&&this.remove(n.key),b},get:function(a){if(j<Number.MAX_VALUE){var b=k[a];if(!b)return;e(b)}return i[a]},remove:function(a){if(j<Number.MAX_VALUE){var b=k[a];if(!b)return;b==m&&(m=b.p),b==n&&(n=b.n),f(b.n,b.p),delete k[a]}delete i[a],g--},removeAll:function(){i={},g=0,k={},m=n=null},destroy:function(){i=null,h=null,k=null,delete b[a]},info:function(){return l({},h,{size:g})}}}var b={};return a.info=function(){var a={};return f(b,function(b,c){a[c]=b.info()}),a},a.get=function(a){return b[a]},a}}function Ob(){this.$get=["$cacheFactory",function(a){return a("templates")}]}function Pb(a,d){var e={},g="Directive",h=/^\s*directive\:\s*([\d\w_\-]+)\s+(.*)$/,j=/(([\d\w_\-]+)(?:\:([^;]+))?;?)/,k=/^(on[a-z]+|formaction)$/;this.directive=function m(b,c){return eb(b,"directive"),u(b)?(cb(c,"directiveFactory"),e.hasOwnProperty(b)||(e[b]=[],a.factory(b+g,["$injector","$exceptionHandler",function(a,c){var d=[];return f(e[b],function(e,f){try{var g=a.invoke(e);y(g)?g={compile:q(g)}:!g.compile&&g.link&&(g.compile=q(g.link)),g.priority=g.priority||0,g.index=f,g.name=g.name||b,g.require=g.require||g.controller&&g.name,g.restrict=g.restrict||"A",d.push(g)}catch(h){c(h)}}),d}])),e[b].push(c)):f(b,i(m)),this},this.aHrefSanitizationWhitelist=function(a){return s(a)?(d.aHrefSanitizationWhitelist(a),this):d.aHrefSanitizationWhitelist()},this.imgSrcSanitizationWhitelist=function(a){return s(a)?(d.imgSrcSanitizationWhitelist(a),this):d.imgSrcSanitizationWhitelist()},this.$get=["$injector","$interpolate","$exceptionHandler","$http","$templateCache","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(a,d,i,m,o,r,s,v,w,z,A,B){function C(a,b,c,d,e){a instanceof sd||(a=sd(a)),f(a,function(b,c){3==b.nodeType&&b.nodeValue.match(/\S+/)&&(a[c]=b=sd(b).wrap("<span></span>").parent()[0])});var g=E(a,b,a,c,d,e);return D(a,"ng-scope"),function(b,c,d){cb(b,"scope");var e=c?Sd.clone.call(a):a;f(d,function(a,b){e.data("$"+b+"Controller",a)});for(var h=0,i=e.length;i>h;h++){var j=e[h],k=j.nodeType;(1===k||9===k)&&e.eq(h).data("$scope",b)}return c&&c(e,b),g&&g(b,e,e),e}}function D(a,b){try{a.addClass(b)}catch(c){}}function E(a,b,d,e,f,g){function h(a,d,e,f){var g,h,i,j,k,l,m,n,p,q=d.length,r=new Array(q);for(m=0;q>m;m++)r[m]=d[m];for(m=0,p=0,n=o.length;n>m;p++)i=r[p],g=o[m++],h=o[m++],j=sd(i),g?(g.scope?(k=a.$new(),j.data("$scope",k)):k=a,l=g.transclude,l||!f&&b?g(h,k,i,e,F(a,l||b)):g(h,k,i,e,f)):h&&h(a,i.childNodes,c,f)}for(var i,j,k,l,m,n,o=[],p=0;p<a.length;p++)i=new $,j=G(a[p],[],i,0===p?e:c,f),k=j.length?J(j,a[p],i,b,d,null,[],[],g):null,k&&k.scope&&D(sd(a[p]),"ng-scope"),m=k&&k.terminal||!(l=a[p].childNodes)||!l.length?null:E(l,k?k.transclude:b),o.push(k,m),n=n||k||m,g=null;return n?h:null}function F(a,b){return function(c,d,e){var f=!1;c||(c=a.$new(),c.$$transcluded=!0,f=!0);var g=b(c,d,e);return f&&g.on("$destroy",P(c,c.$destroy)),g}}function G(a,b,c,d,e){var f,g,i=a.nodeType,k=c.$attr;switch(i){case 1:N(b,Qb(vd(a).toLowerCase()),"E",d,e);for(var l,m,n,o,p,q=a.attributes,r=0,s=q&&q.length;s>r;r++){var t=!1,v=!1;if(l=q[r],!rd||rd>=8||l.specified){m=l.name,o=Qb(m),eb.test(o)&&(m=ab(o.substr(6),"-"));var w=o.replace(/(Start|End)$/,"");o===w+"Start"&&(t=m,v=m.substr(0,m.length-5)+"end",m=m.substr(0,m.length-6)),n=Qb(m.toLowerCase()),k[n]=m,c[n]=p=Cd(l.value),Db(a,n)&&(c[n]=!0),X(a,b,p,n),N(b,n,"A",d,e,t,v)}}if(g=a.className,u(g)&&""!==g)for(;f=j.exec(g);)n=Qb(f[2]),N(b,n,"C",d,e)&&(c[n]=Cd(f[3])),g=g.substr(f.index+f[0].length);break;case 3:V(b,a.nodeValue);break;case 8:try{f=h.exec(a.nodeValue),f&&(n=Qb(f[1]),N(b,n,"M",d,e)&&(c[n]=Cd(f[2])))}catch(x){}}return b.sort(S),b}function H(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ae("uterdir","Unterminated attribute, found '{0}' but no matching '{1}' found.",b,c);1==a.nodeType&&(a.hasAttribute(b)&&e++,a.hasAttribute(c)&&e--),d.push(a),a=a.nextSibling}while(e>0)}else d.push(a);return sd(d)}function I(a,b,c){return function(d,e,f,g,h){return e=H(e[0],b,c),a(d,e,f,g,h)}}function J(a,e,g,h,j,k,l,m,n){function o(a,b,c,d){a&&(c&&(a=I(a,c,d)),a.require=w.require,a.directiveName=z,(N===w||w.$$isolateScope)&&(a=Z(a,{isolateScope:!0})),l.push(a)),b&&(c&&(b=I(b,c,d)),b.require=w.require,b.directiveName=z,(N===w||w.$$isolateScope)&&(b=Z(b,{isolateScope:!0})),m.push(b))}function p(a,b,c,d){var e,g="data",h=!1;if(u(b)){for(;"^"==(e=b.charAt(0))||"?"==e;)b=b.substr(1),"^"==e&&(g="inheritedData"),h=h||"?"==e;if(e=null,d&&"data"===g&&(e=d[b]),e=e||c[g]("$"+b+"Controller"),!e&&!h)throw ae("ctreq","Controller '{0}', required by directive '{1}', can't be found!",b,a);return e}return x(b)&&(e=[],f(b,function(b){e.push(p(a,b,c,d))})),e}function q(a,b,h,j,k){function n(a,b){var d;return arguments.length<2&&(b=a,a=c),W&&(d=z),k(a,b,d)}var o,q,t,u,v,w,x,y,z={};if(o=e===h?g:K(g,new $(sd(h),g.$attr)),q=o.$$element,N){var A=/^\s*([@=&])(\??)\s*(\w*)\s*$/,B=sd(h);x=b.$new(!0),!P||P!==N&&P!==N.$$originalDirective?B.data("$isolateScopeNoTemplate",x):B.data("$isolateScope",x),D(B,"ng-isolate-scope"),f(N.scope,function(a,c){var e,f,g,h,i=a.match(A)||[],j=i[3]||c,k="?"==i[2],l=i[1];switch(x.$$isolateBindings[c]=l+j,l){case"@":o.$observe(j,function(a){x[c]=a}),o.$$observers[j].$$scope=b,o[j]&&(x[c]=d(o[j])(b));break;case"=":if(k&&!o[j])return;f=r(o[j]),h=f.literal?L:function(a,b){return a===b},g=f.assign||function(){throw e=x[c]=f(b),ae("nonassign","Expression '{0}' used with directive '{1}' is non-assignable!",o[j],N.name)},e=x[c]=f(b),x.$watch(function(){var a=f(b);return h(a,x[c])||(h(a,e)?g(b,a=x[c]):x[c]=a),e=a},null,f.literal);break;case"&":f=r(o[j]),x[c]=function(a){return f(b,a)};break;default:throw ae("iscp","Invalid isolate scope definition for directive '{0}'. Definition: {... {1}: '{2}' ...}",N.name,c,a)}})}for(y=k&&n,J&&f(J,function(a){var c,d={$scope:a===N||a.$$isolateScope?x:b,$element:q,$attrs:o,$transclude:y};w=a.controller,"@"==w&&(w=o[a.name]),c=s(w,d),z[a.name]=c,W||q.data("$"+a.name+"Controller",c),a.controllerAs&&(d.$scope[a.controllerAs]=c)}),t=0,u=l.length;u>t;t++)try{v=l[t],v(v.isolateScope?x:b,q,o,v.require&&p(v.directiveName,v.require,q,z),y)}catch(C){i(C,U(q))}var E=b;for(N&&(N.template||null===N.templateUrl)&&(E=x),a&&a(E,h.childNodes,c,k),t=m.length-1;t>=0;t--)try{v=m[t],v(v.isolateScope?x:b,q,o,v.require&&p(v.directiveName,v.require,q,z),y)}catch(C){i(C,U(q))}}n=n||{};for(var v,w,z,A,B,E,F=-Number.MAX_VALUE,J=n.controllerDirectives,N=n.newIsolateScopeDirective,P=n.templateDirective,S=n.nonTlbTranscludeDirective,V=!1,W=n.hasElementTranscludeDirective,X=g.$$element=sd(e),_=k,ab=h,bb=0,cb=a.length;cb>bb;bb++){w=a[bb];var eb=w.$$start,fb=w.$$end;if(eb&&(X=H(e,eb,fb)),A=c,F>w.priority)break;if((E=w.scope)&&(v=v||w,w.templateUrl||(T("new/isolated scope",N,w,X),t(E)&&(N=w))),z=w.name,!w.templateUrl&&w.controller&&(E=w.controller,J=J||{},T("'"+z+"' controller",J[z],w,X),J[z]=w),(E=w.transclude)&&(V=!0,w.$$tlb||(T("transclusion",S,w,X),S=w),"element"==E?(W=!0,F=w.priority,A=H(e,eb,fb),X=g.$$element=sd(b.createComment(" "+z+": "+g[z]+" ")),e=X[0],Y(j,sd(O(A)),e),ab=C(A,h,F,_&&_.name,{nonTlbTranscludeDirective:S})):(A=sd(qb(e)).contents(),X.empty(),ab=C(A,h))),w.template)if(T("template",P,w,X),P=w,E=y(w.template)?w.template(X,g):w.template,E=db(E),w.replace){if(_=w,A=mb(E)?[]:sd(Cd(E)),e=A[0],1!=A.length||1!==e.nodeType)throw ae("tplrt","Template for directive '{0}' must have exactly one root element. {1}",z,"");Y(j,X,e);var gb={$attr:{}},hb=G(e,[],gb),ib=a.splice(bb+1,a.length-(bb+1));N&&M(hb),a=a.concat(hb).concat(ib),Q(g,gb),cb=a.length}else X.html(E);if(w.templateUrl)T("template",P,w,X),P=w,w.replace&&(_=w),q=R(a.splice(bb,a.length-bb),X,g,j,ab,l,m,{controllerDirectives:J,newIsolateScopeDirective:N,templateDirective:P,nonTlbTranscludeDirective:S}),cb=a.length;else if(w.compile)try{B=w.compile(X,g,ab),y(B)?o(null,B,eb,fb):B&&o(B.pre,B.post,eb,fb)}catch(jb){i(jb,U(X))}w.terminal&&(q.terminal=!0,F=Math.max(F,w.priority))}return q.scope=v&&v.scope===!0,q.transclude=V&&ab,n.hasElementTranscludeDirective=W,q}function M(a){for(var b=0,c=a.length;c>b;b++)a[b]=n(a[b],{$$isolateScope:!0})}function N(b,d,f,h,j,k,l){if(d===j)return null;var m=null;if(e.hasOwnProperty(d))for(var o,p=a.get(d+g),q=0,r=p.length;r>q;q++)try{o=p[q],(h===c||h>o.priority)&&-1!=o.restrict.indexOf(f)&&(k&&(o=n(o,{$$start:k,$$end:l})),b.push(o),m=o)}catch(s){i(s)}return m}function Q(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;f(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))}),f(b,function(b,f){"class"==f?(D(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 R(a,b,c,d,e,g,h,i){var j,k,n=[],p=b[0],q=a.shift(),r=l({},q,{templateUrl:null,transclude:null,replace:null,$$originalDirective:q}),s=y(q.templateUrl)?q.templateUrl(b,c):q.templateUrl;return b.empty(),m.get(z.getTrustedResourceUrl(s),{cache:o}).success(function(l){var m,o,u,v;if(l=db(l),q.replace){if(u=mb(l)?[]:sd(Cd(l)),m=u[0],1!=u.length||1!==m.nodeType)throw ae("tplrt","Template for directive '{0}' must have exactly one root element. {1}",q.name,s);o={$attr:{}},Y(d,b,m);var w=G(m,[],o);t(q.scope)&&M(w),a=w.concat(a),Q(c,o)}else m=p,b.html(l);for(a.unshift(r),j=J(a,m,c,e,b,q,g,h,i),f(d,function(a,c){a==m&&(d[c]=b[0])}),k=E(b[0].childNodes,e);n.length;){var x=n.shift(),y=n.shift(),z=n.shift(),A=n.shift(),B=b[0];if(y!==p){var C=y.className;i.hasElementTranscludeDirective&&q.replace||(B=qb(m)),Y(z,sd(y),B),D(sd(B),C)}v=j.transclude?F(x,j.transclude):A,j(k,x,B,d,v)}n=null}).error(function(a,b,c,d){throw ae("tpload","Failed to load template: {0}",d.url)}),function(a,b,c,d,e){n?(n.push(b),n.push(c),n.push(d),n.push(e)):j(k,b,c,d,e)}}function S(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.index}function T(a,b,c,d){if(b)throw ae("multidir","Multiple directives [{0}, {1}] asking for {2} on: {3}",b.name,c.name,a,U(d))}function V(a,b){var c=d(b,!0);c&&a.push({priority:0,compile:q(function(a,b){var d=b.parent(),e=d.data("$binding")||[];e.push(c),D(d.data("$binding",e),"ng-binding"),a.$watch(c,function(a){b[0].nodeValue=a})})})}function W(a,b){if("srcdoc"==b)return z.HTML;var c=vd(a);return"xlinkHref"==b||"FORM"==c&&"action"==b||"IMG"!=c&&("src"==b||"ngSrc"==b)?z.RESOURCE_URL:void 0}function X(a,b,c,e){var f=d(c,!0);if(f){if("multiple"===e&&"SELECT"===vd(a))throw ae("selmulti","Binding to the 'multiple' attribute is not supported. Element: {0}",U(a));b.push({priority:100,compile:function(){return{pre:function(b,c,g){var h=g.$$observers||(g.$$observers={});if(k.test(e))throw ae("nodomevents","Interpolations for HTML DOM event attributes are disallowed.  Please use the ng- versions (such as ng-click instead of onclick) instead.");f=d(g[e],!0,W(a,e)),f&&(g[e]=f(b),(h[e]||(h[e]=[])).$$inter=!0,(g.$$observers&&g.$$observers[e].$$scope||b).$watch(f,function(a,b){"class"===e&&a!=b?g.$updateClass(a,b):g.$set(e,a)}))}}}})}}function Y(a,c,d){var e,f,g=c[0],h=c.length,i=g.parentNode;if(a)for(e=0,f=a.length;f>e;e++)if(a[e]==g){a[e++]=d;for(var j=e,k=j+h-1,l=a.length;l>j;j++,k++)l>k?a[j]=a[k]:delete a[j];a.length-=h-1;break}i&&i.replaceChild(d,g);var m=b.createDocumentFragment();m.appendChild(g),d[sd.expando]=g[sd.expando];for(var n=1,o=c.length;o>n;n++){var p=c[n];sd(p).remove(),m.appendChild(p),delete c[n]}c[0]=d,c.length=1}function Z(a,b){return l(function(){return a.apply(null,arguments)},a,b)}var $=function(a,b){this.$$element=a,this.$attr=b||{}};$.prototype={$normalize:Qb,$addClass:function(a){a&&a.length>0&&A.addClass(this.$$element,a)},$removeClass:function(a){a&&a.length>0&&A.removeClass(this.$$element,a)},$updateClass:function(a,b){var c=Rb(a,b),d=Rb(b,a);0===c.length?A.removeClass(this.$$element,d):0===d.length?A.addClass(this.$$element,c):A.setClass(this.$$element,c,d)},$set:function(a,b,d,e){var g,h=Db(this.$$element[0],a);h&&(this.$$element.prop(a,b),e=h),this[a]=b,e?this.$attr[a]=e:(e=this.$attr[a],e||(this.$attr[a]=e=ab(a,"-"))),g=vd(this.$$element),("A"===g&&"href"===a||"IMG"===g&&"src"===a)&&(this[a]=b=B(b,"src"===a)),d!==!1&&(null===b||b===c?this.$$element.removeAttr(e):this.$$element.attr(e,b));var j=this.$$observers;j&&f(j[a],function(a){try{a(b)}catch(c){i(c)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers={}),e=d[a]||(d[a]=[]);return e.push(b),v.$evalAsync(function(){e.$$inter||b(c[a])}),b}};var _=d.startSymbol(),bb=d.endSymbol(),db="{{"==_||"}}"==bb?p:function(a){return a.replace(/\{\{/g,_).replace(/}}/g,bb)},eb=/^ngAttr[A-Z]/;return C}]}function Qb(a){return kb(a.replace(be,""))}function Rb(a,b){var c="",d=a.split(/\s+/),e=b.split(/\s+/);a:for(var f=0;f<d.length;f++){for(var g=d[f],h=0;h<e.length;h++)if(g==e[h])continue a;c+=(c.length>0?" ":"")+g}return c}function Sb(){var a={},b=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(b,c){eb(b,"controller"),t(b)?l(a,b):a[b]=c},this.$get=["$injector","$window",function(c,e){return function(f,g){var h,i,j,k;if(u(f)&&(i=f.match(b),j=i[1],k=i[3],f=a.hasOwnProperty(j)?a[j]:fb(g.$scope,j,!0)||fb(e,j,!0),db(f,j,!0)),h=c.instantiate(f,g),k){if(!g||"object"!=typeof g.$scope)throw d("$controller")("noscp","Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",j||f.name,k);g.$scope[k]=h}return h}}]}function Tb(){this.$get=["$window",function(a){return sd(a.document)}]}function Ub(){this.$get=["$log",function(a){return function(){a.error.apply(a,arguments)}}]}function Vb(a){var b,c,d,e={};return a?(f(a.split("\n"),function(a){d=a.indexOf(":"),b=md(Cd(a.substr(0,d))),c=Cd(a.substr(d+1)),b&&(e[b]?e[b]+=", "+c:e[b]=c)}),e):e}function Wb(a){var b=t(a)?a:c;return function(c){return b||(b=Vb(a)),c?b[md(c)]||null:b}}function Xb(a,b,c){return y(c)?c(a,b):(f(c,function(c){a=c(a,b)}),a)}function Yb(a){return a>=200&&300>a}function Zb(){var a=/^\s*(\[|\{[^\{])/,b=/[\}\]]\s*$/,d=/^\)\]\}',?\n/,e={"Content-Type":"application/json;charset=utf-8"},g=this.defaults={transformResponse:[function(c){return u(c)&&(c=c.replace(d,""),a.test(c)&&b.test(c)&&(c=S(c))),c}],transformRequest:[function(a){return!t(a)||C(a)||D(a)?a:R(a)}],headers:{common:{Accept:"application/json, text/plain, */*"},post:K(e),put:K(e),patch:K(e)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},i=this.interceptors=[],j=this.responseInterceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(a,b,d,e,k,m){function n(a){function d(a){var b=l({},a,{data:Xb(a.data,a.headers,h.transformResponse)});
+return Yb(a.status)?b:k.reject(b)}function e(a){function b(a){var b;f(a,function(c,d){y(c)&&(b=c(),null!=b?a[d]=b:delete a[d])})}var c,d,e,h=g.headers,i=l({},a.headers);h=l({},h.common,h[md(a.method)]),b(h),b(i);a:for(c in h){d=md(c);for(e in i)if(md(e)===d)continue a;i[c]=h[c]}return i}var h={method:"get",transformRequest:g.transformRequest,transformResponse:g.transformResponse},i=e(a);l(h,a),h.headers=i,h.method=od(h.method);var j=Nc(h.url)?b.cookies()[h.xsrfCookieName||g.xsrfCookieName]:c;j&&(i[h.xsrfHeaderName||g.xsrfHeaderName]=j);var m=function(a){i=a.headers;var b=Xb(a.data,Wb(i),a.transformRequest);return r(a.data)&&f(i,function(a,b){"content-type"===md(b)&&delete i[b]}),r(a.withCredentials)&&!r(g.withCredentials)&&(a.withCredentials=g.withCredentials),q(a,b,i).then(d,d)},n=[m,c],o=k.when(h);for(f(z,function(a){(a.request||a.requestError)&&n.unshift(a.request,a.requestError),(a.response||a.responseError)&&n.push(a.response,a.responseError)});n.length;){var p=n.shift(),s=n.shift();o=o.then(p,s)}return o.success=function(a){return o.then(function(b){a(b.data,b.status,b.headers,h)}),o},o.error=function(a){return o.then(null,function(b){a(b.data,b.status,b.headers,h)}),o},o}function o(){f(arguments,function(a){n[a]=function(b,c){return n(l(c||{},{method:a,url:b}))}})}function p(){f(arguments,function(a){n[a]=function(b,c,d){return n(l(d||{},{method:a,url:b,data:c}))}})}function q(b,c,d){function f(a,b,c,d){j&&(Yb(a)?j.put(p,[a,b,Vb(c),d]):j.remove(p)),h(b,a,c,d),e.$$phase||e.$apply()}function h(a,c,d,e){c=Math.max(c,0),(Yb(c)?m.resolve:m.reject)({data:a,status:c,headers:Wb(d),config:b,statusText:e})}function i(){var a=H(n.pendingRequests,b);-1!==a&&n.pendingRequests.splice(a,1)}var j,l,m=k.defer(),o=m.promise,p=v(b.url,b.params);if(n.pendingRequests.push(b),o.then(i,i),(b.cache||g.cache)&&b.cache!==!1&&"GET"==b.method&&(j=t(b.cache)?b.cache:t(g.cache)?g.cache:w),j)if(l=j.get(p),s(l)){if(l.then)return l.then(i,i),l;x(l)?h(l[1],l[0],K(l[2]),l[3]):h(l,200,{},"OK")}else j.put(p,o);return r(l)&&a(b.method,p,c,f,d,b.timeout,b.withCredentials,b.responseType),o}function v(a,b){if(!b)return a;var c=[];return h(b,function(a,b){null===a||r(a)||(x(a)||(a=[a]),f(a,function(a){t(a)&&(a=R(a)),c.push(Z(b)+"="+Z(a))}))}),c.length>0&&(a+=(-1==a.indexOf("?")?"?":"&")+c.join("&")),a}var w=d("$http"),z=[];return f(i,function(a){z.unshift(u(a)?m.get(a):m.invoke(a))}),f(j,function(a,b){var c=u(a)?m.get(a):m.invoke(a);z.splice(b,0,{response:function(a){return c(k.when(a))},responseError:function(a){return c(k.reject(a))}})}),n.pendingRequests=[],o("get","delete","head","jsonp"),p("post","put"),n.defaults=g,n}]}function $b(b){if(8>=rd&&(!b.match(/^(get|post|head|put|delete|options)$/i)||!a.XMLHttpRequest))return new a.ActiveXObject("Microsoft.XMLHTTP");if(a.XMLHttpRequest)return new a.XMLHttpRequest;throw d("$httpBackend")("noxhr","This browser does not support XMLHttpRequest.")}function _b(){this.$get=["$browser","$window","$document",function(a,b,c){return ac(a,$b,a.defer,b.angular.callbacks,c[0])}]}function ac(a,b,c,d,e){function g(a,b,c){var f=e.createElement("script"),g=null;return f.type="text/javascript",f.src=a,f.async=!0,g=function(a){Jd(f,"load",g),Jd(f,"error",g),e.body.removeChild(f),f=null;var h=-1,i="unknown";a&&("load"!==a.type||d[b].called||(a={type:"error"}),i=a.type,h="error"===a.type?404:200),c&&c(h,i)},Id(f,"load",g),Id(f,"error",g),8>=rd&&(f.onreadystatechange=function(){u(f.readyState)&&/loaded|complete/.test(f.readyState)&&(f.onreadystatechange=null,g({type:"load"}))}),e.body.appendChild(f),g}var h=-1;return function(e,i,j,k,l,m,n,p){function q(){t=h,v&&v(),w&&w.abort()}function r(b,d,e,f,g){y&&c.cancel(y),v=w=null,0===d&&(d=e?200:"file"==Mc(i).protocol?404:0),d=1223===d?204:d,g=g||"",b(d,e,f,g),a.$$completeOutstandingRequest(o)}var t;if(a.$$incOutstandingRequestCount(),i=i||a.url(),"jsonp"==md(e)){var u="_"+(d.counter++).toString(36);d[u]=function(a){d[u].data=a,d[u].called=!0};var v=g(i.replace("JSON_CALLBACK","angular.callbacks."+u),u,function(a,b){r(k,a,d[u].data,"",b),d[u]=o})}else{var w=b(e);if(w.open(e,i,!0),f(l,function(a,b){s(a)&&w.setRequestHeader(b,a)}),w.onreadystatechange=function(){if(w&&4==w.readyState){var a=null,b=null;t!==h&&(a=w.getAllResponseHeaders(),b="response"in w?w.response:w.responseText),r(k,t||w.status,b,a,w.statusText||"")}},n&&(w.withCredentials=!0),p)try{w.responseType=p}catch(x){if("json"!==p)throw x}w.send(j||null)}if(m>0)var y=c(q,m);else m&&m.then&&m.then(q)}}function bc(){var a="{{",b="}}";this.startSymbol=function(b){return b?(a=b,this):a},this.endSymbol=function(a){return a?(b=a,this):b},this.$get=["$parse","$exceptionHandler","$sce",function(c,d,e){function f(f,i,j){for(var k,l,m,n,o=0,p=[],q=f.length,r=!1,s=[];q>o;)-1!=(k=f.indexOf(a,o))&&-1!=(l=f.indexOf(b,k+g))?(o!=k&&p.push(f.substring(o,k)),p.push(m=c(n=f.substring(k+g,l))),m.exp=n,o=l+h,r=!0):(o!=q&&p.push(f.substring(o)),o=q);if((q=p.length)||(p.push(""),q=1),j&&p.length>1)throw ce("noconcat","Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required.  See http://docs.angularjs.org/api/ng.$sce",f);return!i||r?(s.length=q,m=function(a){try{for(var b,c=0,g=q;g>c;c++){if("function"==typeof(b=p[c]))if(b=b(a),b=j?e.getTrusted(j,b):e.valueOf(b),null==b)b="";else switch(typeof b){case"string":break;case"number":b=""+b;break;default:b=R(b)}s[c]=b}return s.join("")}catch(h){var i=ce("interr","Can't interpolate: {0}\n{1}",f,h.toString());d(i)}},m.exp=f,m.parts=p,m):void 0}var g=a.length,h=b.length;return f.startSymbol=function(){return a},f.endSymbol=function(){return b},f}]}function cc(){this.$get=["$rootScope","$window","$q",function(a,b,c){function d(d,f,g,h){var i=b.setInterval,j=b.clearInterval,k=c.defer(),l=k.promise,m=0,n=s(h)&&!h;return g=s(g)?g:0,l.then(null,null,d),l.$$intervalId=i(function(){k.notify(m++),g>0&&m>=g&&(k.resolve(m),j(l.$$intervalId),delete e[l.$$intervalId]),n||a.$apply()},f),e[l.$$intervalId]=k,l}var e={};return d.cancel=function(a){return a&&a.$$intervalId in e?(e[a.$$intervalId].reject("canceled"),clearInterval(a.$$intervalId),delete e[a.$$intervalId],!0):!1},d}]}function dc(){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:"¤",posSuf:"",negPre:"(¤",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),SHORTMONTH:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),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"},pluralCat:function(a){return 1===a?"one":"other"}}}}function ec(a){for(var b=a.split("/"),c=b.length;c--;)b[c]=Y(b[c]);return b.join("/")}function fc(a,b,c){var d=Mc(a,c);b.$$protocol=d.protocol,b.$$host=d.hostname,b.$$port=m(d.port)||ee[d.protocol]||null}function gc(a,b,c){var d="/"!==a.charAt(0);d&&(a="/"+a);var e=Mc(a,c);b.$$path=decodeURIComponent(d&&"/"===e.pathname.charAt(0)?e.pathname.substring(1):e.pathname),b.$$search=W(e.search),b.$$hash=decodeURIComponent(e.hash),b.$$path&&"/"!=b.$$path.charAt(0)&&(b.$$path="/"+b.$$path)}function hc(a,b){return 0===b.indexOf(a)?b.substr(a.length):void 0}function ic(a){var b=a.indexOf("#");return-1==b?a:a.substr(0,b)}function jc(a){return a.substr(0,ic(a).lastIndexOf("/")+1)}function kc(a){return a.substring(0,a.indexOf("/",a.indexOf("//")+2))}function lc(a,b){this.$$html5=!0,b=b||"";var d=jc(a);fc(a,this,a),this.$$parse=function(b){var c=hc(d,b);if(!u(c))throw fe("ipthprfx",'Invalid url "{0}", missing path prefix "{1}".',b,d);gc(c,this,a),this.$$path||(this.$$path="/"),this.$$compose()},this.$$compose=function(){var a=X(this.$$search),b=this.$$hash?"#"+Y(this.$$hash):"";this.$$url=ec(this.$$path)+(a?"?"+a:"")+b,this.$$absUrl=d+this.$$url.substr(1)},this.$$rewrite=function(e){var f,g;return(f=hc(a,e))!==c?(g=f,(f=hc(b,f))!==c?d+(hc("/",f)||f):a+g):(f=hc(d,e))!==c?d+f:d==e+"/"?d:void 0}}function mc(a,b){var c=jc(a);fc(a,this,a),this.$$parse=function(d){function e(a,b,c){var d,e=/^\/[A-Z]:(\/.*)/;return 0===b.indexOf(c)&&(b=b.replace(c,"")),e.exec(b)?a:(d=e.exec(a),d?d[1]:a)}var f=hc(a,d)||hc(c,d),g="#"==f.charAt(0)?hc(b,f):this.$$html5?f:"";if(!u(g))throw fe("ihshprfx",'Invalid url "{0}", missing hash prefix "{1}".',d,b);gc(g,this,a),this.$$path=e(this.$$path,g,a),this.$$compose()},this.$$compose=function(){var c=X(this.$$search),d=this.$$hash?"#"+Y(this.$$hash):"";this.$$url=ec(this.$$path)+(c?"?"+c:"")+d,this.$$absUrl=a+(this.$$url?b+this.$$url:"")},this.$$rewrite=function(b){return ic(a)==ic(b)?b:void 0}}function nc(a,b){this.$$html5=!0,mc.apply(this,arguments);var c=jc(a);this.$$rewrite=function(d){var e;return a==ic(d)?d:(e=hc(c,d))?a+b+e:c===d+"/"?c:void 0},this.$$compose=function(){var c=X(this.$$search),d=this.$$hash?"#"+Y(this.$$hash):"";this.$$url=ec(this.$$path)+(c?"?"+c:"")+d,this.$$absUrl=a+b+this.$$url}}function oc(a){return function(){return this[a]}}function pc(a,b){return function(c){return r(c)?this[a]:(this[a]=b(c),this.$$compose(),this)}}function qc(){var b="",c=!1;this.hashPrefix=function(a){return s(a)?(b=a,this):b},this.html5Mode=function(a){return s(a)?(c=a,this):c},this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(d,e,f,g){function h(a){d.$broadcast("$locationChangeSuccess",i.absUrl(),a)}var i,j,k,l=e.baseHref(),m=e.url();c?(k=kc(m)+(l||"/"),j=f.history?lc:nc):(k=ic(m),j=mc),i=new j(k,"#"+b),i.$$parse(i.$$rewrite(m)),g.on("click",function(c){if(!c.ctrlKey&&!c.metaKey&&2!=c.which){for(var f=sd(c.target);"a"!==md(f[0].nodeName);)if(f[0]===g[0]||!(f=f.parent())[0])return;var h=f.prop("href");if(t(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=Mc(h.animVal).href),j===nc){var l=f.attr("href")||f.attr("xlink:href");if(l.indexOf("://")<0){var m="#"+b;if("/"==l[0])h=k+m+l;else if("#"==l[0])h=k+m+(i.path()||"/")+l;else{for(var n=i.path().split("/"),o=l.split("/"),p=0;p<o.length;p++)"."!=o[p]&&(".."==o[p]?n.pop():o[p].length&&n.push(o[p]));h=k+m+n.join("/")}}}var q=i.$$rewrite(h);h&&!f.attr("target")&&q&&!c.isDefaultPrevented()&&(c.preventDefault(),q!=e.url()&&(i.$$parse(q),d.$apply(),a.angular["ff-684208-preventDefault"]=!0))}}),i.absUrl()!=m&&e.url(i.absUrl(),!0),e.onUrlChange(function(a){i.absUrl()!=a&&(d.$evalAsync(function(){var b=i.absUrl();i.$$parse(a),d.$broadcast("$locationChangeStart",a,b).defaultPrevented?(i.$$parse(b),e.url(b)):h(b)}),d.$$phase||d.$digest())});var n=0;return d.$watch(function(){var a=e.url(),b=i.$$replace;return n&&a==i.absUrl()||(n++,d.$evalAsync(function(){d.$broadcast("$locationChangeStart",i.absUrl(),a).defaultPrevented?i.$$parse(a):(e.url(i.absUrl(),b),h(a))})),i.$$replace=!1,n}),i}]}function rc(){var a=!0,b=this;this.debugEnabled=function(b){return s(b)?(a=b,this):a},this.$get=["$window",function(c){function d(a){return a instanceof 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)),a}function e(a){var b=c.console||{},e=b[a]||b.log||o,g=!1;try{g=!!e.apply}catch(h){}return g?function(){var a=[];return f(arguments,function(b){a.push(d(b))}),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(){a&&c.apply(b,arguments)}}()}}]}function sc(a,b){if("constructor"===a)throw he("isecfld",'Referencing "constructor" field in Angular expressions is disallowed! Expression: {0}',b);return a}function tc(a,b){if(a){if(a.constructor===a)throw he("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",b);if(a.document&&a.location&&a.alert&&a.setInterval)throw he("isecwindow","Referencing the Window in Angular expressions is disallowed! Expression: {0}",b);if(a.children&&(a.nodeName||a.prop&&a.attr&&a.find))throw he("isecdom","Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}",b)}return a}function uc(a,b,d,e,f){f=f||{};for(var g,h=b.split("."),i=0;h.length>1;i++){g=sc(h.shift(),e);var j=a[g];j||(j={},a[g]=j),a=j,a.then&&f.unwrapPromises&&(ge(e),"$$v"in a||!function(a){a.then(function(b){a.$$v=b})}(a),a.$$v===c&&(a.$$v={}),a=a.$$v)}return g=sc(h.shift(),e),a[g]=d,d}function vc(a,b,d,e,f,g,h){return sc(a,g),sc(b,g),sc(d,g),sc(e,g),sc(f,g),h.unwrapPromises?function(h,i){var j,k=i&&i.hasOwnProperty(a)?i:h;return null==k?k:(k=k[a],k&&k.then&&(ge(g),"$$v"in k||(j=k,j.$$v=c,j.then(function(a){j.$$v=a})),k=k.$$v),b?null==k?c:(k=k[b],k&&k.then&&(ge(g),"$$v"in k||(j=k,j.$$v=c,j.then(function(a){j.$$v=a})),k=k.$$v),d?null==k?c:(k=k[d],k&&k.then&&(ge(g),"$$v"in k||(j=k,j.$$v=c,j.then(function(a){j.$$v=a})),k=k.$$v),e?null==k?c:(k=k[e],k&&k.then&&(ge(g),"$$v"in k||(j=k,j.$$v=c,j.then(function(a){j.$$v=a})),k=k.$$v),f?null==k?c:(k=k[f],k&&k.then&&(ge(g),"$$v"in k||(j=k,j.$$v=c,j.then(function(a){j.$$v=a})),k=k.$$v),k):k):k):k):k)}:function(g,h){var i=h&&h.hasOwnProperty(a)?h:g;return null==i?i:(i=i[a],b?null==i?c:(i=i[b],d?null==i?c:(i=i[d],e?null==i?c:(i=i[e],f?null==i?c:i=i[f]:i):i):i):i)}}function wc(a,b){return sc(a,b),function(b,d){return null==b?c:(d&&d.hasOwnProperty(a)?d:b)[a]}}function xc(a,b,d){return sc(a,d),sc(b,d),function(d,e){return null==d?c:(d=(e&&e.hasOwnProperty(a)?e:d)[a],null==d?c:d[b])}}function yc(a,b,d){if(ne.hasOwnProperty(a))return ne[a];var e,g=a.split("."),h=g.length;if(b.unwrapPromises||1!==h)if(b.unwrapPromises||2!==h)if(b.csp)e=6>h?vc(g[0],g[1],g[2],g[3],g[4],d,b):function(a,e){var f,i=0;do f=vc(g[i++],g[i++],g[i++],g[i++],g[i++],d,b)(a,e),e=c,a=f;while(h>i);return f};else{var i="var p;\n";f(g,function(a,c){sc(a,d),i+="if(s == null) return undefined;\ns="+(c?"s":'((k&&k.hasOwnProperty("'+a+'"))?k:s)')+'["'+a+'"];\n'+(b.unwrapPromises?'if (s && s.then) {\n pw("'+d.replace(/(["\r\n])/g,"\\$1")+'");\n if (!("$$v" in s)) {\n p=s;\n p.$$v = undefined;\n p.then(function(v) {p.$$v=v;});\n}\n s=s.$$v\n}\n':"")}),i+="return s;";var j=new Function("s","k","pw",i);j.toString=q(i),e=b.unwrapPromises?function(a,b){return j(a,b,ge)}:j}else e=xc(g[0],g[1],d);else e=wc(g[0],d);return"hasOwnProperty"!==a&&(ne[a]=e),e}function zc(){var a={},b={csp:!1,unwrapPromises:!1,logPromiseWarnings:!0};this.unwrapPromises=function(a){return s(a)?(b.unwrapPromises=!!a,this):b.unwrapPromises},this.logPromiseWarnings=function(a){return s(a)?(b.logPromiseWarnings=a,this):b.logPromiseWarnings},this.$get=["$filter","$sniffer","$log",function(c,d,e){return b.csp=d.csp,ge=function(a){b.logPromiseWarnings&&!ie.hasOwnProperty(a)&&(ie[a]=!0,e.warn("[$parse] Promise found in the expression `"+a+"`. Automatic unwrapping of promises in Angular expressions is deprecated."))},function(d){var e;switch(typeof d){case"string":if(a.hasOwnProperty(d))return a[d];var f=new le(b),g=new me(f,c,b);return e=g.parse(d),"hasOwnProperty"!==d&&(a[d]=e),e;case"function":return d;default:return o}}}]}function Ac(){this.$get=["$rootScope","$exceptionHandler",function(a,b){return Bc(function(b){a.$evalAsync(b)},b)}]}function Bc(a,b){function d(a){return a}function e(a){return j(a)}function g(a){var b=h(),c=0,d=x(a)?[]:{};return f(a,function(a,e){c++,i(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),b.promise}var h=function(){var f,g,j=[];return g={resolve:function(b){if(j){var d=j;j=c,f=i(b),d.length&&a(function(){for(var a,b=0,c=d.length;c>b;b++)a=d[b],f.then(a[0],a[1],a[2])})}},reject:function(a){g.resolve(k(a))},notify:function(b){if(j){var c=j;j.length&&a(function(){for(var a,d=0,e=c.length;e>d;d++)a=c[d],a[2](b)})}},promise:{then:function(a,c,g){var i=h(),k=function(c){try{i.resolve((y(a)?a:d)(c))}catch(e){i.reject(e),b(e)}},l=function(a){try{i.resolve((y(c)?c:e)(a))}catch(d){i.reject(d),b(d)}},m=function(a){try{i.notify((y(g)?g:d)(a))}catch(c){b(c)}};return j?j.push([k,l,m]):f.then(k,l,m),i.promise},"catch":function(a){return this.then(null,a)},"finally":function(a){function b(a,b){var c=h();return b?c.resolve(a):c.reject(a),c.promise}function c(c,e){var f=null;try{f=(a||d)()}catch(g){return b(g,!1)}return f&&y(f.then)?f.then(function(){return b(c,e)},function(a){return b(a,!1)}):b(c,e)}return this.then(function(a){return c(a,!0)},function(a){return c(a,!1)})}}}},i=function(b){return b&&y(b.then)?b:{then:function(c){var d=h();return a(function(){d.resolve(c(b))}),d.promise}}},j=function(a){var b=h();return b.reject(a),b.promise},k=function(c){return{then:function(d,f){var g=h();return a(function(){try{g.resolve((y(f)?f:e)(c))}catch(a){g.reject(a),b(a)}}),g.promise}}},l=function(c,f,g,k){var l,m=h(),n=function(a){try{return(y(f)?f:d)(a)}catch(c){return b(c),j(c)}},o=function(a){try{return(y(g)?g:e)(a)}catch(c){return b(c),j(c)}},p=function(a){try{return(y(k)?k:d)(a)}catch(c){b(c)}};return a(function(){i(c).then(function(a){l||(l=!0,m.resolve(i(a).then(n,o,p)))},function(a){l||(l=!0,m.resolve(o(a)))},function(a){l||m.notify(p(a))})}),m.promise};return{defer:h,reject:j,when:l,all:g}}function Cc(){this.$get=["$window","$timeout",function(a,b){var c=a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame,d=a.cancelAnimationFrame||a.webkitCancelAnimationFrame||a.mozCancelAnimationFrame||a.webkitCancelRequestAnimationFrame,e=!!c,f=e?function(a){var b=c(a);return function(){d(b)}}:function(a){var c=b(a,16.66,!1);return function(){b.cancel(c)}};return f.supported=e,f}]}function Dc(){var a=10,b=d("$rootScope"),c=null;this.digestTtl=function(b){return arguments.length&&(a=b),a},this.$get=["$injector","$exceptionHandler","$parse","$browser",function(d,g,h,i){function k(){this.$id=j(),this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null,this["this"]=this.$root=this,this.$$destroyed=!1,this.$$asyncQueue=[],this.$$postDigestQueue=[],this.$$listeners={},this.$$listenerCount={},this.$$isolateBindings={}}function l(a){if(r.$$phase)throw b("inprog","{0} already in progress",r.$$phase);r.$$phase=a}function m(){r.$$phase=null}function n(a,b){var c=h(a);return db(c,b),c}function p(a,b,c){do a.$$listenerCount[c]-=b,0===a.$$listenerCount[c]&&delete a.$$listenerCount[c];while(a=a.$parent)}function q(){}k.prototype={constructor:k,$new:function(a){var b;return a?(b=new k,b.$root=this.$root,b.$$asyncQueue=this.$$asyncQueue,b.$$postDigestQueue=this.$$postDigestQueue):(this.$$childScopeClass||(this.$$childScopeClass=function(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null,this.$$listeners={},this.$$listenerCount={},this.$id=j(),this.$$childScopeClass=null},this.$$childScopeClass.prototype=this),b=new this.$$childScopeClass),b["this"]=b,b.$parent=this,b.$$prevSibling=this.$$childTail,this.$$childHead?(this.$$childTail.$$nextSibling=b,this.$$childTail=b):this.$$childHead=this.$$childTail=b,b},$watch:function(a,b,d){var e=this,f=n(a,"watch"),g=e.$$watchers,h={fn:b,last:q,get:f,exp:a,eq:!!d};if(c=null,!y(b)){var i=n(b||o,"listener");h.fn=function(a,b,c){i(c)}}if("string"==typeof a&&f.constant){var j=h.fn;h.fn=function(a,b,c){j.call(this,a,b,c),I(g,h)}}return g||(g=e.$$watchers=[]),g.unshift(h),function(){I(g,h),c=null}},$watchCollection:function(a,b){function c(){f=m(j);var a,b;if(t(f))if(e(f)){g!==n&&(g=n,q=g.length=0,l++),a=f.length,q!==a&&(l++,g.length=q=a);for(var c=0;a>c;c++){var d=g[c]!==g[c]&&f[c]!==f[c];d||g[c]===f[c]||(l++,g[c]=f[c])}}else{g!==o&&(g=o={},q=0,l++),a=0;for(b in f)f.hasOwnProperty(b)&&(a++,g.hasOwnProperty(b)?g[b]!==f[b]&&(l++,g[b]=f[b]):(q++,g[b]=f[b],l++));if(q>a){l++;for(b in g)g.hasOwnProperty(b)&&!f.hasOwnProperty(b)&&(q--,delete g[b])}}else g!==f&&(g=f,l++);return l}function d(){if(p?(p=!1,b(f,f,j)):b(f,i,j),k)if(t(f))if(e(f)){i=new Array(f.length);for(var a=0;a<f.length;a++)i[a]=f[a]}else{i={};for(var c in f)nd.call(f,c)&&(i[c]=f[c])}else i=f}var f,g,i,j=this,k=b.length>1,l=0,m=h(a),n=[],o={},p=!0,q=0;return this.$watch(c,d)},$digest:function(){var d,e,f,h,i,j,k,n,o,p,r,s=this.$$asyncQueue,t=this.$$postDigestQueue,u=a,v=this,w=[];l("$digest"),c=null;do{for(j=!1,n=v;s.length;){try{r=s.shift(),r.scope.$eval(r.expression)}catch(x){m(),g(x)}c=null}a:do{if(h=n.$$watchers)for(i=h.length;i--;)try{if(d=h[i])if((e=d.get(n))===(f=d.last)||(d.eq?L(e,f):"number"==typeof e&&"number"==typeof f&&isNaN(e)&&isNaN(f))){if(d===c){j=!1;break a}}else j=!0,c=d,d.last=d.eq?J(e,null):e,d.fn(e,f===q?e:f,n),5>u&&(o=4-u,w[o]||(w[o]=[]),p=y(d.exp)?"fn: "+(d.exp.name||d.exp.toString()):d.exp,p+="; newVal: "+R(e)+"; oldVal: "+R(f),w[o].push(p))}catch(x){m(),g(x)}if(!(k=n.$$childHead||n!==v&&n.$$nextSibling))for(;n!==v&&!(k=n.$$nextSibling);)n=n.$parent}while(n=k);if((j||s.length)&&!u--)throw m(),b("infdig","{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}",a,R(w))}while(j||s.length);for(m();t.length;)try{t.shift()()}catch(x){g(x)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy"),this.$$destroyed=!0,this!==r&&(f(this.$$listenerCount,P(null,p,this)),a.$$childHead==this&&(a.$$childHead=this.$$nextSibling),a.$$childTail==this&&(a.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=null,this.$$listeners={},this.$$watchers=this.$$asyncQueue=this.$$postDigestQueue=[],this.$destroy=this.$digest=this.$apply=o,this.$on=this.$watch=function(){return o})}},$eval:function(a,b){return h(a)(this,b)},$evalAsync:function(a){r.$$phase||r.$$asyncQueue.length||i.defer(function(){r.$$asyncQueue.length&&r.$digest()}),this.$$asyncQueue.push({scope:this,expression:a})},$$postDigest:function(a){this.$$postDigestQueue.push(a)},$apply:function(a){try{return l("$apply"),this.$eval(a)}catch(b){g(b)}finally{m();try{r.$digest()}catch(b){throw g(b),b}}},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]),c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){c[H(c,b)]=null,p(e,1,a)}},$emit:function(a){var b,c,d,e=[],f=this,h=!1,i={name:a,targetScope:f,stopPropagation:function(){h=!0},preventDefault:function(){i.defaultPrevented=!0},defaultPrevented:!1},j=N([i],arguments,1);do{for(b=f.$$listeners[a]||e,i.currentScope=f,c=0,d=b.length;d>c;c++)if(b[c])try{b[c].apply(null,j)}catch(k){g(k)}else b.splice(c,1),c--,d--;if(h)return i;f=f.$parent}while(f);return i},$broadcast:function(a){for(var b,c,d,e=this,f=e,h=e,i={name:a,targetScope:e,preventDefault:function(){i.defaultPrevented=!0},defaultPrevented:!1},j=N([i],arguments,1);f=h;){for(i.currentScope=f,b=f.$$listeners[a]||[],c=0,d=b.length;d>c;c++)if(b[c])try{b[c].apply(null,j)}catch(k){g(k)}else b.splice(c,1),c--,d--;if(!(h=f.$$listenerCount[a]&&f.$$childHead||f!==e&&f.$$nextSibling))for(;f!==e&&!(h=f.$$nextSibling);)f=f.$parent}return i}};var r=new k;return r}]}function Ec(){var a=/^\s*(https?|ftp|mailto|tel|file):/,b=/^\s*(https?|ftp|file):|data:image\//;this.aHrefSanitizationWhitelist=function(b){return s(b)?(a=b,this):a},this.imgSrcSanitizationWhitelist=function(a){return s(a)?(b=a,this):b},this.$get=function(){return function(c,d){var e,f=d?b:a;return rd&&!(rd>=8)||(e=Mc(c).href,""===e||e.match(f))?c:"unsafe:"+e}}}function Fc(a){return a.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")}function Gc(a){if("self"===a)return a;if(u(a)){if(a.indexOf("***")>-1)throw oe("iwcard","Illegal sequence *** in string matcher.  String: {0}",a);return a=Fc(a).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*"),new RegExp("^"+a+"$")}if(z(a))return new RegExp("^"+a.source+"$");throw oe("imatcher",'Matchers may only be "self", string patterns or RegExp objects')}function Hc(a){var b=[];return s(a)&&f(a,function(a){b.push(Gc(a))}),b}function Ic(){this.SCE_CONTEXTS=pe;var a=["self"],b=[];this.resourceUrlWhitelist=function(b){return arguments.length&&(a=Hc(b)),a},this.resourceUrlBlacklist=function(a){return arguments.length&&(b=Hc(a)),b},this.$get=["$injector",function(d){function e(a,b){return"self"===a?Nc(b):!!a.exec(b.href)}function f(c){var d,f,g=Mc(c.toString()),h=!1;for(d=0,f=a.length;f>d;d++)if(e(a[d],g)){h=!0;break}if(h)for(d=0,f=b.length;f>d;d++)if(e(b[d],g)){h=!1;break}return h}function g(a){var b=function(a){this.$$unwrapTrustedValue=function(){return a}};return a&&(b.prototype=new a),b.prototype.valueOf=function(){return this.$$unwrapTrustedValue()},b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()},b}function h(a,b){var d=m.hasOwnProperty(a)?m[a]:null;if(!d)throw oe("icontext","Attempted to trust a value in invalid context. Context: {0}; Value: {1}",a,b);if(null===b||b===c||""===b)return b;if("string"!=typeof b)throw oe("itype","Attempted to trust a non-string value in a content requiring a string: Context: {0}",a);return new d(b)}function i(a){return a instanceof l?a.$$unwrapTrustedValue():a}function j(a,b){if(null===b||b===c||""===b)return b;var d=m.hasOwnProperty(a)?m[a]:null;if(d&&b instanceof d)return b.$$unwrapTrustedValue();if(a===pe.RESOURCE_URL){if(f(b))return b;throw oe("insecurl","Blocked loading resource from url not allowed by $sceDelegate policy.  URL: {0}",b.toString())}if(a===pe.HTML)return k(b);throw oe("unsafe","Attempting to use an unsafe value in a safe context.")}var k=function(){throw oe("unsafe","Attempting to use an unsafe value in a safe context.")};d.has("$sanitize")&&(k=d.get("$sanitize"));var l=g(),m={};return m[pe.HTML]=g(l),m[pe.CSS]=g(l),m[pe.URL]=g(l),m[pe.JS]=g(l),m[pe.RESOURCE_URL]=g(m[pe.URL]),{trustAs:h,getTrusted:j,valueOf:i}}]}function Jc(){var a=!0;this.enabled=function(b){return arguments.length&&(a=!!b),a},this.$get=["$parse","$sniffer","$sceDelegate",function(b,c,d){if(a&&c.msie&&c.msieDocumentMode<8)throw oe("iequirks","Strict Contextual Escaping does not support Internet Explorer version < 9 in quirks mode.  You can fix this by adding the text <!doctype html> to the top of your HTML document.  See http://docs.angularjs.org/api/ng.$sce for more information.");var e=K(pe);e.isEnabled=function(){return a},e.trustAs=d.trustAs,e.getTrusted=d.getTrusted,e.valueOf=d.valueOf,a||(e.trustAs=e.getTrusted=function(a,b){return b},e.valueOf=p),e.parseAs=function(a,c){var d=b(c);return d.literal&&d.constant?d:function(b,c){return e.getTrusted(a,d(b,c))}};var g=e.parseAs,h=e.getTrusted,i=e.trustAs;return f(pe,function(a,b){var c=md(b);e[kb("parse_as_"+c)]=function(b){return g(a,b)},e[kb("get_trusted_"+c)]=function(b){return h(a,b)},e[kb("trust_as_"+c)]=function(b){return i(a,b)}}),e}]}function Kc(){this.$get=["$window","$document",function(a,b){var c,d,e={},f=m((/android (\d+)/.exec(md((a.navigator||{}).userAgent))||[])[1]),g=/Boxee/i.test((a.navigator||{}).userAgent),h=b[0]||{},i=h.documentMode,j=/^(Moz|webkit|O|ms)(?=[A-Z])/,k=h.body&&h.body.style,l=!1,n=!1;if(k){for(var o in k)if(d=j.exec(o)){c=d[0],c=c.substr(0,1).toUpperCase()+c.substr(1);break}c||(c="WebkitOpacity"in k&&"webkit"),l=!!("transition"in k||c+"Transition"in k),n=!!("animation"in k||c+"Animation"in k),!f||l&&n||(l=u(h.body.style.webkitTransition),n=u(h.body.style.webkitAnimation))}return{history:!(!a.history||!a.history.pushState||4>f||g),hashchange:"onhashchange"in a&&(!i||i>7),hasEvent:function(a){if("input"==a&&9==rd)return!1;if(r(e[a])){var b=h.createElement("div");e[a]="on"+a in b}return e[a]},csp:M(),vendorPrefix:c,transitions:l,animations:n,android:f,msie:rd,msieDocumentMode:i}}]}function Lc(){this.$get=["$rootScope","$browser","$q","$exceptionHandler",function(a,b,c,d){function e(e,g,h){var i,j=c.defer(),k=j.promise,l=s(h)&&!h;return i=b.defer(function(){try{j.resolve(e())}catch(b){j.reject(b),d(b)}finally{delete f[k.$$timeoutId]}l||a.$apply()},g),k.$$timeoutId=i,f[i]=j,k}var f={};return e.cancel=function(a){return a&&a.$$timeoutId in f?(f[a.$$timeoutId].reject("canceled"),delete f[a.$$timeoutId],b.defer.cancel(a.$$timeoutId)):!1},e}]}function Mc(a){var b=a;return rd&&(qe.setAttribute("href",b),b=qe.href),qe.setAttribute("href",b),{href:qe.href,protocol:qe.protocol?qe.protocol.replace(/:$/,""):"",host:qe.host,search:qe.search?qe.search.replace(/^\?/,""):"",hash:qe.hash?qe.hash.replace(/^#/,""):"",hostname:qe.hostname,port:qe.port,pathname:"/"===qe.pathname.charAt(0)?qe.pathname:"/"+qe.pathname}}function Nc(a){var b=u(a)?Mc(a):a;return b.protocol===re.protocol&&b.host===re.host}function Oc(){this.$get=q(a)}function Pc(a){function b(d,e){if(t(d)){var g={};return f(d,function(a,c){g[c]=b(c,a)}),g}return a.factory(d+c,e)}var c="Filter";this.register=b,this.$get=["$injector",function(a){return function(b){return a.get(b+c)}}],b("currency",Rc),b("date",Zc),b("filter",Qc),b("json",$c),b("limitTo",_c),b("lowercase",we),b("number",Sc),b("orderBy",ad),b("uppercase",xe)}function Qc(){return function(a,b,c){if(!x(a))return a;var d=typeof c,e=[];e.check=function(a){for(var b=0;b<e.length;b++)if(!e[b](a))return!1;return!0},"function"!==d&&(c="boolean"===d&&c?function(a,b){return Ad.equals(a,b)}:function(a,b){if(a&&b&&"object"==typeof a&&"object"==typeof b){for(var d in a)if("$"!==d.charAt(0)&&nd.call(a,d)&&c(a[d],b[d]))return!0;return!1}return b=(""+b).toLowerCase(),(""+a).toLowerCase().indexOf(b)>-1});var f=function(a,b){if("string"==typeof b&&"!"===b.charAt(0))return!f(a,b.substr(1));switch(typeof a){case"boolean":case"number":case"string":return c(a,b);case"object":switch(typeof b){case"object":return c(a,b);default:for(var d in a)if("$"!==d.charAt(0)&&f(a[d],b))return!0}return!1;case"array":for(var e=0;e<a.length;e++)if(f(a[e],b))return!0;return!1;default:return!1}};switch(typeof b){case"boolean":case"number":case"string":b={$:b};case"object":for(var g in b)!function(a){"undefined"!=typeof b[a]&&e.push(function(c){return f("$"==a?c:c&&c[a],b[a])})}(g);break;case"function":e.push(b);break;default:return a}for(var h=[],i=0;i<a.length;i++){var j=a[i];e.check(j)&&h.push(j)}return h}}function Rc(a){var b=a.NUMBER_FORMATS;return function(a,c){return r(c)&&(c=b.CURRENCY_SYM),Tc(a,b.PATTERNS[1],b.GROUP_SEP,b.DECIMAL_SEP,2).replace(/\u00A4/g,c)}}function Sc(a){var b=a.NUMBER_FORMATS;return function(a,c){return Tc(a,b.PATTERNS[0],b.GROUP_SEP,b.DECIMAL_SEP,c)}}function Tc(a,b,c,d,e){if(null==a||!isFinite(a)||t(a))return"";var f=0>a;a=Math.abs(a);var g=a+"",h="",i=[],j=!1;if(-1!==g.indexOf("e")){var k=g.match(/([\d\.]+)e(-?)(\d+)/);k&&"-"==k[2]&&k[3]>e+1?g="0":(h=g,j=!0)}if(j)e>0&&a>-1&&1>a&&(h=a.toFixed(e));else{var l=(g.split(se)[1]||"").length;r(e)&&(e=Math.min(Math.max(b.minFrac,l),b.maxFrac));var m=Math.pow(10,e+1);a=Math.floor(a*m+5)/m;var n=(""+a).split(se),o=n[0];n=n[1]||"";var p,q=0,s=b.lgSize,u=b.gSize;if(o.length>=s+u)for(q=o.length-s,p=0;q>p;p++)(q-p)%u===0&&0!==p&&(h+=c),h+=o.charAt(p);for(p=q;p<o.length;p++)(o.length-p)%s===0&&0!==p&&(h+=c),h+=o.charAt(p);for(;n.length<e;)n+="0";e&&"0"!==e&&(h+=d+n.substr(0,e))}return i.push(f?b.negPre:b.posPre),i.push(h),i.push(f?b.negSuf:b.posSuf),i.join("")}function Uc(a,b,c){var d="";for(0>a&&(d="-",a=-a),a=""+a;a.length<b;)a="0"+a;return c&&(a=a.substr(a.length-b)),d+a}function Vc(a,b,c,d){return c=c||0,function(e){var f=e["get"+a]();return(c>0||f>-c)&&(f+=c),0===f&&-12==c&&(f=12),Uc(f,b,d)}}function Wc(a,b){return function(c,d){var e=c["get"+a](),f=od(b?"SHORT"+a:a);return d[f][e]}}function Xc(a){var b=-1*a.getTimezoneOffset(),c=b>=0?"+":"";return c+=Uc(Math[b>0?"floor":"ceil"](b/60),2)+Uc(Math.abs(b%60),2)}function Yc(a,b){return a.getHours()<12?b.AMPMS[0]:b.AMPMS[1]}function Zc(a){function b(a){var b;
+if(b=a.match(c)){var d=new Date(0),e=0,f=0,g=b[8]?d.setUTCFullYear:d.setFullYear,h=b[8]?d.setUTCHours:d.setHours;b[9]&&(e=m(b[9]+b[10]),f=m(b[9]+b[11])),g.call(d,m(b[1]),m(b[2])-1,m(b[3]));var i=m(b[4]||0)-e,j=m(b[5]||0)-f,k=m(b[6]||0),l=Math.round(1e3*parseFloat("0."+(b[7]||0)));return h.call(d,i,j,k,l),d}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,d){var e,g,h="",i=[];if(d=d||"mediumDate",d=a.DATETIME_FORMATS[d]||d,u(c)&&(c=ve.test(c)?m(c):b(c)),v(c)&&(c=new Date(c)),!w(c))return c;for(;d;)g=ue.exec(d),g?(i=N(i,g,1),d=i.pop()):(i.push(d),d=null);return f(i,function(b){e=te[b],h+=e?e(c,a.DATETIME_FORMATS):b.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),h}}function $c(){return function(a){return R(a,!0)}}function _c(){return function(a,b){if(!x(a)&&!u(a))return a;if(b=1/0===Math.abs(Number(b))?Number(b):m(b),u(a))return b?b>=0?a.slice(0,b):a.slice(b,a.length):"";var c,d,e=[];for(b>a.length?b=a.length:b<-a.length&&(b=-a.length),b>0?(c=0,d=b):(c=a.length+b,d=a.length);d>c;c++)e.push(a[c]);return e}}function ad(a){return function(b,c,d){function e(a,b){for(var d=0;d<c.length;d++){var e=c[d](a,b);if(0!==e)return e}return 0}function f(a,b){return T(b)?function(b,c){return a(c,b)}:a}function g(a,b){var c=typeof a,d=typeof b;return c==d?("string"==c&&(a=a.toLowerCase(),b=b.toLowerCase()),a===b?0:b>a?-1:1):d>c?-1:1}if(!x(b))return b;if(!c)return b;c=x(c)?c:[c],c=F(c,function(b){var c=!1,d=b||p;if(u(b)&&(("+"==b.charAt(0)||"-"==b.charAt(0))&&(c="-"==b.charAt(0),b=b.substring(1)),d=a(b),d.constant)){var e=d();return f(function(a,b){return g(a[e],b[e])},c)}return f(function(a,b){return g(d(a),d(b))},c)});for(var h=[],i=0;i<b.length;i++)h.push(b[i]);return h.sort(f(e,d))}}function bd(a){return y(a)&&(a={link:a}),a.restrict=a.restrict||"AC",q(a)}function cd(a,b,c,d){function e(b,c){c=c?"-"+ab(c,"-"):"",d.removeClass(a,(b?Ke:Je)+c),d.addClass(a,(b?Je:Ke)+c)}var g=this,h=a.parent().controller("form")||Ae,i=0,j=g.$error={},k=[];g.$name=b.name||b.ngForm,g.$dirty=!1,g.$pristine=!0,g.$valid=!0,g.$invalid=!1,h.$addControl(g),a.addClass(Le),e(!0),g.$addControl=function(a){eb(a.$name,"input"),k.push(a),a.$name&&(g[a.$name]=a)},g.$removeControl=function(a){a.$name&&g[a.$name]===a&&delete g[a.$name],f(j,function(b,c){g.$setValidity(c,!0,a)}),I(k,a)},g.$setValidity=function(a,b,c){var d=j[a];if(b)d&&(I(d,c),d.length||(i--,i||(e(b),g.$valid=!0,g.$invalid=!1),j[a]=!1,e(!0,a),h.$setValidity(a,!0,g)));else{if(i||e(b),d){if(G(d,c))return}else j[a]=d=[],i++,e(!1,a),h.$setValidity(a,!1,g);d.push(c),g.$valid=!1,g.$invalid=!0}},g.$setDirty=function(){d.removeClass(a,Le),d.addClass(a,Me),g.$dirty=!0,g.$pristine=!1,h.$setDirty()},g.$setPristine=function(){d.removeClass(a,Me),d.addClass(a,Le),g.$dirty=!1,g.$pristine=!0,f(k,function(a){a.$setPristine()})}}function dd(a,b,d,e){return a.$setValidity(b,d),d?e:c}function ed(a,b,c){var d=c.prop("validity");if(t(d)){var e=function(c){return a.$error[b]||!(d.badInput||d.customError||d.typeMismatch)||d.valueMissing?c:void a.$setValidity(b,!1)};a.$parsers.push(e)}}function fd(a,b,c,e,f,g){var h=b.prop("validity"),i=b[0].placeholder,j={};if(!f.android){var k=!1;b.on("compositionstart",function(){k=!0}),b.on("compositionend",function(){k=!1,l()})}var l=function(d){if(!k){var f=b.val();if(rd&&"input"===(d||j).type&&b[0].placeholder!==i)return void(i=b[0].placeholder);T(c.ngTrim||"T")&&(f=Cd(f)),(e.$viewValue!==f||h&&""===f&&!h.valueMissing)&&(a.$$phase?e.$setViewValue(f):a.$apply(function(){e.$setViewValue(f)}))}};if(f.hasEvent("input"))b.on("input",l);else{var n,o=function(){n||(n=g.defer(function(){l(),n=null}))};b.on("keydown",function(a){var b=a.keyCode;91===b||b>15&&19>b||b>=37&&40>=b||o()}),f.hasEvent("paste")&&b.on("paste cut",o)}b.on("change",l),e.$render=function(){b.val(e.$isEmpty(e.$viewValue)?"":e.$viewValue)};var p,q,r=c.ngPattern;if(r){var s=function(a,b){return dd(e,"pattern",e.$isEmpty(b)||a.test(b),b)};q=r.match(/^\/(.*)\/([gim]*)$/),q?(r=new RegExp(q[1],q[2]),p=function(a){return s(r,a)}):p=function(c){var e=a.$eval(r);if(!e||!e.test)throw d("ngPattern")("noregexp","Expected {0} to be a RegExp but was {1}. Element: {2}",r,e,U(b));return s(e,c)},e.$formatters.push(p),e.$parsers.push(p)}if(c.ngMinlength){var t=m(c.ngMinlength),u=function(a){return dd(e,"minlength",e.$isEmpty(a)||a.length>=t,a)};e.$parsers.push(u),e.$formatters.push(u)}if(c.ngMaxlength){var v=m(c.ngMaxlength),w=function(a){return dd(e,"maxlength",e.$isEmpty(a)||a.length<=v,a)};e.$parsers.push(w),e.$formatters.push(w)}}function gd(a,b,d,e,f,g){if(fd(a,b,d,e,f,g),e.$parsers.push(function(a){var b=e.$isEmpty(a);return b||Ge.test(a)?(e.$setValidity("number",!0),""===a?null:b?a:parseFloat(a)):(e.$setValidity("number",!1),c)}),ed(e,"number",b),e.$formatters.push(function(a){return e.$isEmpty(a)?"":""+a}),d.min){var h=function(a){var b=parseFloat(d.min);return dd(e,"min",e.$isEmpty(a)||a>=b,a)};e.$parsers.push(h),e.$formatters.push(h)}if(d.max){var i=function(a){var b=parseFloat(d.max);return dd(e,"max",e.$isEmpty(a)||b>=a,a)};e.$parsers.push(i),e.$formatters.push(i)}e.$formatters.push(function(a){return dd(e,"number",e.$isEmpty(a)||v(a),a)})}function hd(a,b,c,d,e,f){fd(a,b,c,d,e,f);var g=function(a){return dd(d,"url",d.$isEmpty(a)||Ee.test(a),a)};d.$formatters.push(g),d.$parsers.push(g)}function id(a,b,c,d,e,f){fd(a,b,c,d,e,f);var g=function(a){return dd(d,"email",d.$isEmpty(a)||Fe.test(a),a)};d.$formatters.push(g),d.$parsers.push(g)}function jd(a,b,c,d){r(c.name)&&b.attr("name",j()),b.on("click",function(){b[0].checked&&a.$apply(function(){d.$setViewValue(c.value)})}),d.$render=function(){var a=c.value;b[0].checked=a==d.$viewValue},c.$observe("value",d.$render)}function kd(a,b,c,d){var e=c.ngTrueValue,f=c.ngFalseValue;u(e)||(e=!0),u(f)||(f=!1),b.on("click",function(){a.$apply(function(){d.$setViewValue(b[0].checked)})}),d.$render=function(){b[0].checked=d.$viewValue},d.$isEmpty=function(a){return a!==e},d.$formatters.push(function(a){return a===e}),d.$parsers.push(function(a){return a?e:f})}function ld(a,b){return a="ngClass"+a,["$animate",function(c){function d(a,b){var c=[];a:for(var d=0;d<a.length;d++){for(var e=a[d],f=0;f<b.length;f++)if(e==b[f])continue a;c.push(e)}return c}function e(a){if(x(a))return a;if(u(a))return a.split(" ");if(t(a)){var b=[];return f(a,function(a,c){a&&(b=b.concat(c.split(" ")))}),b}return a}return{restrict:"AC",link:function(g,h,i){function j(a){var b=l(a,1);i.$addClass(b)}function k(a){var b=l(a,-1);i.$removeClass(b)}function l(a,b){var c=h.data("$classCounts")||{},d=[];return f(a,function(a){(b>0||c[a])&&(c[a]=(c[a]||0)+b,c[a]===+(b>0)&&d.push(a))}),h.data("$classCounts",c),d.join(" ")}function m(a,b){var e=d(b,a),f=d(a,b);f=l(f,-1),e=l(e,1),0===e.length?c.removeClass(h,f):0===f.length?c.addClass(h,e):c.setClass(h,e,f)}function n(a){if(b===!0||g.$index%2===b){var c=e(a||[]);if(o){if(!L(a,o)){var d=e(o);m(d,c)}}else j(c)}o=K(a)}var o;g.$watch(i[a],n,!0),i.$observe("class",function(){n(g.$eval(i[a]))}),"ngClass"!==a&&g.$watch("$index",function(c,d){var f=1&c;if(f!==(1&d)){var h=e(g.$eval(i[a]));f===b?j(h):k(h)}})}}}]}var md=function(a){return u(a)?a.toLowerCase():a},nd=Object.prototype.hasOwnProperty,od=function(a){return u(a)?a.toUpperCase():a},pd=function(a){return u(a)?a.replace(/[A-Z]/g,function(a){return String.fromCharCode(32|a.charCodeAt(0))}):a},qd=function(a){return u(a)?a.replace(/[a-z]/g,function(a){return String.fromCharCode(-33&a.charCodeAt(0))}):a};"i"!=="I".toLowerCase()&&(md=pd,od=qd);var rd,sd,td,ud,vd,wd=[].slice,xd=[].push,yd=Object.prototype.toString,zd=d("ng"),Ad=a.angular||(a.angular={}),Bd=["0","0","0"];rd=m((/msie (\d+)/.exec(md(navigator.userAgent))||[])[1]),isNaN(rd)&&(rd=m((/trident\/.*; rv:(\d+)/.exec(md(navigator.userAgent))||[])[1])),o.$inject=[],p.$inject=[];var Cd=function(){return String.prototype.trim?function(a){return u(a)?a.trim():a}:function(a){return u(a)?a.replace(/^\s\s*/,"").replace(/\s\s*$/,""):a}}();vd=9>rd?function(a){return a=a.nodeName?a:a[0],a.scopeName&&"HTML"!=a.scopeName?od(a.scopeName+":"+a.nodeName):a.nodeName}:function(a){return a.nodeName?a.nodeName:a[0].nodeName};var Dd=/[A-Z]/g,Ed={full:"1.2.18-build.233+sha.e906aaf",major:1,minor:2,dot:18,codeName:"snapshot"},Fd=pb.cache={},Gd=pb.expando="ng"+(new Date).getTime(),Hd=1,Id=a.document.addEventListener?function(a,b,c){a.addEventListener(b,c,!1)}:function(a,b,c){a.attachEvent("on"+b,c)},Jd=a.document.removeEventListener?function(a,b,c){a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent("on"+b,c)},Kd=(pb._data=function(a){return this.cache[a[this.expando]]||{}},/([\:\-\_]+(.))/g),Ld=/^moz([A-Z])/,Md=d("jqLite"),Nd=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Od=/<|&#?\w+;/,Pd=/<([\w:]+)/,Qd=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Rd={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};Rd.optgroup=Rd.option,Rd.tbody=Rd.tfoot=Rd.colgroup=Rd.caption=Rd.thead,Rd.th=Rd.td;var Sd=pb.prototype={ready:function(c){function d(){e||(e=!0,c())}var e=!1;"complete"===b.readyState?setTimeout(d):(this.on("DOMContentLoaded",d),pb(a).on("load",d))},toString:function(){var a=[];return f(this,function(b){a.push(""+b)}),"["+a.join(", ")+"]"},eq:function(a){return sd(a>=0?this[a]:this[this.length+a])},length:0,push:xd,sort:[].sort,splice:[].splice},Td={};f("multiple,selected,checked,disabled,readOnly,required,open".split(","),function(a){Td[md(a)]=a});var Ud={};f("input,select,option,textarea,button,form,details".split(","),function(a){Ud[od(a)]=!0}),f({data:vb,inheritedData:Bb,scope:function(a){return sd(a).data("$scope")||Bb(a.parentNode||a,["$isolateScope","$scope"])},isolateScope:function(a){return sd(a).data("$isolateScope")||sd(a).data("$isolateScopeNoTemplate")},controller:Ab,injector:function(a){return Bb(a,"$injector")},removeAttr:function(a,b){a.removeAttribute(b)},hasClass:wb,css:function(a,b,d){if(b=kb(b),!s(d)){var e;return 8>=rd&&(e=a.currentStyle&&a.currentStyle[b],""===e&&(e="auto")),e=e||a.style[b],8>=rd&&(e=""===e?c:e),e}a.style[b]=d},attr:function(a,b,d){var e=md(b);if(Td[e]){if(!s(d))return a[b]||(a.attributes.getNamedItem(b)||o).specified?e:c;d?(a[b]=!0,a.setAttribute(b,e)):(a[b]=!1,a.removeAttribute(e))}else if(s(d))a.setAttribute(b,d);else if(a.getAttribute){var f=a.getAttribute(b,2);return null===f?c:f}},prop:function(a,b,c){return s(c)?void(a[b]=c):a[b]},text:function(){function a(a,c){var d=b[a.nodeType];return r(c)?d?a[d]:"":void(a[d]=c)}var b=[];return 9>rd?(b[1]="innerText",b[3]="nodeValue"):b[1]=b[3]="textContent",a.$dv="",a}(),val:function(a,b){if(r(b)){if("SELECT"===vd(a)&&a.multiple){var c=[];return f(a.options,function(a){a.selected&&c.push(a.value||a.text)}),0===c.length?null:c}return a.value}a.value=b},html:function(a,b){if(r(b))return a.innerHTML;for(var c=0,d=a.childNodes;c<d.length;c++)rb(d[c]);a.innerHTML=b},empty:Cb},function(a,b){pb.prototype[b]=function(b,d){var e,f;if(a!==Cb&&(2==a.length&&a!==wb&&a!==Ab?b:d)===c){if(t(b)){for(e=0;e<this.length;e++)if(a===vb)a(this[e],b);else for(f in b)a(this[e],f,b[f]);return this}for(var g=a.$dv,h=g===c?Math.min(this.length,1):this.length,i=0;h>i;i++){var j=a(this[i],b,d);g=g?g+j:j}return g}for(e=0;e<this.length;e++)a(this[e],b,d);return this}}),f({removeData:tb,dealoc:rb,on:function wf(a,c,d,e){if(s(e))throw Md("onargs","jqLite#on() does not support the `selector` or `eventData` parameters");var g=ub(a,"events"),h=ub(a,"handle");g||ub(a,"events",g={}),h||ub(a,"handle",h=Eb(a,g)),f(c.split(" "),function(c){var e=g[c];if(!e){if("mouseenter"==c||"mouseleave"==c){var f=b.body.contains||b.body.compareDocumentPosition?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1};g[c]=[];var i={mouseleave:"mouseout",mouseenter:"mouseover"};wf(a,i[c],function(a){var b=this,d=a.relatedTarget;(!d||d!==b&&!f(b,d))&&h(a,c)})}else Id(a,c,h),g[c]=[];e=g[c]}e.push(d)})},off:sb,one:function(a,b,c){a=sd(a),a.on(b,function d(){a.off(b,c),a.off(b,d)}),a.on(b,c)},replaceWith:function(a,b){var c,d=a.parentNode;rb(a),f(new pb(b),function(b){c?d.insertBefore(b,c.nextSibling):d.replaceChild(b,a),c=b})},children:function(a){var b=[];return f(a.childNodes,function(a){1===a.nodeType&&b.push(a)}),b},contents:function(a){return a.contentDocument||a.childNodes||[]},append:function(a,b){f(new pb(b),function(b){(1===a.nodeType||11===a.nodeType)&&a.appendChild(b)})},prepend:function(a,b){if(1===a.nodeType){var c=a.firstChild;f(new pb(b),function(b){a.insertBefore(b,c)})}},wrap:function(a,b){b=sd(b)[0];var c=a.parentNode;c&&c.replaceChild(b,a),b.appendChild(a)},remove:function(a){rb(a);var b=a.parentNode;b&&b.removeChild(a)},after:function(a,b){var c=a,d=a.parentNode;f(new pb(b),function(a){d.insertBefore(a,c.nextSibling),c=a})},addClass:yb,removeClass:xb,toggleClass:function(a,b,c){b&&f(b.split(" "),function(b){var d=c;r(d)&&(d=!wb(a,b)),(d?yb:xb)(a,b)})},parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},next:function(a){if(a.nextElementSibling)return a.nextElementSibling;for(var b=a.nextSibling;null!=b&&1!==b.nodeType;)b=b.nextSibling;return b},find:function(a,b){return a.getElementsByTagName?a.getElementsByTagName(b):[]},clone:qb,triggerHandler:function(a,b,c){var d=(ub(a,"events")||{})[b];c=c||[];var e=[{preventDefault:o,stopPropagation:o}];f(d,function(b){b.apply(a,e.concat(c))})}},function(a,b){pb.prototype[b]=function(b,c,d){for(var e,f=0;f<this.length;f++)r(e)?(e=a(this[f],b,c,d),s(e)&&(e=sd(e))):zb(e,a(this[f],b,c,d));return s(e)?e:this},pb.prototype.bind=pb.prototype.on,pb.prototype.unbind=pb.prototype.off}),Gb.prototype={put:function(a,b){this[Fb(a)]=b},get:function(a){return this[Fb(a)]},remove:function(a){var b=this[a=Fb(a)];return delete this[a],b}};var Vd=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,Wd=/,/,Xd=/^\s*(_?)(\S+?)\1\s*$/,Yd=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,Zd=d("$injector"),$d=d("$animate"),_d=["$provide",function(a){this.$$selectors={},this.register=function(b,c){var d=b+"-animation";if(b&&"."!=b.charAt(0))throw $d("notcsel","Expecting class selector starting with '.' got '{0}'.",b);this.$$selectors[b.substr(1)]=d,a.factory(d,c)},this.classNameFilter=function(a){return 1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?a:null),this.$$classNameFilter},this.$get=["$timeout","$$asyncCallback",function(a,b){function c(a){a&&b(a)}return{enter:function(a,b,d,e){d?d.after(a):(b&&b[0]||(b=d.parent()),b.append(a)),c(e)},leave:function(a,b){a.remove(),c(b)},move:function(a,b,c,d){this.enter(a,b,c,d)},addClass:function(a,b,d){b=u(b)?b:x(b)?b.join(" "):"",f(a,function(a){yb(a,b)}),c(d)},removeClass:function(a,b,d){b=u(b)?b:x(b)?b.join(" "):"",f(a,function(a){xb(a,b)}),c(d)},setClass:function(a,b,d,e){f(a,function(a){yb(a,b),xb(a,d)}),c(e)},enabled:o}}]}],ae=d("$compile");Pb.$inject=["$provide","$$sanitizeUriProvider"];var be=/^(x[\:\-_]|data[\:\-_])/i,ce=d("$interpolate"),de=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,ee={http:80,https:443,ftp:21},fe=d("$location");nc.prototype=mc.prototype=lc.prototype={$$html5:!1,$$replace:!1,absUrl:oc("$$absUrl"),url:function(a,b){if(r(a))return this.$$url;var c=de.exec(a);return c[1]&&this.path(decodeURIComponent(c[1])),(c[2]||c[1])&&this.search(c[3]||""),this.hash(c[5]||"",b),this},protocol:oc("$$protocol"),host:oc("$$host"),port:oc("$$port"),path:pc("$$path",function(a){return"/"==a.charAt(0)?a:"/"+a}),search:function(a,b){switch(arguments.length){case 0:return this.$$search;case 1:if(u(a))this.$$search=W(a);else{if(!t(a))throw fe("isrcharg","The first argument of the `$location#search()` call must be a string or an object.");this.$$search=a}break;default:r(b)||null===b?delete this.$$search[a]:this.$$search[a]=b}return this.$$compose(),this},hash:pc("$$hash",p),replace:function(){return this.$$replace=!0,this}};var ge,he=d("$parse"),ie={},je={"null":function(){return null},"true":function(){return!0},"false":function(){return!1},undefined:o,"+":function(a,b,d,e){return d=d(a,b),e=e(a,b),s(d)?s(e)?d+e:d:s(e)?e:c},"-":function(a,b,c,d){return c=c(a,b),d=d(a,b),(s(c)?c:0)-(s(d)?d:0)},"*":function(a,b,c,d){return c(a,b)*d(a,b)},"/":function(a,b,c,d){return c(a,b)/d(a,b)},"%":function(a,b,c,d){return c(a,b)%d(a,b)},"^":function(a,b,c,d){return c(a,b)^d(a,b)},"=":o,"===":function(a,b,c,d){return c(a,b)===d(a,b)},"!==":function(a,b,c,d){return c(a,b)!==d(a,b)},"==":function(a,b,c,d){return c(a,b)==d(a,b)},"!=":function(a,b,c,d){return c(a,b)!=d(a,b)},"<":function(a,b,c,d){return c(a,b)<d(a,b)},">":function(a,b,c,d){return c(a,b)>d(a,b)},"<=":function(a,b,c,d){return c(a,b)<=d(a,b)},">=":function(a,b,c,d){return c(a,b)>=d(a,b)},"&&":function(a,b,c,d){return c(a,b)&&d(a,b)},"||":function(a,b,c,d){return c(a,b)||d(a,b)},"&":function(a,b,c,d){return c(a,b)&d(a,b)},"|":function(a,b,c,d){return d(a,b)(a,b,c(a,b))},"!":function(a,b,c){return!c(a,b)}},ke={n:"\n",f:"\f",r:"\r",t:"	",v:"","'":"'",'"':'"'},le=function(a){this.options=a};le.prototype={constructor:le,lex:function(a){for(this.text=a,this.index=0,this.ch=c,this.lastCh=":",this.tokens=[];this.index<this.text.length;){if(this.ch=this.text.charAt(this.index),this.is("\"'"))this.readString(this.ch);else if(this.isNumber(this.ch)||this.is(".")&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdent(this.ch))this.readIdent();else if(this.is("(){}[].,;:?"))this.tokens.push({index:this.index,text:this.ch}),this.index++;else{if(this.isWhitespace(this.ch)){this.index++;continue}var b=this.ch+this.peek(),d=b+this.peek(2),e=je[this.ch],f=je[b],g=je[d];g?(this.tokens.push({index:this.index,text:d,fn:g}),this.index+=3):f?(this.tokens.push({index:this.index,text:b,fn:f}),this.index+=2):e?(this.tokens.push({index:this.index,text:this.ch,fn:e}),this.index+=1):this.throwError("Unexpected next character ",this.index,this.index+1)}this.lastCh=this.ch}return this.tokens},is:function(a){return-1!==a.indexOf(this.ch)},was:function(a){return-1!==a.indexOf(this.lastCh)},peek:function(a){var b=a||1;return this.index+b<this.text.length?this.text.charAt(this.index+b):!1},isNumber:function(a){return a>="0"&&"9">=a},isWhitespace:function(a){return" "===a||"\r"===a||"	"===a||"\n"===a||""===a||" "===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,b,c){c=c||this.index;var d=s(b)?"s "+b+"-"+this.index+" ["+this.text.substring(b,c)+"]":" "+c;throw he("lexerr","Lexer Error: {0} at column{1} in expression [{2}].",a,d,this.text)},readNumber:function(){for(var a="",b=this.index;this.index<this.text.length;){var c=md(this.text.charAt(this.index));if("."==c||this.isNumber(c))a+=c;else{var d=this.peek();if("e"==c&&this.isExpOperator(d))a+=c;else if(this.isExpOperator(c)&&d&&this.isNumber(d)&&"e"==a.charAt(a.length-1))a+=c;else{if(!this.isExpOperator(c)||d&&this.isNumber(d)||"e"!=a.charAt(a.length-1))break;this.throwError("Invalid exponent")}}this.index++}a=1*a,this.tokens.push({index:b,text:a,literal:!0,constant:!0,fn:function(){return a}})},readIdent:function(){for(var a,b,c,d,e=this,f="",g=this.index;this.index<this.text.length&&(d=this.text.charAt(this.index),"."===d||this.isIdent(d)||this.isNumber(d));)"."===d&&(a=this.index),f+=d,this.index++;if(a)for(b=this.index;b<this.text.length;){if(d=this.text.charAt(b),"("===d){c=f.substr(a-g+1),f=f.substr(0,a-g),this.index=b;break}if(!this.isWhitespace(d))break;b++}var h={index:g,text:f};if(je.hasOwnProperty(f))h.fn=je[f],h.literal=!0,h.constant=!0;else{var i=yc(f,this.options,this.text);h.fn=l(function(a,b){return i(a,b)},{assign:function(a,b){return uc(a,f,b,e.text,e.options)}})}this.tokens.push(h),c&&(this.tokens.push({index:a,text:"."}),this.tokens.push({index:a+1,text:c}))},readString:function(a){var b=this.index;this.index++;for(var c="",d=a,e=!1;this.index<this.text.length;){var f=this.text.charAt(this.index);if(d+=f,e){if("u"===f){var g=this.text.substring(this.index+1,this.index+5);g.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+g+"]"),this.index+=4,c+=String.fromCharCode(parseInt(g,16))}else{var h=ke[f];c+=h?h:f}e=!1}else if("\\"===f)e=!0;else{if(f===a)return this.index++,void this.tokens.push({index:b,text:d,string:c,literal:!0,constant:!0,fn:function(){return c}});c+=f}this.index++}this.throwError("Unterminated quote",b)}};var me=function(a,b,c){this.lexer=a,this.$filter=b,this.options=c};me.ZERO=l(function(){return 0},{constant:!0}),me.prototype={constructor:me,parse:function(a){this.text=a,this.tokens=this.lexer.lex(a);var b=this.statements();return 0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]),b.literal=!!b.literal,b.constant=!!b.constant,b},primary:function(){var a;if(this.expect("("))a=this.filterChain(),this.consume(")");else if(this.expect("["))a=this.arrayDeclaration();else if(this.expect("{"))a=this.object();else{var b=this.expect();a=b.fn,a||this.throwError("not a primary expression",b),a.literal=!!b.literal,a.constant=!!b.constant}for(var c,d;c=this.expect("(","[",".");)"("===c.text?(a=this.functionCall(a,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,b){throw he("syntax","Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].",b.text,a,b.index+1,this.text,this.text.substring(b.index))},peekToken:function(){if(0===this.tokens.length)throw he("ueoe","Unexpected end of expression: {0}",this.text);return this.tokens[0]},peek:function(a,b,c,d){if(this.tokens.length>0){var e=this.tokens[0],f=e.text;if(f===a||f===b||f===c||f===d||!a&&!b&&!c&&!d)return e}return!1},expect:function(a,b,c,d){var e=this.peek(a,b,c,d);return e?(this.tokens.shift(),e):!1},consume:function(a){this.expect(a)||this.throwError("is unexpected, expecting ["+a+"]",this.peek())},unaryFn:function(a,b){return l(function(c,d){return a(c,d,b)},{constant:b.constant})},ternaryFn:function(a,b,c){return l(function(d,e){return a(d,e)?b(d,e):c(d,e)},{constant:a.constant&&b.constant&&c.constant})},binaryFn:function(a,b,c){return l(function(d,e){return b(d,e,a,c)},{constant:a.constant&&c.constant})},statements:function(){for(var a=[];;)if(this.tokens.length>0&&!this.peek("}",")",";","]")&&a.push(this.filterChain()),!this.expect(";"))return 1===a.length?a[0]:function(b,c){for(var d,e=0;e<a.length;e++){var f=a[e];f&&(d=f(b,c))}return d}},filterChain:function(){for(var a,b=this.expression();;){if(!(a=this.expect("|")))return b;b=this.binaryFn(b,a.fn,this.filter())}},filter:function(){for(var a=this.expect(),b=this.$filter(a.text),c=[];;){if(!(a=this.expect(":"))){var d=function(a,d,e){for(var f=[e],g=0;g<c.length;g++)f.push(c[g](a,d));return b.apply(a,f)};return function(){return d}}c.push(this.expression())}},expression:function(){return this.assignment()},assignment:function(){var a,b,c=this.ternary();return(b=this.expect("="))?(c.assign||this.throwError("implies assignment but ["+this.text.substring(0,b.index)+"] can not be assigned to",b),a=this.ternary(),function(b,d){return c.assign(b,a(b,d),d)}):c},ternary:function(){var a,b,c=this.logicalOR();return(b=this.expect("?"))?(a=this.ternary(),(b=this.expect(":"))?this.ternaryFn(c,a,this.ternary()):void this.throwError("expected :",b)):c},logicalOR:function(){for(var a,b=this.logicalAND();;){if(!(a=this.expect("||")))return b;b=this.binaryFn(b,a.fn,this.logicalAND())}},logicalAND:function(){var a,b=this.equality();return(a=this.expect("&&"))&&(b=this.binaryFn(b,a.fn,this.logicalAND())),b},equality:function(){var a,b=this.relational();return(a=this.expect("==","!=","===","!=="))&&(b=this.binaryFn(b,a.fn,this.equality())),b},relational:function(){var a,b=this.additive();return(a=this.expect("<",">","<=",">="))&&(b=this.binaryFn(b,a.fn,this.relational())),b},additive:function(){for(var a,b=this.multiplicative();a=this.expect("+","-");)b=this.binaryFn(b,a.fn,this.multiplicative());return b},multiplicative:function(){for(var a,b=this.unary();a=this.expect("*","/","%");)b=this.binaryFn(b,a.fn,this.unary());return b},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(me.ZERO,a.fn,this.unary()):(a=this.expect("!"))?this.unaryFn(a.fn,this.unary()):this.primary()},fieldAccess:function(a){var b=this,c=this.expect().text,d=yc(c,this.options,this.text);return l(function(b,c,e){return d(e||a(b,c))},{assign:function(d,e,f){return uc(a(d,f),c,e,b.text,b.options)}})},objectIndex:function(a){var b=this,d=this.expression();return this.consume("]"),l(function(e,f){var g,h,i=a(e,f),j=d(e,f);return i?(g=tc(i[j],b.text),g&&g.then&&b.options.unwrapPromises&&(h=g,"$$v"in g||(h.$$v=c,h.then(function(a){h.$$v=a})),g=g.$$v),g):c},{assign:function(c,e,f){var g=d(c,f),h=tc(a(c,f),b.text);return h[g]=e}})},functionCall:function(a,b){var c=[];if(")"!==this.peekToken().text)do c.push(this.expression());while(this.expect(","));this.consume(")");var d=this;return function(e,f){for(var g=[],h=b?b(e,f):e,i=0;i<c.length;i++)g.push(c[i](e,f));var j=a(e,f,h)||o;tc(h,d.text),tc(j,d.text);var k=j.apply?j.apply(h,g):j(g[0],g[1],g[2],g[3],g[4]);return tc(k,d.text)}},arrayDeclaration:function(){var a=[],b=!0;if("]"!==this.peekToken().text)do{if(this.peek("]"))break;var c=this.expression();a.push(c),c.constant||(b=!1)}while(this.expect(","));return this.consume("]"),l(function(b,c){for(var d=[],e=0;e<a.length;e++)d.push(a[e](b,c));return d},{literal:!0,constant:b})},object:function(){var a=[],b=!0;if("}"!==this.peekToken().text)do{if(this.peek("}"))break;var c=this.expect(),d=c.string||c.text;this.consume(":");var e=this.expression();a.push({key:d,value:e}),e.constant||(b=!1)}while(this.expect(","));return this.consume("}"),l(function(b,c){for(var d={},e=0;e<a.length;e++){var f=a[e];d[f.key]=f.value(b,c)}return d},{literal:!0,constant:b})}};var ne={},oe=d("$sce"),pe={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},qe=b.createElement("a"),re=Mc(a.location.href,!0);Pc.$inject=["$provide"],Rc.$inject=["$locale"],Sc.$inject=["$locale"];var se=".",te={yyyy:Vc("FullYear",4),yy:Vc("FullYear",2,0,!0),y:Vc("FullYear",1),MMMM:Wc("Month"),MMM:Wc("Month",!0),MM:Vc("Month",2,1),M:Vc("Month",1,1),dd:Vc("Date",2),d:Vc("Date",1),HH:Vc("Hours",2),H:Vc("Hours",1),hh:Vc("Hours",2,-12),h:Vc("Hours",1,-12),mm:Vc("Minutes",2),m:Vc("Minutes",1),ss:Vc("Seconds",2),s:Vc("Seconds",1),sss:Vc("Milliseconds",3),EEEE:Wc("Day"),EEE:Wc("Day",!0),a:Yc,Z:Xc},ue=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,ve=/^\-?\d+$/;Zc.$inject=["$locale"];var we=q(md),xe=q(od);ad.$inject=["$parse"];var ye=q({restrict:"E",compile:function(a,c){return 8>=rd&&(c.href||c.name||c.$set("href",""),a.append(b.createComment("IE fix"))),c.href||c.xlinkHref||c.name?void 0:function(a,b){var c="[object SVGAnimatedString]"===yd.call(b.prop("href"))?"xlink:href":"href";b.on("click",function(a){b.attr(c)||a.preventDefault()})}}}),ze={};f(Td,function(a,b){if("multiple"!=a){var c=Qb("ng-"+b);ze[c]=function(){return{priority:100,link:function(a,d,e){a.$watch(e[c],function(a){e.$set(b,!!a)})}}}}}),f(["src","srcset","href"],function(a){var b=Qb("ng-"+a);ze[b]=function(){return{priority:99,link:function(c,d,e){var f=a,g=a;"href"===a&&"[object SVGAnimatedString]"===yd.call(d.prop("href"))&&(g="xlinkHref",e.$attr[g]="xlink:href",f=null),e.$observe(b,function(a){a&&(e.$set(g,a),rd&&f&&d.prop(f,e[g]))})}}}});var Ae={$addControl:o,$removeControl:o,$setValidity:o,$setDirty:o,$setPristine:o};cd.$inject=["$element","$attrs","$scope","$animate"];var Be=function(a){return["$timeout",function(b){var d={name:"form",restrict:a?"EAC":"E",controller:cd,compile:function(){return{pre:function(a,d,e,f){if(!e.action){var g=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1};Id(d[0],"submit",g),d.on("$destroy",function(){b(function(){Jd(d[0],"submit",g)},0,!1)})}var h=d.parent().controller("form"),i=e.name||e.ngForm;i&&uc(a,i,f,i),h&&d.on("$destroy",function(){h.$removeControl(f),i&&uc(a,i,c,i),l(f,Ae)})}}}};return d}]},Ce=Be(),De=Be(!0),Ee=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,Fe=/^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z0-9-]+(\.[a-z0-9-]+)*$/i,Ge=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,He={text:fd,number:gd,url:hd,email:id,radio:jd,checkbox:kd,hidden:o,button:o,submit:o,reset:o,file:o},Ie=["$browser","$sniffer",function(a,b){return{restrict:"E",require:"?ngModel",link:function(c,d,e,f){f&&(He[md(e.type)]||He.text)(c,d,e,f,b,a)}}}],Je="ng-valid",Ke="ng-invalid",Le="ng-pristine",Me="ng-dirty",Ne=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate",function(a,b,c,e,g,h){function i(a,b){b=b?"-"+ab(b,"-"):"",h.removeClass(e,(a?Ke:Je)+b),h.addClass(e,(a?Je:Ke)+b)}this.$viewValue=Number.NaN,this.$modelValue=Number.NaN,this.$parsers=[],this.$formatters=[],this.$viewChangeListeners=[],this.$pristine=!0,this.$dirty=!1,this.$valid=!0,this.$invalid=!1,this.$name=c.name;var j=g(c.ngModel),k=j.assign;if(!k)throw d("ngModel")("nonassign","Expression '{0}' is non-assignable. Element: {1}",c.ngModel,U(e));this.$render=o,this.$isEmpty=function(a){return r(a)||""===a||null===a||a!==a};var l=e.inheritedData("$formController")||Ae,m=0,n=this.$error={};e.addClass(Le),i(!0),this.$setValidity=function(a,b){n[a]!==!b&&(b?(n[a]&&m--,m||(i(!0),this.$valid=!0,this.$invalid=!1)):(i(!1),this.$invalid=!0,this.$valid=!1,m++),n[a]=!b,i(b,a),l.$setValidity(a,b,this))},this.$setPristine=function(){this.$dirty=!1,this.$pristine=!0,h.removeClass(e,Me),h.addClass(e,Le)},this.$setViewValue=function(c){this.$viewValue=c,this.$pristine&&(this.$dirty=!0,this.$pristine=!1,h.removeClass(e,Le),h.addClass(e,Me),l.$setDirty()),f(this.$parsers,function(a){c=a(c)}),this.$modelValue!==c&&(this.$modelValue=c,k(a,c),f(this.$viewChangeListeners,function(a){try{a()}catch(c){b(c)}}))};var p=this;a.$watch(function(){var b=j(a);if(p.$modelValue!==b){var c=p.$formatters,d=c.length;for(p.$modelValue=b;d--;)b=c[d](b);p.$viewValue!==b&&(p.$viewValue=b,p.$render())}return b})}],Oe=function(){return{require:["ngModel","^?form"],controller:Ne,link:function(a,b,c,d){var e=d[0],f=d[1]||Ae;f.$addControl(e),a.$on("$destroy",function(){f.$removeControl(e)})}}},Pe=q({require:"ngModel",link:function(a,b,c,d){d.$viewChangeListeners.push(function(){a.$eval(c.ngChange)})}}),Qe=function(){return{require:"?ngModel",link:function(a,b,c,d){if(d){c.required=!0;var e=function(a){return c.required&&d.$isEmpty(a)?void d.$setValidity("required",!1):(d.$setValidity("required",!0),a)};d.$formatters.push(e),d.$parsers.unshift(e),c.$observe("required",function(){e(d.$viewValue)})}}}},Re=function(){return{require:"ngModel",link:function(a,b,d,e){var g=/\/(.*)\//.exec(d.ngList),h=g&&new RegExp(g[1])||d.ngList||",",i=function(a){if(!r(a)){var b=[];return a&&f(a.split(h),function(a){a&&b.push(Cd(a))}),b}};e.$parsers.push(i),e.$formatters.push(function(a){return x(a)?a.join(", "):c}),e.$isEmpty=function(a){return!a||!a.length}}}},Se=/^(true|false|\d+)$/,Te=function(){return{priority:100,compile:function(a,b){return Se.test(b.ngValue)?function(a,b,c){c.$set("value",a.$eval(c.ngValue))}:function(a,b,c){a.$watch(c.ngValue,function(a){c.$set("value",a)})}}}},Ue=bd(function(a,b,d){b.addClass("ng-binding").data("$binding",d.ngBind),a.$watch(d.ngBind,function(a){b.text(a==c?"":a)})}),Ve=["$interpolate",function(a){return function(b,c,d){var e=a(c.attr(d.$attr.ngBindTemplate));c.addClass("ng-binding").data("$binding",e),d.$observe("ngBindTemplate",function(a){c.text(a)})}}],We=["$sce","$parse",function(a,b){return function(c,d,e){function f(){return(g(c)||"").toString()}d.addClass("ng-binding").data("$binding",e.ngBindHtml);
+var g=b(e.ngBindHtml);c.$watch(f,function(){d.html(a.getTrustedHtml(g(c))||"")})}}],Xe=ld("",!0),Ye=ld("Odd",0),Ze=ld("Even",1),$e=bd({compile:function(a,b){b.$set("ngCloak",c),a.removeClass("ng-cloak")}}),_e=[function(){return{scope:!0,controller:"@",priority:500}}],af={};f("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var b=Qb("ng-"+a);af[b]=["$parse",function(c){return{compile:function(d,e){var f=c(e[b]);return function(b,c){c.on(md(a),function(a){b.$apply(function(){f(b,{$event:a})})})}}}}]});var bf=["$animate",function(a){return{transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,i,j;c.$watch(e.ngIf,function(f){T(f)?i||(i=c.$new(),g(i,function(c){c[c.length++]=b.createComment(" end ngIf: "+e.ngIf+" "),h={clone:c},a.enter(c,d.parent(),d)})):(j&&(j.remove(),j=null),i&&(i.$destroy(),i=null),h&&(j=gb(h.clone),a.leave(j,function(){j=null}),h=null))})}}}],cf=["$http","$templateCache","$anchorScroll","$animate","$sce",function(a,b,c,d,e){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:Ad.noop,compile:function(f,g){var h=g.ngInclude||g.src,i=g.onload||"",j=g.autoscroll;return function(f,g,k,l,m){var n,o,p,q=0,r=function(){o&&(o.remove(),o=null),n&&(n.$destroy(),n=null),p&&(d.leave(p,function(){o=null}),o=p,p=null)};f.$watch(e.parseAsResourceUrl(h),function(e){var h=function(){!s(j)||j&&!f.$eval(j)||c()},k=++q;e?(a.get(e,{cache:b}).success(function(a){if(k===q){var b=f.$new();l.template=a;var c=m(b,function(a){r(),d.enter(a,null,g,h)});n=b,p=c,n.$emit("$includeContentLoaded"),f.$eval(i)}}).error(function(){k===q&&r()}),f.$emit("$includeContentRequested")):(r(),l.template=null)})}}}}],df=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(b,c,d,e){c.html(e.template),a(c.contents())(b)}}}],ef=bd({priority:450,compile:function(){return{pre:function(a,b,c){a.$eval(c.ngInit)}}}}),ff=bd({terminal:!0,priority:1e3}),gf=["$locale","$interpolate",function(a,b){var c=/{}/g;return{restrict:"EA",link:function(d,e,g){var h=g.count,i=g.$attr.when&&e.attr(g.$attr.when),j=g.offset||0,k=d.$eval(i)||{},l={},m=b.startSymbol(),n=b.endSymbol(),o=/^when(Minus)?(.+)$/;f(g,function(a,b){o.test(b)&&(k[md(b.replace("when","").replace("Minus","-"))]=e.attr(g.$attr[b]))}),f(k,function(a,d){l[d]=b(a.replace(c,m+h+"-"+j+n))}),d.$watch(function(){var b=parseFloat(d.$eval(h));return isNaN(b)?"":(b in k||(b=a.pluralCat(b-j)),l[b](d,e,!0))},function(a){e.text(a)})}}}],hf=["$parse","$animate",function(a,c){function g(a){return a.clone[0]}function h(a){return a.clone[a.clone.length-1]}var i="$$NG_REMOVED",j=d("ngRepeat");return{transclude:"element",priority:1e3,terminal:!0,$$tlb:!0,link:function(d,k,l,m,n){var o,p,q,r,s,t,u,v,w,x=l.ngRepeat,y=x.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),z={$id:Fb};if(!y)throw j("iexp","Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",x);if(t=y[1],u=y[2],o=y[3],o?(p=a(o),q=function(a,b,c){return w&&(z[w]=a),z[v]=b,z.$index=c,p(d,z)}):(r=function(a,b){return Fb(b)},s=function(a){return a}),y=t.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/),!y)throw j("iidexp","'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",t);v=y[3]||y[1],w=y[2];var A={};d.$watchCollection(u,function(a){var l,m,o,p,t,u,y,z,B,C,D,E,F=k[0],G={},H=[];if(e(a))C=a,B=q||r;else{B=q||s,C=[];for(u in a)a.hasOwnProperty(u)&&"$"!=u.charAt(0)&&C.push(u);C.sort()}for(p=C.length,m=H.length=C.length,l=0;m>l;l++)if(u=a===C?l:C[l],y=a[u],z=B(u,y,l),eb(z,"`track by` id"),A.hasOwnProperty(z))D=A[z],delete A[z],G[z]=D,H[l]=D;else{if(G.hasOwnProperty(z))throw f(H,function(a){a&&a.scope&&(A[a.id]=a)}),j("dupes","Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}",x,z);H[l]={id:z},G[z]=!1}for(u in A)A.hasOwnProperty(u)&&(D=A[u],E=gb(D.clone),c.leave(E),f(E,function(a){a[i]=!0}),D.scope.$destroy());for(l=0,m=C.length;m>l;l++){if(u=a===C?l:C[l],y=a[u],D=H[l],H[l-1]&&(F=h(H[l-1])),D.scope){t=D.scope,o=F;do o=o.nextSibling;while(o&&o[i]);g(D)!=o&&c.move(gb(D.clone),null,sd(F)),F=h(D)}else t=d.$new();t[v]=y,w&&(t[w]=u),t.$index=l,t.$first=0===l,t.$last=l===p-1,t.$middle=!(t.$first||t.$last),t.$odd=!(t.$even=0===(1&l)),D.scope||n(t,function(a){a[a.length++]=b.createComment(" end ngRepeat: "+x+" "),c.enter(a,null,sd(F)),F=a,D.scope=t,D.clone=a,G[D.id]=D})}A=G})}}}],jf=["$animate",function(a){return function(b,c,d){b.$watch(d.ngShow,function(b){a[T(b)?"removeClass":"addClass"](c,"ng-hide")})}}],kf=["$animate",function(a){return function(b,c,d){b.$watch(d.ngHide,function(b){a[T(b)?"addClass":"removeClass"](c,"ng-hide")})}}],lf=bd(function(a,b,c){a.$watch(c.ngStyle,function(a,c){c&&a!==c&&f(c,function(a,c){b.css(c,"")}),a&&b.css(a)},!0)}),mf=["$animate",function(a){return{restrict:"EA",require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(b,c,d,e){var g=d.ngSwitch||d.on,h=[],i=[],j=[],k=[];b.$watch(g,function(c){var g,l;for(g=0,l=j.length;l>g;++g)j[g].remove();for(j.length=0,g=0,l=k.length;l>g;++g){var m=i[g];k[g].$destroy(),j[g]=m,a.leave(m,function(){j.splice(g,1)})}i.length=0,k.length=0,(h=e.cases["!"+c]||e.cases["?"])&&(b.$eval(d.change),f(h,function(c){var d=b.$new();k.push(d),c.transclude(d,function(b){var d=c.element;i.push(b),a.enter(b,d.parent(),d)})}))})}}}],nf=bd({transclude:"element",priority:800,require:"^ngSwitch",link:function(a,b,c,d,e){d.cases["!"+c.ngSwitchWhen]=d.cases["!"+c.ngSwitchWhen]||[],d.cases["!"+c.ngSwitchWhen].push({transclude:e,element:b})}}),of=bd({transclude:"element",priority:800,require:"^ngSwitch",link:function(a,b,c,d,e){d.cases["?"]=d.cases["?"]||[],d.cases["?"].push({transclude:e,element:b})}}),pf=bd({link:function(a,b,c,e,f){if(!f)throw d("ngTransclude")("orphan","Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}",U(b));f(function(a){b.empty(),b.append(a)})}}),qf=["$templateCache",function(a){return{restrict:"E",terminal:!0,compile:function(b,c){if("text/ng-template"==c.type){var d=c.id,e=b[0].text;a.put(d,e)}}}}],rf=d("ngOptions"),sf=q({terminal:!0}),tf=["$compile","$parse",function(a,d){var e=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,h={$setViewValue:o};return{restrict:"E",require:["select","?ngModel"],controller:["$element","$scope","$attrs",function(a,b,c){var d,e,f=this,g={},i=h;f.databound=c.ngModel,f.init=function(a,b,c){i=a,d=b,e=c},f.addOption=function(b){eb(b,'"option value"'),g[b]=!0,i.$viewValue==b&&(a.val(b),e.parent()&&e.remove())},f.removeOption=function(a){this.hasOption(a)&&(delete g[a],i.$viewValue==a&&this.renderUnknownOption(a))},f.renderUnknownOption=function(b){var c="? "+Fb(b)+" ?";e.val(c),a.prepend(e),a.val(c),e.prop("selected",!0)},f.hasOption=function(a){return g.hasOwnProperty(a)},b.$on("$destroy",function(){f.renderUnknownOption=o})}],link:function(h,i,j,k){function l(a,b,c,d){c.$render=function(){var a=c.$viewValue;d.hasOption(a)?(z.parent()&&z.remove(),b.val(a),""===a&&o.prop("selected",!0)):r(a)&&o?b.val(""):d.renderUnknownOption(a)},b.on("change",function(){a.$apply(function(){z.parent()&&z.remove(),c.$setViewValue(b.val())})})}function m(a,b,c){var d;c.$render=function(){var a=new Gb(c.$viewValue);f(b.find("option"),function(b){b.selected=s(a.get(b.value))})},a.$watch(function(){L(d,c.$viewValue)||(d=K(c.$viewValue),c.$render())}),b.on("change",function(){a.$apply(function(){var a=[];f(b.find("option"),function(b){b.selected&&a.push(b.value)}),c.$setViewValue(a)})})}function n(b,f,h){function i(){var a,c,d,e,i,j,q,u,A,B,C,D,E,F,G,H={"":[]},I=[""],J=h.$modelValue,K=p(b)||[],L=m?g(K):K,M={},N=!1;if(t)if(r&&x(J)){N=new Gb([]);for(var O=0;O<J.length;O++)M[l]=J[O],N.put(r(b,M),J[O])}else N=new Gb(J);for(C=0;A=L.length,A>C;C++){if(q=C,m){if(q=L[C],"$"===q.charAt(0))continue;M[m]=q}if(M[l]=K[q],a=n(b,M)||"",(c=H[a])||(c=H[a]=[],I.push(a)),t)D=s(N.remove(r?r(b,M):o(b,M)));else{if(r){var P={};P[l]=J,D=r(b,P)===r(b,M)}else D=J===o(b,M);N=N||D}G=k(b,M),G=s(G)?G:"",c.push({id:r?r(b,M):m?L[C]:C,label:G,selected:D})}for(t||(v||null===J?H[""].unshift({id:"",label:"",selected:!N}):N||H[""].unshift({id:"?",label:"",selected:!0})),B=0,u=I.length;u>B;B++){for(a=I[B],c=H[a],z.length<=B?(e={element:y.clone().attr("label",a),label:c.label},i=[e],z.push(i),f.append(e.element)):(i=z[B],e=i[0],e.label!=a&&e.element.attr("label",e.label=a)),E=null,C=0,A=c.length;A>C;C++)d=c[C],(j=i[C+1])?(E=j.element,j.label!==d.label&&E.text(j.label=d.label),j.id!==d.id&&E.val(j.id=d.id),j.selected!==d.selected&&E.prop("selected",j.selected=d.selected)):(""===d.id&&v?F=v:(F=w.clone()).val(d.id).attr("selected",d.selected).text(d.label),i.push(j={element:F,label:d.label,id:d.id,selected:d.selected}),E?E.after(F):e.element.append(F),E=F);for(C++;i.length>C;)i.pop().element.remove()}for(;z.length>B;)z.pop()[0].element.remove()}var j;if(!(j=u.match(e)))throw rf("iexp","Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}",u,U(f));var k=d(j[2]||j[1]),l=j[4]||j[6],m=j[5],n=d(j[3]||""),o=d(j[2]?j[1]:l),p=d(j[7]),q=j[8],r=q?d(j[8]):null,z=[[{element:f,label:""}]];v&&(a(v)(b),v.removeClass("ng-scope"),v.remove()),f.empty(),f.on("change",function(){b.$apply(function(){var a,d,e,g,i,j,k,n,q,s=p(b)||[],u={};if(t){for(e=[],j=0,n=z.length;n>j;j++)for(a=z[j],i=1,k=a.length;k>i;i++)if((g=a[i].element)[0].selected){if(d=g.val(),m&&(u[m]=d),r)for(q=0;q<s.length&&(u[l]=s[q],r(b,u)!=d);q++);else u[l]=s[d];e.push(o(b,u))}}else{if(d=f.val(),"?"==d)e=c;else if(""===d)e=null;else if(r){for(q=0;q<s.length;q++)if(u[l]=s[q],r(b,u)==d){e=o(b,u);break}}else u[l]=s[d],m&&(u[m]=d),e=o(b,u);z[0].length>1&&z[0][1].id!==d&&(z[0][1].selected=!1)}h.$setViewValue(e)})}),h.$render=i,b.$watch(i)}if(k[1]){for(var o,p=k[0],q=k[1],t=j.multiple,u=j.ngOptions,v=!1,w=sd(b.createElement("option")),y=sd(b.createElement("optgroup")),z=w.clone(),A=0,B=i.children(),C=B.length;C>A;A++)if(""===B[A].value){o=v=B.eq(A);break}p.init(q,v,z),t&&(q.$isEmpty=function(a){return!a||0===a.length}),u?n(h,i,q):t?m(h,i,q):l(h,i,q,p)}}}}],uf=["$interpolate",function(a){var b={addOption:o,removeOption:o};return{restrict:"E",priority:100,compile:function(c,d){if(r(d.value)){var e=a(c.text(),!0);e||d.$set("value",c.text())}return function(a,c,d){var f="$selectController",g=c.parent(),h=g.data(f)||g.parent().data(f);h&&h.databound?c.prop("selected",!1):h=b,e?a.$watch(e,function(a,b){d.$set("value",a),a!==b&&h.removeOption(b),h.addOption(a)}):h.addOption(d.value),c.on("$destroy",function(){h.removeOption(d.value)})}}}}],vf=q({restrict:"E",terminal:!0});return a.angular.bootstrap?void console.log("WARNING: Tried to load angular more than once."):(bb(),ib(Ad),void sd(b).ready(function(){$(b,_)}))}(window,document),!window.angular.$$csp()&&window.angular.element(document).find("head").prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}.ng-hide-add-active,.ng-hide-remove{display:block!important;}</style>'),!function(a){"use strict";var b=function(b,c){this.options=a.extend({},a.fn.affix.defaults,c),this.$window=a(window).on("scroll.affix.data-api",a.proxy(this.checkPosition,this)).on("click.affix.data-api",a.proxy(function(){setTimeout(a.proxy(this.checkPosition,this),1)},this)),this.$element=a(b),this.checkPosition()};b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b,c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.bottom,h=f.top,i="affix affix-top affix-bottom";"object"!=typeof f&&(g=h=f),"function"==typeof h&&(h=f.top()),"function"==typeof g&&(g=f.bottom()),b=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=g&&e.top+this.$element.height()>=c-g?"bottom":null!=h&&h>=d?"top":!1,this.affixed!==b&&(this.affixed=b,this.unpin="bottom"==b?e.top-d:null,this.$element.removeClass(i).addClass("affix"+(b?"-"+b:"")))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("affix"),f="object"==typeof c&&c;e||d.data("affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.defaults={offset:0},a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery),!function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){d.trigger("closed").remove()}var d,e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,"")),d=a(f),b&&b.preventDefault(),d.length||(d=e.hasClass("alert")?e:e.parent()),d.trigger(b=a.Event("close")),b.isDefaultPrevented()||(d.removeClass("in"),a.support.transition&&d.hasClass("fade")?d.on(a.support.transition.end,c):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("alert");e||d.data("alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.alert.data-api",b,c.prototype.close)}(window.jQuery),!function(a){"use strict";function b(){a(".dropdown-backdrop").remove(),a(d).each(function(){c(a(this)).removeClass("open")})}function c(b){var c,d=b.attr("data-target");return d||(d=b.attr("href"),d=d&&/#/.test(d)&&d.replace(/.*(?=#[^\s]*$)/,"")),c=d&&a(d),c&&c.length||(c=b.parent()),c}var d="[data-toggle=dropdown]",e=function(b){var c=a(b).on("click.dropdown.data-api",this.toggle);a("html").on("click.dropdown.data-api",function(){c.parent().removeClass("open")})};e.prototype={constructor:e,toggle:function(){var d,e,f=a(this);if(!f.is(".disabled, :disabled"))return d=c(f),e=d.hasClass("open"),b(),e||("ontouchstart"in document.documentElement&&a('<div class="dropdown-backdrop"/>').insertBefore(a(this)).on("click",b),d.toggleClass("open")),f.focus(),!1},keydown:function(b){var e,f,g,h,i;if(/(38|40|27)/.test(b.keyCode)&&(e=a(this),b.preventDefault(),b.stopPropagation(),!e.is(".disabled, :disabled"))){if(g=c(e),h=g.hasClass("open"),!h||h&&27==b.keyCode)return 27==b.which&&g.find(d).focus(),e.click();f=a("[role=menu] li:not(.divider):visible a",g),f.length&&(i=f.index(f.filter(":focus")),38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<f.length-1&&i++,~i||(i=0),f.eq(i).focus())}}};var f=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("dropdown");d||c.data("dropdown",d=new e(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=e,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=f,this},a(document).on("click.dropdown.data-api",b).on("click.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.dropdown.data-api",d,e.prototype.toggle).on("keydown.dropdown.data-api",d+", [role=menu]",e.prototype.keydown)}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f,g,h,i;for(this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,g=this.options.trigger.split(" "),i=g.length;i--;)h=g[i],"click"==h?this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this)):"manual"!=h&&(e="hover"==h?"mouseenter":"focus",f="hover"==h?"mouseleave":"blur",this.$element.on(e+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f+"."+this.type,this.options.selector,a.proxy(this.leave,this)));this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c,d=a.fn[this.type].defaults,e={};return this._options&&a.each(this._options,function(a,b){d[a]!=b&&(e[a]=b)},this),c=a(b.currentTarget)[this.type](e).data(this.type),c.options.delay&&c.options.delay.show?(clearTimeout(this.timeout),c.hoverState="in",void(this.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show))):c.show()},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);return this.timeout&&clearTimeout(this.timeout),c.options.delay&&c.options.delay.hide?(c.hoverState="out",void(this.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide))):c.hide()},show:function(){var b,c,d,e,f,g,h=a.Event("show");if(this.hasContent()&&this.enabled){if(this.$element.trigger(h),h.isDefaultPrevented())return;switch(b=this.tip(),this.setContent(),this.options.animation&&b.addClass("fade"),f="function"==typeof this.options.placement?this.options.placement.call(this,b[0],this.$element[0]):this.options.placement,b.detach().css({top:0,left:0,display:"block"}),this.options.container?b.appendTo(this.options.container):b.insertAfter(this.$element),c=this.getPosition(),d=b[0].offsetWidth,e=b[0].offsetHeight,f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}this.applyPlacement(g,f),this.$element.trigger("shown")}},applyPlacement:function(a,b){var c,d,e,f,g=this.tip(),h=g[0].offsetWidth,i=g[0].offsetHeight;g.offset(a).addClass(b).addClass("in"),c=g[0].offsetWidth,d=g[0].offsetHeight,"top"==b&&d!=i&&(a.top=a.top+i-d,f=!0),"bottom"==b||"top"==b?(e=0,a.left<0&&(e=-2*a.left,a.left=0,g.offset(a),c=g[0].offsetWidth,d=g[0].offsetHeight),this.replaceArrow(e-h+c,c,"left")):this.replaceArrow(d-i,d,"top"),f&&g.offset(a)},replaceArrow:function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},setContent:function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},hide:function(){function b(){var b=setTimeout(function(){c.off(a.support.transition.end).detach()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.detach()})}var c=this.tip(),d=a.Event("hide");return this.$element.trigger(d),d.isDefaultPrevented()?void 0:(c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?b():c.detach(),this.$element.trigger("hidden"),this)},fixTitle:function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},hasContent:function(){return this.getTitle()},getPosition:function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},tip:function(){return this.$tip=this.$tip||a(this.options.template)},arrow:function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(b){var c=b?a(b.currentTarget)[this.type](this._options).data(this.type):this;c.tip().hasClass("in")?c.hide():c.show()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f="object"==typeof c&&c;e||d.data("tooltip",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b).delegate('[data-dismiss="modal"]',"click.dismiss.modal",a.proxy(this.hide,this)),this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};b.prototype={constructor:b,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var b=this,c=a.Event("show");this.$element.trigger(c),this.isShown||c.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.backdrop(function(){var c=a.support.transition&&b.$element.hasClass("fade");b.$element.parent().length||b.$element.appendTo(document.body),b.$element.show(),c&&b.$element[0].offsetWidth,b.$element.addClass("in").attr("aria-hidden",!1),b.enforceFocus(),c?b.$element.one(a.support.transition.end,function(){b.$element.focus().trigger("shown")}):b.$element.focus().trigger("shown")}))},hide:function(b){b&&b.preventDefault();b=a.Event("hide"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.modal"),this.$element.removeClass("in").attr("aria-hidden",!0),a.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal())},enforceFocus:function(){var b=this;a(document).on("focusin.modal",function(a){b.$element[0]===a.target||b.$element.has(a.target).length||b.$element.focus()})},escape:function(){var a=this;this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.modal",function(b){27==b.which&&a.hide()}):this.isShown||this.$element.off("keyup.dismiss.modal")},hideWithTransition:function(){var b=this,c=setTimeout(function(){b.$element.off(a.support.transition.end),b.hideModal()},500);this.$element.one(a.support.transition.end,function(){clearTimeout(c),b.hideModal()})},hideModal:function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden")})},removeBackdrop:function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},backdrop:function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$backdrop.click("static"==this.options.backdrop?a.proxy(this.$element[0].focus,this.$element[0]):a.proxy(this.hide,this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b):b()):b&&b()}};var c=a.fn.modal;a.fn.modal=function(c){return this.each(function(){var d=a(this),e=d.data("modal"),f=a.extend({},a.fn.modal.defaults,d.data(),"object"==typeof c&&c);e||d.data("modal",e=new b(this,f)),"string"==typeof c?e[c]():f.show&&e.show()})},a.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f).one("hide",function(){c.focus()})})}(window.jQuery),!function(a){"use strict";a(function(){a.support.transition=function(){var a=function(){var a,b=document.createElement("bootstrap"),c={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(a in c)if(void 0!==b.style[a])return c[a]}();return a&&{end:a}}()})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.button.defaults,c)};b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.data(),e=c.is("input")?"val":"html";a+="Text",d.resetText||c.data("resetText",c[e]()),c[e](d[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons-radio"]');a&&a.find(".active").removeClass("active"),this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("button"),f="object"==typeof c&&c;e||d.data("button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.defaults={loadingText:"loading..."},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle")})}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=this.options;return a=("function"==typeof c.content?c.content.call(b[0]):c.content)||b.attr("data-content")},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f="object"==typeof c&&c;e||d.data("popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.typeahead.defaults,c),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.source=this.options.source,this.$menu=a(this.options.menu),this.shown=!1,this.listen()};b.prototype={constructor:b,select:function(){var a=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(a)).change(),this.hide()},updater:function(a){return a},show:function(){var b=a.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});return this.$menu.insertAfter(this.$element).css({top:b.top+b.height,left:b.left}).show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(){var b;return this.query=this.$element.val(),!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(b=a.isFunction(this.source)?this.source(this.query,a.proxy(this.process,this)):this.source,b?this.process(b):this)},process:function(b){var c=this;return b=a.grep(b,function(a){return c.matcher(a)}),b=this.sorter(b),b.length?this.render(b.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(a){return~a.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(a){for(var b,c=[],d=[],e=[];b=a.shift();)b.toLowerCase().indexOf(this.query.toLowerCase())?~b.indexOf(this.query)?d.push(b):e.push(b):c.push(b);return c.concat(d,e)},highlighter:function(a){var b=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return a.replace(new RegExp("("+b+")","ig"),function(a,b){return"<strong>"+b+"</strong>"})},render:function(b){var c=this;return b=a(b).map(function(b,d){return b=a(c.options.item).attr("data-value",d),b.find("a").html(c.highlighter(d)),b[0]}),b.first().addClass("active"),this.$menu.html(b),this},next:function(){var b=this.$menu.find(".active").removeClass("active"),c=b.next();c.length||(c=a(this.$menu.find("li")[0])),c.addClass("active")},prev:function(){var a=this.$menu.find(".active").removeClass("active"),b=a.prev();b.length||(b=this.$menu.find("li").last()),b.addClass("active")},listen:function(){this.$element.on("focus",a.proxy(this.focus,this)).on("blur",a.proxy(this.blur,this)).on("keypress",a.proxy(this.keypress,this)).on("keyup",a.proxy(this.keyup,this)),this.eventSupported("keydown")&&this.$element.on("keydown",a.proxy(this.keydown,this)),this.$menu.on("click",a.proxy(this.click,this)).on("mouseenter","li",a.proxy(this.mouseenter,this)).on("mouseleave","li",a.proxy(this.mouseleave,this))},eventSupported:function(a){var b=a in this.$element;return b||(this.$element.setAttribute(a,"return;"),b="function"==typeof this.$element[a]),b},move:function(a){if(this.shown){switch(a.keyCode){case 9:case 13:case 27:a.preventDefault();break;case 38:a.preventDefault(),this.prev();break;case 40:a.preventDefault(),this.next()}a.stopPropagation()}},keydown:function(b){this.suppressKeyPressRepeat=~a.inArray(b.keyCode,[40,38,9,13,27]),this.move(b)},keypress:function(a){this.suppressKeyPressRepeat||this.move(a)},keyup:function(a){switch(a.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}a.stopPropagation(),a.preventDefault()},focus:function(){this.focused=!0},blur:function(){this.focused=!1,!this.mousedover&&this.shown&&this.hide()},click:function(a){a.stopPropagation(),a.preventDefault(),this.select(),this.$element.focus()},mouseenter:function(b){this.mousedover=!0,this.$menu.find(".active").removeClass("active"),a(b.currentTarget).addClass("active")},mouseleave:function(){this.mousedover=!1,!this.focused&&this.shown&&this.hide()}};var c=a.fn.typeahead;a.fn.typeahead=function(c){return this.each(function(){var d=a(this),e=d.data("typeahead"),f="object"==typeof c&&c;e||d.data("typeahead",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1},a.fn.typeahead.Constructor=b,a.fn.typeahead.noConflict=function(){return a.fn.typeahead=c,this},a(document).on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(){var b=a(this);b.data("typeahead")||b.typeahead(b.data())})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.prototype={cycle:function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},getActiveIndex:function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},to:function(b){var c=this.getActiveIndex(),d=this;
+if(!(b>this.$items.length-1||0>b))return this.sliding?this.$element.one("slid",function(){d.to(b)}):c==b?this.pause().cycle():this.slide(b>c?"next":"prev",a(this.$items[b]))},pause:function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),clearInterval(this.interval),this.interval=null,this},next:function(){return this.sliding?void 0:this.slide("next")},prev:function(){return this.sliding?void 0:this.slide("prev")},slide:function(b,c){var d,e=this.$element.find(".item.active"),f=c||e[b](),g=this.interval,h="next"==b?"left":"right",i="next"==b?"first":"last",j=this;if(this.sliding=!0,g&&this.pause(),f=f.length?f:this.$element.find(".item")[i](),d=a.Event("slide",{relatedTarget:f[0],direction:h}),!f.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(j.$indicators.children()[j.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(d),d.isDefaultPrevented())return;f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),this.$element.one(a.support.transition.end,function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),j.sliding=!1,setTimeout(function(){j.$element.trigger("slid")},0)})}else{if(this.$element.trigger(d),d.isDefaultPrevented())return;e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return g&&this.cycle(),this}}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("carousel"),f=a.extend({},a.fn.carousel.defaults,"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.defaults={interval:5e3,pause:"hover"},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d,e=a(this),f=a(e.attr("data-target")||(c=e.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),g=a.extend({},f.data(),e.data());f.carousel(g),(d=e.attr("data-slide-to"))&&f.data("carousel").pause().to(d).cycle(),b.preventDefault()})}(window.jQuery),!function(a){"use strict";function b(b,c){var d,e=a.proxy(this.process,this),f=a(a(b).is("body")?window:b);this.options=a.extend({},a.fn.scrollspy.defaults,c),this.$scrollElement=f.on("scroll.scroll-spy.data-api",e),this.selector=(this.options.target||(d=a(b).attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=a("body"),this.refresh(),this.process()}b.prototype={constructor:b,refresh:function(){var b,c=this;this.offsets=a([]),this.targets=a([]),b=this.$body.find(this.selector).map(function(){var b=a(this),d=b.data("target")||b.attr("href"),e=/^#\w/.test(d)&&a(d);return e&&e.length&&[[e.position().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),d]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},process:function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},activate:function(b){var c,d;this.activeTarget=b,a(this.selector).parent(".active").removeClass("active"),d=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',c=a(d).parent("li").addClass("active"),c.parent(".dropdown-menu").length&&(c=c.closest("li.dropdown").addClass("active")),c.trigger("activate")}};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("scrollspy"),f="object"==typeof c&&c;e||d.data("scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.defaults={offset:10},a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.collapse.defaults,c),this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.prototype={constructor:b,dimension:function(){var a=this.$element.hasClass("width");return a?"width":"height"},show:function(){var b,c,d,e;if(!this.transitioning&&!this.$element.hasClass("in")){if(b=this.dimension(),c=a.camelCase(["scroll",b].join("-")),d=this.$parent&&this.$parent.find("> .accordion-group > .in"),d&&d.length){if(e=d.data("collapse"),e&&e.transitioning)return;d.collapse("hide"),e||d.data("collapse",null)}this.$element[b](0),this.transition("addClass",a.Event("show"),"shown"),a.support.transition&&this.$element[b](this.$element[0][c])}},hide:function(){var b;!this.transitioning&&this.$element.hasClass("in")&&(b=this.dimension(),this.reset(this.$element[b]()),this.transition("removeClass",a.Event("hide"),"hidden"),this.$element[b](0))},reset:function(a){var b=this.dimension();return this.$element.removeClass("collapse")[b](a||"auto")[0].offsetWidth,this.$element[null!==a?"addClass":"removeClass"]("collapse"),this},transition:function(b,c,d){var e=this,f=function(){"show"==c.type&&e.reset(),e.transitioning=0,e.$element.trigger(d)};this.$element.trigger(c),c.isDefaultPrevented()||(this.transitioning=1,this.$element[b]("in"),a.support.transition&&this.$element.hasClass("collapse")?this.$element.one(a.support.transition.end,f):f())},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("collapse"),f=a.extend({},a.fn.collapse.defaults,d.data(),"object"==typeof c&&c);e||d.data("collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.defaults={toggle:!0},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e).data("collapse")?"toggle":d.data();d[a(e).hasClass("in")?"addClass":"removeClass"]("collapsed"),a(e).collapse(f)})}(window.jQuery),!function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype={constructor:b,show:function(){var b,c,d,e=this.element,f=e.closest("ul:not(.dropdown-menu)"),g=e.attr("data-target");g||(g=e.attr("href"),g=g&&g.replace(/.*(?=#[^\s]*$)/,"")),e.parent("li").hasClass("active")||(b=f.find(".active:last a")[0],d=a.Event("show",{relatedTarget:b}),e.trigger(d),d.isDefaultPrevented()||(c=a(g),this.activate(e.parent("li"),f),this.activate(c,c.parent(),function(){e.trigger({type:"shown",relatedTarget:b})})))},activate:function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e):e(),f.removeClass("in")}};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("tab");e||d.data("tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery);
\ No newline at end of file
diff --git a/web/demos/package/app/styles/f3706ec2.main.css b/web/demos/package/app/styles/00ae7995.main.css
similarity index 97%
rename from web/demos/package/app/styles/f3706ec2.main.css
rename to web/demos/package/app/styles/00ae7995.main.css
index b90ee41..ad78456 100644
--- a/web/demos/package/app/styles/f3706ec2.main.css
+++ b/web/demos/package/app/styles/00ae7995.main.css
@@ -1 +1 @@
-body{padding-top:60px;padding-bottom:40px}.sidebar-nav{padding:9px 0}.navbar .nav>li{line-height:28px}@media (max-width:980px){.navbar-text.pull-right{float:none;padding-left:5px;padding-right:5px}}[class^=icon-],[class*=" icon-"]{background-image:url(../images/23bb1446.glyphicons-halflings.png)}h4.ui-pnotify-title{display:inline;font-size:16px}.ui-pnotify-text{font-size:12px}.ui-pnotify-icon,.ui-pnotify-icon span{display:inline-block;float:none}.app-title{margin-top:0}.btn-view-console{margin-left:20px}.twitter-grid{border:1px solid #d4d4d4;height:350px;width:400px}.mobile-grid{border:1px solid #d4d4d4;height:450px}.mobile-grid-remove{text-align:center;cursor:pointer}.params-nav select{width:100%}.chart-title{text-align:center}.line-chart{height:300px}.network-response{height:30px}.network-response-label{display:inline-block;font-weight:700;vertical-align:middle}.network-response-stat{display:inline-block;width:100px;overflow:hidden;vertical-align:middle}.network-response-loading{background-color:#ff0}.bar-chart rect.bar-chart-p{fill:#05EEFA}.bar-chart rect.bar-chart-c{fill:transparent;stroke:red;stroke-width:1px;width:100%}.bar-chart rect{fill:#05EEFA}.bar-chart text{fill:#000}.chart-ctnr{height:300px}.gauge{margin-top:15px}.marker-label{color:red;background-color:#fff;font-family:"Lucida Grande",Arial,sans-serif;font-size:10px;font-weight:700;text-align:center;width:50px;border:1px solid #000;white-space:nowrap}.widget-response{max-height:340px;overflow:auto}.overview-item{padding-top:14px}.overview-item .key{color:#888;letter-spacing:.1em;display:block;margin-bottom:5px}.overview-item .value{font-weight:700;color:#000;font-size:140%;display:block}.navbar .brand{background:url(../images/74c3df97.main_banner.png) no-repeat scroll 0 0;padding:0;width:241px;height:48px;margin-left:-15px}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{background:#11506d}.navbar .navbar-inner{background:#11506d}.generate-tx-btn-wrap.span3,.generate-tx-desc.span9{display:inline-block;vertical-align:middle;float:none}.generate-tx-btn-wrap.span3{text-align:center}#alertDisplayBox{padding:10px;height:418px;overflow:auto}article.alert-msg{padding:10px 25px;border-radius:4px;color:#000;text-shadow:0 1px 0 rgba(255,255,255,.6);margin-bottom:10px}article.alert-msg.medium,button.generate-medium{background:#FF7000;box-shadow:inset 0 -2px 20px 0 #EEBC6B,0 1px 3px rgba(0,0,0,.3)}button.generate-medium:hover,button.generate-medium:focus{background:#FF970B}article.alert-msg.high,button.generate-high{background:#FF5E54;box-shadow:inset 0 -2px 20px 0 #D14D45,0 1px 3px rgba(0,0,0,.3)}button.generate-high{color:#fff;text-shadow:0 1px 0 #000}button.generate-high:hover,button.generate-high:focus{background:#FF4A31;color:#fff;text-shadow:0 1px 0 #000}article.alert-msg.low,button.generate-low{background:#FFF971;box-shadow:inset 0 -4px 30px -6px #EED306,0 1px 3px rgba(0,0,0,.3)}button.generate-low:hover,button.generate-low:focus{background:#FFE00A}article.alert-msg h1{font-size:18px;margin:0}button.clearFraudsBtn{float:right}
\ No newline at end of file
+body{padding-top:60px;padding-bottom:40px}.sidebar-nav{padding:9px 0}.navbar .nav>li{line-height:28px}@media (max-width:980px){.navbar-text.pull-right{float:none;padding-left:5px;padding-right:5px}}[class^=icon-],[class*=" icon-"]{background-image:url(../images/23bb1446.glyphicons-halflings.png)}h4.ui-pnotify-title{display:inline;font-size:16px}.ui-pnotify-text{font-size:12px}.ui-pnotify-icon,.ui-pnotify-icon span{display:inline-block;float:none}.app-title{margin-top:0}.btn-view-console{margin-left:20px}.twitter-grid{border:1px solid #d4d4d4;height:350px;width:400px}.mobile-grid{border:1px solid #d4d4d4;height:450px}.mobile-grid-remove{text-align:center;cursor:pointer}.params-nav select{width:100%}.chart-title{text-align:center}.line-chart{height:300px}.network-response{height:30px}.network-response-label{display:inline-block;font-weight:700;vertical-align:middle}.network-response-stat{display:inline-block;width:100px;overflow:hidden;vertical-align:middle}.network-response-loading{background-color:#ff0}.bar-chart rect.bar-chart-p{fill:#05EEFA}.bar-chart rect.bar-chart-c{fill:transparent;stroke:red;stroke-width:1px;width:100%}.bar-chart rect{fill:#05EEFA}.bar-chart text{fill:#000}.chart-ctnr{height:300px}.gauge{margin-top:15px}.marker-label{color:red;background-color:#fff;font-family:"Lucida Grande",Arial,sans-serif;font-size:10px;font-weight:700;text-align:center;width:50px;border:1px solid #000;white-space:nowrap}.widget-response{max-height:340px;overflow:auto}.overview-item{padding-top:14px}.overview-item .key{color:#888;letter-spacing:.1em;display:block;margin-bottom:5px}.overview-item .value{font-weight:700;color:#000;font-size:140%;display:block}.navbar .brand{background:url(../images/74c3df97.main_banner.png) no-repeat scroll 0 0;padding:0;width:241px;height:48px;margin-left:-15px}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{background:#11506d}.navbar .navbar-inner{background:#11506d}.generate-tx-btn-wrap.span3,.generate-tx-desc.span9{display:inline-block;vertical-align:middle;float:none}.generate-tx-btn-wrap.span3{text-align:center}#alertDisplayBox{padding:10px;height:418px;overflow:auto}article.alert-msg{padding:10px 25px;border-radius:4px;color:#000;text-shadow:0 1px 0 rgba(255,255,255,.6);margin-bottom:10px}article.alert-msg.medium,button.generate-medium{background:#FF7000;box-shadow:inset 0 -2px 20px 0 #EEBC6B,0 1px 3px rgba(0,0,0,.3)}button.generate-medium:hover,button.generate-medium:focus{background:#FF970B}article.alert-msg.high,button.generate-high{background:#FF5E54;box-shadow:inset 0 -2px 20px 0 #D14D45,0 1px 3px rgba(0,0,0,.3)}button.generate-high{color:#fff;text-shadow:0 1px 0 #000}button.generate-high:hover,button.generate-high:focus{background:#FF4A31;color:#fff;text-shadow:0 1px 0 #000}article.alert-msg.low,button.generate-low{background:#FFF971;box-shadow:inset 0 -4px 30px -6px #EED306,0 1px 3px rgba(0,0,0,.3)}button.generate-low:hover,button.generate-low:focus{background:#FFE00A}article.alert-msg h1{font-size:18px;margin:0}button.clearFraudsBtn{float:right}a.svg-link{text-decoration:underline}
\ No newline at end of file
diff --git a/web/demos/package/app/views/dimensions.html b/web/demos/package/app/views/dimensions.html
index 80913d0..afd1703 100644
--- a/web/demos/package/app/views/dimensions.html
+++ b/web/demos/package/app/views/dimensions.html
@@ -160,6 +160,6 @@
     <hr>
 
     <footer>
-        <p>&copy; DataTorrent 2013</p>
+        <p>&copy; DataTorrent 2014</p>
     </footer>
 </div><!--/.fluid-container-->
\ No newline at end of file
diff --git a/web/demos/package/app/views/fraud.html b/web/demos/package/app/views/fraud.html
index 7a3b9b4..cedfa5c 100644
--- a/web/demos/package/app/views/fraud.html
+++ b/web/demos/package/app/views/fraud.html
@@ -47,7 +47,7 @@
 	<hr>
 
 	<footer>
-		<p>&copy; DataTorrent 2013</p>
+		<p>&copy; DataTorrent 2014</p>
 	</footer>
 </div><!--/.fluid-container-->
 <div id="txn-modal" class="modal hide fade" role="dialog" style="display:none">
diff --git a/web/demos/package/app/views/machine.html b/web/demos/package/app/views/machine.html
index 4ac4248..0da15a6 100644
--- a/web/demos/package/app/views/machine.html
+++ b/web/demos/package/app/views/machine.html
@@ -168,6 +168,6 @@
     <hr>
 
     <footer>
-        <p>&copy; DataTorrent 2013</p>
+        <p>&copy; DataTorrent 2014</p>
     </footer>
 </div><!--/.fluid-container-->
\ No newline at end of file
diff --git a/web/demos/package/app/views/mobile.html b/web/demos/package/app/views/mobile.html
index 4dc9400..4a5f2cf 100644
--- a/web/demos/package/app/views/mobile.html
+++ b/web/demos/package/app/views/mobile.html
@@ -35,6 +35,6 @@
     <hr>
 
     <footer>
-        <p>&copy; DataTorrent 2013</p>
+        <p>&copy; DataTorrent 2014</p>
     </footer>
 </div><!--/.fluid-container-->
\ No newline at end of file
diff --git a/web/demos/package/app/views/twitter.html b/web/demos/package/app/views/twitter.html
index 3ba9051..e1897cd 100644
--- a/web/demos/package/app/views/twitter.html
+++ b/web/demos/package/app/views/twitter.html
@@ -2,14 +2,14 @@
     <div class="row-fluid">
         <div class="span12">
             <h2 class="app-title">
-                Twitter Top URLs
+                {{pageTitle}}
                 <a ng-show="appURL" href="{{appURL}}" class="btn btn-primary btn-view-console" target="_blank">View Console</a>
             </h2>
         </div>
     </div>
     <div class="row-fluid">
         <p class="well span7">
-            This demo application processes tweets and computes most frequently cited URLs during the last 5 minutes. The results are continuously updated every 0.5 sec. For demo purposes, we used live (1% sample) developer version of the Twitter feed, and scale it up by 100x to produce the true load.  The application process load equivalent to full firehose.
+            This demo application processes tweets and computes most frequently cited {{entity}} during the last 5 minutes. The results are continuously updated every 0.5 sec. For demo purposes, we used live (1% sample) developer version of the Twitter feed, and scale it up by 100x to produce the true load.  The application process load equivalent to full firehose.
         </p>
         <div class="span5">
             <span widgets-stat="" app="app"></span>
@@ -17,13 +17,13 @@
     </div>
     <div class="row-fluid">
         <div class="span4">
-            <h4>Top 10 URLs</h4>
+            <h4>{{gridTitle}}</h4>
             <div ng-controller="TwitterGridControlller">
                 <div class="twitter-grid" ng-grid="gridOptions"></div>
             </div>
         </div><!--/span-->
         <div class="span4">
-            <h4>Top 10 URLs Chart</h4>
+            <h4>{{chartTitle}}</h4>
             <div ng-controller="TwitterBarChartController">
                 <span widgets-bar-chart="" class="bar-chart" data="twitterBarChartData" label="name" on-click="d3OnClick(item)"></span>
             </div>
@@ -33,6 +33,6 @@
     <hr>
 
     <footer>
-        <p>&copy; DataTorrent 2013</p>
+        <p>&copy; DataTorrent 2014</p>
     </footer>
 </div><!--/.fluid-container-->
\ No newline at end of file
diff --git a/web/demos/package/config.js b/web/demos/package/config.js
index ec62902..1db5085 100644
--- a/web/demos/package/config.js
+++ b/web/demos/package/config.js
@@ -26,7 +26,8 @@
 config.settings = {};
 var settings = config.settings;
 
-settings.twitter = {};
+settings.twitterUrls = {};
+settings.twitterHashtags = {};
 settings.mobile = {};
 settings.mobile.topic = {};
 settings.machine = {};
@@ -38,8 +39,10 @@
 settings.webSocketURL = 'ws://' + config.gateway.host + ':' + config.gateway.port + '/pubsub';
 settings.appsURL = 'http://' + config.gateway.host + ':' + config.gateway.port + '/static/#ops/apps/';
 
-settings.twitter.appName = process.env.APP_NAME_TWITTER || 'TwitterDemo';
-settings.twitter.topic = 'demos.twitter.topURLs';
+settings.twitterUrls.appName = process.env.APP_NAME_TWITTER_URLS || 'TwitterDemo';
+settings.twitterUrls.topic = 'demos.twitter.topURLs';
+settings.twitterHashtags.appName = process.env.APP_NAME_TWITTER_HASHTAGS || 'TwitterTrendingDemo';
+settings.twitterHashtags.topic = 'demos.twitter.topHashtags';
 settings.mobile.topic.out = 'demos.mobile.phoneLocationQueryResult';
 settings.mobile.topic.in = 'demos.mobile.phoneLocationQuery';
 settings.mobile.appName = process.env.APP_NAME_MOBILE || 'MobileDemo';