Merging in part of Scripts support, the one without envjs, as the rest is broken because of bugs in nashorn
1.1 --- a/boot-script/pom.xml Wed Jun 04 06:36:44 2014 +0200
1.2 +++ b/boot-script/pom.xml Thu Jun 05 22:13:56 2014 +0200
1.3 @@ -19,11 +19,37 @@
1.4 <plugin>
1.5 <groupId>org.apache.felix</groupId>
1.6 <artifactId>maven-bundle-plugin</artifactId>
1.7 + <version>2.4.0</version>
1.8 + <extensions>true</extensions>
1.9 + <configuration>
1.10 + <instructions>
1.11 + <Export-Package>${publicPackages}</Export-Package>
1.12 + <Bundle-SymbolicName>net.java.html.boot.script</Bundle-SymbolicName>
1.13 + </instructions>
1.14 + </configuration>
1.15 </plugin>
1.16 + <plugin>
1.17 + <groupId>org.netbeans.html</groupId>
1.18 + <artifactId>html4j-maven-plugin</artifactId>
1.19 + </plugin>
1.20 + <plugin>
1.21 + <groupId>org.apache.maven.plugins</groupId>
1.22 + <artifactId>maven-compiler-plugin</artifactId>
1.23 + <version>2.3.2</version>
1.24 + <configuration>
1.25 + <source>1.7</source>
1.26 + <target>1.7</target>
1.27 + </configuration>
1.28 + </plugin>
1.29 </plugins>
1.30 </build>
1.31 <dependencies>
1.32 <dependency>
1.33 + <groupId>org.netbeans.api</groupId>
1.34 + <artifactId>org-openide-util-lookup</artifactId>
1.35 + <scope>provided</scope>
1.36 + </dependency>
1.37 + <dependency>
1.38 <groupId>org.netbeans.html</groupId>
1.39 <artifactId>net.java.html.boot</artifactId>
1.40 <version>${project.version}</version>
1.41 @@ -35,16 +61,49 @@
1.42 <scope>test</scope>
1.43 </dependency>
1.44 <dependency>
1.45 - <groupId>org.webjars</groupId>
1.46 - <artifactId>envjs</artifactId>
1.47 - <version>1.2</version>
1.48 - <scope>test</scope>
1.49 - </dependency>
1.50 - <dependency>
1.51 <groupId>${project.groupId}</groupId>
1.52 <artifactId>net.java.html.json.tck</artifactId>
1.53 <version>${project.version}</version>
1.54 <scope>test</scope>
1.55 </dependency>
1.56 + <dependency>
1.57 + <groupId>org.glassfish.grizzly</groupId>
1.58 + <artifactId>grizzly-http-server</artifactId>
1.59 + <version>${grizzly.version}</version>
1.60 + <scope>test</scope>
1.61 + </dependency>
1.62 + <dependency>
1.63 + <groupId>org.glassfish.grizzly</groupId>
1.64 + <artifactId>grizzly-websockets-server</artifactId>
1.65 + <version>${grizzly.version}</version>
1.66 + <scope>test</scope>
1.67 + <type>jar</type>
1.68 + </dependency>
1.69 + <dependency>
1.70 + <groupId>org.glassfish.grizzly</groupId>
1.71 + <artifactId>grizzly-http-servlet</artifactId>
1.72 + <version>${grizzly.version}</version>
1.73 + <scope>test</scope>
1.74 + </dependency>
1.75 + <dependency>
1.76 + <groupId>javax.servlet</groupId>
1.77 + <artifactId>javax.servlet-api</artifactId>
1.78 + <scope>test</scope>
1.79 + <version>3.1.0</version>
1.80 + </dependency>
1.81 + <dependency>
1.82 + <groupId>org.netbeans.html</groupId>
1.83 + <artifactId>ko4j</artifactId>
1.84 + <version>${project.version}</version>
1.85 + <scope>test</scope>
1.86 + <type>jar</type>
1.87 + </dependency>
1.88 + <dependency>
1.89 + <groupId>${project.groupId}</groupId>
1.90 + <artifactId>ko-ws-tyrus</artifactId>
1.91 + <version>${project.version}</version>
1.92 + <scope>test</scope>
1.93 + <type>jar</type>
1.94 + </dependency>
1.95 </dependencies>
1.96 </project>
1.97 \ No newline at end of file
2.1 --- a/boot-script/src/main/java/net/java/html/boot/script/ScriptPresenter.java Wed Jun 04 06:36:44 2014 +0200
2.2 +++ b/boot-script/src/main/java/net/java/html/boot/script/ScriptPresenter.java Thu Jun 05 22:13:56 2014 +0200
2.3 @@ -42,11 +42,13 @@
2.4 */
2.5 package net.java.html.boot.script;
2.6
2.7 +import java.io.Closeable;
2.8 +import java.io.IOException;
2.9 import java.io.Reader;
2.10 import java.net.URL;
2.11 import java.util.ArrayList;
2.12 -import java.util.Arrays;
2.13 import java.util.List;
2.14 +import java.util.concurrent.Executor;
2.15 import java.util.logging.Level;
2.16 import java.util.logging.Logger;
2.17 import javax.script.Invocable;
2.18 @@ -63,15 +65,19 @@
2.19 * <p>
2.20 * One can load in browser simulation for example from
2.21 * <a href="http://www.envjs.com/">env.js</a>. The best way to achieve so,
2.22 - * is to add dependency on XXX
2.23 + * is to wait until JDK-8046013 gets fixed....
2.24 *
2.25 *
2.26 * @author Jaroslav Tulach
2.27 */
2.28 -public final class ScriptPresenter implements Presenter, Fn.FromJavaScript, Fn.ToJavaScript {
2.29 +final class ScriptPresenter
2.30 +implements Presenter, Fn.FromJavaScript, Fn.ToJavaScript, Executor {
2.31 + private static final Logger LOG = Logger.getLogger(ScriptPresenter.class.getName());
2.32 private final ScriptEngine eng;
2.33 + private final Executor exc;
2.34
2.35 - public ScriptPresenter() {
2.36 + public ScriptPresenter(Executor exc) {
2.37 + this.exc = exc;
2.38 try {
2.39 eng = new ScriptEngineManager().getEngineByName("javascript");
2.40 eng.eval("function alert(msg) { Packages.java.lang.System.out.println(msg); };");
2.41 @@ -109,7 +115,11 @@
2.42
2.43 @Override
2.44 public void displayPage(URL page, Runnable onPageLoad) {
2.45 - // not really displaying anything
2.46 + try {
2.47 + eng.eval("if (typeof window !== 'undefined') window.location = '" + page + "'");
2.48 + } catch (ScriptException ex) {
2.49 + LOG.log(Level.SEVERE, "Cannot load " + page, ex);
2.50 + }
2.51 if (onPageLoad != null) {
2.52 onPageLoad.run();
2.53 }
2.54 @@ -200,6 +210,30 @@
2.55 }
2.56 }
2.57
2.58 + @Override
2.59 + public void execute(final Runnable command) {
2.60 + if (Fn.activePresenter() == this) {
2.61 + command.run();
2.62 + return;
2.63 + }
2.64 +
2.65 + class Wrap implements Runnable {
2.66 + public void run() {
2.67 + try (Closeable c = Fn.activate(ScriptPresenter.this)) {
2.68 + command.run();
2.69 + } catch (IOException ex) {
2.70 + throw new IllegalStateException(ex);
2.71 + }
2.72 + }
2.73 + }
2.74 + final Runnable wrap = new Wrap();
2.75 + if (exc == null) {
2.76 + wrap.run();
2.77 + } else {
2.78 + exc.execute(wrap);
2.79 + }
2.80 + }
2.81 +
2.82 private class FnImpl extends Fn {
2.83
2.84 private final Object fn;
2.85 @@ -215,7 +249,7 @@
2.86 }
2.87
2.88 final Object invokeImpl(Object thiz, boolean arrayChecks, Object... args) throws Exception {
2.89 - List<Object> all = new ArrayList<Object>(args.length + 1);
2.90 + List<Object> all = new ArrayList<>(args.length + 1);
2.91 all.add(thiz == null ? fn : thiz);
2.92 for (int i = 0; i < args.length; i++) {
2.93 if (arrayChecks) {
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2 +++ b/boot-script/src/main/java/net/java/html/boot/script/Scripts.java Thu Jun 05 22:13:56 2014 +0200
3.3 @@ -0,0 +1,102 @@
3.4 +/**
3.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3.6 + *
3.7 + * Copyright 2013-2014 Oracle and/or its affiliates. All rights reserved.
3.8 + *
3.9 + * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
3.10 + * Other names may be trademarks of their respective owners.
3.11 + *
3.12 + * The contents of this file are subject to the terms of either the GNU
3.13 + * General Public License Version 2 only ("GPL") or the Common
3.14 + * Development and Distribution License("CDDL") (collectively, the
3.15 + * "License"). You may not use this file except in compliance with the
3.16 + * License. You can obtain a copy of the License at
3.17 + * http://www.netbeans.org/cddl-gplv2.html
3.18 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
3.19 + * specific language governing permissions and limitations under the
3.20 + * License. When distributing the software, include this License Header
3.21 + * Notice in each file and include the License file at
3.22 + * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this
3.23 + * particular file as subject to the "Classpath" exception as provided
3.24 + * by Oracle in the GPL Version 2 section of the License file that
3.25 + * accompanied this code. If applicable, add the following below the
3.26 + * License Header, with the fields enclosed by brackets [] replaced by
3.27 + * your own identifying information:
3.28 + * "Portions Copyrighted [year] [name of copyright owner]"
3.29 + *
3.30 + * Contributor(s):
3.31 + *
3.32 + * The Original Software is NetBeans. The Initial Developer of the Original
3.33 + * Software is Oracle. Portions Copyright 2013-2014 Oracle. All Rights Reserved.
3.34 + *
3.35 + * If you wish your version of this file to be governed by only the CDDL
3.36 + * or only the GPL Version 2, indicate your decision by adding
3.37 + * "[Contributor] elects to include this software in this distribution
3.38 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
3.39 + * single choice of license, a recipient has the option to distribute
3.40 + * your version of this file under either the CDDL, the GPL Version 2 or
3.41 + * to extend the choice of license to its licensees as provided above.
3.42 + * However, if you add GPL Version 2 code and therefore, elected the GPL
3.43 + * Version 2 license, then the option applies only if the new code is
3.44 + * made subject to such option by the copyright holder.
3.45 + */
3.46 +package net.java.html.boot.script;
3.47 +
3.48 +import java.util.concurrent.Executor;
3.49 +import javax.script.ScriptEngine;
3.50 +import net.java.html.boot.BrowserBuilder;
3.51 +import net.java.html.js.JavaScriptBody;
3.52 +import org.apidesign.html.boot.spi.Fn.Presenter;
3.53 +
3.54 +/** Implementations of {@link Presenter}s that delegate
3.55 + * to Java {@link ScriptEngine scripting} API. Initialize your presenter
3.56 + * like this:
3.57 + *
3.58 + * <pre>
3.59 + *
3.60 + * {@link Runnable} <em>run</em> = ...; // your own init code
3.61 + * {@link Presenter Fn.Presenter} <em>p</em> = Scripts.{@link Scripts#createPresenter()};
3.62 + * BrowserBuilder.{@link BrowserBuilder#newBrowser(java.lang.Object...) newBrowser(<em>p</em>)}.
3.63 + * {@link BrowserBuilder#loadFinished(java.lang.Runnable) loadFinished(run)}.
3.64 + * {@link BrowserBuilder#showAndWait()};
3.65 + * </pre>
3.66 + *
3.67 + * and your runnable can make extensive use of {@link JavaScriptBody} directly or
3.68 + * indirectly via APIs using {@link JavaScriptBody such annotation} themselves.
3.69 + *
3.70 + * @author Jaroslav Tulach
3.71 + */
3.72 +public final class Scripts {
3.73 + private Scripts() {
3.74 + }
3.75 +
3.76 + /** Simple implementation of {@link Presenter} that delegates
3.77 + * to Java {@link ScriptEngine scripting} API. The presenter runs headless
3.78 + * without appropriate simulation of browser APIs. Its primary usefulness
3.79 + * is inside testing environments. The presenter implements {@link Executor}
3.80 + * interface, but invokes all runnables passed to {@link Executor#execute(java.lang.Runnable)}
3.81 + * immediately.
3.82 + *
3.83 + * @return new instance of a presenter that is using its own
3.84 + * {@link ScriptEngine} for <code>text/javascript</code> mimetype
3.85 + */
3.86 + public static Presenter createPresenter() {
3.87 + return new ScriptPresenter(null);
3.88 + }
3.89 +
3.90 + /** Implementation of {@link Presenter} that delegates
3.91 + * to Java {@link ScriptEngine scripting} API and can control execution
3.92 + * thread. The presenter runs headless
3.93 + * without appropriate simulation of browser APIs. Its primary usefulness
3.94 + * is inside testing environments. The presenter implements {@link Executor}
3.95 + * interface, and passes all runnables from {@link Executor#execute(java.lang.Runnable)}
3.96 + * to here in provided <code>exc</code> instance.
3.97 + *
3.98 + * @param exc the executor to re-schedule all asynchronous requests to
3.99 + * @return new instance of a presenter that is using its own
3.100 + * {@link ScriptEngine} for <code>text/javascript</code> mimetype
3.101 + */
3.102 + public static Presenter createPresenter(Executor exc) {
3.103 + return new ScriptPresenter(exc);
3.104 + }
3.105 +}
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
4.2 +++ b/boot-script/src/main/java/net/java/html/boot/script/package.html Thu Jun 05 22:13:56 2014 +0200
4.3 @@ -0,0 +1,51 @@
4.4 +<!--
4.5 +
4.6 + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
4.7 +
4.8 + Copyright 2013-2014 Oracle and/or its affiliates. All rights reserved.
4.9 +
4.10 + Oracle and Java are registered trademarks of Oracle and/or its affiliates.
4.11 + Other names may be trademarks of their respective owners.
4.12 +
4.13 + The contents of this file are subject to the terms of either the GNU
4.14 + General Public License Version 2 only ("GPL") or the Common
4.15 + Development and Distribution License("CDDL") (collectively, the
4.16 + "License"). You may not use this file except in compliance with the
4.17 + License. You can obtain a copy of the License at
4.18 + http://www.netbeans.org/cddl-gplv2.html
4.19 + or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
4.20 + specific language governing permissions and limitations under the
4.21 + License. When distributing the software, include this License Header
4.22 + Notice in each file and include the License file at
4.23 + nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this
4.24 + particular file as subject to the "Classpath" exception as provided
4.25 + by Oracle in the GPL Version 2 section of the License file that
4.26 + accompanied this code. If applicable, add the following below the
4.27 + License Header, with the fields enclosed by brackets [] replaced by
4.28 + your own identifying information:
4.29 + "Portions Copyrighted [year] [name of copyright owner]"
4.30 +
4.31 + Contributor(s):
4.32 +
4.33 + The Original Software is NetBeans. The Initial Developer of the Original
4.34 + Software is Oracle. Portions Copyright 2013-2014 Oracle. All Rights Reserved.
4.35 +
4.36 + If you wish your version of this file to be governed by only the CDDL
4.37 + or only the GPL Version 2, indicate your decision by adding
4.38 + "[Contributor] elects to include this software in this distribution
4.39 + under the [CDDL or GPL Version 2] license." If you do not indicate a
4.40 + single choice of license, a recipient has the option to distribute
4.41 + your version of this file under either the CDDL, the GPL Version 2 or
4.42 + to extend the choice of license to its licensees as provided above.
4.43 + However, if you add GPL Version 2 code and therefore, elected the GPL
4.44 + Version 2 license, then the option applies only if the new code is
4.45 + made subject to such option by the copyright holder.
4.46 +
4.47 +-->
4.48 +<body>
4.49 + <p>
4.50 + {@link net.java.html.boot.script.Scripts Factories} headless
4.51 + {@link net.java.html.boot.BrowserBuilder browser environment}
4.52 + useful for testing.
4.53 + </p>
4.54 +</body>
5.1 --- a/boot-script/src/test/java/net/java/html/boot/script/Jsr223JavaScriptTest.java Wed Jun 04 06:36:44 2014 +0200
5.2 +++ b/boot-script/src/test/java/net/java/html/boot/script/Jsr223JavaScriptTest.java Thu Jun 05 22:13:56 2014 +0200
5.3 @@ -65,7 +65,7 @@
5.4 }
5.5
5.6 @Factory public static Object[] compatibilityTests() throws Exception {
5.7 - final BrowserBuilder bb = BrowserBuilder.newBrowser(new ScriptPresenter()).
5.8 + final BrowserBuilder bb = BrowserBuilder.newBrowser(new ScriptPresenter(SingleCase.JS)).
5.9 loadClass(Jsr223JavaScriptTest.class).
5.10 loadPage("empty.html").
5.11 invoke("initialized");
6.1 --- a/boot-script/src/test/java/net/java/html/boot/script/SingleCase.java Wed Jun 04 06:36:44 2014 +0200
6.2 +++ b/boot-script/src/test/java/net/java/html/boot/script/SingleCase.java Thu Jun 05 22:13:56 2014 +0200
6.3 @@ -59,7 +59,7 @@
6.4 * @author Jaroslav Tulach <jtulach@netbeans.org>
6.5 */
6.6 public final class SingleCase implements ITest, IHookable, Runnable {
6.7 - private static final Executor JS = Executors.newSingleThreadExecutor();
6.8 + static final Executor JS = Executors.newSingleThreadExecutor();
6.9 private final Fn.Presenter p;
6.10 private final Method m;
6.11 private Object result;
7.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
7.2 +++ b/boot-script/src/test/java/net/java/html/boot/script/ko4j/DynamicHTTP.java Thu Jun 05 22:13:56 2014 +0200
7.3 @@ -0,0 +1,259 @@
7.4 +/**
7.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
7.6 + *
7.7 + * Copyright 2013-2014 Oracle and/or its affiliates. All rights reserved.
7.8 + *
7.9 + * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
7.10 + * Other names may be trademarks of their respective owners.
7.11 + *
7.12 + * The contents of this file are subject to the terms of either the GNU
7.13 + * General Public License Version 2 only ("GPL") or the Common
7.14 + * Development and Distribution License("CDDL") (collectively, the
7.15 + * "License"). You may not use this file except in compliance with the
7.16 + * License. You can obtain a copy of the License at
7.17 + * http://www.netbeans.org/cddl-gplv2.html
7.18 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
7.19 + * specific language governing permissions and limitations under the
7.20 + * License. When distributing the software, include this License Header
7.21 + * Notice in each file and include the License file at
7.22 + * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this
7.23 + * particular file as subject to the "Classpath" exception as provided
7.24 + * by Oracle in the GPL Version 2 section of the License file that
7.25 + * accompanied this code. If applicable, add the following below the
7.26 + * License Header, with the fields enclosed by brackets [] replaced by
7.27 + * your own identifying information:
7.28 + * "Portions Copyrighted [year] [name of copyright owner]"
7.29 + *
7.30 + * Contributor(s):
7.31 + *
7.32 + * The Original Software is NetBeans. The Initial Developer of the Original
7.33 + * Software is Oracle. Portions Copyright 2013-2014 Oracle. All Rights Reserved.
7.34 + *
7.35 + * If you wish your version of this file to be governed by only the CDDL
7.36 + * or only the GPL Version 2, indicate your decision by adding
7.37 + * "[Contributor] elects to include this software in this distribution
7.38 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
7.39 + * single choice of license, a recipient has the option to distribute
7.40 + * your version of this file under either the CDDL, the GPL Version 2 or
7.41 + * to extend the choice of license to its licensees as provided above.
7.42 + * However, if you add GPL Version 2 code and therefore, elected the GPL
7.43 + * Version 2 license, then the option applies only if the new code is
7.44 + * made subject to such option by the copyright holder.
7.45 + */
7.46 +package net.java.html.boot.script.ko4j;
7.47 +
7.48 +import java.io.ByteArrayInputStream;
7.49 +import java.io.ByteArrayOutputStream;
7.50 +import java.io.IOException;
7.51 +import java.io.InputStream;
7.52 +import java.io.OutputStream;
7.53 +import java.io.Reader;
7.54 +import java.net.URI;
7.55 +import java.net.URISyntaxException;
7.56 +import java.util.ArrayList;
7.57 +import java.util.List;
7.58 +import java.util.logging.Level;
7.59 +import java.util.logging.Logger;
7.60 +import org.glassfish.grizzly.PortRange;
7.61 +import org.glassfish.grizzly.http.server.HttpHandler;
7.62 +import org.glassfish.grizzly.http.server.HttpServer;
7.63 +import org.glassfish.grizzly.http.server.NetworkListener;
7.64 +import org.glassfish.grizzly.http.server.Request;
7.65 +import org.glassfish.grizzly.http.server.Response;
7.66 +import org.glassfish.grizzly.http.server.ServerConfiguration;
7.67 +import org.glassfish.grizzly.websockets.WebSocket;
7.68 +import org.glassfish.grizzly.websockets.WebSocketAddOn;
7.69 +import org.glassfish.grizzly.websockets.WebSocketApplication;
7.70 +import org.glassfish.grizzly.websockets.WebSocketEngine;
7.71 +
7.72 +/**
7.73 + *
7.74 + * @author Jaroslav Tulach <jtulach@netbeans.org>
7.75 + */
7.76 +final class DynamicHTTP extends HttpHandler {
7.77 + private static final Logger LOG = Logger.getLogger(DynamicHTTP.class.getName());
7.78 + private static int resourcesCount;
7.79 + private static List<Resource> resources;
7.80 + private static ServerConfiguration conf;
7.81 + private static HttpServer server;
7.82 +
7.83 + private DynamicHTTP() {
7.84 + }
7.85 +
7.86 + static URI initServer() throws Exception {
7.87 + server = HttpServer.createSimpleServer(null, new PortRange(8080, 65535));
7.88 + final WebSocketAddOn addon = new WebSocketAddOn();
7.89 + for (NetworkListener listener : server.getListeners()) {
7.90 + listener.registerAddOn(addon);
7.91 + }
7.92 + resources = new ArrayList<Resource>();
7.93 +
7.94 + conf = server.getServerConfiguration();
7.95 + final DynamicHTTP dh = new DynamicHTTP();
7.96 +
7.97 + conf.addHttpHandler(dh, "/");
7.98 +
7.99 + server.start();
7.100 +
7.101 + return pageURL("http", server, "/test.html");
7.102 + }
7.103 +
7.104 + @Override
7.105 + public void service(Request request, Response response) throws Exception {
7.106 + if ("/test.html".equals(request.getRequestURI())) {
7.107 + response.setContentType("text/html");
7.108 + final InputStream is = DynamicHTTP.class.getResourceAsStream("test.html");
7.109 + copyStream(is, response.getOutputStream(), null);
7.110 + return;
7.111 + }
7.112 + if ("/dynamic".equals(request.getRequestURI())) {
7.113 + String mimeType = request.getParameter("mimeType");
7.114 + List<String> params = new ArrayList<String>();
7.115 + boolean webSocket = false;
7.116 + for (int i = 0;; i++) {
7.117 + String p = request.getParameter("param" + i);
7.118 + if (p == null) {
7.119 + break;
7.120 + }
7.121 + if ("protocol:ws".equals(p)) {
7.122 + webSocket = true;
7.123 + continue;
7.124 + }
7.125 + params.add(p);
7.126 + }
7.127 + final String cnt = request.getParameter("content");
7.128 + String mangle = cnt.replace("%20", " ").replace("%0A", "\n");
7.129 + ByteArrayInputStream is = new ByteArrayInputStream(mangle.getBytes("UTF-8"));
7.130 + URI url;
7.131 + final Resource res = new Resource(is, mimeType, "/dynamic/res" + ++resourcesCount, params.toArray(new String[params.size()]));
7.132 + if (webSocket) {
7.133 + url = registerWebSocket(res);
7.134 + } else {
7.135 + url = registerResource(res);
7.136 + }
7.137 + response.getWriter().write(url.toString());
7.138 + response.getWriter().write("\n");
7.139 + return;
7.140 + }
7.141 +
7.142 + for (Resource r : resources) {
7.143 + if (r.httpPath.equals(request.getRequestURI())) {
7.144 + response.setContentType(r.httpType);
7.145 + r.httpContent.reset();
7.146 + String[] params = null;
7.147 + if (r.parameters.length != 0) {
7.148 + params = new String[r.parameters.length];
7.149 + for (int i = 0; i < r.parameters.length; i++) {
7.150 + params[i] = request.getParameter(r.parameters[i]);
7.151 + if (params[i] == null) {
7.152 + if ("http.method".equals(r.parameters[i])) {
7.153 + params[i] = request.getMethod().toString();
7.154 + } else if ("http.requestBody".equals(r.parameters[i])) {
7.155 + Reader rdr = request.getReader();
7.156 + StringBuilder sb = new StringBuilder();
7.157 + for (;;) {
7.158 + int ch = rdr.read();
7.159 + if (ch == -1) {
7.160 + break;
7.161 + }
7.162 + sb.append((char) ch);
7.163 + }
7.164 + params[i] = sb.toString();
7.165 + }
7.166 + }
7.167 + if (params[i] == null) {
7.168 + params[i] = "null";
7.169 + }
7.170 + }
7.171 + }
7.172 +
7.173 + copyStream(r.httpContent, response.getOutputStream(), null, params);
7.174 + }
7.175 + }
7.176 + }
7.177 +
7.178 + private URI registerWebSocket(Resource r) {
7.179 + WebSocketEngine.getEngine().register("", r.httpPath, new WS(r));
7.180 + return pageURL("ws", server, r.httpPath);
7.181 + }
7.182 +
7.183 + private URI registerResource(Resource r) {
7.184 + if (!resources.contains(r)) {
7.185 + resources.add(r);
7.186 + conf.addHttpHandler(this, r.httpPath);
7.187 + }
7.188 + return pageURL("http", server, r.httpPath);
7.189 + }
7.190 +
7.191 + private static URI pageURL(String proto, HttpServer server, final String page) {
7.192 + NetworkListener listener = server.getListeners().iterator().next();
7.193 + int port = listener.getPort();
7.194 + try {
7.195 + return new URI(proto + "://localhost:" + port + page);
7.196 + } catch (URISyntaxException ex) {
7.197 + throw new IllegalStateException(ex);
7.198 + }
7.199 + }
7.200 +
7.201 + static final class Resource {
7.202 +
7.203 + final InputStream httpContent;
7.204 + final String httpType;
7.205 + final String httpPath;
7.206 + final String[] parameters;
7.207 +
7.208 + Resource(InputStream httpContent, String httpType, String httpPath,
7.209 + String[] parameters) {
7.210 + httpContent.mark(Integer.MAX_VALUE);
7.211 + this.httpContent = httpContent;
7.212 + this.httpType = httpType;
7.213 + this.httpPath = httpPath;
7.214 + this.parameters = parameters;
7.215 + }
7.216 + }
7.217 +
7.218 + static void copyStream(InputStream is, OutputStream os, String baseURL, String... params) throws IOException {
7.219 + for (;;) {
7.220 + int ch = is.read();
7.221 + if (ch == -1) {
7.222 + break;
7.223 + }
7.224 + if (ch == '$' && params.length > 0) {
7.225 + int cnt = is.read() - '0';
7.226 + if (baseURL != null && cnt == 'U' - '0') {
7.227 + os.write(baseURL.getBytes("UTF-8"));
7.228 + } else {
7.229 + if (cnt >= 0 && cnt < params.length) {
7.230 + os.write(params[cnt].getBytes("UTF-8"));
7.231 + } else {
7.232 + os.write('$');
7.233 + os.write(cnt + '0');
7.234 + }
7.235 + }
7.236 + } else {
7.237 + os.write(ch);
7.238 + }
7.239 + }
7.240 + }
7.241 +
7.242 + private static class WS extends WebSocketApplication {
7.243 + private final Resource r;
7.244 +
7.245 + private WS(Resource r) {
7.246 + this.r = r;
7.247 + }
7.248 +
7.249 + @Override
7.250 + public void onMessage(WebSocket socket, String text) {
7.251 + try {
7.252 + r.httpContent.reset();
7.253 + ByteArrayOutputStream out = new ByteArrayOutputStream();
7.254 + copyStream(r.httpContent, out, null, text);
7.255 + String s = new String(out.toByteArray(), "UTF-8");
7.256 + socket.send(s);
7.257 + } catch (IOException ex) {
7.258 + LOG.log(Level.WARNING, "Error processing message " + text, ex);
7.259 + }
7.260 + }
7.261 + }
7.262 +}
8.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
8.2 +++ b/boot-script/src/test/java/net/java/html/boot/script/ko4j/KOCase.java Thu Jun 05 22:13:56 2014 +0200
8.3 @@ -0,0 +1,133 @@
8.4 +/**
8.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
8.6 + *
8.7 + * Copyright 2013-2014 Oracle and/or its affiliates. All rights reserved.
8.8 + *
8.9 + * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
8.10 + * Other names may be trademarks of their respective owners.
8.11 + *
8.12 + * The contents of this file are subject to the terms of either the GNU
8.13 + * General Public License Version 2 only ("GPL") or the Common
8.14 + * Development and Distribution License("CDDL") (collectively, the
8.15 + * "License"). You may not use this file except in compliance with the
8.16 + * License. You can obtain a copy of the License at
8.17 + * http://www.netbeans.org/cddl-gplv2.html
8.18 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
8.19 + * specific language governing permissions and limitations under the
8.20 + * License. When distributing the software, include this License Header
8.21 + * Notice in each file and include the License file at
8.22 + * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this
8.23 + * particular file as subject to the "Classpath" exception as provided
8.24 + * by Oracle in the GPL Version 2 section of the License file that
8.25 + * accompanied this code. If applicable, add the following below the
8.26 + * License Header, with the fields enclosed by brackets [] replaced by
8.27 + * your own identifying information:
8.28 + * "Portions Copyrighted [year] [name of copyright owner]"
8.29 + *
8.30 + * Contributor(s):
8.31 + *
8.32 + * The Original Software is NetBeans. The Initial Developer of the Original
8.33 + * Software is Oracle. Portions Copyright 2013-2014 Oracle. All Rights Reserved.
8.34 + *
8.35 + * If you wish your version of this file to be governed by only the CDDL
8.36 + * or only the GPL Version 2, indicate your decision by adding
8.37 + * "[Contributor] elects to include this software in this distribution
8.38 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
8.39 + * single choice of license, a recipient has the option to distribute
8.40 + * your version of this file under either the CDDL, the GPL Version 2 or
8.41 + * to extend the choice of license to its licensees as provided above.
8.42 + * However, if you add GPL Version 2 code and therefore, elected the GPL
8.43 + * Version 2 license, then the option applies only if the new code is
8.44 + * made subject to such option by the copyright holder.
8.45 + */
8.46 +package net.java.html.boot.script.ko4j;
8.47 +
8.48 +import java.io.Closeable;
8.49 +import java.io.IOException;
8.50 +import java.lang.reflect.InvocationTargetException;
8.51 +import java.lang.reflect.Method;
8.52 +import java.util.concurrent.Executor;
8.53 +import java.util.concurrent.Executors;
8.54 +import org.apidesign.html.boot.spi.Fn;
8.55 +import org.testng.ITest;
8.56 +import org.testng.SkipException;
8.57 +import org.testng.annotations.Test;
8.58 +
8.59 +/**
8.60 + *
8.61 + * @author Jaroslav Tulach <jtulach@netbeans.org>
8.62 + */
8.63 +public final class KOCase implements ITest, Runnable {
8.64 + static final Executor JS = Executors.newSingleThreadExecutor();
8.65 + private final Fn.Presenter p;
8.66 + private final Method m;
8.67 + private final String skipMsg;
8.68 + private Object result;
8.69 + private Object inst;
8.70 + private int count;
8.71 +
8.72 + KOCase(Fn.Presenter p, Method m, String skipMsg) {
8.73 + this.p = p;
8.74 + this.m = m;
8.75 + this.skipMsg = skipMsg;
8.76 + }
8.77 +
8.78 + @Override
8.79 + public String getTestName() {
8.80 + return m.getName();
8.81 + }
8.82 +
8.83 + @Test
8.84 + public synchronized void executeTest() throws Exception {
8.85 + if (skipMsg != null) {
8.86 + throw new SkipException(skipMsg);
8.87 + }
8.88 + if (result == null) {
8.89 + JS.execute(this);
8.90 + wait();
8.91 + }
8.92 + if (result instanceof Exception) {
8.93 + throw (Exception)result;
8.94 + }
8.95 + if (result instanceof Error) {
8.96 + throw (Error)result;
8.97 + }
8.98 + }
8.99 +
8.100 + @Override
8.101 + public synchronized void run() {
8.102 + boolean notify = true;
8.103 + Closeable a = Fn.activate(p);
8.104 + try {
8.105 + if (inst == null) {
8.106 + inst = m.getDeclaringClass().newInstance();
8.107 + }
8.108 + result = m.invoke(inst);
8.109 + if (result == null) {
8.110 + result = this;
8.111 + }
8.112 + } catch (InvocationTargetException ex) {
8.113 + Throwable r = ex.getTargetException();
8.114 + if (r instanceof InterruptedException) {
8.115 + if (count++ < 10000) {
8.116 + notify = false;
8.117 + JS.execute(this);
8.118 + return;
8.119 + }
8.120 + }
8.121 + result = r;
8.122 + } catch (Exception ex) {
8.123 + result = ex;
8.124 + } finally {
8.125 + if (notify) {
8.126 + notifyAll();
8.127 + }
8.128 + try {
8.129 + a.close();
8.130 + } catch (IOException ex) {
8.131 + throw new IllegalStateException(ex);
8.132 + }
8.133 + }
8.134 + }
8.135 +
8.136 +}
9.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
9.2 +++ b/boot-script/src/test/java/net/java/html/boot/script/ko4j/KnockoutEnvJSTest.java Thu Jun 05 22:13:56 2014 +0200
9.3 @@ -0,0 +1,252 @@
9.4 +/**
9.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
9.6 + *
9.7 + * Copyright 2013-2014 Oracle and/or its affiliates. All rights reserved.
9.8 + *
9.9 + * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
9.10 + * Other names may be trademarks of their respective owners.
9.11 + *
9.12 + * The contents of this file are subject to the terms of either the GNU
9.13 + * General Public License Version 2 only ("GPL") or the Common
9.14 + * Development and Distribution License("CDDL") (collectively, the
9.15 + * "License"). You may not use this file except in compliance with the
9.16 + * License. You can obtain a copy of the License at
9.17 + * http://www.netbeans.org/cddl-gplv2.html
9.18 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
9.19 + * specific language governing permissions and limitations under the
9.20 + * License. When distributing the software, include this License Header
9.21 + * Notice in each file and include the License file at
9.22 + * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this
9.23 + * particular file as subject to the "Classpath" exception as provided
9.24 + * by Oracle in the GPL Version 2 section of the License file that
9.25 + * accompanied this code. If applicable, add the following below the
9.26 + * License Header, with the fields enclosed by brackets [] replaced by
9.27 + * your own identifying information:
9.28 + * "Portions Copyrighted [year] [name of copyright owner]"
9.29 + *
9.30 + * Contributor(s):
9.31 + *
9.32 + * The Original Software is NetBeans. The Initial Developer of the Original
9.33 + * Software is Oracle. Portions Copyright 2013-2014 Oracle. All Rights Reserved.
9.34 + *
9.35 + * If you wish your version of this file to be governed by only the CDDL
9.36 + * or only the GPL Version 2, indicate your decision by adding
9.37 + * "[Contributor] elects to include this software in this distribution
9.38 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
9.39 + * single choice of license, a recipient has the option to distribute
9.40 + * your version of this file under either the CDDL, the GPL Version 2 or
9.41 + * to extend the choice of license to its licensees as provided above.
9.42 + * However, if you add GPL Version 2 code and therefore, elected the GPL
9.43 + * Version 2 license, then the option applies only if the new code is
9.44 + * made subject to such option by the copyright holder.
9.45 + */
9.46 +package net.java.html.boot.script.ko4j;
9.47 +
9.48 +import java.io.BufferedReader;
9.49 +import java.io.IOException;
9.50 +import java.io.InputStream;
9.51 +import java.io.InputStreamReader;
9.52 +import java.lang.annotation.Annotation;
9.53 +import java.lang.reflect.Method;
9.54 +import java.net.URI;
9.55 +import java.net.URISyntaxException;
9.56 +import java.net.URL;
9.57 +import java.net.URLConnection;
9.58 +import java.util.ArrayList;
9.59 +import java.util.List;
9.60 +import java.util.Map;
9.61 +import java.util.concurrent.Executor;
9.62 +import java.util.concurrent.Executors;
9.63 +import net.java.html.BrwsrCtx;
9.64 +import net.java.html.boot.BrowserBuilder;
9.65 +import net.java.html.boot.script.Scripts;
9.66 +import net.java.html.js.JavaScriptBody;
9.67 +import org.apidesign.html.boot.spi.Fn;
9.68 +import org.apidesign.html.context.spi.Contexts;
9.69 +import org.apidesign.html.json.spi.Technology;
9.70 +import org.apidesign.html.json.spi.Transfer;
9.71 +import org.apidesign.html.json.tck.KOTest;
9.72 +import org.apidesign.html.json.tck.KnockoutTCK;
9.73 +import org.netbeans.html.ko4j.KO4J;
9.74 +import org.netbeans.html.wstyrus.TyrusContext;
9.75 +import org.openide.util.lookup.ServiceProvider;
9.76 +import org.testng.Assert;
9.77 +import static org.testng.Assert.*;
9.78 +import org.testng.annotations.Factory;
9.79 +
9.80 +/**
9.81 + *
9.82 + * @author Jaroslav Tulach <jtulach@netbeans.org>
9.83 + */
9.84 +@ServiceProvider(service = KnockoutTCK.class)
9.85 +public final class KnockoutEnvJSTest extends KnockoutTCK {
9.86 + private static Class<?> browserClass;
9.87 + private static Fn.Presenter browserContext;
9.88 + private static URI baseUri;
9.89 +
9.90 + public KnockoutEnvJSTest() {
9.91 + }
9.92 +
9.93 + @Factory public static Object[] compatibilityTests() throws Exception {
9.94 + try {
9.95 + Class.forName("java.lang.FunctionalInterface");
9.96 + } catch (ClassNotFoundException ex) {
9.97 + // only runs on JDK8
9.98 + return new Object[0];
9.99 + }
9.100 +
9.101 +
9.102 + Class[] arr = testClasses();
9.103 + for (int i = 0; i < arr.length; i++) {
9.104 + assertEquals(
9.105 + arr[i].getClassLoader(),
9.106 + KnockoutEnvJSTest.class.getClassLoader(),
9.107 + "All classes loaded by the same classloader"
9.108 + );
9.109 + }
9.110 +
9.111 + baseUri = DynamicHTTP.initServer();
9.112 +
9.113 + final Fn.Presenter p = Scripts.createPresenter(KOCase.JS);
9.114 + InputStream is = KnockoutEnvJSTest.class.getResourceAsStream("env.nashorn.1.2-debug.js");
9.115 + p.loadScript(new InputStreamReader(is));
9.116 + is.close();
9.117 +
9.118 + final BrowserBuilder bb = BrowserBuilder.newBrowser(p).
9.119 + loadClass(KnockoutEnvJSTest.class).
9.120 + loadPage(baseUri.toString()).
9.121 + invoke("initialized");
9.122 +
9.123 + Executors.newSingleThreadExecutor().submit(new Runnable() {
9.124 + @Override
9.125 + public void run() {
9.126 + bb.showAndWait();
9.127 + }
9.128 + });
9.129 +
9.130 + ClassLoader l = getClassLoader();
9.131 + List<Object> res = new ArrayList<Object>();
9.132 + for (int i = 0; i < arr.length; i++) {
9.133 + Class<?> c = Class.forName(arr[i].getName(), true, l);
9.134 + seekKOTests(c, res);
9.135 + }
9.136 + return res.toArray();
9.137 + }
9.138 +
9.139 + private static void seekKOTests(Class<?> c, List<Object> res) throws SecurityException, ClassNotFoundException {
9.140 + Class<? extends Annotation> koTest =
9.141 + c.getClassLoader().loadClass(KOTest.class.getName()).
9.142 + asSubclass(Annotation.class);
9.143 + for (Method m : c.getMethods()) {
9.144 + if (m.getAnnotation(koTest) != null) {
9.145 + res.add(new KOCase(browserContext, m, skipMsg(m.getName())));
9.146 + }
9.147 + }
9.148 + }
9.149 +
9.150 + private static String skipMsg(String methodName) {
9.151 + if (!"1.8.0_05-b13".equals(System.getProperty("java.runtime.version"))) { // NOI18N
9.152 + // we know that 1.8.0_05 is broken,
9.153 + // let's not speculate about anything else
9.154 + return null;
9.155 + }
9.156 + switch (methodName) {
9.157 + case "paintTheGridOnClick":
9.158 + case "displayContentOfArrayOfPeople":
9.159 + case "connectUsingWebSocket":
9.160 + return "Does not work on JDK8b132, due to JDK-8046013";
9.161 + }
9.162 + return null;
9.163 + }
9.164 +
9.165 + static synchronized ClassLoader getClassLoader() throws InterruptedException {
9.166 + while (browserClass == null) {
9.167 + KnockoutEnvJSTest.class.wait();
9.168 + }
9.169 + return browserClass.getClassLoader();
9.170 + }
9.171 +
9.172 + public static synchronized void initialized(Class<?> browserCls) throws Exception {
9.173 + browserClass = browserCls;
9.174 + browserContext = Fn.activePresenter();
9.175 + KnockoutEnvJSTest.class.notifyAll();
9.176 + }
9.177 +
9.178 + public static void initialized() throws Exception {
9.179 + Assert.assertSame(
9.180 + KnockoutEnvJSTest.class.getClassLoader(),
9.181 + ClassLoader.getSystemClassLoader(),
9.182 + "No special classloaders"
9.183 + );
9.184 + KnockoutEnvJSTest.initialized(KnockoutEnvJSTest.class);
9.185 + browserContext = Fn.activePresenter();
9.186 + }
9.187 +
9.188 + @Override
9.189 + public BrwsrCtx createContext() {
9.190 + KO4J fx = new KO4J(browserContext);
9.191 + TyrusContext tc = new TyrusContext();
9.192 + Contexts.Builder cb = Contexts.newBuilder().
9.193 + register(Technology.class, fx.knockout(), 10).
9.194 + register(Transfer.class, tc, 10);
9.195 + cb.register(Fn.Presenter.class, browserContext, 10);
9.196 + cb.register(Executor.class, (Executor)browserContext, 10);
9.197 + BrwsrCtx ctx = cb.build();
9.198 + return ctx;
9.199 + }
9.200 +
9.201 + @Override
9.202 + public Object createJSON(Map<String, Object> values) {
9.203 + Object json = createJSON();
9.204 + for (Map.Entry<String, Object> entry : values.entrySet()) {
9.205 + setProperty(json, entry.getKey(), entry.getValue());
9.206 + }
9.207 + return json;
9.208 + }
9.209 +
9.210 + @JavaScriptBody(args = {}, body = "return new Object();")
9.211 + private static native Object createJSON();
9.212 + @JavaScriptBody(args = { "json", "key", "value" }, body = "json[key] = value;")
9.213 + private static native void setProperty(Object json, String key, Object value);
9.214 +
9.215 + @Override
9.216 + @JavaScriptBody(args = { "s", "args" }, body = "\n"
9.217 + + "var f = new Function(s);\n"
9.218 + + "return f.apply(null, args);\n"
9.219 + )
9.220 + public native Object executeScript(String script, Object[] arguments);
9.221 +
9.222 + private static String findBaseURL() {
9.223 + return baseUri.toString();
9.224 + }
9.225 +
9.226 + @Override
9.227 + public URI prepareURL(String content, String mimeType, String[] parameters) {
9.228 + try {
9.229 + final URL baseURL = new URL(findBaseURL());
9.230 + StringBuilder sb = new StringBuilder();
9.231 + sb.append("/dynamic?mimeType=").append(mimeType);
9.232 + for (int i = 0; i < parameters.length; i++) {
9.233 + sb.append("¶m" + i).append("=").append(parameters[i]);
9.234 + }
9.235 + String mangle = content.replace("\n", "%0a")
9.236 + .replace("\"", "\\\"").replace(" ", "%20");
9.237 + sb.append("&content=").append(mangle);
9.238 +
9.239 + URL query = new URL(baseURL, sb.toString());
9.240 + URLConnection c = query.openConnection();
9.241 + BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
9.242 + URI connectTo = new URI(br.readLine());
9.243 + return connectTo;
9.244 + } catch (IOException ex) {
9.245 + throw new IllegalStateException(ex);
9.246 + } catch (URISyntaxException ex) {
9.247 + throw new IllegalStateException(ex);
9.248 + }
9.249 + }
9.250 +
9.251 + @Override
9.252 + public boolean canFailWebSocketTest() {
9.253 + return true;
9.254 + }
9.255 +}
10.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
10.2 +++ b/boot-script/src/test/resources/net/java/html/boot/script/ko4j/env.nashorn.1.2-debug.js Thu Jun 05 22:13:56 2014 +0200
10.3 @@ -0,0 +1,23982 @@
10.4 +/*
10.5 + * Envjs core-env.1.2.13
10.6 + * Pure JavaScript Browser Environment
10.7 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.8 + * Copyright 2008-2010 John Resig, under the MIT License
10.9 + */
10.10 +
10.11 +load("nashorn:mozilla_compat.js");
10.12 +
10.13 +var Envjs = function(){
10.14 + var i,
10.15 + name,
10.16 + override = function(){
10.17 + for(i=0;i<arguments.length;i++){
10.18 + for ( name in arguments[i] ) {
10.19 + var g = arguments[i].__lookupGetter__(name),
10.20 + s = arguments[i].__lookupSetter__(name);
10.21 + if ( g || s ) {
10.22 + if ( g ) { Envjs.__defineGetter__(name, g); }
10.23 + if ( s ) { Envjs.__defineSetter__(name, s); }
10.24 + } else {
10.25 + Envjs[name] = arguments[i][name];
10.26 + }
10.27 + }
10.28 + }
10.29 + };
10.30 + if(arguments.length === 1 && typeof(arguments[0]) == 'string'){
10.31 + window.location = arguments[0];
10.32 + }else if (arguments.length === 1 && typeof(arguments[0]) == "object"){
10.33 + override(arguments[0]);
10.34 + }else if(arguments.length === 2 && typeof(arguments[0]) == 'string'){
10.35 + override(arguments[1]);
10.36 + window.location = arguments[0];
10.37 + }
10.38 + return;
10.39 +},
10.40 +__this__ = this;
10.41 +
10.42 +//eg "Mozilla"
10.43 +Envjs.appCodeName = "Envjs";
10.44 +
10.45 +//eg "Gecko/20070309 Firefox/2.0.0.3"
10.46 +Envjs.appName = "Resig/20070309 PilotFish/1.2.13";
10.47 +
10.48 +Envjs.version = "1.6";//?
10.49 +Envjs.revision = '';
10.50 +/*
10.51 + * Envjs core-env.1.2.13
10.52 + * Pure JavaScript Browser Environment
10.53 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.54 + * Copyright 2008-2010 John Resig, under the MIT License
10.55 + */
10.56 +
10.57 +//CLOSURE_START
10.58 +(function(){
10.59 +
10.60 +
10.61 +
10.62 +
10.63 +
10.64 +/**
10.65 + * @author john resig
10.66 + */
10.67 +// Helper method for extending one object with another.
10.68 +function __extend__(a,b) {
10.69 + for ( var i in b ) {
10.70 + var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
10.71 + if ( g || s ) {
10.72 + if ( g ) { a.__defineGetter__(i, g); }
10.73 + if ( s ) { a.__defineSetter__(i, s); }
10.74 + } else {
10.75 + a[i] = b[i];
10.76 + }
10.77 + } return a;
10.78 +}
10.79 +
10.80 +/**
10.81 + * Writes message to system out
10.82 + * @param {String} message
10.83 + */
10.84 +Envjs.log = function(message){};
10.85 +
10.86 +/**
10.87 + * Constants providing enumerated levels for logging in modules
10.88 + */
10.89 +Envjs.DEBUG = 1;
10.90 +Envjs.INFO = 2;
10.91 +Envjs.WARN = 3;
10.92 +Envjs.ERROR = 3;
10.93 +Envjs.NONE = 3;
10.94 +
10.95 +/**
10.96 + * Writes error info out to console
10.97 + * @param {Error} e
10.98 + */
10.99 +Envjs.lineSource = function(e){};
10.100 +
10.101 +
10.102 +/**
10.103 + * TODO: used in ./event/eventtarget.js
10.104 + * @param {Object} event
10.105 + */
10.106 +Envjs.defaultEventBehaviors = {};
10.107 +
10.108 +
10.109 +/**
10.110 + * describes which script src values will trigger Envjs to load
10.111 + * the script like a browser would
10.112 + */
10.113 +Envjs.scriptTypes = {
10.114 + "text/javascript" :false,
10.115 + "text/envjs" :true
10.116 +};
10.117 +
10.118 +/**
10.119 + * will be called when loading a script throws an error
10.120 + * @param {Object} script
10.121 + * @param {Object} e
10.122 + */
10.123 +Envjs.onScriptLoadError = function(script, e){
10.124 + console.log('error loading script %s %s', script, e);
10.125 +};
10.126 +
10.127 +
10.128 +/**
10.129 + * load and execute script tag text content
10.130 + * @param {Object} script
10.131 + */
10.132 +Envjs.loadInlineScript = function(script){
10.133 + var tmpFile;
10.134 + tmpFile = Envjs.writeToTempFile(script.text, 'js') ;
10.135 + load(tmpFile);
10.136 +};
10.137 +
10.138 +/**
10.139 + * Should evaluate script in some context
10.140 + * @param {Object} context
10.141 + * @param {Object} source
10.142 + * @param {Object} name
10.143 + */
10.144 +Envjs.eval = function(context, source, name){};
10.145 +
10.146 +
10.147 +/**
10.148 + * Executes a script tag
10.149 + * @param {Object} script
10.150 + * @param {Object} parser
10.151 + */
10.152 +Envjs.loadLocalScript = function(script){
10.153 + //console.log("loading script %s", script);
10.154 + var types,
10.155 + src,
10.156 + i,
10.157 + base,
10.158 + filename,
10.159 + xhr;
10.160 +
10.161 + if(script.type){
10.162 + types = script.type.split(";");
10.163 + for(i=0;i<types.length;i++){
10.164 + if(Envjs.scriptTypes[types[i]]){
10.165 + //ok this script type is allowed
10.166 + break;
10.167 + }
10.168 + if(i+1 == types.length){
10.169 + //console.log('wont load script type %s', script.type);
10.170 + return false;
10.171 + }
10.172 + }
10.173 + }
10.174 +
10.175 + try{
10.176 + //console.log('handling inline scripts');
10.177 + if(!script.src.length){
10.178 + Envjs.loadInlineScript(script);
10.179 + return true;
10.180 + }
10.181 + }catch(e){
10.182 + //Envjs.error("Error loading script.", e);
10.183 + Envjs.onScriptLoadError(script, e);
10.184 + return false;
10.185 + }
10.186 +
10.187 +
10.188 + //console.log("loading allowed external script %s", script.src);
10.189 +
10.190 + //lets you register a function to execute
10.191 + //before the script is loaded
10.192 + if(Envjs.beforeScriptLoad){
10.193 + for(src in Envjs.beforeScriptLoad){
10.194 + if(script.src.match(src)){
10.195 + Envjs.beforeScriptLoad[src](script);
10.196 + }
10.197 + }
10.198 + }
10.199 + base = "" + script.ownerDocument.location;
10.200 + //filename = Envjs.uri(script.src.match(/([^\?#]*)/)[1], base );
10.201 + //console.log('loading script from base %s', base);
10.202 + filename = Envjs.uri(script.src, base);
10.203 + try {
10.204 + xhr = new XMLHttpRequest();
10.205 + xhr.open("GET", filename, false/*syncronous*/);
10.206 + //console.log("loading external script %s", filename);
10.207 + xhr.onreadystatechange = function(){
10.208 + //console.log("readyState %s", xhr.readyState);
10.209 + if(xhr.readyState === 4){
10.210 + Envjs.eval(
10.211 + script.ownerDocument.ownerWindow,
10.212 + xhr.responseText,
10.213 + filename
10.214 + );
10.215 + }
10.216 + };
10.217 + xhr.send(null, false);
10.218 + } catch(e) {
10.219 + console.log("could not load script %s \n %s", filename, e );
10.220 + Envjs.onScriptLoadError(script, e);
10.221 + return false;
10.222 + }
10.223 + //lets you register a function to execute
10.224 + //after the script is loaded
10.225 + if(Envjs.afterScriptLoad){
10.226 + for(src in Envjs.afterScriptLoad){
10.227 + if(script.src.match(src)){
10.228 + Envjs.afterScriptLoad[src](script);
10.229 + }
10.230 + }
10.231 + }
10.232 + return true;
10.233 +};
10.234 +
10.235 +
10.236 +/**
10.237 + * An 'image' was requested by the document.
10.238 + *
10.239 + * - During inital parse of a <link>
10.240 + * - Via an innerHTML parse of a <link>
10.241 + * - A modificiation of the 'src' attribute of an Image/HTMLImageElement
10.242 + *
10.243 + * NOTE: this is optional API. If this doesn't exist then the default
10.244 + * 'loaded' event occurs.
10.245 + *
10.246 + * @param node {Object} the <img> node
10.247 + * @param node the src value
10.248 + * @return 'true' to indicate the 'load' succeed, false otherwise
10.249 + */
10.250 +Envjs.loadImage = function(node, src) {
10.251 + return true;
10.252 +};
10.253 +
10.254 +
10.255 +/**
10.256 + * A 'link' was requested by the document. Typically this occurs when:
10.257 + * - During inital parse of a <link>
10.258 + * - Via an innerHTML parse of a <link>
10.259 + * - A modificiation of the 'href' attribute on a <link> node in the tree
10.260 + *
10.261 + * @param node {Object} is the link node in question
10.262 + * @param href {String} is the href.
10.263 + *
10.264 + * Return 'true' to indicate that the 'load' was successful, or false
10.265 + * otherwise. The appropriate event is then triggered.
10.266 + *
10.267 + * NOTE: this is optional API. If this doesn't exist then the default
10.268 + * 'loaded' event occurs
10.269 + */
10.270 +Envjs.loadLink = function(node, href) {
10.271 + return true;
10.272 +};
10.273 +
10.274 +(function(){
10.275 +
10.276 +
10.277 +/*
10.278 + * cookie handling
10.279 + * Private internal helper class used to save/retreive cookies
10.280 + */
10.281 +
10.282 +/**
10.283 + * Specifies the location of the cookie file
10.284 + */
10.285 +Envjs.cookieFile = function(){
10.286 + return 'file://'+Envjs.homedir+'/.cookies';
10.287 +};
10.288 +
10.289 +/**
10.290 + * saves cookies to a local file
10.291 + * @param {Object} htmldoc
10.292 + */
10.293 +Envjs.saveCookies = function(){
10.294 + var cookiejson = JSON.stringify(Envjs.cookies.peristent,null,'\t');
10.295 + //console.log('persisting cookies %s', cookiejson);
10.296 + Envjs.writeToFile(cookiejson, Envjs.cookieFile());
10.297 +};
10.298 +
10.299 +/**
10.300 + * loads cookies from a local file
10.301 + * @param {Object} htmldoc
10.302 + */
10.303 +Envjs.loadCookies = function(){
10.304 + var cookiejson,
10.305 + js;
10.306 + try{
10.307 + cookiejson = Envjs.readFromFile(Envjs.cookieFile())
10.308 + js = JSON.parse(cookiejson, null, '\t');
10.309 + }catch(e){
10.310 + //console.log('failed to load cookies %s', e);
10.311 + js = {};
10.312 + }
10.313 + return js;
10.314 +};
10.315 +
10.316 +Envjs.cookies = {
10.317 + persistent:{
10.318 + //domain - key on domain name {
10.319 + //path - key on path {
10.320 + //name - key on name {
10.321 + //value : cookie value
10.322 + //other cookie properties
10.323 + //}
10.324 + //}
10.325 + //}
10.326 + //expire - provides a timestamp for expiring the cookie
10.327 + //cookie - the cookie!
10.328 + },
10.329 + temporary:{//transient is a reserved word :(
10.330 + //like above
10.331 + }
10.332 +};
10.333 +
10.334 +var __cookies__;
10.335 +
10.336 +//HTMLDocument cookie
10.337 +Envjs.setCookie = function(url, cookie){
10.338 + var i,
10.339 + index,
10.340 + name,
10.341 + value,
10.342 + properties = {},
10.343 + attr,
10.344 + attrs;
10.345 + url = Envjs.urlsplit(url);
10.346 + if(cookie)
10.347 + attrs = cookie.split(";");
10.348 + else
10.349 + return;
10.350 +
10.351 + //for now the strategy is to simply create a json object
10.352 + //and post it to a file in the .cookies.js file. I hate parsing
10.353 + //dates so I decided not to implement support for 'expires'
10.354 + //(which is deprecated) and instead focus on the easier 'max-age'
10.355 + //(which succeeds 'expires')
10.356 + cookie = {};//keyword properties of the cookie
10.357 + cookie['domain'] = url.hostname;
10.358 + cookie['path'] = url.path||'/';
10.359 + for(i=0;i<attrs.length;i++){
10.360 + index = attrs[i].indexOf("=");
10.361 + if(index > -1){
10.362 + name = __trim__(attrs[i].slice(0,index));
10.363 + value = __trim__(attrs[i].slice(index+1));
10.364 + if(name=='max-age'){
10.365 + //we'll have to when to check these
10.366 + //and garbage collect expired cookies
10.367 + cookie[name] = parseInt(value, 10);
10.368 + } else if( name == 'domain' ){
10.369 + if(__domainValid__(url, value)){
10.370 + cookie['domain'] = value;
10.371 + }
10.372 + } else if( name == 'path' ){
10.373 + //not sure of any special logic for path
10.374 + cookie['path'] = value;
10.375 + } else {
10.376 + //its not a cookie keyword so store it in our array of properties
10.377 + //and we'll serialize individually in a moment
10.378 + properties[name] = value;
10.379 + }
10.380 + }else{
10.381 + if( attrs[i] == 'secure' ){
10.382 + cookie[attrs[i]] = true;
10.383 + }
10.384 + }
10.385 + }
10.386 + if(!('max-age' in cookie)){
10.387 + //it's a transient cookie so it only lasts as long as
10.388 + //the window.location remains the same (ie in-memory cookie)
10.389 + __mergeCookie__(Envjs.cookies.temporary, cookie, properties);
10.390 + }else{
10.391 + //the cookie is persistent
10.392 + __mergeCookie__(Envjs.cookies.persistent, cookie, properties);
10.393 + Envjs.saveCookies();
10.394 + }
10.395 +};
10.396 +
10.397 +function __domainValid__(url, value){
10.398 + var i,
10.399 + domainParts = url.hostname.split('.').reverse(),
10.400 + newDomainParts = value.split('.').reverse();
10.401 + if(newDomainParts.length > 1){
10.402 + for(i=0;i<newDomainParts.length;i++){
10.403 + if(!(newDomainParts[i] == domainParts[i])){
10.404 + return false;
10.405 + }
10.406 + }
10.407 + return true;
10.408 + }
10.409 + return false;
10.410 +};
10.411 +
10.412 +Envjs.getCookies = function(url){
10.413 + //The cookies that are returned must belong to the same domain
10.414 + //and be at or below the current window.location.path. Also
10.415 + //we must check to see if the cookie was set to 'secure' in which
10.416 + //case we must check our current location.protocol to make sure it's
10.417 + //https:
10.418 + var persisted;
10.419 + url = Envjs.urlsplit(url);
10.420 + if(!__cookies__){
10.421 + try{
10.422 + __cookies__ = true;
10.423 + try{
10.424 + persisted = Envjs.loadCookies();
10.425 + }catch(e){
10.426 + //fail gracefully
10.427 + //console.log('%s', e);
10.428 + }
10.429 + if(persisted){
10.430 + __extend__(Envjs.cookies.persistent, persisted);
10.431 + }
10.432 + //console.log('set cookies for doc %s', doc.baseURI);
10.433 + }catch(e){
10.434 + console.log('cookies not loaded %s', e)
10.435 + };
10.436 + }
10.437 + var temporary = __cookieString__(Envjs.cookies.temporary, url),
10.438 + persistent = __cookieString__(Envjs.cookies.persistent, url);
10.439 + //console.log('temporary cookies: %s', temporary);
10.440 + //console.log('persistent cookies: %s', persistent);
10.441 + return temporary + persistent;
10.442 +};
10.443 +
10.444 +function __cookieString__(cookies, url) {
10.445 + var cookieString = "",
10.446 + domain,
10.447 + path,
10.448 + name,
10.449 + i=0;
10.450 + for (domain in cookies) {
10.451 + // check if the cookie is in the current domain (if domain is set)
10.452 + // console.log('cookie domain %s', domain);
10.453 + if (domain == "" || domain == url.hostname) {
10.454 + for (path in cookies[domain]) {
10.455 + // console.log('cookie domain path %s', path);
10.456 + // make sure path is at or below the window location path
10.457 + if (path == "/" || url.path.indexOf(path) > -1) {
10.458 + for (name in cookies[domain][path]) {
10.459 + // console.log('cookie domain path name %s', name);
10.460 + cookieString +=
10.461 + ((i++ > 0)?'; ':'') +
10.462 + name + "=" +
10.463 + cookies[domain][path][name].value;
10.464 + }
10.465 + }
10.466 + }
10.467 + }
10.468 + }
10.469 + return cookieString;
10.470 +};
10.471 +
10.472 +function __mergeCookie__(target, cookie, properties){
10.473 + var name, now;
10.474 + if(!target[cookie.domain]){
10.475 + target[cookie.domain] = {};
10.476 + }
10.477 + if(!target[cookie.domain][cookie.path]){
10.478 + target[cookie.domain][cookie.path] = {};
10.479 + }
10.480 + for(name in properties){
10.481 + now = new Date().getTime();
10.482 + target[cookie.domain][cookie.path][name] = {
10.483 + "value":properties[name],
10.484 + "secure":cookie.secure,
10.485 + "max-age":cookie['max-age'],
10.486 + "date-created":now,
10.487 + "expiration":(cookie['max-age']===0) ?
10.488 + 0 :
10.489 + now + cookie['max-age']
10.490 + };
10.491 + //console.log('cookie is %o',target[cookie.domain][cookie.path][name]);
10.492 + }
10.493 +};
10.494 +
10.495 +})();//end cookies
10.496 +/*
10.497 + http://www.JSON.org/json2.js
10.498 + 2008-07-15
10.499 +
10.500 + Public Domain.
10.501 +
10.502 + NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
10.503 +
10.504 + See http://www.JSON.org/js.html
10.505 +
10.506 +
10.507 + This code should be minified before deployment.
10.508 + See http://javascript.crockford.com/jsmin.html
10.509 +
10.510 + USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
10.511 + NOT CONTROL.
10.512 +*/
10.513 +try{ JSON; }catch(e){
10.514 +JSON = function () {
10.515 +
10.516 + function f(n) {
10.517 + // Format integers to have at least two digits.
10.518 + return n < 10 ? '0' + n : n;
10.519 + }
10.520 +
10.521 + Date.prototype.toJSON = function (key) {
10.522 +
10.523 + return this.getUTCFullYear() + '-' +
10.524 + f(this.getUTCMonth() + 1) + '-' +
10.525 + f(this.getUTCDate()) + 'T' +
10.526 + f(this.getUTCHours()) + ':' +
10.527 + f(this.getUTCMinutes()) + ':' +
10.528 + f(this.getUTCSeconds()) + 'Z';
10.529 + };
10.530 +
10.531 + String.prototype.toJSON = function (key) {
10.532 + return String(this);
10.533 + };
10.534 + Number.prototype.toJSON =
10.535 + Boolean.prototype.toJSON = function (key) {
10.536 + return this.valueOf();
10.537 + };
10.538 +
10.539 + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
10.540 + escapeable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
10.541 + gap,
10.542 + indent,
10.543 + meta = { // table of character substitutions
10.544 + '\b': '\\b',
10.545 + '\t': '\\t',
10.546 + '\n': '\\n',
10.547 + '\f': '\\f',
10.548 + '\r': '\\r',
10.549 + '"' : '\\"',
10.550 + '\\': '\\\\'
10.551 + },
10.552 + rep;
10.553 +
10.554 +
10.555 + function quote(string) {
10.556 +
10.557 + escapeable.lastIndex = 0;
10.558 + return escapeable.test(string) ?
10.559 + '"' + string.replace(escapeable, function (a) {
10.560 + var c = meta[a];
10.561 + if (typeof c === 'string') {
10.562 + return c;
10.563 + }
10.564 + return '\\u' + ('0000' +
10.565 + (+(a.charCodeAt(0))).toString(16)).slice(-4);
10.566 + }) + '"' :
10.567 + '"' + string + '"';
10.568 + }
10.569 +
10.570 +
10.571 + function str(key, holder) {
10.572 +
10.573 + var i, // The loop counter.
10.574 + k, // The member key.
10.575 + v, // The member value.
10.576 + length,
10.577 + mind = gap,
10.578 + partial,
10.579 + value = holder[key];
10.580 +
10.581 + if (value && typeof value === 'object' &&
10.582 + typeof value.toJSON === 'function') {
10.583 + value = value.toJSON(key);
10.584 + }
10.585 + if (typeof rep === 'function') {
10.586 + value = rep.call(holder, key, value);
10.587 + }
10.588 +
10.589 + switch (typeof value) {
10.590 + case 'string':
10.591 + return quote(value);
10.592 +
10.593 + case 'number':
10.594 + return isFinite(value) ? String(value) : 'null';
10.595 +
10.596 + case 'boolean':
10.597 + case 'null':
10.598 +
10.599 + return String(value);
10.600 +
10.601 + case 'object':
10.602 +
10.603 + if (!value) {
10.604 + return 'null';
10.605 + }
10.606 + gap += indent;
10.607 + partial = [];
10.608 +
10.609 + if (typeof value.length === 'number' &&
10.610 + !(value.propertyIsEnumerable('length'))) {
10.611 +
10.612 + length = value.length;
10.613 + for (i = 0; i < length; i += 1) {
10.614 + partial[i] = str(i, value) || 'null';
10.615 + }
10.616 +
10.617 + v = partial.length === 0 ? '[]' :
10.618 + gap ? '[\n' + gap +
10.619 + partial.join(',\n' + gap) + '\n' +
10.620 + mind + ']' :
10.621 + '[' + partial.join(',') + ']';
10.622 + gap = mind;
10.623 + return v;
10.624 + }
10.625 +
10.626 + if (rep && typeof rep === 'object') {
10.627 + length = rep.length;
10.628 + for (i = 0; i < length; i += 1) {
10.629 + k = rep[i];
10.630 + if (typeof k === 'string') {
10.631 + v = str(k, value);
10.632 + if (v) {
10.633 + partial.push(quote(k) + (gap ? ': ' : ':') + v);
10.634 + }
10.635 + }
10.636 + }
10.637 + } else {
10.638 +
10.639 + for (k in value) {
10.640 + if (Object.hasOwnProperty.call(value, k)) {
10.641 + v = str(k, value);
10.642 + if (v) {
10.643 + partial.push(quote(k) + (gap ? ': ' : ':') + v);
10.644 + }
10.645 + }
10.646 + }
10.647 + }
10.648 +
10.649 + v = partial.length === 0 ? '{}' :
10.650 + gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
10.651 + mind + '}' : '{' + partial.join(',') + '}';
10.652 + gap = mind;
10.653 + return v;
10.654 + }
10.655 + }
10.656 +
10.657 + return {
10.658 + stringify: function (value, replacer, space) {
10.659 +
10.660 + var i;
10.661 + gap = '';
10.662 + indent = '';
10.663 +
10.664 + if (typeof space === 'number') {
10.665 + for (i = 0; i < space; i += 1) {
10.666 + indent += ' ';
10.667 + }
10.668 +
10.669 + } else if (typeof space === 'string') {
10.670 + indent = space;
10.671 + }
10.672 +
10.673 + rep = replacer;
10.674 + if (replacer && typeof replacer !== 'function' &&
10.675 + (typeof replacer !== 'object' ||
10.676 + typeof replacer.length !== 'number')) {
10.677 + throw new Error('JSON.stringify');
10.678 + }
10.679 +
10.680 + return str('', {'': value});
10.681 + },
10.682 +
10.683 +
10.684 + parse: function (text, reviver) {
10.685 + var j;
10.686 + function walk(holder, key) {
10.687 + var k, v, value = holder[key];
10.688 + if (value && typeof value === 'object') {
10.689 + for (k in value) {
10.690 + if (Object.hasOwnProperty.call(value, k)) {
10.691 + v = walk(value, k);
10.692 + if (v !== undefined) {
10.693 + value[k] = v;
10.694 + } else {
10.695 + delete value[k];
10.696 + }
10.697 + }
10.698 + }
10.699 + }
10.700 + return reviver.call(holder, key, value);
10.701 + }
10.702 +
10.703 + cx.lastIndex = 0;
10.704 + if (cx.test(text)) {
10.705 + text = text.replace(cx, function (a) {
10.706 + return '\\u' + ('0000' +
10.707 + (+(a.charCodeAt(0))).toString(16)).slice(-4);
10.708 + });
10.709 + }
10.710 +
10.711 +
10.712 + if (/^[\],:{}\s]*$/.
10.713 +test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
10.714 +replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
10.715 +replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
10.716 +
10.717 + j = eval('(' + text + ')');
10.718 +
10.719 + return typeof reviver === 'function' ?
10.720 + walk({'': j}, '') : j;
10.721 + }
10.722 +
10.723 + throw new SyntaxError('JSON.parse');
10.724 + }
10.725 + };
10.726 +}();
10.727 +
10.728 +}
10.729 +
10.730 +/**
10.731 + * synchronizes thread modifications
10.732 + * @param {Function} fn
10.733 + */
10.734 +Envjs.sync = function(fn){};
10.735 +
10.736 +/**
10.737 + * sleep thread for specified duration
10.738 + * @param {Object} millseconds
10.739 + */
10.740 +Envjs.sleep = function(millseconds){};
10.741 +
10.742 +/**
10.743 + * Interval to wait on event loop when nothing is happening
10.744 + */
10.745 +Envjs.WAIT_INTERVAL = 20;//milliseconds
10.746 +
10.747 +/*
10.748 + * Copyright (c) 2010 Nick Galbreath
10.749 + * http://code.google.com/p/stringencoders/source/browse/#svn/trunk/javascript
10.750 + *
10.751 + * Permission is hereby granted, free of charge, to any person
10.752 + * obtaining a copy of this software and associated documentation
10.753 + * files (the "Software"), to deal in the Software without
10.754 + * restriction, including without limitation the rights to use,
10.755 + * copy, modify, merge, publish, distribute, sublicense, and/or sell
10.756 + * copies of the Software, and to permit persons to whom the
10.757 + * Software is furnished to do so, subject to the following
10.758 + * conditions:
10.759 + *
10.760 + * The above copyright notice and this permission notice shall be
10.761 + * included in all copies or substantial portions of the Software.
10.762 + *
10.763 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
10.764 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
10.765 + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
10.766 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
10.767 + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
10.768 + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
10.769 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
10.770 + * OTHER DEALINGS IN THE SOFTWARE.
10.771 + */
10.772 +
10.773 +/*
10.774 + * url processing in the spirit of python's urlparse module
10.775 + * see `pydoc urlparse` or
10.776 + * http://docs.python.org/library/urlparse.html
10.777 + *
10.778 + * urlsplit: break apart a URL into components
10.779 + * urlunsplit: reconsistute a URL from componets
10.780 + * urljoin: join an absolute and another URL
10.781 + * urldefrag: remove the fragment from a URL
10.782 + *
10.783 + * Take a look at the tests in urlparse-test.html
10.784 + *
10.785 + * On URL Normalization:
10.786 + *
10.787 + * urlsplit only does minor normalization the components Only scheme
10.788 + * and hostname are lowercased urljoin does a bit more, normalizing
10.789 + * paths with "." and "..".
10.790 +
10.791 + * urlnormalize adds additional normalization
10.792 + *
10.793 + * * removes default port numbers
10.794 + * http://abc.com:80/ -> http://abc.com/, etc
10.795 + * * normalizes path
10.796 + * http://abc.com -> http://abc.com/
10.797 + * and other "." and ".." cleanups
10.798 + * * if file, remove query and fragment
10.799 + *
10.800 + * It does not do:
10.801 + * * normalizes escaped hex values
10.802 + * http://abc.com/%7efoo -> http://abc.com/%7Efoo
10.803 + * * normalize '+' <--> '%20'
10.804 + *
10.805 + * Differences with Python
10.806 + *
10.807 + * The javascript urlsplit returns a normal object with the following
10.808 + * properties: scheme, netloc, hostname, port, path, query, fragment.
10.809 + * All properties are read-write.
10.810 + *
10.811 + * In python, the resulting object is not a dict, but a specialized,
10.812 + * read-only, and has alternative tuple interface (e.g. obj[0] ==
10.813 + * obj.scheme). It's not clear why such a simple function requires
10.814 + * a unique datastructure.
10.815 + *
10.816 + * urlunsplit in javascript takes an duck-typed object,
10.817 + * { scheme: 'http', netloc: 'abc.com', ...}
10.818 + * while in * python it takes a list-like object.
10.819 + * ['http', 'abc.com'... ]
10.820 + *
10.821 + * For all functions, the javascript version use
10.822 + * hostname+port if netloc is missing. In python
10.823 + * hostname+port were always ignored.
10.824 + *
10.825 + * Similar functionality in different languages:
10.826 + *
10.827 + * http://php.net/manual/en/function.parse-url.php
10.828 + * returns assocative array but cannot handle relative URL
10.829 + *
10.830 + * TODO: test allowfragments more
10.831 + * TODO: test netloc missing, but hostname present
10.832 + */
10.833 +
10.834 +var urlparse = {};
10.835 +
10.836 +// Unlike to be useful standalone
10.837 +//
10.838 +// NORMALIZE PATH with "../" and "./"
10.839 +// http://en.wikipedia.org/wiki/URL_normalization
10.840 +// http://tools.ietf.org/html/rfc3986#section-5.2.3
10.841 +//
10.842 +urlparse.normalizepath = function(path)
10.843 +{
10.844 + if (!path || path === '/') {
10.845 + return '/';
10.846 + }
10.847 +
10.848 + var parts = path.split('/');
10.849 +
10.850 + var newparts = [];
10.851 + // make sure path always starts with '/'
10.852 + if (parts[0]) {
10.853 + newparts.push('');
10.854 + }
10.855 +
10.856 + for (var i = 0; i < parts.length; ++i) {
10.857 + if (parts[i] === '..') {
10.858 + if (newparts.length > 1) {
10.859 + newparts.pop();
10.860 + } else {
10.861 + newparts.push(parts[i]);
10.862 + }
10.863 + } else if (parts[i] != '.') {
10.864 + newparts.push(parts[i]);
10.865 + }
10.866 + }
10.867 +
10.868 + path = newparts.join('/');
10.869 + if (!path) {
10.870 + path = '/';
10.871 + }
10.872 + return path;
10.873 +};
10.874 +
10.875 +//
10.876 +// Does many of the normalizations that the stock
10.877 +// python urlsplit/urlunsplit/urljoin neglects
10.878 +//
10.879 +// Doesn't do hex-escape normalization on path or query
10.880 +// %7e -> %7E
10.881 +// Nor, '+' <--> %20 translation
10.882 +//
10.883 +urlparse.urlnormalize = function(url)
10.884 +{
10.885 + var parts = urlparse.urlsplit(url);
10.886 + switch (parts.scheme) {
10.887 + case 'file':
10.888 + // files can't have query strings
10.889 + // and we don't bother with fragments
10.890 + parts.query = '';
10.891 + parts.fragment = '';
10.892 + break;
10.893 + case 'http':
10.894 + case 'https':
10.895 + // remove default port
10.896 + if ((parts.scheme === 'http' && parts.port == 80) ||
10.897 + (parts.scheme === 'https' && parts.port == 443)) {
10.898 + parts.port = null;
10.899 + // hostname is already lower case
10.900 + parts.netloc = parts.hostname;
10.901 + }
10.902 + break;
10.903 + default:
10.904 + // if we don't have specific normalizations for this
10.905 + // scheme, return the original url unmolested
10.906 + return url;
10.907 + }
10.908 +
10.909 + // for [file|http|https]. Not sure about other schemes
10.910 + parts.path = urlparse.normalizepath(parts.path);
10.911 +
10.912 + return urlparse.urlunsplit(parts);
10.913 +};
10.914 +
10.915 +urlparse.urldefrag = function(url)
10.916 +{
10.917 + var idx = url.indexOf('#');
10.918 + if (idx == -1) {
10.919 + return [ url, '' ];
10.920 + } else {
10.921 + return [ url.substr(0,idx), url.substr(idx+1) ];
10.922 + }
10.923 +};
10.924 +
10.925 +urlparse.urlsplit = function(url, default_scheme, allow_fragments)
10.926 +{
10.927 + var leftover;
10.928 +
10.929 + if (typeof allow_fragments === 'undefined') {
10.930 + allow_fragments = true;
10.931 + }
10.932 +
10.933 + // scheme (optional), host, port
10.934 + var fullurl = /^([A-Za-z]+)?(:?\/\/)([0-9.\-A-Za-z]*)(?::(\d+))?(.*)$/;
10.935 + // path, query, fragment
10.936 + var parse_leftovers = /([^?#]*)?(?:\?([^#]*))?(?:#(.*))?$/;
10.937 +
10.938 + var o = {};
10.939 +
10.940 + var parts = url.match(fullurl);
10.941 + if (parts) {
10.942 + o.scheme = parts[1] || default_scheme || '';
10.943 + o.hostname = parts[3].toLowerCase() || '';
10.944 + o.port = parseInt(parts[4],10) || '';
10.945 + // Probably should grab the netloc from regexp
10.946 + // and then parse again for hostname/port
10.947 +
10.948 + o.netloc = parts[3];
10.949 + if (parts[4]) {
10.950 + o.netloc += ':' + parts[4];
10.951 + }
10.952 +
10.953 + leftover = parts[5];
10.954 + } else {
10.955 + o.scheme = default_scheme || '';
10.956 + o.netloc = '';
10.957 + o.hostname = '';
10.958 + leftover = url;
10.959 + }
10.960 + o.scheme = o.scheme.toLowerCase();
10.961 +
10.962 + parts = leftover.match(parse_leftovers);
10.963 +
10.964 + o.path = parts[1] || '';
10.965 + o.query = parts[2] || '';
10.966 +
10.967 + if (allow_fragments) {
10.968 + o.fragment = parts[3] || '';
10.969 + } else {
10.970 + o.fragment = '';
10.971 + }
10.972 +
10.973 + return o;
10.974 +};
10.975 +
10.976 +urlparse.urlunsplit = function(o) {
10.977 + var s = '';
10.978 + if (o.scheme) {
10.979 + s += o.scheme + '://';
10.980 + }
10.981 +
10.982 + if (o.netloc) {
10.983 + if (s == '') {
10.984 + s += '//';
10.985 + }
10.986 + s += o.netloc;
10.987 + } else if (o.hostname) {
10.988 + // extension. Python only uses netloc
10.989 + if (s == '') {
10.990 + s += '//';
10.991 + }
10.992 + s += o.hostname;
10.993 + if (o.port) {
10.994 + s += ':' + o.port;
10.995 + }
10.996 + }
10.997 +
10.998 + if (o.path) {
10.999 + s += o.path;
10.1000 + }
10.1001 +
10.1002 + if (o.query) {
10.1003 + s += '?' + o.query;
10.1004 + }
10.1005 + if (o.fragment) {
10.1006 + s += '#' + o.fragment;
10.1007 + }
10.1008 + return s;
10.1009 +};
10.1010 +
10.1011 +urlparse.urljoin = function(base, url, allow_fragments)
10.1012 +{
10.1013 + if (typeof allow_fragments === 'undefined') {
10.1014 + allow_fragments = true;
10.1015 + }
10.1016 +
10.1017 + var url_parts = urlparse.urlsplit(url);
10.1018 +
10.1019 + // if url parts has a scheme (i.e. absolute)
10.1020 + // then nothing to do
10.1021 + if (url_parts.scheme) {
10.1022 + if (! allow_fragments) {
10.1023 + return url;
10.1024 + } else {
10.1025 + return urlparse.urldefrag(url)[0];
10.1026 + }
10.1027 + }
10.1028 + var base_parts = urlparse.urlsplit(base);
10.1029 +
10.1030 + // copy base, only if not present
10.1031 + if (!base_parts.scheme) {
10.1032 + base_parts.scheme = url_parts.scheme;
10.1033 + }
10.1034 +
10.1035 + // copy netloc, only if not present
10.1036 + if (!base_parts.netloc || !base_parts.hostname) {
10.1037 + base_parts.netloc = url_parts.netloc;
10.1038 + base_parts.hostname = url_parts.hostname;
10.1039 + base_parts.port = url_parts.port;
10.1040 + }
10.1041 +
10.1042 + // paths
10.1043 + if (url_parts.path.length > 0) {
10.1044 + if (url_parts.path.charAt(0) == '/') {
10.1045 + base_parts.path = url_parts.path;
10.1046 + } else {
10.1047 + // relative path.. get rid of "current filename" and
10.1048 + // replace. Same as var parts =
10.1049 + // base_parts.path.split('/'); parts[parts.length-1] =
10.1050 + // url_parts.path; base_parts.path = parts.join('/');
10.1051 + var idx = base_parts.path.lastIndexOf('/');
10.1052 + if (idx == -1) {
10.1053 + base_parts.path = url_parts.path;
10.1054 + } else {
10.1055 + base_parts.path = base_parts.path.substr(0,idx) + '/' +
10.1056 + url_parts.path;
10.1057 + }
10.1058 + }
10.1059 + }
10.1060 +
10.1061 + // clean up path
10.1062 + base_parts.path = urlparse.normalizepath(base_parts.path);
10.1063 +
10.1064 + // copy query string
10.1065 + base_parts.query = url_parts.query;
10.1066 +
10.1067 + // copy fragments
10.1068 + if (allow_fragments) {
10.1069 + base_parts.fragment = url_parts.fragment;
10.1070 + } else {
10.1071 + base_parts.fragment = '';
10.1072 + }
10.1073 +
10.1074 + return urlparse.urlunsplit(base_parts);
10.1075 +};
10.1076 +
10.1077 +/**
10.1078 + * getcwd - named after posix call of same name (see 'man 2 getcwd')
10.1079 + *
10.1080 + */
10.1081 +Envjs.getcwd = function() {
10.1082 + return '.';
10.1083 +};
10.1084 +
10.1085 +/**
10.1086 + * resolves location relative to doc location
10.1087 + *
10.1088 + * @param {Object} path Relative or absolute URL
10.1089 + * @param {Object} base (semi-optional) The base url used in resolving "path" above
10.1090 + */
10.1091 +Envjs.uri = function(path, base) {
10.1092 + //console.log('constructing uri from path %s and base %s', path, base);
10.1093 +
10.1094 + // Semi-common trick is to make an iframe with src='javascript:false'
10.1095 + // (or some equivalent). By returning '', the load is skipped
10.1096 + if (path.indexOf('javascript') === 0) {
10.1097 + return '';
10.1098 + }
10.1099 +
10.1100 + // if path is absolute, then just normalize and return
10.1101 + if (path.match('^[a-zA-Z]+://')) {
10.1102 + return urlparse.urlnormalize(path);
10.1103 + }
10.1104 +
10.1105 + // interesting special case, a few very large websites use
10.1106 + // '//foo/bar/' to mean 'http://foo/bar'
10.1107 + if (path.match('^//')) {
10.1108 + path = 'http:' + path;
10.1109 + }
10.1110 +
10.1111 + // if base not passed in, try to get it from document
10.1112 + // Ideally I would like the caller to pass in document.baseURI to
10.1113 + // make this more self-sufficient and testable
10.1114 + if (!base && document) {
10.1115 + base = document.baseURI;
10.1116 + }
10.1117 +
10.1118 + // about:blank doesn't count
10.1119 + if (base === 'about:blank'){
10.1120 + base = '';
10.1121 + }
10.1122 +
10.1123 + // if base is still empty, then we are in QA mode loading local
10.1124 + // files. Get current working directory
10.1125 + if (!base) {
10.1126 + base = 'file://' + Envjs.getcwd() + '/';
10.1127 + }
10.1128 + // handles all cases if path is abosulte or relative to base
10.1129 + // 3rd arg is "false" --> remove fragments
10.1130 + var newurl = urlparse.urlnormalize(urlparse.urljoin(base, path, false));
10.1131 +
10.1132 + return newurl;
10.1133 +};
10.1134 +
10.1135 +
10.1136 +
10.1137 +/**
10.1138 + * Used in the XMLHttpRquest implementation to run a
10.1139 + * request in a seperate thread
10.1140 + * @param {Object} fn
10.1141 + */
10.1142 +Envjs.runAsync = function(fn){};
10.1143 +
10.1144 +
10.1145 +/**
10.1146 + * Used to write to a local file
10.1147 + * @param {Object} text
10.1148 + * @param {Object} url
10.1149 + */
10.1150 +Envjs.writeToFile = function(text, url){};
10.1151 +
10.1152 +
10.1153 +/**
10.1154 + * Used to write to a local file
10.1155 + * @param {Object} text
10.1156 + * @param {Object} suffix
10.1157 + */
10.1158 +Envjs.writeToTempFile = function(text, suffix){};
10.1159 +
10.1160 +/**
10.1161 + * Used to read the contents of a local file
10.1162 + * @param {Object} url
10.1163 + */
10.1164 +Envjs.readFromFile = function(url){};
10.1165 +
10.1166 +/**
10.1167 + * Used to delete a local file
10.1168 + * @param {Object} url
10.1169 + */
10.1170 +Envjs.deleteFile = function(url){};
10.1171 +
10.1172 +/**
10.1173 + * establishes connection and calls responsehandler
10.1174 + * @param {Object} xhr
10.1175 + * @param {Object} responseHandler
10.1176 + * @param {Object} data
10.1177 + */
10.1178 +Envjs.connection = function(xhr, responseHandler, data){};
10.1179 +
10.1180 +
10.1181 +__extend__(Envjs, urlparse);
10.1182 +
10.1183 +/**
10.1184 + * Makes an object window-like by proxying object accessors
10.1185 + * @param {Object} scope
10.1186 + * @param {Object} parent
10.1187 + */
10.1188 +Envjs.proxy = function(scope, parent, aliasList){};
10.1189 +
10.1190 +Envjs.javaEnabled = false;
10.1191 +
10.1192 +Envjs.homedir = '';
10.1193 +Envjs.tmpdir = '';
10.1194 +Envjs.os_name = '';
10.1195 +Envjs.os_arch = '';
10.1196 +Envjs.os_version = '';
10.1197 +Envjs.lang = '';
10.1198 +Envjs.platform = '';
10.1199 +
10.1200 +/**
10.1201 + *
10.1202 + * @param {Object} frameElement
10.1203 + * @param {Object} url
10.1204 + */
10.1205 +Envjs.loadFrame = function(frame, url){
10.1206 + try {
10.1207 + if(frame.contentWindow){
10.1208 + //mark for garbage collection
10.1209 + frame.contentWindow = null;
10.1210 + }
10.1211 +
10.1212 + //create a new scope for the window proxy
10.1213 + //platforms will need to override this function
10.1214 + //to make sure the scope is global-like
10.1215 + frame.contentWindow = (function(){return this;})();
10.1216 + new Window(frame.contentWindow, window);
10.1217 +
10.1218 + //I dont think frames load asynchronously in firefox
10.1219 + //and I think the tests have verified this but for
10.1220 + //some reason I'm less than confident... Are there cases?
10.1221 + frame.contentDocument = frame.contentWindow.document;
10.1222 + frame.contentDocument.async = false;
10.1223 + if(url){
10.1224 + //console.log('envjs.loadFrame async %s', frame.contentDocument.async);
10.1225 + frame.contentWindow.location = url;
10.1226 + }
10.1227 + } catch(e) {
10.1228 + console.log("failed to load frame content: from %s %s", url, e);
10.1229 + }
10.1230 +};
10.1231 +
10.1232 +
10.1233 +// The following are in rhino/window.js
10.1234 +// TODO: Envjs.unloadFrame
10.1235 +// TODO: Envjs.proxy
10.1236 +
10.1237 +/**
10.1238 + * @author john resig & the envjs team
10.1239 + * @uri http://www.envjs.com/
10.1240 + * @copyright 2008-2010
10.1241 + * @license MIT
10.1242 + */
10.1243 +//CLOSURE_END
10.1244 +}());
10.1245 +/*
10.1246 + * Envjs rhino-env.1.2.13
10.1247 + * Pure JavaScript Browser Environment
10.1248 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.1249 + * Copyright 2008-2010 John Resig, under the MIT License
10.1250 + */
10.1251 +
10.1252 +var __context__ = Packages.jdk.nashorn.internal.runtime.Context.getContext();
10.1253 +
10.1254 +Envjs.platform = "Nashorn";
10.1255 +Envjs.revision = "0.1";
10.1256 +
10.1257 +/*
10.1258 + * Envjs rhino-env.1.2.13
10.1259 + * Pure JavaScript Browser Environment
10.1260 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.1261 + * Copyright 2008-2010 John Resig, under the MIT License
10.1262 + */
10.1263 +
10.1264 +//CLOSURE_START
10.1265 +(function(){
10.1266 +
10.1267 +
10.1268 +
10.1269 +
10.1270 +
10.1271 +/**
10.1272 + * @author john resig
10.1273 + */
10.1274 +// Helper method for extending one object with another.
10.1275 +function __extend__(a,b) {
10.1276 + for ( var i in b ) {
10.1277 + var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
10.1278 + if ( g || s ) {
10.1279 + if ( g ) { a.__defineGetter__(i, g); }
10.1280 + if ( s ) { a.__defineSetter__(i, s); }
10.1281 + } else {
10.1282 + a[i] = b[i];
10.1283 + }
10.1284 + } return a;
10.1285 +}
10.1286 +
10.1287 +/**
10.1288 + * Writes message to system out.
10.1289 + *
10.1290 + * Some sites redefine 'print' as in 'window.print', so instead of
10.1291 + * printing to stdout, you are popping open a new window, which might
10.1292 + * call print, etc, etc,etc This can cause infinite loops and can
10.1293 + * exhausing all memory.
10.1294 + *
10.1295 + * By defining this upfront now, Envjs.log will always call the native 'print'
10.1296 + * function
10.1297 + *
10.1298 + * @param {Object} message
10.1299 + */
10.1300 +Envjs.log = print;
10.1301 +
10.1302 +Envjs.lineSource = function(e){
10.1303 + return e&&e.rhinoException?e.rhinoException.lineSource():"(line ?)";
10.1304 +};
10.1305 +/**
10.1306 + * load and execute script tag text content
10.1307 + * @param {Object} script
10.1308 + */
10.1309 +Envjs.loadInlineScript = function(script){
10.1310 + if(script.ownerDocument.ownerWindow){
10.1311 + Envjs.eval(
10.1312 + script.ownerDocument.ownerWindow,
10.1313 + script.text,
10.1314 + 'eval('+script.text.substring(0,16)+'...):'+new Date().getTime()
10.1315 + );
10.1316 + }else{
10.1317 + Envjs.eval(
10.1318 + __this__,
10.1319 + script.text,
10.1320 + 'eval('+script.text.substring(0,16)+'...):'+new Date().getTime()
10.1321 + );
10.1322 + }
10.1323 + //console.log('evaluated at scope %s \n%s',
10.1324 + // script.ownerDocument.ownerWindow.guid, script.text);
10.1325 +};
10.1326 +
10.1327 +
10.1328 +Envjs.eval = function(context, source, name){
10.1329 + __context__.eval(context, source, null, name, false);
10.1330 +};
10.1331 +
10.1332 +
10.1333 +/**
10.1334 + * Rhino provides a very succinct 'sync'
10.1335 + * @param {Function} fn
10.1336 + */
10.1337 +Envjs.sync = function(fn){
10.1338 + //console.log('Threadless platform, sync is safe');
10.1339 + return fn;
10.1340 +};
10.1341 +Envjs.spawn = function(fn){
10.1342 + //console.log('Threadless platform, spawn shares main thread.');
10.1343 + return fn();
10.1344 +};
10.1345 +
10.1346 +/**
10.1347 + * sleep thread for specified duration
10.1348 + * @param {Object} millseconds
10.1349 + */
10.1350 +Envjs.sleep = function(millseconds){
10.1351 + try{
10.1352 + java.lang.Thread.sleep(millseconds);
10.1353 + }catch(e){
10.1354 + console.log('Threadless platform, cannot sleep.');
10.1355 + }
10.1356 +};
10.1357 +
10.1358 +/**
10.1359 + * provides callback hook for when the system exits
10.1360 + */
10.1361 +Envjs.onExit = function(callback){
10.1362 + // TODO add exit listener
10.1363 +};
10.1364 +
10.1365 +/**
10.1366 + * Get 'Current Working Directory'
10.1367 + */
10.1368 +Envjs.getcwd = function() {
10.1369 + return java.lang.System.getProperty('user.dir');
10.1370 +}
10.1371 +
10.1372 +/**
10.1373 + *
10.1374 + * @param {Object} fn
10.1375 + * @param {Object} onInterupt
10.1376 + */
10.1377 +Envjs.runAsync = function(fn, onInterupt){
10.1378 + ////Envjs.debug("running async");
10.1379 + var running = true,
10.1380 + run;
10.1381 +
10.1382 + try{
10.1383 + run = Envjs.sync(function(){
10.1384 + fn();
10.1385 + Envjs.wait();
10.1386 + });
10.1387 + Envjs.spawn(run);
10.1388 + }catch(e){
10.1389 + console.log("error while running async operation", e);
10.1390 + try{if(onInterrupt)onInterrupt(e)}catch(ee){};
10.1391 + }
10.1392 +};
10.1393 +
10.1394 +/**
10.1395 + * Used to write to a local file
10.1396 + * @param {Object} text
10.1397 + * @param {Object} url
10.1398 + */
10.1399 +Envjs.writeToFile = function(text, url){
10.1400 + //Envjs.debug("writing text to url : " + url);
10.1401 + var out = new java.io.FileWriter(
10.1402 + new java.io.File(
10.1403 + new java.net.URI(url.toString())));
10.1404 + out.write( text, 0, text.length );
10.1405 + out.flush();
10.1406 + out.close();
10.1407 +};
10.1408 +
10.1409 +/**
10.1410 + * Used to write to a local file
10.1411 + * @param {Object} text
10.1412 + * @param {Object} suffix
10.1413 + */
10.1414 +Envjs.writeToTempFile = function(text, suffix){
10.1415 + //Envjs.debug("writing text to temp url : " + suffix);
10.1416 + // Create temp file.
10.1417 + var temp = java.io.File.createTempFile("envjs-tmp", suffix);
10.1418 +
10.1419 + // Delete temp file when program exits.
10.1420 + temp.deleteOnExit();
10.1421 +
10.1422 + // Write to temp file
10.1423 + var out = new java.io.FileWriter(temp);
10.1424 + out.write(text, 0, text.length);
10.1425 + out.close();
10.1426 + return temp.getAbsolutePath().toString()+'';
10.1427 +};
10.1428 +
10.1429 +
10.1430 +/**
10.1431 + * Used to read the contents of a local file
10.1432 + * @param {Object} url
10.1433 + */
10.1434 +Envjs.readFromFile = function( url ){
10.1435 + var fileReader = new java.io.FileReader(
10.1436 + new java.io.File(
10.1437 + new java.net.URI( url )));
10.1438 +
10.1439 + var stringwriter = new java.io.StringWriter(),
10.1440 + buffer = java.lang.reflect.Array.newInstance(java.lang.Character.TYPE, 1024),
10.1441 + length;
10.1442 +
10.1443 + while ((length = fileReader.read(buffer, 0, 1024)) != -1) {
10.1444 + stringwriter.write(buffer, 0, length);
10.1445 + }
10.1446 +
10.1447 + stringwriter.close();
10.1448 + return stringwriter.toString()+"";
10.1449 +};
10.1450 +
10.1451 +
10.1452 +/**
10.1453 + * Used to delete a local file
10.1454 + * @param {Object} url
10.1455 + */
10.1456 +Envjs.deleteFile = function(url){
10.1457 + var file = new java.io.File( new java.net.URI( url ) );
10.1458 + file["delete"]();
10.1459 +};
10.1460 +
10.1461 +/**
10.1462 + * establishes connection and calls responsehandler
10.1463 + * @param {Object} xhr
10.1464 + * @param {Object} responseHandler
10.1465 + * @param {Object} data
10.1466 + */
10.1467 +Envjs.connection = function(xhr, responseHandler, data){
10.1468 + var url = new java.net.URL(xhr.url),
10.1469 + connection,
10.1470 + header,
10.1471 + outstream,
10.1472 + buffer,
10.1473 + length,
10.1474 + binary = false,
10.1475 + name, value,
10.1476 + contentEncoding,
10.1477 + instream,
10.1478 + responseXML,
10.1479 + i;
10.1480 + if ( /^file\:/.test(url) ) {
10.1481 + try{
10.1482 + if ( "PUT" == xhr.method || "POST" == xhr.method ) {
10.1483 + data = data || "" ;
10.1484 + Envjs.writeToFile(data, url);
10.1485 + xhr.readyState = 4;
10.1486 + //could be improved, I just cant recall the correct http codes
10.1487 + xhr.status = 200;
10.1488 + xhr.statusText = "";
10.1489 + } else if ( xhr.method == "DELETE" ) {
10.1490 + Envjs.deleteFile(url);
10.1491 + xhr.readyState = 4;
10.1492 + //could be improved, I just cant recall the correct http codes
10.1493 + xhr.status = 200;
10.1494 + xhr.statusText = "";
10.1495 + } else {
10.1496 + connection = url.openConnection();
10.1497 + connection.connect();
10.1498 + //try to add some canned headers that make sense
10.1499 +
10.1500 + try{
10.1501 + if(xhr.url.match(/html$/)){
10.1502 + xhr.responseHeaders["Content-Type"] = 'text/html';
10.1503 + }else if(xhr.url.match(/.xml$/)){
10.1504 + xhr.responseHeaders["Content-Type"] = 'text/xml';
10.1505 + }else if(xhr.url.match(/.js$/)){
10.1506 + xhr.responseHeaders["Content-Type"] = 'text/javascript';
10.1507 + }else if(xhr.url.match(/.json$/)){
10.1508 + xhr.responseHeaders["Content-Type"] = 'application/json';
10.1509 + }else{
10.1510 + xhr.responseHeaders["Content-Type"] = 'text/plain';
10.1511 + }
10.1512 + //xhr.responseHeaders['Last-Modified'] = connection.getLastModified();
10.1513 + //xhr.responseHeaders['Content-Length'] = headerValue+'';
10.1514 + //xhr.responseHeaders['Date'] = new Date()+'';*/
10.1515 + }catch(e){
10.1516 + console.log('failed to load response headers',e);
10.1517 + }
10.1518 + }
10.1519 + }catch(e){
10.1520 + console.log('failed to open file %s %s', url, e);
10.1521 + connection = null;
10.1522 + xhr.readyState = 4;
10.1523 + xhr.statusText = "Local File Protocol Error";
10.1524 + xhr.responseText = "<html><head/><body><p>"+ e+ "</p></body></html>";
10.1525 + }
10.1526 + } else {
10.1527 + connection = url.openConnection();
10.1528 + connection.setRequestMethod( xhr.method );
10.1529 +
10.1530 + // Add headers to Java connection
10.1531 + for (header in xhr.headers){
10.1532 + connection.addRequestProperty(header+'', xhr.headers[header]+'');
10.1533 + }
10.1534 +
10.1535 + //write data to output stream if required
10.1536 + if(data){
10.1537 + if(data instanceof Document){
10.1538 + if ( xhr.method == "PUT" || xhr.method == "POST" ) {
10.1539 + connection.setDoOutput(true);
10.1540 + outstream = connection.getOutputStream(),
10.1541 + xml = (new XMLSerializer()).serializeToString(data);
10.1542 + buffer = new java.lang.String(xml).getBytes('UTF-8');
10.1543 + outstream.write(buffer, 0, buffer.length);
10.1544 + outstream.close();
10.1545 + }
10.1546 + }else if(data.length&&data.length>0){
10.1547 + if ( xhr.method == "PUT" || xhr.method == "POST" ) {
10.1548 + connection.setDoOutput(true);
10.1549 + outstream = connection.getOutputStream();
10.1550 + buffer = new java.lang.String(data).getBytes('UTF-8');
10.1551 + outstream.write(buffer, 0, buffer.length);
10.1552 + outstream.close();
10.1553 + }
10.1554 + }
10.1555 + connection.connect();
10.1556 + }else{
10.1557 + connection.connect();
10.1558 + }
10.1559 + }
10.1560 +
10.1561 + if(connection){
10.1562 + try{
10.1563 + length = connection.getHeaderFields().size();
10.1564 + // Stick the response headers into responseHeaders
10.1565 + for (i = 0; i < length; i++) {
10.1566 + name = connection.getHeaderFieldKey(i);
10.1567 + value = connection.getHeaderField(i);
10.1568 + if (name)
10.1569 + xhr.responseHeaders[name+''] = value+'';
10.1570 + }
10.1571 + }catch(e){
10.1572 + console.log('failed to load response headers \n%s',e);
10.1573 + }
10.1574 +
10.1575 + xhr.readyState = 4;
10.1576 + xhr.status = parseInt(connection.responseCode,10) || undefined;
10.1577 + xhr.statusText = connection.responseMessage || "";
10.1578 +
10.1579 + contentEncoding = connection.getContentEncoding() || "utf-8";
10.1580 + instream = null;
10.1581 + responseXML = null;
10.1582 +
10.1583 + try{
10.1584 + //console.log('contentEncoding %s', contentEncoding);
10.1585 + if( contentEncoding.equalsIgnoreCase("gzip") ||
10.1586 + contentEncoding.equalsIgnoreCase("decompress")){
10.1587 + //zipped content
10.1588 + binary = true;
10.1589 + outstream = new java.io.ByteArrayOutputStream();
10.1590 + buffer = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 1024);
10.1591 + instream = new java.util.zip.GZIPInputStream(connection.getInputStream())
10.1592 + }else{
10.1593 + //this is a text file
10.1594 + outstream = new java.io.StringWriter();
10.1595 + buffer = java.lang.reflect.Array.newInstance(java.lang.Character.TYPE, 1024);
10.1596 + instream = new java.io.InputStreamReader(connection.getInputStream());
10.1597 + }
10.1598 + }catch(e){
10.1599 + if (connection.getResponseCode() == 404){
10.1600 + console.log('failed to open connection stream \n %s %s',
10.1601 + e.toString(), e);
10.1602 + }else{
10.1603 + console.log('failed to open connection stream \n %s %s',
10.1604 + e.toString(), e);
10.1605 + }
10.1606 + instream = connection.getErrorStream();
10.1607 + }
10.1608 +
10.1609 + while ((length = instream.read(buffer, 0, 1024)) != -1) {
10.1610 + outstream.write(buffer, 0, length);
10.1611 + }
10.1612 +
10.1613 + outstream.close();
10.1614 + instream.close();
10.1615 +
10.1616 + if(binary){
10.1617 + xhr.responseText = new String(outstream.toByteArray(), 'UTF-8')+'';
10.1618 + }else{
10.1619 + xhr.responseText = outstream.toString()+'';
10.1620 + }
10.1621 +
10.1622 + }
10.1623 + if(responseHandler){
10.1624 + //Envjs.debug('calling ajax response handler');
10.1625 + responseHandler();
10.1626 + }
10.1627 +};
10.1628 +
10.1629 +//Since we're running in rhino I guess we can safely assume
10.1630 +//java is 'enabled'. I'm sure this requires more thought
10.1631 +//than I've given it here
10.1632 +Envjs.javaEnabled = true;
10.1633 +
10.1634 +Envjs.homedir = java.lang.System.getProperty("user.home");
10.1635 +Envjs.tmpdir = java.lang.System.getProperty("java.io.tmpdir");
10.1636 +Envjs.os_name = java.lang.System.getProperty("os.name");
10.1637 +Envjs.os_arch = java.lang.System.getProperty("os.arch");
10.1638 +Envjs.os_version = java.lang.System.getProperty("os.version");
10.1639 +Envjs.lang = java.lang.System.getProperty("user.lang");
10.1640 +
10.1641 +
10.1642 +/**
10.1643 + *
10.1644 + * @param {Object} frameElement
10.1645 + * @param {Object} url
10.1646 + */
10.1647 +Envjs.loadFrame = function(frame, url){
10.1648 + try {
10.1649 + if(frame.contentWindow){
10.1650 + //mark for garbage collection
10.1651 + frame.contentWindow = null;
10.1652 + }
10.1653 +
10.1654 + //create a new scope for the window proxy
10.1655 + frame.contentWindow = Envjs.proxy();
10.1656 + new Window(frame.contentWindow, window);
10.1657 +
10.1658 + //I dont think frames load asynchronously in firefox
10.1659 + //and I think the tests have verified this but for
10.1660 + //some reason I'm less than confident... Are there cases?
10.1661 + frame.contentDocument = frame.contentWindow.document;
10.1662 + frame.contentDocument.async = false;
10.1663 + if(url){
10.1664 + //console.log('envjs.loadFrame async %s', frame.contentDocument.async);
10.1665 + frame.contentWindow.location = url;
10.1666 + }
10.1667 + } catch(e) {
10.1668 + console.log("failed to load frame content: from %s %s", url, e);
10.1669 + }
10.1670 +};
10.1671 +
10.1672 +/**
10.1673 + * unloadFrame
10.1674 + * @param {Object} frame
10.1675 + */
10.1676 +Envjs.unloadFrame = function(frame){
10.1677 + var all, length, i;
10.1678 + try{
10.1679 + //TODO: probably self-referencing structures within a document tree
10.1680 + //preventing it from being entirely garbage collected once orphaned.
10.1681 + //Should have code to walk tree and break all links between contained
10.1682 + //objects.
10.1683 + frame.contentDocument = null;
10.1684 + if(frame.contentWindow){
10.1685 + frame.contentWindow.close();
10.1686 + }
10.1687 + gc();
10.1688 + }catch(e){
10.1689 + console.log(e);
10.1690 + }
10.1691 +};
10.1692 +
10.1693 +/**
10.1694 + * Makes an object window-like by proxying object accessors
10.1695 + * @param {Object} scope
10.1696 + * @param {Object} parent
10.1697 + */
10.1698 +Envjs.proxy = function(scope, parent) {
10.1699 + try{
10.1700 + if(scope+'' == '[object global]'){
10.1701 + return scope
10.1702 + }else{
10.1703 + return __context__.createGlobal();
10.1704 + }
10.1705 + }catch(e){
10.1706 + console.log('failed to init standard objects %s %s \n%s', scope, parent, e);
10.1707 + }
10.1708 +
10.1709 +};
10.1710 +
10.1711 +/**
10.1712 + * @author john resig & the envjs team
10.1713 + * @uri http://www.envjs.com/
10.1714 + * @copyright 2008-2010
10.1715 + * @license MIT
10.1716 + */
10.1717 +//CLOSURE_END
10.1718 +}());
10.1719 +
10.1720 +/**
10.1721 + * @author envjs team
10.1722 + */
10.1723 +var Console,
10.1724 + console;
10.1725 +
10.1726 +/*
10.1727 + * Envjs console.1.2.13
10.1728 + * Pure JavaScript Browser Environment
10.1729 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.1730 + * Copyright 2008-2010 John Resig, under the MIT License
10.1731 + */
10.1732 +
10.1733 +//CLOSURE_START
10.1734 +(function(){
10.1735 +
10.1736 +
10.1737 +
10.1738 +
10.1739 +
10.1740 +/**
10.1741 + * @author envjs team
10.1742 + * borrowed 99%-ish with love from firebug-lite
10.1743 + *
10.1744 + * http://wiki.commonjs.org/wiki/Console
10.1745 + */
10.1746 +Console = function(module){
10.1747 + var $level,
10.1748 + $logger,
10.1749 + $null = function(){};
10.1750 +
10.1751 +
10.1752 + if(Envjs[module] && Envjs[module].loglevel){
10.1753 + $level = Envjs.module.loglevel;
10.1754 + $logger = {
10.1755 + log: function(level){
10.1756 + logFormatted(arguments, (module)+" ");
10.1757 + },
10.1758 + debug: $level>1 ? $null: function() {
10.1759 + logFormatted(arguments, (module)+" debug");
10.1760 + },
10.1761 + info: $level>2 ? $null:function(){
10.1762 + logFormatted(arguments, (module)+" info");
10.1763 + },
10.1764 + warn: $level>3 ? $null:function(){
10.1765 + logFormatted(arguments, (module)+" warning");
10.1766 + },
10.1767 + error: $level>4 ? $null:function(){
10.1768 + logFormatted(arguments, (module)+" error");
10.1769 + }
10.1770 + };
10.1771 + } else {
10.1772 + $logger = {
10.1773 + log: function(level){
10.1774 + logFormatted(arguments, "");
10.1775 + },
10.1776 + debug: $null,
10.1777 + info: $null,
10.1778 + warn: $null,
10.1779 + error: $null
10.1780 + };
10.1781 + }
10.1782 +
10.1783 + return $logger;
10.1784 +};
10.1785 +
10.1786 +console = new Console("console",1);
10.1787 +
10.1788 +function logFormatted(objects, className)
10.1789 +{
10.1790 + var html = [];
10.1791 +
10.1792 + var format = objects[0];
10.1793 + var objIndex = 0;
10.1794 +
10.1795 + if (typeof(format) != "string")
10.1796 + {
10.1797 + format = "";
10.1798 + objIndex = -1;
10.1799 + }
10.1800 +
10.1801 + var parts = parseFormat(format);
10.1802 + for (var i = 0; i < parts.length; ++i)
10.1803 + {
10.1804 + var part = parts[i];
10.1805 + if (part && typeof(part) == "object")
10.1806 + {
10.1807 + var object = objects[++objIndex];
10.1808 + part.appender(object, html);
10.1809 + }
10.1810 + else {
10.1811 + appendText(part, html);
10.1812 + }
10.1813 + }
10.1814 +
10.1815 + for (var i = objIndex+1; i < objects.length; ++i)
10.1816 + {
10.1817 + appendText(" ", html);
10.1818 +
10.1819 + var object = objects[i];
10.1820 + if (typeof(object) == "string") {
10.1821 + appendText(object, html);
10.1822 + } else {
10.1823 + appendObject(object, html);
10.1824 + }
10.1825 + }
10.1826 +
10.1827 + Envjs.log(html.join(' '));
10.1828 +}
10.1829 +
10.1830 +function parseFormat(format)
10.1831 +{
10.1832 + var parts = [];
10.1833 +
10.1834 + var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
10.1835 + var appenderMap = {s: appendText, d: appendInteger, i: appendInteger, f: appendFloat};
10.1836 +
10.1837 + for (var m = reg.exec(format); m; m = reg.exec(format))
10.1838 + {
10.1839 + var type = m[8] ? m[8] : m[5];
10.1840 + var appender = type in appenderMap ? appenderMap[type] : appendObject;
10.1841 + var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
10.1842 +
10.1843 + parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
10.1844 + parts.push({appender: appender, precision: precision});
10.1845 +
10.1846 + format = format.substr(m.index+m[0].length);
10.1847 + }
10.1848 +
10.1849 + parts.push(format);
10.1850 +
10.1851 + return parts;
10.1852 +}
10.1853 +
10.1854 +function escapeHTML(value)
10.1855 +{
10.1856 + return value;
10.1857 +}
10.1858 +
10.1859 +function objectToString(object)
10.1860 +{
10.1861 + try
10.1862 + {
10.1863 + return object+"";
10.1864 + }
10.1865 + catch (exc)
10.1866 + {
10.1867 + return null;
10.1868 + }
10.1869 +}
10.1870 +
10.1871 +// ********************************************************************************************
10.1872 +
10.1873 +function appendText(object, html)
10.1874 +{
10.1875 + html.push(escapeHTML(objectToString(object)));
10.1876 +}
10.1877 +
10.1878 +function appendNull(object, html)
10.1879 +{
10.1880 + html.push(escapeHTML(objectToString(object)));
10.1881 +}
10.1882 +
10.1883 +function appendString(object, html)
10.1884 +{
10.1885 + html.push(escapeHTML(objectToString(object)));
10.1886 +}
10.1887 +
10.1888 +function appendInteger(object, html)
10.1889 +{
10.1890 + html.push(escapeHTML(objectToString(object)));
10.1891 +}
10.1892 +
10.1893 +function appendFloat(object, html)
10.1894 +{
10.1895 + html.push(escapeHTML(objectToString(object)));
10.1896 +}
10.1897 +
10.1898 +function appendFunction(object, html)
10.1899 +{
10.1900 + var reName = /function ?(.*?)\(/;
10.1901 + var m = reName.exec(objectToString(object));
10.1902 + var name = m ? m[1] : "function";
10.1903 + html.push(escapeHTML(name));
10.1904 +}
10.1905 +
10.1906 +function appendObject(object, html)
10.1907 +{
10.1908 + try
10.1909 + {
10.1910 + if (object == undefined) {
10.1911 + appendNull("undefined", html);
10.1912 + } else if (object == null) {
10.1913 + appendNull("null", html);
10.1914 + } else if (typeof object == "string") {
10.1915 + appendString(object, html);
10.1916 + } else if (typeof object == "number") {
10.1917 + appendInteger(object, html);
10.1918 + } else if (typeof object == "function") {
10.1919 + appendFunction(object, html);
10.1920 + } else if (object.nodeType == 1) {
10.1921 + appendSelector(object, html);
10.1922 + } else if (typeof object == "object") {
10.1923 + appendObjectFormatted(object, html);
10.1924 + } else {
10.1925 + appendText(object, html);
10.1926 + }
10.1927 + }
10.1928 + catch (exc)
10.1929 + {
10.1930 + }
10.1931 +}
10.1932 +
10.1933 +function appendObjectFormatted(object, html)
10.1934 +{
10.1935 + var text = objectToString(object);
10.1936 + var reObject = /\[object (.*?)\]/;
10.1937 +
10.1938 + var m = reObject.exec(text);
10.1939 + html.push( m ? m[1] : text);
10.1940 +}
10.1941 +
10.1942 +function appendSelector(object, html)
10.1943 +{
10.1944 +
10.1945 + html.push(escapeHTML(object.nodeName.toLowerCase()));
10.1946 + if (object.id) {
10.1947 + html.push(escapeHTML(object.id));
10.1948 + }
10.1949 + if (object.className) {
10.1950 + html.push(escapeHTML(object.className));
10.1951 + }
10.1952 +}
10.1953 +
10.1954 +function appendNode(node, html)
10.1955 +{
10.1956 + if (node.nodeType == 1)
10.1957 + {
10.1958 + html.push( node.nodeName.toLowerCase());
10.1959 +
10.1960 + for (var i = 0; i < node.attributes.length; ++i)
10.1961 + {
10.1962 + var attr = node.attributes[i];
10.1963 + if (!attr.specified) {
10.1964 + continue;
10.1965 + }
10.1966 +
10.1967 + html.push( attr.nodeName.toLowerCase(),escapeHTML(attr.nodeValue));
10.1968 + }
10.1969 +
10.1970 + if (node.firstChild)
10.1971 + {
10.1972 + for (var child = node.firstChild; child; child = child.nextSibling) {
10.1973 + appendNode(child, html);
10.1974 + }
10.1975 +
10.1976 + html.push( node.nodeName.toLowerCase());
10.1977 + }
10.1978 + }
10.1979 + else if (node.nodeType === 3)
10.1980 + {
10.1981 + html.push(escapeHTML(node.nodeValue));
10.1982 + }
10.1983 +};
10.1984 +
10.1985 +/**
10.1986 + * @author john resig & the envjs team
10.1987 + * @uri http://www.envjs.com/
10.1988 + * @copyright 2008-2010
10.1989 + * @license MIT
10.1990 + */
10.1991 +//CLOSURE_END
10.1992 +}());
10.1993 +/*
10.1994 + * Envjs dom.1.2.13
10.1995 + * Pure JavaScript Browser Environment
10.1996 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.1997 + * Copyright 2008-2010 John Resig, under the MIT License
10.1998 + *
10.1999 + * Parts of the implementation were originally written by:\
10.2000 + * and Jon van Noort (jon@webarcana.com.au) \
10.2001 + * and David Joham (djoham@yahoo.com)",\
10.2002 + * and Scott Severtson
10.2003 + *
10.2004 + * This file simply provides the global definitions we need to \
10.2005 + * be able to correctly implement to core browser DOM interfaces."
10.2006 + */
10.2007 +
10.2008 +var Attr,
10.2009 + CDATASection,
10.2010 + CharacterData,
10.2011 + Comment,
10.2012 + Document,
10.2013 + DocumentFragment,
10.2014 + DocumentType,
10.2015 + DOMException,
10.2016 + DOMImplementation,
10.2017 + Element,
10.2018 + Entity,
10.2019 + EntityReference,
10.2020 + NamedNodeMap,
10.2021 + Namespace,
10.2022 + Node,
10.2023 + NodeList,
10.2024 + Notation,
10.2025 + ProcessingInstruction,
10.2026 + Text,
10.2027 + Range,
10.2028 + XMLSerializer,
10.2029 + DOMParser;
10.2030 +
10.2031 +
10.2032 +
10.2033 +/*
10.2034 + * Envjs dom.1.2.13
10.2035 + * Pure JavaScript Browser Environment
10.2036 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.2037 + * Copyright 2008-2010 John Resig, under the MIT License
10.2038 + */
10.2039 +
10.2040 +//CLOSURE_START
10.2041 +(function(){
10.2042 +
10.2043 +
10.2044 +
10.2045 +
10.2046 +
10.2047 +/**
10.2048 + * @author john resig
10.2049 + */
10.2050 +// Helper method for extending one object with another.
10.2051 +function __extend__(a,b) {
10.2052 + for ( var i in b ) {
10.2053 + var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
10.2054 + if ( g || s ) {
10.2055 + if ( g ) { a.__defineGetter__(i, g); }
10.2056 + if ( s ) { a.__defineSetter__(i, s); }
10.2057 + } else {
10.2058 + a[i] = b[i];
10.2059 + }
10.2060 + } return a;
10.2061 +}
10.2062 +
10.2063 +/**
10.2064 + * @author john resig
10.2065 + */
10.2066 +//from jQuery
10.2067 +function __setArray__( target, array ) {
10.2068 + // Resetting the length to 0, then using the native Array push
10.2069 + // is a super-fast way to populate an object with array-like properties
10.2070 + target.length = 0;
10.2071 + Array.prototype.push.apply( target, array );
10.2072 +}
10.2073 +
10.2074 +/**
10.2075 + * @class NodeList -
10.2076 + * provides the abstraction of an ordered collection of nodes
10.2077 + *
10.2078 + * @param ownerDocument : Document - the ownerDocument
10.2079 + * @param parentNode : Node - the node that the NodeList is attached to (or null)
10.2080 + */
10.2081 +NodeList = function(ownerDocument, parentNode) {
10.2082 + this.length = 0;
10.2083 + this.parentNode = parentNode;
10.2084 + this.ownerDocument = ownerDocument;
10.2085 + this._readonly = false;
10.2086 + __setArray__(this, []);
10.2087 +};
10.2088 +
10.2089 +__extend__(NodeList.prototype, {
10.2090 + item : function(index) {
10.2091 + var ret = null;
10.2092 + if ((index >= 0) && (index < this.length)) {
10.2093 + // bounds check
10.2094 + ret = this[index];
10.2095 + }
10.2096 + // if the index is out of bounds, default value null is returned
10.2097 + return ret;
10.2098 + },
10.2099 + get xml() {
10.2100 + var ret = "",
10.2101 + i;
10.2102 +
10.2103 + // create string containing the concatenation of the string values of each child
10.2104 + for (i=0; i < this.length; i++) {
10.2105 + if(this[i]){
10.2106 + if(this[i].nodeType == Node.TEXT_NODE && i>0 &&
10.2107 + this[i-1].nodeType == Node.TEXT_NODE){
10.2108 + //add a single space between adjacent text nodes
10.2109 + ret += " "+this[i].xml;
10.2110 + }else{
10.2111 + ret += this[i].xml;
10.2112 + }
10.2113 + }
10.2114 + }
10.2115 + return ret;
10.2116 + },
10.2117 + toArray: function () {
10.2118 + var children = [],
10.2119 + i;
10.2120 + for ( i=0; i < this.length; i++) {
10.2121 + children.push (this[i]);
10.2122 + }
10.2123 + return children;
10.2124 + },
10.2125 + toString: function(){
10.2126 + return "[object NodeList]";
10.2127 + }
10.2128 +});
10.2129 +
10.2130 +
10.2131 +/**
10.2132 + * @method __findItemIndex__
10.2133 + * find the item index of the node
10.2134 + * @author Jon van Noort (jon@webarcana.com.au)
10.2135 + * @param node : Node
10.2136 + * @return : int
10.2137 + */
10.2138 +var __findItemIndex__ = function (nodelist, node) {
10.2139 + var ret = -1, i;
10.2140 + for (i=0; i<nodelist.length; i++) {
10.2141 + // compare id to each node's _id
10.2142 + if (nodelist[i] === node) {
10.2143 + // found it!
10.2144 + ret = i;
10.2145 + break;
10.2146 + }
10.2147 + }
10.2148 + // if node is not found, default value -1 is returned
10.2149 + return ret;
10.2150 +};
10.2151 +
10.2152 +/**
10.2153 + * @method __insertBefore__
10.2154 + * insert the specified Node into the NodeList before the specified index
10.2155 + * Used by Node.insertBefore(). Note: Node.insertBefore() is responsible
10.2156 + * for Node Pointer surgery __insertBefore__ simply modifies the internal
10.2157 + * data structure (Array).
10.2158 + * @param newChild : Node - the Node to be inserted
10.2159 + * @param refChildIndex : int - the array index to insert the Node before
10.2160 + */
10.2161 +var __insertBefore__ = function(nodelist, newChild, refChildIndex) {
10.2162 + if ((refChildIndex >= 0) && (refChildIndex <= nodelist.length)) {
10.2163 + // bounds check
10.2164 + if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
10.2165 + // node is a DocumentFragment
10.2166 + // append the children of DocumentFragment
10.2167 + Array.prototype.splice.apply(nodelist,
10.2168 + [refChildIndex, 0].concat(newChild.childNodes.toArray()));
10.2169 + }
10.2170 + else {
10.2171 + // append the newChild
10.2172 + Array.prototype.splice.apply(nodelist,[refChildIndex, 0, newChild]);
10.2173 + }
10.2174 + }
10.2175 +};
10.2176 +
10.2177 +/**
10.2178 + * @method __replaceChild__
10.2179 + * replace the specified Node in the NodeList at the specified index
10.2180 + * Used by Node.replaceChild(). Note: Node.replaceChild() is responsible
10.2181 + * for Node Pointer surgery __replaceChild__ simply modifies the internal
10.2182 + * data structure (Array).
10.2183 + *
10.2184 + * @param newChild : Node - the Node to be inserted
10.2185 + * @param refChildIndex : int - the array index to hold the Node
10.2186 + */
10.2187 +var __replaceChild__ = function(nodelist, newChild, refChildIndex) {
10.2188 + var ret = null;
10.2189 +
10.2190 + // bounds check
10.2191 + if ((refChildIndex >= 0) && (refChildIndex < nodelist.length)) {
10.2192 + // preserve old child for return
10.2193 + ret = nodelist[refChildIndex];
10.2194 +
10.2195 + if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
10.2196 + // node is a DocumentFragment
10.2197 + // get array containing children prior to refChild
10.2198 + Array.prototype.splice.apply(nodelist,
10.2199 + [refChildIndex, 1].concat(newChild.childNodes.toArray()));
10.2200 + }
10.2201 + else {
10.2202 + // simply replace node in array (links between Nodes are
10.2203 + // made at higher level)
10.2204 + nodelist[refChildIndex] = newChild;
10.2205 + }
10.2206 + }
10.2207 + // return replaced node
10.2208 + return ret;
10.2209 +};
10.2210 +
10.2211 +/**
10.2212 + * @method __removeChild__
10.2213 + * remove the specified Node in the NodeList at the specified index
10.2214 + * Used by Node.removeChild(). Note: Node.removeChild() is responsible
10.2215 + * for Node Pointer surgery __removeChild__ simply modifies the internal
10.2216 + * data structure (Array).
10.2217 + * @param refChildIndex : int - the array index holding the Node to be removed
10.2218 + */
10.2219 +var __removeChild__ = function(nodelist, refChildIndex) {
10.2220 + var ret = null;
10.2221 +
10.2222 + if (refChildIndex > -1) {
10.2223 + // found it!
10.2224 + // return removed node
10.2225 + ret = nodelist[refChildIndex];
10.2226 +
10.2227 + // rebuild array without removed child
10.2228 + Array.prototype.splice.apply(nodelist,[refChildIndex, 1]);
10.2229 + }
10.2230 + // return removed node
10.2231 + return ret;
10.2232 +};
10.2233 +
10.2234 +/**
10.2235 + * @method __appendChild__
10.2236 + * append the specified Node to the NodeList. Used by Node.appendChild().
10.2237 + * Note: Node.appendChild() is responsible for Node Pointer surgery
10.2238 + * __appendChild__ simply modifies the internal data structure (Array).
10.2239 + * @param newChild : Node - the Node to be inserted
10.2240 + */
10.2241 +var __appendChild__ = function(nodelist, newChild) {
10.2242 + if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
10.2243 + // node is a DocumentFragment
10.2244 + // append the children of DocumentFragment
10.2245 + Array.prototype.push.apply(nodelist, newChild.childNodes.toArray() );
10.2246 + } else {
10.2247 + // simply add node to array (links between Nodes are made at higher level)
10.2248 + Array.prototype.push.apply(nodelist, [newChild]);
10.2249 + }
10.2250 +
10.2251 +};
10.2252 +
10.2253 +/**
10.2254 + * @method __cloneNodes__ -
10.2255 + * Returns a NodeList containing clones of the Nodes in this NodeList
10.2256 + * @param deep : boolean -
10.2257 + * If true, recursively clone the subtree under each of the nodes;
10.2258 + * if false, clone only the nodes themselves (and their attributes,
10.2259 + * if it is an Element).
10.2260 + * @param parentNode : Node - the new parent of the cloned NodeList
10.2261 + * @return : NodeList - NodeList containing clones of the Nodes in this NodeList
10.2262 + */
10.2263 +var __cloneNodes__ = function(nodelist, deep, parentNode) {
10.2264 + var cloneNodeList = new NodeList(nodelist.ownerDocument, parentNode);
10.2265 +
10.2266 + // create list containing clones of each child
10.2267 + for (var i=0; i < nodelist.length; i++) {
10.2268 + __appendChild__(cloneNodeList, nodelist[i].cloneNode(deep));
10.2269 + }
10.2270 +
10.2271 + return cloneNodeList;
10.2272 +};
10.2273 +
10.2274 +
10.2275 +var __ownerDocument__ = function(node){
10.2276 + return (node.nodeType == Node.DOCUMENT_NODE)?node:node.ownerDocument;
10.2277 +};
10.2278 +
10.2279 +/**
10.2280 + * @class Node -
10.2281 + * The Node interface is the primary datatype for the entire
10.2282 + * Document Object Model. It represents a single node in the
10.2283 + * document tree.
10.2284 + * @param ownerDocument : Document - The Document object associated with this node.
10.2285 + */
10.2286 +
10.2287 +Node = function(ownerDocument) {
10.2288 + this.baseURI = 'about:blank';
10.2289 + this.namespaceURI = null;
10.2290 + this.nodeName = "";
10.2291 + this.nodeValue = null;
10.2292 +
10.2293 + // A NodeList that contains all children of this node. If there are no
10.2294 + // children, this is a NodeList containing no nodes. The content of the
10.2295 + // returned NodeList is "live" in the sense that, for instance, changes to
10.2296 + // the children of the node object that it was created from are immediately
10.2297 + // reflected in the nodes returned by the NodeList accessors; it is not a
10.2298 + // static snapshot of the content of the node. This is true for every
10.2299 + // NodeList, including the ones returned by the getElementsByTagName method.
10.2300 + this.childNodes = new NodeList(ownerDocument, this);
10.2301 +
10.2302 + // The first child of this node. If there is no such node, this is null
10.2303 + this.firstChild = null;
10.2304 + // The last child of this node. If there is no such node, this is null.
10.2305 + this.lastChild = null;
10.2306 + // The node immediately preceding this node. If there is no such node,
10.2307 + // this is null.
10.2308 + this.previousSibling = null;
10.2309 + // The node immediately following this node. If there is no such node,
10.2310 + // this is null.
10.2311 + this.nextSibling = null;
10.2312 +
10.2313 + this.attributes = null;
10.2314 + // The namespaces in scope for this node
10.2315 + this._namespaces = new NamespaceNodeMap(ownerDocument, this);
10.2316 + this._readonly = false;
10.2317 +
10.2318 + //IMPORTANT: These must come last so rhino will not iterate parent
10.2319 + // properties before child properties. (qunit.equiv issue)
10.2320 +
10.2321 + // The parent of this node. All nodes, except Document, DocumentFragment,
10.2322 + // and Attr may have a parent. However, if a node has just been created
10.2323 + // and not yet added to the tree, or if it has been removed from the tree,
10.2324 + // this is null
10.2325 + this.parentNode = null;
10.2326 + // The Document object associated with this node
10.2327 + this.ownerDocument = ownerDocument;
10.2328 +
10.2329 +};
10.2330 +
10.2331 +// nodeType constants
10.2332 +Node.ELEMENT_NODE = 1;
10.2333 +Node.ATTRIBUTE_NODE = 2;
10.2334 +Node.TEXT_NODE = 3;
10.2335 +Node.CDATA_SECTION_NODE = 4;
10.2336 +Node.ENTITY_REFERENCE_NODE = 5;
10.2337 +Node.ENTITY_NODE = 6;
10.2338 +Node.PROCESSING_INSTRUCTION_NODE = 7;
10.2339 +Node.COMMENT_NODE = 8;
10.2340 +Node.DOCUMENT_NODE = 9;
10.2341 +Node.DOCUMENT_TYPE_NODE = 10;
10.2342 +Node.DOCUMENT_FRAGMENT_NODE = 11;
10.2343 +Node.NOTATION_NODE = 12;
10.2344 +Node.NAMESPACE_NODE = 13;
10.2345 +
10.2346 +Node.DOCUMENT_POSITION_EQUAL = 0x00;
10.2347 +Node.DOCUMENT_POSITION_DISCONNECTED = 0x01;
10.2348 +Node.DOCUMENT_POSITION_PRECEDING = 0x02;
10.2349 +Node.DOCUMENT_POSITION_FOLLOWING = 0x04;
10.2350 +Node.DOCUMENT_POSITION_CONTAINS = 0x08;
10.2351 +Node.DOCUMENT_POSITION_CONTAINED_BY = 0x10;
10.2352 +Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;
10.2353 +
10.2354 +
10.2355 +__extend__(Node.prototype, {
10.2356 + get localName(){
10.2357 + return this.prefix?
10.2358 + this.nodeName.substring(this.prefix.length+1, this.nodeName.length):
10.2359 + this.nodeName;
10.2360 + },
10.2361 + get prefix(){
10.2362 + return this.nodeName.split(':').length>1?
10.2363 + this.nodeName.split(':')[0]:
10.2364 + null;
10.2365 + },
10.2366 + set prefix(value){
10.2367 + if(value === null){
10.2368 + this.nodeName = this.localName;
10.2369 + }else{
10.2370 + this.nodeName = value+':'+this.localName;
10.2371 + }
10.2372 + },
10.2373 + hasAttributes : function() {
10.2374 + if (this.attributes.length == 0) {
10.2375 + return false;
10.2376 + }else{
10.2377 + return true;
10.2378 + }
10.2379 + },
10.2380 + get textContent(){
10.2381 + return __recursivelyGatherText__(this);
10.2382 + },
10.2383 + set textContent(newText){
10.2384 + while(this.firstChild != null){
10.2385 + this.removeChild( this.firstChild );
10.2386 + }
10.2387 + var text = this.ownerDocument.createTextNode(newText);
10.2388 + this.appendChild(text);
10.2389 + },
10.2390 + insertBefore : function(newChild, refChild) {
10.2391 + var prevNode;
10.2392 +
10.2393 + if(newChild==null){
10.2394 + return newChild;
10.2395 + }
10.2396 + if(refChild==null){
10.2397 + this.appendChild(newChild);
10.2398 + return this.newChild;
10.2399 + }
10.2400 +
10.2401 + // test for exceptions
10.2402 + if (__ownerDocument__(this).implementation.errorChecking) {
10.2403 + // throw Exception if Node is readonly
10.2404 + if (this._readonly) {
10.2405 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.2406 + }
10.2407 +
10.2408 + // throw Exception if newChild was not created by this Document
10.2409 + if (__ownerDocument__(this) != __ownerDocument__(newChild)) {
10.2410 + throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
10.2411 + }
10.2412 +
10.2413 + // throw Exception if the node is an ancestor
10.2414 + if (__isAncestor__(this, newChild)) {
10.2415 + throw(new DOMException(DOMException.HIERARCHY_REQUEST_ERR));
10.2416 + }
10.2417 + }
10.2418 +
10.2419 + // if refChild is specified, insert before it
10.2420 + if (refChild) {
10.2421 + // find index of refChild
10.2422 + var itemIndex = __findItemIndex__(this.childNodes, refChild);
10.2423 + // throw Exception if there is no child node with this id
10.2424 + if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
10.2425 + throw(new DOMException(DOMException.NOT_FOUND_ERR));
10.2426 + }
10.2427 +
10.2428 + // if the newChild is already in the tree,
10.2429 + var newChildParent = newChild.parentNode;
10.2430 + if (newChildParent) {
10.2431 + // remove it
10.2432 + newChildParent.removeChild(newChild);
10.2433 + }
10.2434 +
10.2435 + // insert newChild into childNodes
10.2436 + __insertBefore__(this.childNodes, newChild, itemIndex);
10.2437 +
10.2438 + // do node pointer surgery
10.2439 + prevNode = refChild.previousSibling;
10.2440 +
10.2441 + // handle DocumentFragment
10.2442 + if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
10.2443 + if (newChild.childNodes.length > 0) {
10.2444 + // set the parentNode of DocumentFragment's children
10.2445 + for (var ind = 0; ind < newChild.childNodes.length; ind++) {
10.2446 + newChild.childNodes[ind].parentNode = this;
10.2447 + }
10.2448 +
10.2449 + // link refChild to last child of DocumentFragment
10.2450 + refChild.previousSibling = newChild.childNodes[newChild.childNodes.length-1];
10.2451 + }
10.2452 + }else {
10.2453 + // set the parentNode of the newChild
10.2454 + newChild.parentNode = this;
10.2455 + // link refChild to newChild
10.2456 + refChild.previousSibling = newChild;
10.2457 + }
10.2458 +
10.2459 + }else {
10.2460 + // otherwise, append to end
10.2461 + prevNode = this.lastChild;
10.2462 + this.appendChild(newChild);
10.2463 + }
10.2464 +
10.2465 + if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
10.2466 + // do node pointer surgery for DocumentFragment
10.2467 + if (newChild.childNodes.length > 0) {
10.2468 + if (prevNode) {
10.2469 + prevNode.nextSibling = newChild.childNodes[0];
10.2470 + }else {
10.2471 + // this is the first child in the list
10.2472 + this.firstChild = newChild.childNodes[0];
10.2473 + }
10.2474 + newChild.childNodes[0].previousSibling = prevNode;
10.2475 + newChild.childNodes[newChild.childNodes.length-1].nextSibling = refChild;
10.2476 + }
10.2477 + }else {
10.2478 + // do node pointer surgery for newChild
10.2479 + if (prevNode) {
10.2480 + prevNode.nextSibling = newChild;
10.2481 + }else {
10.2482 + // this is the first child in the list
10.2483 + this.firstChild = newChild;
10.2484 + }
10.2485 + newChild.previousSibling = prevNode;
10.2486 + newChild.nextSibling = refChild;
10.2487 + }
10.2488 +
10.2489 + return newChild;
10.2490 + },
10.2491 + replaceChild : function(newChild, oldChild) {
10.2492 + var ret = null;
10.2493 +
10.2494 + if(newChild==null || oldChild==null){
10.2495 + return oldChild;
10.2496 + }
10.2497 +
10.2498 + // test for exceptions
10.2499 + if (__ownerDocument__(this).implementation.errorChecking) {
10.2500 + // throw Exception if Node is readonly
10.2501 + if (this._readonly) {
10.2502 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.2503 + }
10.2504 +
10.2505 + // throw Exception if newChild was not created by this Document
10.2506 + if (__ownerDocument__(this) != __ownerDocument__(newChild)) {
10.2507 + throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
10.2508 + }
10.2509 +
10.2510 + // throw Exception if the node is an ancestor
10.2511 + if (__isAncestor__(this, newChild)) {
10.2512 + throw(new DOMException(DOMException.HIERARCHY_REQUEST_ERR));
10.2513 + }
10.2514 + }
10.2515 +
10.2516 + // get index of oldChild
10.2517 + var index = __findItemIndex__(this.childNodes, oldChild);
10.2518 +
10.2519 + // throw Exception if there is no child node with this id
10.2520 + if (__ownerDocument__(this).implementation.errorChecking && (index < 0)) {
10.2521 + throw(new DOMException(DOMException.NOT_FOUND_ERR));
10.2522 + }
10.2523 +
10.2524 + // if the newChild is already in the tree,
10.2525 + var newChildParent = newChild.parentNode;
10.2526 + if (newChildParent) {
10.2527 + // remove it
10.2528 + newChildParent.removeChild(newChild);
10.2529 + }
10.2530 +
10.2531 + // add newChild to childNodes
10.2532 + ret = __replaceChild__(this.childNodes,newChild, index);
10.2533 +
10.2534 +
10.2535 + if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
10.2536 + // do node pointer surgery for Document Fragment
10.2537 + if (newChild.childNodes.length > 0) {
10.2538 + for (var ind = 0; ind < newChild.childNodes.length; ind++) {
10.2539 + newChild.childNodes[ind].parentNode = this;
10.2540 + }
10.2541 +
10.2542 + if (oldChild.previousSibling) {
10.2543 + oldChild.previousSibling.nextSibling = newChild.childNodes[0];
10.2544 + } else {
10.2545 + this.firstChild = newChild.childNodes[0];
10.2546 + }
10.2547 +
10.2548 + if (oldChild.nextSibling) {
10.2549 + oldChild.nextSibling.previousSibling = newChild;
10.2550 + } else {
10.2551 + this.lastChild = newChild.childNodes[newChild.childNodes.length-1];
10.2552 + }
10.2553 +
10.2554 + newChild.childNodes[0].previousSibling = oldChild.previousSibling;
10.2555 + newChild.childNodes[newChild.childNodes.length-1].nextSibling = oldChild.nextSibling;
10.2556 + }
10.2557 + } else {
10.2558 + // do node pointer surgery for newChild
10.2559 + newChild.parentNode = this;
10.2560 +
10.2561 + if (oldChild.previousSibling) {
10.2562 + oldChild.previousSibling.nextSibling = newChild;
10.2563 + }else{
10.2564 + this.firstChild = newChild;
10.2565 + }
10.2566 + if (oldChild.nextSibling) {
10.2567 + oldChild.nextSibling.previousSibling = newChild;
10.2568 + }else{
10.2569 + this.lastChild = newChild;
10.2570 + }
10.2571 + newChild.previousSibling = oldChild.previousSibling;
10.2572 + newChild.nextSibling = oldChild.nextSibling;
10.2573 + }
10.2574 +
10.2575 + return ret;
10.2576 + },
10.2577 + removeChild : function(oldChild) {
10.2578 + if(!oldChild){
10.2579 + return null;
10.2580 + }
10.2581 + // throw Exception if NamedNodeMap is readonly
10.2582 + if (__ownerDocument__(this).implementation.errorChecking &&
10.2583 + (this._readonly || oldChild._readonly)) {
10.2584 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.2585 + }
10.2586 +
10.2587 + // get index of oldChild
10.2588 + var itemIndex = __findItemIndex__(this.childNodes, oldChild);
10.2589 +
10.2590 + // throw Exception if there is no child node with this id
10.2591 + if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
10.2592 + throw(new DOMException(DOMException.NOT_FOUND_ERR));
10.2593 + }
10.2594 +
10.2595 + // remove oldChild from childNodes
10.2596 + __removeChild__(this.childNodes, itemIndex);
10.2597 +
10.2598 + // do node pointer surgery
10.2599 + oldChild.parentNode = null;
10.2600 +
10.2601 + if (oldChild.previousSibling) {
10.2602 + oldChild.previousSibling.nextSibling = oldChild.nextSibling;
10.2603 + }else {
10.2604 + this.firstChild = oldChild.nextSibling;
10.2605 + }
10.2606 + if (oldChild.nextSibling) {
10.2607 + oldChild.nextSibling.previousSibling = oldChild.previousSibling;
10.2608 + }else {
10.2609 + this.lastChild = oldChild.previousSibling;
10.2610 + }
10.2611 +
10.2612 + oldChild.previousSibling = null;
10.2613 + oldChild.nextSibling = null;
10.2614 +
10.2615 + return oldChild;
10.2616 + },
10.2617 + appendChild : function(newChild) {
10.2618 + if(!newChild){
10.2619 + return null;
10.2620 + }
10.2621 + // test for exceptions
10.2622 + if (__ownerDocument__(this).implementation.errorChecking) {
10.2623 + // throw Exception if Node is readonly
10.2624 + if (this._readonly) {
10.2625 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.2626 + }
10.2627 +
10.2628 + // throw Exception if arg was not created by this Document
10.2629 + if (__ownerDocument__(this) != __ownerDocument__(this)) {
10.2630 + throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
10.2631 + }
10.2632 +
10.2633 + // throw Exception if the node is an ancestor
10.2634 + if (__isAncestor__(this, newChild)) {
10.2635 + throw(new DOMException(DOMException.HIERARCHY_REQUEST_ERR));
10.2636 + }
10.2637 + }
10.2638 +
10.2639 + // if the newChild is already in the tree,
10.2640 + var newChildParent = newChild.parentNode;
10.2641 + if (newChildParent) {
10.2642 + // remove it
10.2643 + //console.debug('removing node %s', newChild);
10.2644 + newChildParent.removeChild(newChild);
10.2645 + }
10.2646 +
10.2647 + // add newChild to childNodes
10.2648 + __appendChild__(this.childNodes, newChild);
10.2649 +
10.2650 + if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
10.2651 + // do node pointer surgery for DocumentFragment
10.2652 + if (newChild.childNodes.length > 0) {
10.2653 + for (var ind = 0; ind < newChild.childNodes.length; ind++) {
10.2654 + newChild.childNodes[ind].parentNode = this;
10.2655 + }
10.2656 +
10.2657 + if (this.lastChild) {
10.2658 + this.lastChild.nextSibling = newChild.childNodes[0];
10.2659 + newChild.childNodes[0].previousSibling = this.lastChild;
10.2660 + this.lastChild = newChild.childNodes[newChild.childNodes.length-1];
10.2661 + } else {
10.2662 + this.lastChild = newChild.childNodes[newChild.childNodes.length-1];
10.2663 + this.firstChild = newChild.childNodes[0];
10.2664 + }
10.2665 + }
10.2666 + } else {
10.2667 + // do node pointer surgery for newChild
10.2668 + newChild.parentNode = this;
10.2669 + if (this.lastChild) {
10.2670 + this.lastChild.nextSibling = newChild;
10.2671 + newChild.previousSibling = this.lastChild;
10.2672 + this.lastChild = newChild;
10.2673 + } else {
10.2674 + this.lastChild = newChild;
10.2675 + this.firstChild = newChild;
10.2676 + }
10.2677 + }
10.2678 + return newChild;
10.2679 + },
10.2680 + hasChildNodes : function() {
10.2681 + return (this.childNodes.length > 0);
10.2682 + },
10.2683 + cloneNode: function(deep) {
10.2684 + // use importNode to clone this Node
10.2685 + //do not throw any exceptions
10.2686 + try {
10.2687 + return __ownerDocument__(this).importNode(this, deep);
10.2688 + } catch (e) {
10.2689 + //there shouldn't be any exceptions, but if there are, return null
10.2690 + // may want to warn: $debug("could not clone node: "+e.code);
10.2691 + return null;
10.2692 + }
10.2693 + },
10.2694 + normalize : function() {
10.2695 + var i;
10.2696 + var inode;
10.2697 + var nodesToRemove = new NodeList();
10.2698 +
10.2699 + if (this.nodeType == Node.ELEMENT_NODE || this.nodeType == Node.DOCUMENT_NODE) {
10.2700 + var adjacentTextNode = null;
10.2701 +
10.2702 + // loop through all childNodes
10.2703 + for(i = 0; i < this.childNodes.length; i++) {
10.2704 + inode = this.childNodes.item(i);
10.2705 +
10.2706 + if (inode.nodeType == Node.TEXT_NODE) {
10.2707 + // this node is a text node
10.2708 + if (inode.length < 1) {
10.2709 + // this text node is empty
10.2710 + // add this node to the list of nodes to be remove
10.2711 + __appendChild__(nodesToRemove, inode);
10.2712 + }else {
10.2713 + if (adjacentTextNode) {
10.2714 + // previous node was also text
10.2715 + adjacentTextNode.appendData(inode.data);
10.2716 + // merge the data in adjacent text nodes
10.2717 + // add this node to the list of nodes to be removed
10.2718 + __appendChild__(nodesToRemove, inode);
10.2719 + } else {
10.2720 + // remember this node for next cycle
10.2721 + adjacentTextNode = inode;
10.2722 + }
10.2723 + }
10.2724 + } else {
10.2725 + // (soon to be) previous node is not a text node
10.2726 + adjacentTextNode = null;
10.2727 + // normalize non Text childNodes
10.2728 + inode.normalize();
10.2729 + }
10.2730 + }
10.2731 +
10.2732 + // remove redundant Text Nodes
10.2733 + for(i = 0; i < nodesToRemove.length; i++) {
10.2734 + inode = nodesToRemove.item(i);
10.2735 + inode.parentNode.removeChild(inode);
10.2736 + }
10.2737 + }
10.2738 + },
10.2739 + isSupported : function(feature, version) {
10.2740 + // use Implementation.hasFeature to determine if this feature is supported
10.2741 + return __ownerDocument__(this).implementation.hasFeature(feature, version);
10.2742 + },
10.2743 + getElementsByTagName : function(tagname) {
10.2744 + // delegate to _getElementsByTagNameRecursive
10.2745 + // recurse childNodes
10.2746 + var nodelist = new NodeList(__ownerDocument__(this));
10.2747 + for (var i = 0; i < this.childNodes.length; i++) {
10.2748 + __getElementsByTagNameRecursive__(this.childNodes.item(i),
10.2749 + tagname,
10.2750 + nodelist);
10.2751 + }
10.2752 + return nodelist;
10.2753 + },
10.2754 + getElementsByTagNameNS : function(namespaceURI, localName) {
10.2755 + // delegate to _getElementsByTagNameNSRecursive
10.2756 + return __getElementsByTagNameNSRecursive__(this, namespaceURI, localName,
10.2757 + new NodeList(__ownerDocument__(this)));
10.2758 + },
10.2759 + importNode : function(importedNode, deep) {
10.2760 + var i;
10.2761 + var importNode;
10.2762 +
10.2763 + //there is no need to perform namespace checks since everything has already gone through them
10.2764 + //in order to have gotten into the DOM in the first place. The following line
10.2765 + //turns namespace checking off in ._isValidNamespace
10.2766 + __ownerDocument__(this).importing = true;
10.2767 +
10.2768 + if (importedNode.nodeType == Node.ELEMENT_NODE) {
10.2769 + if (!__ownerDocument__(this).implementation.namespaceAware) {
10.2770 + // create a local Element (with the name of the importedNode)
10.2771 + importNode = __ownerDocument__(this).createElement(importedNode.tagName);
10.2772 +
10.2773 + // create attributes matching those of the importedNode
10.2774 + for(i = 0; i < importedNode.attributes.length; i++) {
10.2775 + importNode.setAttribute(importedNode.attributes.item(i).name, importedNode.attributes.item(i).value);
10.2776 + }
10.2777 + } else {
10.2778 + // create a local Element (with the name & namespaceURI of the importedNode)
10.2779 + importNode = __ownerDocument__(this).createElementNS(importedNode.namespaceURI, importedNode.nodeName);
10.2780 +
10.2781 + // create attributes matching those of the importedNode
10.2782 + for(i = 0; i < importedNode.attributes.length; i++) {
10.2783 + importNode.setAttributeNS(importedNode.attributes.item(i).namespaceURI,
10.2784 + importedNode.attributes.item(i).name, importedNode.attributes.item(i).value);
10.2785 + }
10.2786 +
10.2787 + // create namespace definitions matching those of the importedNode
10.2788 + for(i = 0; i < importedNode._namespaces.length; i++) {
10.2789 + importNode._namespaces[i] = __ownerDocument__(this).createNamespace(importedNode._namespaces.item(i).localName);
10.2790 + importNode._namespaces[i].value = importedNode._namespaces.item(i).value;
10.2791 + }
10.2792 + }
10.2793 + } else if (importedNode.nodeType == Node.ATTRIBUTE_NODE) {
10.2794 + if (!__ownerDocument__(this).implementation.namespaceAware) {
10.2795 + // create a local Attribute (with the name of the importedAttribute)
10.2796 + importNode = __ownerDocument__(this).createAttribute(importedNode.name);
10.2797 + } else {
10.2798 + // create a local Attribute (with the name & namespaceURI of the importedAttribute)
10.2799 + importNode = __ownerDocument__(this).createAttributeNS(importedNode.namespaceURI, importedNode.nodeName);
10.2800 +
10.2801 + // create namespace definitions matching those of the importedAttribute
10.2802 + for(i = 0; i < importedNode._namespaces.length; i++) {
10.2803 + importNode._namespaces[i] = __ownerDocument__(this).createNamespace(importedNode._namespaces.item(i).localName);
10.2804 + importNode._namespaces[i].value = importedNode._namespaces.item(i).value;
10.2805 + }
10.2806 + }
10.2807 +
10.2808 + // set the value of the local Attribute to match that of the importedAttribute
10.2809 + importNode.value = importedNode.value;
10.2810 +
10.2811 + } else if (importedNode.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
10.2812 + // create a local DocumentFragment
10.2813 + importNode = __ownerDocument__(this).createDocumentFragment();
10.2814 + } else if (importedNode.nodeType == Node.NAMESPACE_NODE) {
10.2815 + // create a local NamespaceNode (with the same name & value as the importedNode)
10.2816 + importNode = __ownerDocument__(this).createNamespace(importedNode.nodeName);
10.2817 + importNode.value = importedNode.value;
10.2818 + } else if (importedNode.nodeType == Node.TEXT_NODE) {
10.2819 + // create a local TextNode (with the same data as the importedNode)
10.2820 + importNode = __ownerDocument__(this).createTextNode(importedNode.data);
10.2821 + } else if (importedNode.nodeType == Node.CDATA_SECTION_NODE) {
10.2822 + // create a local CDATANode (with the same data as the importedNode)
10.2823 + importNode = __ownerDocument__(this).createCDATASection(importedNode.data);
10.2824 + } else if (importedNode.nodeType == Node.PROCESSING_INSTRUCTION_NODE) {
10.2825 + // create a local ProcessingInstruction (with the same target & data as the importedNode)
10.2826 + importNode = __ownerDocument__(this).createProcessingInstruction(importedNode.target, importedNode.data);
10.2827 + } else if (importedNode.nodeType == Node.COMMENT_NODE) {
10.2828 + // create a local Comment (with the same data as the importedNode)
10.2829 + importNode = __ownerDocument__(this).createComment(importedNode.data);
10.2830 + } else { // throw Exception if nodeType is not supported
10.2831 + throw(new DOMException(DOMException.NOT_SUPPORTED_ERR));
10.2832 + }
10.2833 +
10.2834 + if (deep) {
10.2835 + // recurse childNodes
10.2836 + for(i = 0; i < importedNode.childNodes.length; i++) {
10.2837 + importNode.appendChild(__ownerDocument__(this).importNode(importedNode.childNodes.item(i), true));
10.2838 + }
10.2839 + }
10.2840 +
10.2841 + //reset importing
10.2842 + __ownerDocument__(this).importing = false;
10.2843 + return importNode;
10.2844 +
10.2845 + },
10.2846 + contains : function(node){
10.2847 + while(node && node != this ){
10.2848 + node = node.parentNode;
10.2849 + }
10.2850 + return !!node;
10.2851 + },
10.2852 + toString : function() {
10.2853 + return '[object Node]';
10.2854 + }
10.2855 +
10.2856 +});
10.2857 +
10.2858 +
10.2859 +
10.2860 +/**
10.2861 + * @method __getElementsByTagNameRecursive__ - implements getElementsByTagName()
10.2862 + * @param elem : Element - The element which are checking and then recursing into
10.2863 + * @param tagname : string - The name of the tag to match on. The special value "*" matches all tags
10.2864 + * @param nodeList : NodeList - The accumulating list of matching nodes
10.2865 + *
10.2866 + * @return : NodeList
10.2867 + */
10.2868 +var __getElementsByTagNameRecursive__ = function (elem, tagname, nodeList) {
10.2869 +
10.2870 + if (elem.nodeType == Node.ELEMENT_NODE || elem.nodeType == Node.DOCUMENT_NODE) {
10.2871 +
10.2872 + if(elem.nodeType !== Node.DOCUMENT_NODE &&
10.2873 + ((elem.nodeName.toUpperCase() == tagname.toUpperCase()) ||
10.2874 + (tagname == "*")) ){
10.2875 + // add matching node to nodeList
10.2876 + __appendChild__(nodeList, elem);
10.2877 + }
10.2878 +
10.2879 + // recurse childNodes
10.2880 + for(var i = 0; i < elem.childNodes.length; i++) {
10.2881 + nodeList = __getElementsByTagNameRecursive__(elem.childNodes.item(i), tagname, nodeList);
10.2882 + }
10.2883 + }
10.2884 +
10.2885 + return nodeList;
10.2886 +};
10.2887 +
10.2888 +/**
10.2889 + * @method __getElementsByTagNameNSRecursive__
10.2890 + * implements getElementsByTagName()
10.2891 + *
10.2892 + * @param elem : Element - The element which are checking and then recursing into
10.2893 + * @param namespaceURI : string - the namespace URI of the required node
10.2894 + * @param localName : string - the local name of the required node
10.2895 + * @param nodeList : NodeList - The accumulating list of matching nodes
10.2896 + *
10.2897 + * @return : NodeList
10.2898 + */
10.2899 +var __getElementsByTagNameNSRecursive__ = function(elem, namespaceURI, localName, nodeList) {
10.2900 + if (elem.nodeType == Node.ELEMENT_NODE || elem.nodeType == Node.DOCUMENT_NODE) {
10.2901 +
10.2902 + if (((elem.namespaceURI == namespaceURI) || (namespaceURI == "*")) &&
10.2903 + ((elem.localName == localName) || (localName == "*"))) {
10.2904 + // add matching node to nodeList
10.2905 + __appendChild__(nodeList, elem);
10.2906 + }
10.2907 +
10.2908 + // recurse childNodes
10.2909 + for(var i = 0; i < elem.childNodes.length; i++) {
10.2910 + nodeList = __getElementsByTagNameNSRecursive__(
10.2911 + elem.childNodes.item(i), namespaceURI, localName, nodeList);
10.2912 + }
10.2913 + }
10.2914 +
10.2915 + return nodeList;
10.2916 +};
10.2917 +
10.2918 +/**
10.2919 + * @method __isAncestor__ - returns true if node is ancestor of target
10.2920 + * @param target : Node - The node we are using as context
10.2921 + * @param node : Node - The candidate ancestor node
10.2922 + * @return : boolean
10.2923 + */
10.2924 +var __isAncestor__ = function(target, node) {
10.2925 + // if this node matches, return true,
10.2926 + // otherwise recurse up (if there is a parentNode)
10.2927 + return ((target == node) || ((target.parentNode) && (__isAncestor__(target.parentNode, node))));
10.2928 +};
10.2929 +
10.2930 +
10.2931 +
10.2932 +var __recursivelyGatherText__ = function(aNode) {
10.2933 + var accumulateText = "",
10.2934 + idx,
10.2935 + node;
10.2936 + for (idx=0;idx < aNode.childNodes.length;idx++){
10.2937 + node = aNode.childNodes.item(idx);
10.2938 + if(node.nodeType == Node.TEXT_NODE)
10.2939 + accumulateText += node.data;
10.2940 + else
10.2941 + accumulateText += __recursivelyGatherText__(node);
10.2942 + }
10.2943 + return accumulateText;
10.2944 +};
10.2945 +
10.2946 +/**
10.2947 + * function __escapeXML__
10.2948 + * @param str : string - The string to be escaped
10.2949 + * @return : string - The escaped string
10.2950 + */
10.2951 +var escAmpRegEx = /&(?!(amp;|lt;|gt;|quot|apos;))/g;
10.2952 +var escLtRegEx = /</g;
10.2953 +var escGtRegEx = />/g;
10.2954 +var quotRegEx = /"/g;
10.2955 +var aposRegEx = /'/g;
10.2956 +
10.2957 +function __escapeXML__(str) {
10.2958 + str = str.replace(escAmpRegEx, "&").
10.2959 + replace(escLtRegEx, "<").
10.2960 + replace(escGtRegEx, ">").
10.2961 + replace(quotRegEx, """).
10.2962 + replace(aposRegEx, "'");
10.2963 +
10.2964 + return str;
10.2965 +};
10.2966 +
10.2967 +/*
10.2968 +function __escapeHTML5__(str) {
10.2969 + str = str.replace(escAmpRegEx, "&").
10.2970 + replace(escLtRegEx, "<").
10.2971 + replace(escGtRegEx, ">");
10.2972 +
10.2973 + return str;
10.2974 +};
10.2975 +function __escapeHTML5Atribute__(str) {
10.2976 + str = str.replace(escAmpRegEx, "&").
10.2977 + replace(escLtRegEx, "<").
10.2978 + replace(escGtRegEx, ">").
10.2979 + replace(quotRegEx, """).
10.2980 + replace(aposRegEx, "'");
10.2981 +
10.2982 + return str;
10.2983 +};
10.2984 +*/
10.2985 +
10.2986 +/**
10.2987 + * function __unescapeXML__
10.2988 + * @param str : string - The string to be unescaped
10.2989 + * @return : string - The unescaped string
10.2990 + */
10.2991 +var unescAmpRegEx = /&/g;
10.2992 +var unescLtRegEx = /</g;
10.2993 +var unescGtRegEx = />/g;
10.2994 +var unquotRegEx = /"/g;
10.2995 +var unaposRegEx = /'/g;
10.2996 +function __unescapeXML__(str) {
10.2997 + str = str.replace(unescAmpRegEx, "&").
10.2998 + replace(unescLtRegEx, "<").
10.2999 + replace(unescGtRegEx, ">").
10.3000 + replace(unquotRegEx, "\"").
10.3001 + replace(unaposRegEx, "'");
10.3002 +
10.3003 + return str;
10.3004 +};
10.3005 +
10.3006 +/**
10.3007 + * @class NamedNodeMap -
10.3008 + * used to represent collections of nodes that can be accessed by name
10.3009 + * typically a set of Element attributes
10.3010 + *
10.3011 + * @extends NodeList -
10.3012 + * note W3C spec says that this is not the case, but we need an item()
10.3013 + * method identical to NodeList's, so why not?
10.3014 + * @param ownerDocument : Document - the ownerDocument
10.3015 + * @param parentNode : Node - the node that the NamedNodeMap is attached to (or null)
10.3016 + */
10.3017 +NamedNodeMap = function(ownerDocument, parentNode) {
10.3018 + NodeList.apply(this, arguments);
10.3019 + __setArray__(this, []);
10.3020 +};
10.3021 +NamedNodeMap.prototype = new NodeList();
10.3022 +__extend__(NamedNodeMap.prototype, {
10.3023 + add: function(name){
10.3024 + this[this.length] = name;
10.3025 + },
10.3026 + getNamedItem : function(name) {
10.3027 + var ret = null;
10.3028 + //console.log('NamedNodeMap getNamedItem %s', name);
10.3029 + // test that Named Node exists
10.3030 + var itemIndex = __findNamedItemIndex__(this, name);
10.3031 +
10.3032 + if (itemIndex > -1) {
10.3033 + // found it!
10.3034 + ret = this[itemIndex];
10.3035 + }
10.3036 + // if node is not found, default value null is returned
10.3037 + return ret;
10.3038 + },
10.3039 + setNamedItem : function(arg) {
10.3040 + //console.log('setNamedItem %s', arg);
10.3041 + // test for exceptions
10.3042 + if (__ownerDocument__(this).implementation.errorChecking) {
10.3043 + // throw Exception if arg was not created by this Document
10.3044 + if (this.ownerDocument != arg.ownerDocument) {
10.3045 + throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
10.3046 + }
10.3047 +
10.3048 + // throw Exception if DOMNamedNodeMap is readonly
10.3049 + if (this._readonly || (this.parentNode && this.parentNode._readonly)) {
10.3050 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.3051 + }
10.3052 +
10.3053 + // throw Exception if arg is already an attribute of another Element object
10.3054 + if (arg.ownerElement && (arg.ownerElement != this.parentNode)) {
10.3055 + throw(new DOMException(DOMException.INUSE_ATTRIBUTE_ERR));
10.3056 + }
10.3057 + }
10.3058 +
10.3059 + //console.log('setNamedItem __findNamedItemIndex__ ');
10.3060 + // get item index
10.3061 + var itemIndex = __findNamedItemIndex__(this, arg.name);
10.3062 + var ret = null;
10.3063 +
10.3064 + //console.log('setNamedItem __findNamedItemIndex__ %s', itemIndex);
10.3065 + if (itemIndex > -1) { // found it!
10.3066 + ret = this[itemIndex]; // use existing Attribute
10.3067 +
10.3068 + // throw Exception if DOMAttr is readonly
10.3069 + if (__ownerDocument__(this).implementation.errorChecking && ret._readonly) {
10.3070 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.3071 + } else {
10.3072 + this[itemIndex] = arg; // over-write existing NamedNode
10.3073 + this[arg.name.toLowerCase()] = arg;
10.3074 + }
10.3075 + } else {
10.3076 + // add new NamedNode
10.3077 + //console.log('setNamedItem add new named node map (by index)');
10.3078 + Array.prototype.push.apply(this, [arg]);
10.3079 + //console.log('setNamedItem add new named node map (by name) %s %s', arg, arg.name);
10.3080 + this[arg.name] = arg;
10.3081 + //console.log('finsished setNamedItem add new named node map (by name) %s', arg.name);
10.3082 +
10.3083 + }
10.3084 +
10.3085 + //console.log('setNamedItem parentNode');
10.3086 + arg.ownerElement = this.parentNode; // update ownerElement
10.3087 + // return old node or new node
10.3088 + //console.log('setNamedItem exit');
10.3089 + return ret;
10.3090 + },
10.3091 + removeNamedItem : function(name) {
10.3092 + var ret = null;
10.3093 + // test for exceptions
10.3094 + // throw Exception if NamedNodeMap is readonly
10.3095 + if (__ownerDocument__(this).implementation.errorChecking &&
10.3096 + (this._readonly || (this.parentNode && this.parentNode._readonly))) {
10.3097 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.3098 + }
10.3099 +
10.3100 + // get item index
10.3101 + var itemIndex = __findNamedItemIndex__(this, name);
10.3102 +
10.3103 + // throw Exception if there is no node named name in this map
10.3104 + if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
10.3105 + throw(new DOMException(DOMException.NOT_FOUND_ERR));
10.3106 + }
10.3107 +
10.3108 + // get Node
10.3109 + var oldNode = this[itemIndex];
10.3110 + //this[oldNode.name] = undefined;
10.3111 +
10.3112 + // throw Exception if Node is readonly
10.3113 + if (__ownerDocument__(this).implementation.errorChecking && oldNode._readonly) {
10.3114 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.3115 + }
10.3116 +
10.3117 + // return removed node
10.3118 + return __removeChild__(this, itemIndex);
10.3119 + },
10.3120 + getNamedItemNS : function(namespaceURI, localName) {
10.3121 + var ret = null;
10.3122 +
10.3123 + // test that Named Node exists
10.3124 + var itemIndex = __findNamedItemNSIndex__(this, namespaceURI, localName);
10.3125 +
10.3126 + if (itemIndex > -1) {
10.3127 + // found it! return NamedNode
10.3128 + ret = this[itemIndex];
10.3129 + }
10.3130 + // if node is not found, default value null is returned
10.3131 + return ret;
10.3132 + },
10.3133 + setNamedItemNS : function(arg) {
10.3134 + //console.log('setNamedItemNS %s', arg);
10.3135 + // test for exceptions
10.3136 + if (__ownerDocument__(this).implementation.errorChecking) {
10.3137 + // throw Exception if NamedNodeMap is readonly
10.3138 + if (this._readonly || (this.parentNode && this.parentNode._readonly)) {
10.3139 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.3140 + }
10.3141 +
10.3142 + // throw Exception if arg was not created by this Document
10.3143 + if (__ownerDocument__(this) != __ownerDocument__(arg)) {
10.3144 + throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
10.3145 + }
10.3146 +
10.3147 + // throw Exception if arg is already an attribute of another Element object
10.3148 + if (arg.ownerElement && (arg.ownerElement != this.parentNode)) {
10.3149 + throw(new DOMException(DOMException.INUSE_ATTRIBUTE_ERR));
10.3150 + }
10.3151 + }
10.3152 +
10.3153 + // get item index
10.3154 + var itemIndex = __findNamedItemNSIndex__(this, arg.namespaceURI, arg.localName);
10.3155 + var ret = null;
10.3156 +
10.3157 + if (itemIndex > -1) {
10.3158 + // found it!
10.3159 + // use existing Attribute
10.3160 + ret = this[itemIndex];
10.3161 + // throw Exception if Attr is readonly
10.3162 + if (__ownerDocument__(this).implementation.errorChecking && ret._readonly) {
10.3163 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.3164 + } else {
10.3165 + // over-write existing NamedNode
10.3166 + this[itemIndex] = arg;
10.3167 + }
10.3168 + }else {
10.3169 + // add new NamedNode
10.3170 + Array.prototype.push.apply(this, [arg]);
10.3171 + }
10.3172 + arg.ownerElement = this.parentNode;
10.3173 +
10.3174 + // return old node or null
10.3175 + return ret;
10.3176 + //console.log('finished setNamedItemNS %s', arg);
10.3177 + },
10.3178 + removeNamedItemNS : function(namespaceURI, localName) {
10.3179 + var ret = null;
10.3180 +
10.3181 + // test for exceptions
10.3182 + // throw Exception if NamedNodeMap is readonly
10.3183 + if (__ownerDocument__(this).implementation.errorChecking && (this._readonly || (this.parentNode && this.parentNode._readonly))) {
10.3184 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.3185 + }
10.3186 +
10.3187 + // get item index
10.3188 + var itemIndex = __findNamedItemNSIndex__(this, namespaceURI, localName);
10.3189 +
10.3190 + // throw Exception if there is no matching node in this map
10.3191 + if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
10.3192 + throw(new DOMException(DOMException.NOT_FOUND_ERR));
10.3193 + }
10.3194 +
10.3195 + // get Node
10.3196 + var oldNode = this[itemIndex];
10.3197 +
10.3198 + // throw Exception if Node is readonly
10.3199 + if (__ownerDocument__(this).implementation.errorChecking && oldNode._readonly) {
10.3200 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.3201 + }
10.3202 +
10.3203 + return __removeChild__(this, itemIndex); // return removed node
10.3204 + },
10.3205 + get xml() {
10.3206 + var ret = "";
10.3207 +
10.3208 + // create string containing concatenation of all (but last) Attribute string values (separated by spaces)
10.3209 + for (var i=0; i < this.length -1; i++) {
10.3210 + ret += this[i].xml +" ";
10.3211 + }
10.3212 +
10.3213 + // add last Attribute to string (without trailing space)
10.3214 + if (this.length > 0) {
10.3215 + ret += this[this.length -1].xml;
10.3216 + }
10.3217 +
10.3218 + return ret;
10.3219 + },
10.3220 + toString : function(){
10.3221 + return "[object NamedNodeMap]";
10.3222 + }
10.3223 +
10.3224 +});
10.3225 +
10.3226 +/**
10.3227 + * @method __findNamedItemIndex__
10.3228 + * find the item index of the node with the specified name
10.3229 + *
10.3230 + * @param name : string - the name of the required node
10.3231 + * @param isnsmap : if its a NamespaceNodeMap
10.3232 + * @return : int
10.3233 + */
10.3234 +var __findNamedItemIndex__ = function(namednodemap, name, isnsmap) {
10.3235 + var ret = -1;
10.3236 + // loop through all nodes
10.3237 + for (var i=0; i<namednodemap.length; i++) {
10.3238 + // compare name to each node's nodeName
10.3239 + if(namednodemap[i].localName && name && isnsmap){
10.3240 + if (namednodemap[i].localName.toLowerCase() == name.toLowerCase()) {
10.3241 + // found it!
10.3242 + ret = i;
10.3243 + break;
10.3244 + }
10.3245 + }else{
10.3246 + if(namednodemap[i].name && name){
10.3247 + if (namednodemap[i].name.toLowerCase() == name.toLowerCase()) {
10.3248 + // found it!
10.3249 + ret = i;
10.3250 + break;
10.3251 + }
10.3252 + }
10.3253 + }
10.3254 + }
10.3255 + // if node is not found, default value -1 is returned
10.3256 + return ret;
10.3257 +};
10.3258 +
10.3259 +/**
10.3260 + * @method __findNamedItemNSIndex__
10.3261 + * find the item index of the node with the specified
10.3262 + * namespaceURI and localName
10.3263 + *
10.3264 + * @param namespaceURI : string - the namespace URI of the required node
10.3265 + * @param localName : string - the local name of the required node
10.3266 + * @return : int
10.3267 + */
10.3268 +var __findNamedItemNSIndex__ = function(namednodemap, namespaceURI, localName) {
10.3269 + var ret = -1;
10.3270 + // test that localName is not null
10.3271 + if (localName) {
10.3272 + // loop through all nodes
10.3273 + for (var i=0; i<namednodemap.length; i++) {
10.3274 + if(namednodemap[i].namespaceURI && namednodemap[i].localName){
10.3275 + // compare name to each node's namespaceURI and localName
10.3276 + if ((namednodemap[i].namespaceURI.toLowerCase() == namespaceURI.toLowerCase()) &&
10.3277 + (namednodemap[i].localName.toLowerCase() == localName.toLowerCase())) {
10.3278 + // found it!
10.3279 + ret = i;
10.3280 + break;
10.3281 + }
10.3282 + }
10.3283 + }
10.3284 + }
10.3285 + // if node is not found, default value -1 is returned
10.3286 + return ret;
10.3287 +};
10.3288 +
10.3289 +/**
10.3290 + * @method __hasAttribute__
10.3291 + * Returns true if specified node exists
10.3292 + *
10.3293 + * @param name : string - the name of the required node
10.3294 + * @return : boolean
10.3295 + */
10.3296 +var __hasAttribute__ = function(namednodemap, name) {
10.3297 + var ret = false;
10.3298 + // test that Named Node exists
10.3299 + var itemIndex = __findNamedItemIndex__(namednodemap, name);
10.3300 + if (itemIndex > -1) {
10.3301 + // found it!
10.3302 + ret = true;
10.3303 + }
10.3304 + // if node is not found, default value false is returned
10.3305 + return ret;
10.3306 +}
10.3307 +
10.3308 +/**
10.3309 + * @method __hasAttributeNS__
10.3310 + * Returns true if specified node exists
10.3311 + *
10.3312 + * @param namespaceURI : string - the namespace URI of the required node
10.3313 + * @param localName : string - the local name of the required node
10.3314 + * @return : boolean
10.3315 + */
10.3316 +var __hasAttributeNS__ = function(namednodemap, namespaceURI, localName) {
10.3317 + var ret = false;
10.3318 + // test that Named Node exists
10.3319 + var itemIndex = __findNamedItemNSIndex__(namednodemap, namespaceURI, localName);
10.3320 + if (itemIndex > -1) {
10.3321 + // found it!
10.3322 + ret = true;
10.3323 + }
10.3324 + // if node is not found, default value false is returned
10.3325 + return ret;
10.3326 +}
10.3327 +
10.3328 +/**
10.3329 + * @method __cloneNamedNodes__
10.3330 + * Returns a NamedNodeMap containing clones of the Nodes in this NamedNodeMap
10.3331 + *
10.3332 + * @param parentNode : Node - the new parent of the cloned NodeList
10.3333 + * @param isnsmap : bool - is this a NamespaceNodeMap
10.3334 + * @return NamedNodeMap containing clones of the Nodes in this NamedNodeMap
10.3335 + */
10.3336 +var __cloneNamedNodes__ = function(namednodemap, parentNode, isnsmap) {
10.3337 + var cloneNamedNodeMap = isnsmap?
10.3338 + new NamespaceNodeMap(namednodemap.ownerDocument, parentNode):
10.3339 + new NamedNodeMap(namednodemap.ownerDocument, parentNode);
10.3340 +
10.3341 + // create list containing clones of all children
10.3342 + for (var i=0; i < namednodemap.length; i++) {
10.3343 + __appendChild__(cloneNamedNodeMap, namednodemap[i].cloneNode(false));
10.3344 + }
10.3345 +
10.3346 + return cloneNamedNodeMap;
10.3347 +};
10.3348 +
10.3349 +
10.3350 +/**
10.3351 + * @class NamespaceNodeMap -
10.3352 + * used to represent collections of namespace nodes that can be
10.3353 + * accessed by name typically a set of Element attributes
10.3354 + *
10.3355 + * @extends NamedNodeMap
10.3356 + *
10.3357 + * @param ownerDocument : Document - the ownerDocument
10.3358 + * @param parentNode : Node - the node that the NamespaceNodeMap is attached to (or null)
10.3359 + */
10.3360 +var NamespaceNodeMap = function(ownerDocument, parentNode) {
10.3361 + this.NamedNodeMap = NamedNodeMap;
10.3362 + this.NamedNodeMap(ownerDocument, parentNode);
10.3363 + __setArray__(this, []);
10.3364 +};
10.3365 +NamespaceNodeMap.prototype = new NamedNodeMap();
10.3366 +__extend__(NamespaceNodeMap.prototype, {
10.3367 + get xml() {
10.3368 + var ret = "",
10.3369 + ns,
10.3370 + ind;
10.3371 + // identify namespaces declared local to this Element (ie, not inherited)
10.3372 + for (ind = 0; ind < this.length; ind++) {
10.3373 + // if namespace declaration does not exist in the containing node's, parentNode's namespaces
10.3374 + ns = null;
10.3375 + try {
10.3376 + var ns = this.parentNode.parentNode._namespaces.
10.3377 + getNamedItem(this[ind].localName);
10.3378 + }catch (e) {
10.3379 + //breaking to prevent default namespace being inserted into return value
10.3380 + break;
10.3381 + }
10.3382 + if (!(ns && (""+ ns.nodeValue == ""+ this[ind].nodeValue))) {
10.3383 + // display the namespace declaration
10.3384 + ret += this[ind].xml +" ";
10.3385 + }
10.3386 + }
10.3387 + return ret;
10.3388 + }
10.3389 +});
10.3390 +
10.3391 +/**
10.3392 + * @class Namespace -
10.3393 + * The Namespace interface represents an namespace in an Element object
10.3394 + *
10.3395 + * @param ownerDocument : The Document object associated with this node.
10.3396 + */
10.3397 +Namespace = function(ownerDocument) {
10.3398 + Node.apply(this, arguments);
10.3399 + // the name of this attribute
10.3400 + this.name = "";
10.3401 +
10.3402 + // If this attribute was explicitly given a value in the original document,
10.3403 + // this is true; otherwise, it is false.
10.3404 + // Note that the implementation is in charge of this attribute, not the user.
10.3405 + // If the user changes the value of the attribute (even if it ends up having
10.3406 + // the same value as the default value) then the specified flag is
10.3407 + // automatically flipped to true
10.3408 + this.specified = false;
10.3409 +};
10.3410 +Namespace.prototype = new Node();
10.3411 +__extend__(Namespace.prototype, {
10.3412 + get value(){
10.3413 + // the value of the attribute is returned as a string
10.3414 + return this.nodeValue;
10.3415 + },
10.3416 + set value(value){
10.3417 + this.nodeValue = value+'';
10.3418 + },
10.3419 + get nodeType(){
10.3420 + return Node.NAMESPACE_NODE;
10.3421 + },
10.3422 + get xml(){
10.3423 + var ret = "";
10.3424 +
10.3425 + // serialize Namespace Declaration
10.3426 + if (this.nodeName != "") {
10.3427 + ret += this.nodeName +"=\""+ __escapeXML__(this.nodeValue) +"\"";
10.3428 + }
10.3429 + else { // handle default namespace
10.3430 + ret += "xmlns=\""+ __escapeXML__(this.nodeValue) +"\"";
10.3431 + }
10.3432 +
10.3433 + return ret;
10.3434 + },
10.3435 + toString: function(){
10.3436 + return '[object Namespace]';
10.3437 + }
10.3438 +});
10.3439 +
10.3440 +
10.3441 +/**
10.3442 + * @class CharacterData - parent abstract class for Text and Comment
10.3443 + * @extends Node
10.3444 + * @param ownerDocument : The Document object associated with this node.
10.3445 + */
10.3446 +CharacterData = function(ownerDocument) {
10.3447 + Node.apply(this, arguments);
10.3448 +};
10.3449 +CharacterData.prototype = new Node();
10.3450 +__extend__(CharacterData.prototype,{
10.3451 + get data(){
10.3452 + return this.nodeValue;
10.3453 + },
10.3454 + set data(data){
10.3455 + this.nodeValue = data;
10.3456 + },
10.3457 + get textContent(){
10.3458 + return this.nodeValue;
10.3459 + },
10.3460 + set textContent(newText){
10.3461 + this.nodeValue = newText;
10.3462 + },
10.3463 + get length(){return this.nodeValue.length;},
10.3464 + appendData: function(arg){
10.3465 + // throw Exception if CharacterData is readonly
10.3466 + if (__ownerDocument__(this).implementation.errorChecking && this._readonly) {
10.3467 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.3468 + }
10.3469 + // append data
10.3470 + this.data = "" + this.data + arg;
10.3471 + },
10.3472 + deleteData: function(offset, count){
10.3473 + // throw Exception if CharacterData is readonly
10.3474 + if (__ownerDocument__(this).implementation.errorChecking && this._readonly) {
10.3475 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.3476 + }
10.3477 + if (this.data) {
10.3478 + // throw Exception if offset is negative or greater than the data length,
10.3479 + if (__ownerDocument__(this).implementation.errorChecking &&
10.3480 + ((offset < 0) || (offset > this.data.length) || (count < 0))) {
10.3481 + throw(new DOMException(DOMException.INDEX_SIZE_ERR));
10.3482 + }
10.3483 +
10.3484 + // delete data
10.3485 + if(!count || (offset + count) > this.data.length) {
10.3486 + this.data = this.data.substring(0, offset);
10.3487 + }else {
10.3488 + this.data = this.data.substring(0, offset).
10.3489 + concat(this.data.substring(offset + count));
10.3490 + }
10.3491 + }
10.3492 + },
10.3493 + insertData: function(offset, arg){
10.3494 + // throw Exception if CharacterData is readonly
10.3495 + if(__ownerDocument__(this).implementation.errorChecking && this._readonly){
10.3496 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.3497 + }
10.3498 +
10.3499 + if(this.data){
10.3500 + // throw Exception if offset is negative or greater than the data length,
10.3501 + if (__ownerDocument__(this).implementation.errorChecking &&
10.3502 + ((offset < 0) || (offset > this.data.length))) {
10.3503 + throw(new DOMException(DOMException.INDEX_SIZE_ERR));
10.3504 + }
10.3505 +
10.3506 + // insert data
10.3507 + this.data = this.data.substring(0, offset).concat(arg, this.data.substring(offset));
10.3508 + }else {
10.3509 + // throw Exception if offset is negative or greater than the data length,
10.3510 + if (__ownerDocument__(this).implementation.errorChecking && (offset !== 0)) {
10.3511 + throw(new DOMException(DOMException.INDEX_SIZE_ERR));
10.3512 + }
10.3513 +
10.3514 + // set data
10.3515 + this.data = arg;
10.3516 + }
10.3517 + },
10.3518 + replaceData: function(offset, count, arg){
10.3519 + // throw Exception if CharacterData is readonly
10.3520 + if (__ownerDocument__(this).implementation.errorChecking && this._readonly) {
10.3521 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.3522 + }
10.3523 +
10.3524 + if (this.data) {
10.3525 + // throw Exception if offset is negative or greater than the data length,
10.3526 + if (__ownerDocument__(this).implementation.errorChecking &&
10.3527 + ((offset < 0) || (offset > this.data.length) || (count < 0))) {
10.3528 + throw(new DOMException(DOMException.INDEX_SIZE_ERR));
10.3529 + }
10.3530 +
10.3531 + // replace data
10.3532 + this.data = this.data.substring(0, offset).
10.3533 + concat(arg, this.data.substring(offset + count));
10.3534 + }else {
10.3535 + // set data
10.3536 + this.data = arg;
10.3537 + }
10.3538 + },
10.3539 + substringData: function(offset, count){
10.3540 + var ret = null;
10.3541 + if (this.data) {
10.3542 + // throw Exception if offset is negative or greater than the data length,
10.3543 + // or the count is negative
10.3544 + if (__ownerDocument__(this).implementation.errorChecking &&
10.3545 + ((offset < 0) || (offset > this.data.length) || (count < 0))) {
10.3546 + throw(new DOMException(DOMException.INDEX_SIZE_ERR));
10.3547 + }
10.3548 + // if count is not specified
10.3549 + if (!count) {
10.3550 + ret = this.data.substring(offset); // default to 'end of string'
10.3551 + }else{
10.3552 + ret = this.data.substring(offset, offset + count);
10.3553 + }
10.3554 + }
10.3555 + return ret;
10.3556 + },
10.3557 + toString : function(){
10.3558 + return "[object CharacterData]";
10.3559 + }
10.3560 +});
10.3561 +
10.3562 +/**
10.3563 + * @class Text
10.3564 + * The Text interface represents the textual content (termed
10.3565 + * character data in XML) of an Element or Attr.
10.3566 + * If there is no markup inside an element's content, the text is
10.3567 + * contained in a single object implementing the Text interface that
10.3568 + * is the only child of the element. If there is markup, it is
10.3569 + * parsed into a list of elements and Text nodes that form the
10.3570 + * list of children of the element.
10.3571 + * @extends CharacterData
10.3572 + * @param ownerDocument The Document object associated with this node.
10.3573 + */
10.3574 +Text = function(ownerDocument) {
10.3575 + CharacterData.apply(this, arguments);
10.3576 + this.nodeName = "#text";
10.3577 +};
10.3578 +Text.prototype = new CharacterData();
10.3579 +__extend__(Text.prototype,{
10.3580 + get localName(){
10.3581 + return null;
10.3582 + },
10.3583 + // Breaks this Text node into two Text nodes at the specified offset,
10.3584 + // keeping both in the tree as siblings. This node then only contains
10.3585 + // all the content up to the offset point. And a new Text node, which
10.3586 + // is inserted as the next sibling of this node, contains all the
10.3587 + // content at and after the offset point.
10.3588 + splitText : function(offset) {
10.3589 + var data,
10.3590 + inode;
10.3591 + // test for exceptions
10.3592 + if (__ownerDocument__(this).implementation.errorChecking) {
10.3593 + // throw Exception if Node is readonly
10.3594 + if (this._readonly) {
10.3595 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.3596 + }
10.3597 + // throw Exception if offset is negative or greater than the data length,
10.3598 + if ((offset < 0) || (offset > this.data.length)) {
10.3599 + throw(new DOMException(DOMException.INDEX_SIZE_ERR));
10.3600 + }
10.3601 + }
10.3602 + if (this.parentNode) {
10.3603 + // get remaining string (after offset)
10.3604 + data = this.substringData(offset);
10.3605 + // create new TextNode with remaining string
10.3606 + inode = __ownerDocument__(this).createTextNode(data);
10.3607 + // attach new TextNode
10.3608 + if (this.nextSibling) {
10.3609 + this.parentNode.insertBefore(inode, this.nextSibling);
10.3610 + } else {
10.3611 + this.parentNode.appendChild(inode);
10.3612 + }
10.3613 + // remove remaining string from original TextNode
10.3614 + this.deleteData(offset);
10.3615 + }
10.3616 + return inode;
10.3617 + },
10.3618 + get nodeType(){
10.3619 + return Node.TEXT_NODE;
10.3620 + },
10.3621 + get xml(){
10.3622 + return __escapeXML__(""+ this.nodeValue);
10.3623 + },
10.3624 + toString: function(){
10.3625 + return "[object Text]";
10.3626 + }
10.3627 +});
10.3628 +
10.3629 +/**
10.3630 + * @class CDATASection
10.3631 + * CDATA sections are used to escape blocks of text containing
10.3632 + * characters that would otherwise be regarded as markup.
10.3633 + * The only delimiter that is recognized in a CDATA section is
10.3634 + * the "\]\]\>" string that ends the CDATA section
10.3635 + * @extends Text
10.3636 + * @param ownerDocument : The Document object associated with this node.
10.3637 + */
10.3638 +CDATASection = function(ownerDocument) {
10.3639 + Text.apply(this, arguments);
10.3640 + this.nodeName = '#cdata-section';
10.3641 +};
10.3642 +CDATASection.prototype = new Text();
10.3643 +__extend__(CDATASection.prototype,{
10.3644 + get nodeType(){
10.3645 + return Node.CDATA_SECTION_NODE;
10.3646 + },
10.3647 + get xml(){
10.3648 + return "<![CDATA[" + this.nodeValue + "]]>";
10.3649 + },
10.3650 + toString : function(){
10.3651 + return "[object CDATASection]";
10.3652 + }
10.3653 +});
10.3654 +/**
10.3655 + * @class Comment
10.3656 + * This represents the content of a comment, i.e., all the
10.3657 + * characters between the starting '<!--' and ending '-->'
10.3658 + * @extends CharacterData
10.3659 + * @param ownerDocument : The Document object associated with this node.
10.3660 + */
10.3661 +Comment = function(ownerDocument) {
10.3662 + CharacterData.apply(this, arguments);
10.3663 + this.nodeName = "#comment";
10.3664 +};
10.3665 +Comment.prototype = new CharacterData();
10.3666 +__extend__(Comment.prototype, {
10.3667 + get localName(){
10.3668 + return null;
10.3669 + },
10.3670 + get nodeType(){
10.3671 + return Node.COMMENT_NODE;
10.3672 + },
10.3673 + get xml(){
10.3674 + return "<!--" + this.nodeValue + "-->";
10.3675 + },
10.3676 + toString : function(){
10.3677 + return "[object Comment]";
10.3678 + }
10.3679 +});
10.3680 +
10.3681 +
10.3682 +/**
10.3683 + * @author envjs team
10.3684 + * @param {Document} onwnerDocument
10.3685 + */
10.3686 +DocumentType = function(ownerDocument) {
10.3687 + Node.apply(this, arguments);
10.3688 + this.systemId = null;
10.3689 + this.publicId = null;
10.3690 +};
10.3691 +DocumentType.prototype = new Node();
10.3692 +__extend__({
10.3693 + get name(){
10.3694 + return this.nodeName;
10.3695 + },
10.3696 + get entities(){
10.3697 + return null;
10.3698 + },
10.3699 + get internalSubsets(){
10.3700 + return null;
10.3701 + },
10.3702 + get notations(){
10.3703 + return null;
10.3704 + },
10.3705 + toString : function(){
10.3706 + return "[object DocumentType]";
10.3707 + }
10.3708 +});
10.3709 +
10.3710 +/**
10.3711 + * @class Attr
10.3712 + * The Attr interface represents an attribute in an Element object
10.3713 + * @extends Node
10.3714 + * @param ownerDocument : The Document object associated with this node.
10.3715 + */
10.3716 +Attr = function(ownerDocument) {
10.3717 + Node.apply(this, arguments);
10.3718 + // set when Attr is added to NamedNodeMap
10.3719 + this.ownerElement = null;
10.3720 + //TODO: our implementation of Attr is incorrect because we don't
10.3721 + // treat the value of the attribute as a child text node.
10.3722 +};
10.3723 +Attr.prototype = new Node();
10.3724 +__extend__(Attr.prototype, {
10.3725 + // the name of this attribute
10.3726 + get name(){
10.3727 + return this.nodeName;
10.3728 + },
10.3729 + // the value of the attribute is returned as a string
10.3730 + get value(){
10.3731 + return this.nodeValue||'';
10.3732 + },
10.3733 + set value(value){
10.3734 + // throw Exception if Attribute is readonly
10.3735 + if (__ownerDocument__(this).implementation.errorChecking && this._readonly) {
10.3736 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.3737 + }
10.3738 + // delegate to node
10.3739 + this.nodeValue = value;
10.3740 + },
10.3741 + get textContent(){
10.3742 + return this.nodeValue;
10.3743 + },
10.3744 + set textContent(newText){
10.3745 + this.nodeValue = newText;
10.3746 + },
10.3747 + get specified(){
10.3748 + return (this !== null && this !== undefined);
10.3749 + },
10.3750 + get nodeType(){
10.3751 + return Node.ATTRIBUTE_NODE;
10.3752 + },
10.3753 + get xml() {
10.3754 + if (this.nodeValue) {
10.3755 + return __escapeXML__(this.nodeValue+"");
10.3756 + } else {
10.3757 + return '';
10.3758 + }
10.3759 + },
10.3760 + toString : function() {
10.3761 + return '[object Attr]';
10.3762 + }
10.3763 +});
10.3764 +
10.3765 +
10.3766 +/**
10.3767 + * @class Element -
10.3768 + * By far the vast majority of objects (apart from text)
10.3769 + * that authors encounter when traversing a document are
10.3770 + * Element nodes.
10.3771 + * @extends Node
10.3772 + * @param ownerDocument : The Document object associated with this node.
10.3773 + */
10.3774 +Element = function(ownerDocument) {
10.3775 + Node.apply(this, arguments);
10.3776 + this.attributes = new NamedNodeMap(this.ownerDocument, this);
10.3777 +};
10.3778 +Element.prototype = new Node();
10.3779 +__extend__(Element.prototype, {
10.3780 + // The name of the element.
10.3781 + get tagName(){
10.3782 + return this.nodeName;
10.3783 + },
10.3784 +
10.3785 + getAttribute: function(name) {
10.3786 + var ret = null;
10.3787 + // if attribute exists, use it
10.3788 + var attr = this.attributes.getNamedItem(name);
10.3789 + if (attr) {
10.3790 + ret = attr.value;
10.3791 + }
10.3792 + // if Attribute exists, return its value, otherwise, return null
10.3793 + return ret;
10.3794 + },
10.3795 + setAttribute : function (name, value) {
10.3796 + // if attribute exists, use it
10.3797 + var attr = this.attributes.getNamedItem(name);
10.3798 + //console.log('attr %s', attr);
10.3799 + //I had to add this check because as the script initializes
10.3800 + //the id may be set in the constructor, and the html element
10.3801 + //overrides the id property with a getter/setter.
10.3802 + if(__ownerDocument__(this)){
10.3803 + if (attr===null||attr===undefined) {
10.3804 + // otherwise create it
10.3805 + attr = __ownerDocument__(this).createAttribute(name);
10.3806 + //console.log('attr %s', attr);
10.3807 + }
10.3808 +
10.3809 +
10.3810 + // test for exceptions
10.3811 + if (__ownerDocument__(this).implementation.errorChecking) {
10.3812 + // throw Exception if Attribute is readonly
10.3813 + if (attr._readonly) {
10.3814 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.3815 + }
10.3816 +
10.3817 + // throw Exception if the value string contains an illegal character
10.3818 + if (!__isValidString__(value+'')) {
10.3819 + throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
10.3820 + }
10.3821 + }
10.3822 +
10.3823 + // assign values to properties (and aliases)
10.3824 + attr.value = value + '';
10.3825 +
10.3826 + // add/replace Attribute in NamedNodeMap
10.3827 + this.attributes.setNamedItem(attr);
10.3828 + //console.log('element setNamedItem %s', attr);
10.3829 + }else{
10.3830 + console.warn('Element has no owner document '+this.tagName+
10.3831 + '\n\t cant set attribute ' + name + ' = '+value );
10.3832 + }
10.3833 + },
10.3834 + removeAttribute : function removeAttribute(name) {
10.3835 + // delegate to NamedNodeMap.removeNamedItem
10.3836 + return this.attributes.removeNamedItem(name);
10.3837 + },
10.3838 + getAttributeNode : function getAttributeNode(name) {
10.3839 + // delegate to NamedNodeMap.getNamedItem
10.3840 + return this.attributes.getNamedItem(name);
10.3841 + },
10.3842 + setAttributeNode: function(newAttr) {
10.3843 + // if this Attribute is an ID
10.3844 + if (__isIdDeclaration__(newAttr.name)) {
10.3845 + this.id = newAttr.value; // cache ID for getElementById()
10.3846 + }
10.3847 + // delegate to NamedNodeMap.setNamedItem
10.3848 + return this.attributes.setNamedItem(newAttr);
10.3849 + },
10.3850 + removeAttributeNode: function(oldAttr) {
10.3851 + // throw Exception if Attribute is readonly
10.3852 + if (__ownerDocument__(this).implementation.errorChecking && oldAttr._readonly) {
10.3853 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.3854 + }
10.3855 +
10.3856 + // get item index
10.3857 + var itemIndex = this.attributes._findItemIndex(oldAttr._id);
10.3858 +
10.3859 + // throw Exception if node does not exist in this map
10.3860 + if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
10.3861 + throw(new DOMException(DOMException.NOT_FOUND_ERR));
10.3862 + }
10.3863 +
10.3864 + return this.attributes._removeChild(itemIndex);
10.3865 + },
10.3866 + getAttributeNS : function(namespaceURI, localName) {
10.3867 + var ret = "";
10.3868 + // delegate to NAmedNodeMap.getNamedItemNS
10.3869 + var attr = this.attributes.getNamedItemNS(namespaceURI, localName);
10.3870 + if (attr) {
10.3871 + ret = attr.value;
10.3872 + }
10.3873 + return ret; // if Attribute exists, return its value, otherwise return ""
10.3874 + },
10.3875 + setAttributeNS : function(namespaceURI, qualifiedName, value) {
10.3876 + // call NamedNodeMap.getNamedItem
10.3877 + //console.log('setAttributeNS %s %s %s', namespaceURI, qualifiedName, value);
10.3878 + var attr = this.attributes.getNamedItem(namespaceURI, qualifiedName);
10.3879 +
10.3880 + if (!attr) { // if Attribute exists, use it
10.3881 + // otherwise create it
10.3882 + attr = __ownerDocument__(this).createAttributeNS(namespaceURI, qualifiedName);
10.3883 + }
10.3884 +
10.3885 + value = '' + value;
10.3886 +
10.3887 + // test for exceptions
10.3888 + if (__ownerDocument__(this).implementation.errorChecking) {
10.3889 + // throw Exception if Attribute is readonly
10.3890 + if (attr._readonly) {
10.3891 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.3892 + }
10.3893 +
10.3894 + // throw Exception if the Namespace is invalid
10.3895 + if (!__isValidNamespace__(this.ownerDocument, namespaceURI, qualifiedName, true)) {
10.3896 + throw(new DOMException(DOMException.NAMESPACE_ERR));
10.3897 + }
10.3898 +
10.3899 + // throw Exception if the value string contains an illegal character
10.3900 + if (!__isValidString__(value)) {
10.3901 + throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
10.3902 + }
10.3903 + }
10.3904 +
10.3905 + // if this Attribute is an ID
10.3906 + //if (__isIdDeclaration__(name)) {
10.3907 + // this.id = value;
10.3908 + //}
10.3909 +
10.3910 + // assign values to properties (and aliases)
10.3911 + attr.value = value;
10.3912 + attr.nodeValue = value;
10.3913 +
10.3914 + // delegate to NamedNodeMap.setNamedItem
10.3915 + this.attributes.setNamedItemNS(attr);
10.3916 + },
10.3917 + removeAttributeNS : function(namespaceURI, localName) {
10.3918 + // delegate to NamedNodeMap.removeNamedItemNS
10.3919 + return this.attributes.removeNamedItemNS(namespaceURI, localName);
10.3920 + },
10.3921 + getAttributeNodeNS : function(namespaceURI, localName) {
10.3922 + // delegate to NamedNodeMap.getNamedItemNS
10.3923 + return this.attributes.getNamedItemNS(namespaceURI, localName);
10.3924 + },
10.3925 + setAttributeNodeNS : function(newAttr) {
10.3926 + // if this Attribute is an ID
10.3927 + if ((newAttr.prefix == "") && __isIdDeclaration__(newAttr.name)) {
10.3928 + this.id = newAttr.value+''; // cache ID for getElementById()
10.3929 + }
10.3930 +
10.3931 + // delegate to NamedNodeMap.setNamedItemNS
10.3932 + return this.attributes.setNamedItemNS(newAttr);
10.3933 + },
10.3934 + hasAttribute : function(name) {
10.3935 + // delegate to NamedNodeMap._hasAttribute
10.3936 + return __hasAttribute__(this.attributes,name);
10.3937 + },
10.3938 + hasAttributeNS : function(namespaceURI, localName) {
10.3939 + // delegate to NamedNodeMap._hasAttributeNS
10.3940 + return __hasAttributeNS__(this.attributes, namespaceURI, localName);
10.3941 + },
10.3942 + get nodeType(){
10.3943 + return Node.ELEMENT_NODE;
10.3944 + },
10.3945 + get xml() {
10.3946 + var ret = "",
10.3947 + ns = "",
10.3948 + attrs,
10.3949 + attrstring,
10.3950 + i;
10.3951 +
10.3952 + // serialize namespace declarations
10.3953 + if (this.namespaceURI ){
10.3954 + if((this === this.ownerDocument.documentElement) ||
10.3955 + (!this.parentNode)||
10.3956 + (this.parentNode && (this.parentNode.namespaceURI !== this.namespaceURI))) {
10.3957 + ns = ' xmlns' + (this.prefix?(':'+this.prefix):'') +
10.3958 + '="' + this.namespaceURI + '"';
10.3959 + }
10.3960 + }
10.3961 +
10.3962 + // serialize Attribute declarations
10.3963 + attrs = this.attributes;
10.3964 + attrstring = "";
10.3965 + for(i=0;i< attrs.length;i++){
10.3966 + if(attrs[i].name.match('xmlns:')) {
10.3967 + attrstring += " "+attrs[i].name+'="'+attrs[i].xml+'"';
10.3968 + }
10.3969 + }
10.3970 + for(i=0;i< attrs.length;i++){
10.3971 + if(!attrs[i].name.match('xmlns:')) {
10.3972 + attrstring += " "+attrs[i].name+'="'+attrs[i].xml+'"';
10.3973 + }
10.3974 + }
10.3975 +
10.3976 + if(this.hasChildNodes()){
10.3977 + // serialize this Element
10.3978 + ret += "<" + this.tagName + ns + attrstring +">";
10.3979 + ret += this.childNodes.xml;
10.3980 + ret += "</" + this.tagName + ">";
10.3981 + }else{
10.3982 + ret += "<" + this.tagName + ns + attrstring +"/>";
10.3983 + }
10.3984 +
10.3985 + return ret;
10.3986 + },
10.3987 + toString : function(){
10.3988 + return '[object Element]';
10.3989 + }
10.3990 +});
10.3991 +/**
10.3992 + * @class DOMException - raised when an operation is impossible to perform
10.3993 + * @author Jon van Noort (jon@webarcana.com.au)
10.3994 + * @param code : int - the exception code (one of the DOMException constants)
10.3995 + */
10.3996 +DOMException = function(code) {
10.3997 + this.code = code;
10.3998 +};
10.3999 +
10.4000 +// DOMException constants
10.4001 +// Introduced in DOM Level 1:
10.4002 +DOMException.INDEX_SIZE_ERR = 1;
10.4003 +DOMException.DOMSTRING_SIZE_ERR = 2;
10.4004 +DOMException.HIERARCHY_REQUEST_ERR = 3;
10.4005 +DOMException.WRONG_DOCUMENT_ERR = 4;
10.4006 +DOMException.INVALID_CHARACTER_ERR = 5;
10.4007 +DOMException.NO_DATA_ALLOWED_ERR = 6;
10.4008 +DOMException.NO_MODIFICATION_ALLOWED_ERR = 7;
10.4009 +DOMException.NOT_FOUND_ERR = 8;
10.4010 +DOMException.NOT_SUPPORTED_ERR = 9;
10.4011 +DOMException.INUSE_ATTRIBUTE_ERR = 10;
10.4012 +
10.4013 +// Introduced in DOM Level 2:
10.4014 +DOMException.INVALID_STATE_ERR = 11;
10.4015 +DOMException.SYNTAX_ERR = 12;
10.4016 +DOMException.INVALID_MODIFICATION_ERR = 13;
10.4017 +DOMException.NAMESPACE_ERR = 14;
10.4018 +DOMException.INVALID_ACCESS_ERR = 15;
10.4019 +
10.4020 +/**
10.4021 + * @class DocumentFragment -
10.4022 + * DocumentFragment is a "lightweight" or "minimal" Document object.
10.4023 + * @extends Node
10.4024 + * @param ownerDocument : The Document object associated with this node.
10.4025 + */
10.4026 +DocumentFragment = function(ownerDocument) {
10.4027 + Node.apply(this, arguments);
10.4028 + this.nodeName = "#document-fragment";
10.4029 +};
10.4030 +DocumentFragment.prototype = new Node();
10.4031 +__extend__(DocumentFragment.prototype,{
10.4032 + get nodeType(){
10.4033 + return Node.DOCUMENT_FRAGMENT_NODE;
10.4034 + },
10.4035 + get xml(){
10.4036 + var xml = "",
10.4037 + count = this.childNodes.length;
10.4038 +
10.4039 + // create string concatenating the serialized ChildNodes
10.4040 + for (var i = 0; i < count; i++) {
10.4041 + xml += this.childNodes.item(i).xml;
10.4042 + }
10.4043 +
10.4044 + return xml;
10.4045 + },
10.4046 + toString : function(){
10.4047 + return "[object DocumentFragment]";
10.4048 + },
10.4049 + get localName(){
10.4050 + return null;
10.4051 + }
10.4052 +});
10.4053 +
10.4054 +
10.4055 +/**
10.4056 + * @class ProcessingInstruction -
10.4057 + * The ProcessingInstruction interface represents a
10.4058 + * "processing instruction", used in XML as a way to
10.4059 + * keep processor-specific information in the text of
10.4060 + * the document
10.4061 + * @extends Node
10.4062 + * @author Jon van Noort (jon@webarcana.com.au)
10.4063 + * @param ownerDocument : The Document object associated with this node.
10.4064 + */
10.4065 +ProcessingInstruction = function(ownerDocument) {
10.4066 + Node.apply(this, arguments);
10.4067 +};
10.4068 +ProcessingInstruction.prototype = new Node();
10.4069 +__extend__(ProcessingInstruction.prototype, {
10.4070 + get data(){
10.4071 + return this.nodeValue;
10.4072 + },
10.4073 + set data(data){
10.4074 + // throw Exception if Node is readonly
10.4075 + if (__ownerDocument__(this).errorChecking && this._readonly) {
10.4076 + throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
10.4077 + }
10.4078 + this.nodeValue = data;
10.4079 + },
10.4080 + get textContent(){
10.4081 + return this.data;
10.4082 + },
10.4083 + get localName(){
10.4084 + return null;
10.4085 + },
10.4086 + get target(){
10.4087 + // The target of this processing instruction.
10.4088 + // XML defines this as being the first token following the markup that begins the processing instruction.
10.4089 + // The content of this processing instruction.
10.4090 + return this.nodeName;
10.4091 + },
10.4092 + set target(value){
10.4093 + // The target of this processing instruction.
10.4094 + // XML defines this as being the first token following the markup that begins the processing instruction.
10.4095 + // The content of this processing instruction.
10.4096 + this.nodeName = value;
10.4097 + },
10.4098 + get nodeType(){
10.4099 + return Node.PROCESSING_INSTRUCTION_NODE;
10.4100 + },
10.4101 + get xml(){
10.4102 + return "<?" + this.nodeName +" "+ this.nodeValue + "?>";
10.4103 + },
10.4104 + toString : function(){
10.4105 + return "[object ProcessingInstruction]";
10.4106 + }
10.4107 +});
10.4108 +
10.4109 +
10.4110 +/**
10.4111 + * @author envjs team
10.4112 + */
10.4113 +
10.4114 +Entity = function() {
10.4115 + throw new Error("Entity Not Implemented" );
10.4116 +};
10.4117 +
10.4118 +Entity.constants = {
10.4119 + // content taken from W3C "HTML 4.01 Specification"
10.4120 + // "W3C Recommendation 24 December 1999"
10.4121 +
10.4122 + nbsp: "\u00A0",
10.4123 + iexcl: "\u00A1",
10.4124 + cent: "\u00A2",
10.4125 + pound: "\u00A3",
10.4126 + curren: "\u00A4",
10.4127 + yen: "\u00A5",
10.4128 + brvbar: "\u00A6",
10.4129 + sect: "\u00A7",
10.4130 + uml: "\u00A8",
10.4131 + copy: "\u00A9",
10.4132 + ordf: "\u00AA",
10.4133 + laquo: "\u00AB",
10.4134 + not: "\u00AC",
10.4135 + shy: "\u00AD",
10.4136 + reg: "\u00AE",
10.4137 + macr: "\u00AF",
10.4138 + deg: "\u00B0",
10.4139 + plusmn: "\u00B1",
10.4140 + sup2: "\u00B2",
10.4141 + sup3: "\u00B3",
10.4142 + acute: "\u00B4",
10.4143 + micro: "\u00B5",
10.4144 + para: "\u00B6",
10.4145 + middot: "\u00B7",
10.4146 + cedil: "\u00B8",
10.4147 + sup1: "\u00B9",
10.4148 + ordm: "\u00BA",
10.4149 + raquo: "\u00BB",
10.4150 + frac14: "\u00BC",
10.4151 + frac12: "\u00BD",
10.4152 + frac34: "\u00BE",
10.4153 + iquest: "\u00BF",
10.4154 + Agrave: "\u00C0",
10.4155 + Aacute: "\u00C1",
10.4156 + Acirc: "\u00C2",
10.4157 + Atilde: "\u00C3",
10.4158 + Auml: "\u00C4",
10.4159 + Aring: "\u00C5",
10.4160 + AElig: "\u00C6",
10.4161 + Ccedil: "\u00C7",
10.4162 + Egrave: "\u00C8",
10.4163 + Eacute: "\u00C9",
10.4164 + Ecirc: "\u00CA",
10.4165 + Euml: "\u00CB",
10.4166 + Igrave: "\u00CC",
10.4167 + Iacute: "\u00CD",
10.4168 + Icirc: "\u00CE",
10.4169 + Iuml: "\u00CF",
10.4170 + ETH: "\u00D0",
10.4171 + Ntilde: "\u00D1",
10.4172 + Ograve: "\u00D2",
10.4173 + Oacute: "\u00D3",
10.4174 + Ocirc: "\u00D4",
10.4175 + Otilde: "\u00D5",
10.4176 + Ouml: "\u00D6",
10.4177 + times: "\u00D7",
10.4178 + Oslash: "\u00D8",
10.4179 + Ugrave: "\u00D9",
10.4180 + Uacute: "\u00DA",
10.4181 + Ucirc: "\u00DB",
10.4182 + Uuml: "\u00DC",
10.4183 + Yacute: "\u00DD",
10.4184 + THORN: "\u00DE",
10.4185 + szlig: "\u00DF",
10.4186 + agrave: "\u00E0",
10.4187 + aacute: "\u00E1",
10.4188 + acirc: "\u00E2",
10.4189 + atilde: "\u00E3",
10.4190 + auml: "\u00E4",
10.4191 + aring: "\u00E5",
10.4192 + aelig: "\u00E6",
10.4193 + ccedil: "\u00E7",
10.4194 + egrave: "\u00E8",
10.4195 + eacute: "\u00E9",
10.4196 + ecirc: "\u00EA",
10.4197 + euml: "\u00EB",
10.4198 + igrave: "\u00EC",
10.4199 + iacute: "\u00ED",
10.4200 + icirc: "\u00EE",
10.4201 + iuml: "\u00EF",
10.4202 + eth: "\u00F0",
10.4203 + ntilde: "\u00F1",
10.4204 + ograve: "\u00F2",
10.4205 + oacute: "\u00F3",
10.4206 + ocirc: "\u00F4",
10.4207 + otilde: "\u00F5",
10.4208 + ouml: "\u00F6",
10.4209 + divide: "\u00F7",
10.4210 + oslash: "\u00F8",
10.4211 + ugrave: "\u00F9",
10.4212 + uacute: "\u00FA",
10.4213 + ucirc: "\u00FB",
10.4214 + uuml: "\u00FC",
10.4215 + yacute: "\u00FD",
10.4216 + thorn: "\u00FE",
10.4217 + yuml: "\u00FF",
10.4218 + fnof: "\u0192",
10.4219 + Alpha: "\u0391",
10.4220 + Beta: "\u0392",
10.4221 + Gamma: "\u0393",
10.4222 + Delta: "\u0394",
10.4223 + Epsilon: "\u0395",
10.4224 + Zeta: "\u0396",
10.4225 + Eta: "\u0397",
10.4226 + Theta: "\u0398",
10.4227 + Iota: "\u0399",
10.4228 + Kappa: "\u039A",
10.4229 + Lambda: "\u039B",
10.4230 + Mu: "\u039C",
10.4231 + Nu: "\u039D",
10.4232 + Xi: "\u039E",
10.4233 + Omicron: "\u039F",
10.4234 + Pi: "\u03A0",
10.4235 + Rho: "\u03A1",
10.4236 + Sigma: "\u03A3",
10.4237 + Tau: "\u03A4",
10.4238 + Upsilon: "\u03A5",
10.4239 + Phi: "\u03A6",
10.4240 + Chi: "\u03A7",
10.4241 + Psi: "\u03A8",
10.4242 + Omega: "\u03A9",
10.4243 + alpha: "\u03B1",
10.4244 + beta: "\u03B2",
10.4245 + gamma: "\u03B3",
10.4246 + delta: "\u03B4",
10.4247 + epsilon: "\u03B5",
10.4248 + zeta: "\u03B6",
10.4249 + eta: "\u03B7",
10.4250 + theta: "\u03B8",
10.4251 + iota: "\u03B9",
10.4252 + kappa: "\u03BA",
10.4253 + lambda: "\u03BB",
10.4254 + mu: "\u03BC",
10.4255 + nu: "\u03BD",
10.4256 + xi: "\u03BE",
10.4257 + omicron: "\u03BF",
10.4258 + pi: "\u03C0",
10.4259 + rho: "\u03C1",
10.4260 + sigmaf: "\u03C2",
10.4261 + sigma: "\u03C3",
10.4262 + tau: "\u03C4",
10.4263 + upsilon: "\u03C5",
10.4264 + phi: "\u03C6",
10.4265 + chi: "\u03C7",
10.4266 + psi: "\u03C8",
10.4267 + omega: "\u03C9",
10.4268 + thetasym: "\u03D1",
10.4269 + upsih: "\u03D2",
10.4270 + piv: "\u03D6",
10.4271 + bull: "\u2022",
10.4272 + hellip: "\u2026",
10.4273 + prime: "\u2032",
10.4274 + Prime: "\u2033",
10.4275 + oline: "\u203E",
10.4276 + frasl: "\u2044",
10.4277 + weierp: "\u2118",
10.4278 + image: "\u2111",
10.4279 + real: "\u211C",
10.4280 + trade: "\u2122",
10.4281 + alefsym: "\u2135",
10.4282 + larr: "\u2190",
10.4283 + uarr: "\u2191",
10.4284 + rarr: "\u2192",
10.4285 + darr: "\u2193",
10.4286 + harr: "\u2194",
10.4287 + crarr: "\u21B5",
10.4288 + lArr: "\u21D0",
10.4289 + uArr: "\u21D1",
10.4290 + rArr: "\u21D2",
10.4291 + dArr: "\u21D3",
10.4292 + hArr: "\u21D4",
10.4293 + forall: "\u2200",
10.4294 + part: "\u2202",
10.4295 + exist: "\u2203",
10.4296 + empty: "\u2205",
10.4297 + nabla: "\u2207",
10.4298 + isin: "\u2208",
10.4299 + notin: "\u2209",
10.4300 + ni: "\u220B",
10.4301 + prod: "\u220F",
10.4302 + sum: "\u2211",
10.4303 + minus: "\u2212",
10.4304 + lowast: "\u2217",
10.4305 + radic: "\u221A",
10.4306 + prop: "\u221D",
10.4307 + infin: "\u221E",
10.4308 + ang: "\u2220",
10.4309 + and: "\u2227",
10.4310 + or: "\u2228",
10.4311 + cap: "\u2229",
10.4312 + cup: "\u222A",
10.4313 + intXX: "\u222B",
10.4314 + there4: "\u2234",
10.4315 + sim: "\u223C",
10.4316 + cong: "\u2245",
10.4317 + asymp: "\u2248",
10.4318 + ne: "\u2260",
10.4319 + equiv: "\u2261",
10.4320 + le: "\u2264",
10.4321 + ge: "\u2265",
10.4322 + sub: "\u2282",
10.4323 + sup: "\u2283",
10.4324 + nsub: "\u2284",
10.4325 + sube: "\u2286",
10.4326 + supe: "\u2287",
10.4327 + oplus: "\u2295",
10.4328 + otimes: "\u2297",
10.4329 + perp: "\u22A5",
10.4330 + sdot: "\u22C5",
10.4331 + lceil: "\u2308",
10.4332 + rceil: "\u2309",
10.4333 + lfloor: "\u230A",
10.4334 + rfloor: "\u230B",
10.4335 + lang: "\u2329",
10.4336 + rang: "\u232A",
10.4337 + loz: "\u25CA",
10.4338 + spades: "\u2660",
10.4339 + clubs: "\u2663",
10.4340 + hearts: "\u2665",
10.4341 + diams: "\u2666",
10.4342 + quot: "\u0022",
10.4343 + amp: "\u0026",
10.4344 + lt: "\u003C",
10.4345 + gt: "\u003E",
10.4346 + OElig: "\u0152",
10.4347 + oelig: "\u0153",
10.4348 + Scaron: "\u0160",
10.4349 + scaron: "\u0161",
10.4350 + Yuml: "\u0178",
10.4351 + circ: "\u02C6",
10.4352 + tilde: "\u02DC",
10.4353 + ensp: "\u2002",
10.4354 + emsp: "\u2003",
10.4355 + thinsp: "\u2009",
10.4356 + zwnj: "\u200C",
10.4357 + zwj: "\u200D",
10.4358 + lrm: "\u200E",
10.4359 + rlm: "\u200F",
10.4360 + ndash: "\u2013",
10.4361 + mdash: "\u2014",
10.4362 + lsquo: "\u2018",
10.4363 + rsquo: "\u2019",
10.4364 + sbquo: "\u201A",
10.4365 + ldquo: "\u201C",
10.4366 + rdquo: "\u201D",
10.4367 + bdquo: "\u201E",
10.4368 + dagger: "\u2020",
10.4369 + Dagger: "\u2021",
10.4370 + permil: "\u2030",
10.4371 + lsaquo: "\u2039",
10.4372 + rsaquo: "\u203A",
10.4373 + euro: "\u20AC",
10.4374 +
10.4375 + // non-standard entities
10.4376 + apos: "'"
10.4377 +};
10.4378 +
10.4379 +/**
10.4380 + * @author envjs team
10.4381 + */
10.4382 +
10.4383 +EntityReference = function() {
10.4384 + throw new Error("EntityReference Not Implemented" );
10.4385 +};
10.4386 +
10.4387 +/**
10.4388 + * @class DOMImplementation -
10.4389 + * provides a number of methods for performing operations
10.4390 + * that are independent of any particular instance of the
10.4391 + * document object model.
10.4392 + *
10.4393 + * @author Jon van Noort (jon@webarcana.com.au)
10.4394 + */
10.4395 +DOMImplementation = function() {
10.4396 + this.preserveWhiteSpace = false; // by default, ignore whitespace
10.4397 + this.namespaceAware = true; // by default, handle namespaces
10.4398 + this.errorChecking = true; // by default, test for exceptions
10.4399 +};
10.4400 +
10.4401 +__extend__(DOMImplementation.prototype,{
10.4402 + // @param feature : string - The package name of the feature to test.
10.4403 + // the legal only values are "XML" and "CORE" (case-insensitive).
10.4404 + // @param version : string - This is the version number of the package
10.4405 + // name to test. In Level 1, this is the string "1.0".*
10.4406 + // @return : boolean
10.4407 + hasFeature : function(feature, version) {
10.4408 + var ret = false;
10.4409 + if (feature.toLowerCase() == "xml") {
10.4410 + ret = (!version || (version == "1.0") || (version == "2.0"));
10.4411 + }
10.4412 + else if (feature.toLowerCase() == "core") {
10.4413 + ret = (!version || (version == "2.0"));
10.4414 + }
10.4415 + else if (feature == "http://www.w3.org/TR/SVG11/feature#BasicStructure") {
10.4416 + ret = (version == "1.1");
10.4417 + }
10.4418 + return ret;
10.4419 + },
10.4420 + createDocumentType : function(qname, publicId, systemId){
10.4421 + var doctype = new DocumentType();
10.4422 + doctype.nodeName = qname?qname.toUpperCase():null;
10.4423 + doctype.publicId = publicId?publicId:null;
10.4424 + doctype.systemId = systemId?systemId:null;
10.4425 + return doctype;
10.4426 + },
10.4427 + createDocument : function(nsuri, qname, doctype){
10.4428 +
10.4429 + var doc = null, documentElement;
10.4430 +
10.4431 + doc = new Document(this, null);
10.4432 + if(doctype){
10.4433 + doc.doctype = doctype;
10.4434 + }
10.4435 +
10.4436 + if(nsuri && qname){
10.4437 + documentElement = doc.createElementNS(nsuri, qname);
10.4438 + }else if(qname){
10.4439 + documentElement = doc.createElement(qname);
10.4440 + }
10.4441 + if(documentElement){
10.4442 + doc.appendChild(documentElement);
10.4443 + }
10.4444 + return doc;
10.4445 + },
10.4446 + createHTMLDocument : function(title){
10.4447 + var doc = new HTMLDocument($implementation, null, "");
10.4448 + var html = doc.createElement("html"); doc.appendChild(html);
10.4449 + var head = doc.createElement("head"); html.appendChild(head);
10.4450 + var body = doc.createElement("body"); html.appendChild(body);
10.4451 + var t = doc.createElement("title"); head.appendChild(t);
10.4452 + if( title) {
10.4453 + t.appendChild(doc.createTextNode(title));
10.4454 + }
10.4455 + return doc;
10.4456 + },
10.4457 + translateErrCode : function(code) {
10.4458 + //convert DOMException Code to human readable error message;
10.4459 + var msg = "";
10.4460 +
10.4461 + switch (code) {
10.4462 + case DOMException.INDEX_SIZE_ERR : // 1
10.4463 + msg = "INDEX_SIZE_ERR: Index out of bounds";
10.4464 + break;
10.4465 +
10.4466 + case DOMException.DOMSTRING_SIZE_ERR : // 2
10.4467 + msg = "DOMSTRING_SIZE_ERR: The resulting string is too long to fit in a DOMString";
10.4468 + break;
10.4469 +
10.4470 + case DOMException.HIERARCHY_REQUEST_ERR : // 3
10.4471 + msg = "HIERARCHY_REQUEST_ERR: The Node can not be inserted at this location";
10.4472 + break;
10.4473 +
10.4474 + case DOMException.WRONG_DOCUMENT_ERR : // 4
10.4475 + msg = "WRONG_DOCUMENT_ERR: The source and the destination Documents are not the same";
10.4476 + break;
10.4477 +
10.4478 + case DOMException.INVALID_CHARACTER_ERR : // 5
10.4479 + msg = "INVALID_CHARACTER_ERR: The string contains an invalid character";
10.4480 + break;
10.4481 +
10.4482 + case DOMException.NO_DATA_ALLOWED_ERR : // 6
10.4483 + msg = "NO_DATA_ALLOWED_ERR: This Node / NodeList does not support data";
10.4484 + break;
10.4485 +
10.4486 + case DOMException.NO_MODIFICATION_ALLOWED_ERR : // 7
10.4487 + msg = "NO_MODIFICATION_ALLOWED_ERR: This object cannot be modified";
10.4488 + break;
10.4489 +
10.4490 + case DOMException.NOT_FOUND_ERR : // 8
10.4491 + msg = "NOT_FOUND_ERR: The item cannot be found";
10.4492 + break;
10.4493 +
10.4494 + case DOMException.NOT_SUPPORTED_ERR : // 9
10.4495 + msg = "NOT_SUPPORTED_ERR: This implementation does not support function";
10.4496 + break;
10.4497 +
10.4498 + case DOMException.INUSE_ATTRIBUTE_ERR : // 10
10.4499 + msg = "INUSE_ATTRIBUTE_ERR: The Attribute has already been assigned to another Element";
10.4500 + break;
10.4501 +
10.4502 + // Introduced in DOM Level 2:
10.4503 + case DOMException.INVALID_STATE_ERR : // 11
10.4504 + msg = "INVALID_STATE_ERR: The object is no longer usable";
10.4505 + break;
10.4506 +
10.4507 + case DOMException.SYNTAX_ERR : // 12
10.4508 + msg = "SYNTAX_ERR: Syntax error";
10.4509 + break;
10.4510 +
10.4511 + case DOMException.INVALID_MODIFICATION_ERR : // 13
10.4512 + msg = "INVALID_MODIFICATION_ERR: Cannot change the type of the object";
10.4513 + break;
10.4514 +
10.4515 + case DOMException.NAMESPACE_ERR : // 14
10.4516 + msg = "NAMESPACE_ERR: The namespace declaration is incorrect";
10.4517 + break;
10.4518 +
10.4519 + case DOMException.INVALID_ACCESS_ERR : // 15
10.4520 + msg = "INVALID_ACCESS_ERR: The object does not support this function";
10.4521 + break;
10.4522 +
10.4523 + default :
10.4524 + msg = "UNKNOWN: Unknown Exception Code ("+ code +")";
10.4525 + }
10.4526 +
10.4527 + return msg;
10.4528 + },
10.4529 + toString : function(){
10.4530 + return "[object DOMImplementation]";
10.4531 + }
10.4532 +});
10.4533 +
10.4534 +
10.4535 +
10.4536 +/**
10.4537 + * @method DOMImplementation._isNamespaceDeclaration - Return true, if attributeName is a namespace declaration
10.4538 + * @author Jon van Noort (jon@webarcana.com.au)
10.4539 + * @param attributeName : string - the attribute name
10.4540 + * @return : boolean
10.4541 + */
10.4542 +function __isNamespaceDeclaration__(attributeName) {
10.4543 + // test if attributeName is 'xmlns'
10.4544 + return (attributeName.indexOf('xmlns') > -1);
10.4545 +}
10.4546 +
10.4547 +/**
10.4548 + * @method DOMImplementation._isIdDeclaration - Return true, if attributeName is an id declaration
10.4549 + * @author Jon van Noort (jon@webarcana.com.au)
10.4550 + * @param attributeName : string - the attribute name
10.4551 + * @return : boolean
10.4552 + */
10.4553 +function __isIdDeclaration__(attributeName) {
10.4554 + // test if attributeName is 'id' (case insensitive)
10.4555 + return attributeName?(attributeName.toLowerCase() == 'id'):false;
10.4556 +}
10.4557 +
10.4558 +/**
10.4559 + * @method DOMImplementation._isValidName - Return true,
10.4560 + * if name contains no invalid characters
10.4561 + * @author Jon van Noort (jon@webarcana.com.au)
10.4562 + * @param name : string - the candidate name
10.4563 + * @return : boolean
10.4564 + */
10.4565 +function __isValidName__(name) {
10.4566 + // test if name contains only valid characters
10.4567 + return name.match(re_validName);
10.4568 +}
10.4569 +var re_validName = /^[a-zA-Z_:][a-zA-Z0-9\.\-_:]*$/;
10.4570 +
10.4571 +/**
10.4572 + * @method DOMImplementation._isValidString - Return true, if string does not contain any illegal chars
10.4573 + * All of the characters 0 through 31 and character 127 are nonprinting control characters.
10.4574 + * With the exception of characters 09, 10, and 13, (Ox09, Ox0A, and Ox0D)
10.4575 + * Note: different from _isValidName in that ValidStrings may contain spaces
10.4576 + * @author Jon van Noort (jon@webarcana.com.au)
10.4577 + * @param name : string - the candidate string
10.4578 + * @return : boolean
10.4579 + */
10.4580 +function __isValidString__(name) {
10.4581 + // test that string does not contains invalid characters
10.4582 + return (name.search(re_invalidStringChars) < 0);
10.4583 +}
10.4584 +var re_invalidStringChars = /\x01|\x02|\x03|\x04|\x05|\x06|\x07|\x08|\x0B|\x0C|\x0E|\x0F|\x10|\x11|\x12|\x13|\x14|\x15|\x16|\x17|\x18|\x19|\x1A|\x1B|\x1C|\x1D|\x1E|\x1F|\x7F/;
10.4585 +
10.4586 +/**
10.4587 + * @method DOMImplementation._parseNSName - parse the namespace name.
10.4588 + * if there is no colon, the
10.4589 + * @author Jon van Noort (jon@webarcana.com.au)
10.4590 + * @param qualifiedName : string - The qualified name
10.4591 + * @return : NSName - [
10.4592 + .prefix : string - The prefix part of the qname
10.4593 + .namespaceName : string - The namespaceURI part of the qname
10.4594 + ]
10.4595 + */
10.4596 +function __parseNSName__(qualifiedName) {
10.4597 + var resultNSName = {};
10.4598 + // unless the qname has a namespaceName, the prefix is the entire String
10.4599 + resultNSName.prefix = qualifiedName;
10.4600 + resultNSName.namespaceName = "";
10.4601 + // split on ':'
10.4602 + var delimPos = qualifiedName.indexOf(':');
10.4603 + if (delimPos > -1) {
10.4604 + // get prefix
10.4605 + resultNSName.prefix = qualifiedName.substring(0, delimPos);
10.4606 + // get namespaceName
10.4607 + resultNSName.namespaceName = qualifiedName.substring(delimPos +1, qualifiedName.length);
10.4608 + }
10.4609 + return resultNSName;
10.4610 +}
10.4611 +
10.4612 +/**
10.4613 + * @method DOMImplementation._parseQName - parse the qualified name
10.4614 + * @author Jon van Noort (jon@webarcana.com.au)
10.4615 + * @param qualifiedName : string - The qualified name
10.4616 + * @return : QName
10.4617 + */
10.4618 +function __parseQName__(qualifiedName) {
10.4619 + var resultQName = {};
10.4620 + // unless the qname has a prefix, the local name is the entire String
10.4621 + resultQName.localName = qualifiedName;
10.4622 + resultQName.prefix = "";
10.4623 + // split on ':'
10.4624 + var delimPos = qualifiedName.indexOf(':');
10.4625 + if (delimPos > -1) {
10.4626 + // get prefix
10.4627 + resultQName.prefix = qualifiedName.substring(0, delimPos);
10.4628 + // get localName
10.4629 + resultQName.localName = qualifiedName.substring(delimPos +1, qualifiedName.length);
10.4630 + }
10.4631 + return resultQName;
10.4632 +}
10.4633 +/**
10.4634 + * @author envjs team
10.4635 + */
10.4636 +Notation = function() {
10.4637 + throw new Error("Notation Not Implemented" );
10.4638 +};/**
10.4639 + * @author thatcher
10.4640 + */
10.4641 +Range = function(){
10.4642 +
10.4643 +};
10.4644 +
10.4645 +__extend__(Range.prototype, {
10.4646 + get startContainer(){
10.4647 +
10.4648 + },
10.4649 + get endContainer(){
10.4650 +
10.4651 + },
10.4652 + get startOffset(){
10.4653 +
10.4654 + },
10.4655 + get endOffset(){
10.4656 +
10.4657 + },
10.4658 + get collapsed(){
10.4659 +
10.4660 + },
10.4661 + get commonAncestorContainer(){
10.4662 +
10.4663 + },
10.4664 + setStart: function(refNode, offset){//throws RangeException
10.4665 +
10.4666 + },
10.4667 + setEnd: function(refNode, offset){//throws RangeException
10.4668 +
10.4669 + },
10.4670 + setStartBefore: function(refNode){//throws RangeException
10.4671 +
10.4672 + },
10.4673 + setStartAfter: function(refNode){//throws RangeException
10.4674 +
10.4675 + },
10.4676 + setEndBefore: function(refNode){//throws RangeException
10.4677 +
10.4678 + },
10.4679 + setEndAfter: function(refNode){//throws RangeException
10.4680 +
10.4681 + },
10.4682 + collapse: function(toStart){//throws RangeException
10.4683 +
10.4684 + },
10.4685 + selectNode: function(refNode){//throws RangeException
10.4686 +
10.4687 + },
10.4688 + selectNodeContents: function(refNode){//throws RangeException
10.4689 +
10.4690 + },
10.4691 + compareBoundaryPoints: function(how, sourceRange){
10.4692 +
10.4693 + },
10.4694 + deleteContents: function(){
10.4695 +
10.4696 + },
10.4697 + extractContents: function(){
10.4698 +
10.4699 + },
10.4700 + cloneContents: function(){
10.4701 +
10.4702 + },
10.4703 + insertNode: function(newNode){
10.4704 +
10.4705 + },
10.4706 + surroundContents: function(newParent){
10.4707 +
10.4708 + },
10.4709 + cloneRange: function(){
10.4710 +
10.4711 + },
10.4712 + toString: function(){
10.4713 + return '[object Range]';
10.4714 + },
10.4715 + detach: function(){
10.4716 +
10.4717 + }
10.4718 +});
10.4719 +
10.4720 +
10.4721 + // CompareHow
10.4722 +Range.START_TO_START = 0;
10.4723 +Range.START_TO_END = 1;
10.4724 +Range.END_TO_END = 2;
10.4725 +Range.END_TO_START = 3;
10.4726 +
10.4727 +/*
10.4728 + * Forward declarations
10.4729 + */
10.4730 +var __isValidNamespace__;
10.4731 +
10.4732 +/**
10.4733 + * @class Document - The Document interface represents the entire HTML
10.4734 + * or XML document. Conceptually, it is the root of the document tree,
10.4735 + * and provides the primary access to the document's data.
10.4736 + *
10.4737 + * @extends Node
10.4738 + * @param implementation : DOMImplementation - the creator Implementation
10.4739 + */
10.4740 +Document = function(implementation, docParentWindow) {
10.4741 + Node.apply(this, arguments);
10.4742 +
10.4743 + //TODO: Temporary!!! Cnage back to true!!!
10.4744 + this.async = true;
10.4745 + // The Document Type Declaration (see DocumentType) associated with this document
10.4746 + this.doctype = null;
10.4747 + // The DOMImplementation object that handles this document.
10.4748 + this.implementation = implementation;
10.4749 +
10.4750 + this.nodeName = "#document";
10.4751 + // initially false, set to true by parser
10.4752 + this.parsing = false;
10.4753 + this.baseURI = 'about:blank';
10.4754 +
10.4755 + this.ownerDocument = null;
10.4756 +
10.4757 + this.importing = false;
10.4758 +};
10.4759 +
10.4760 +Document.prototype = new Node();
10.4761 +__extend__(Document.prototype,{
10.4762 + get localName(){
10.4763 + return null;
10.4764 + },
10.4765 + get textContent(){
10.4766 + return null;
10.4767 + },
10.4768 + get all(){
10.4769 + return this.getElementsByTagName("*");
10.4770 + },
10.4771 + get documentElement(){
10.4772 + var i, length = this.childNodes?this.childNodes.length:0;
10.4773 + for(i=0;i<length;i++){
10.4774 + if(this.childNodes[i].nodeType === Node.ELEMENT_NODE){
10.4775 + return this.childNodes[i];
10.4776 + }
10.4777 + }
10.4778 + return null;
10.4779 + },
10.4780 + get documentURI(){
10.4781 + return this.baseURI;
10.4782 + },
10.4783 + createExpression: function(xpath, nsuriMap){
10.4784 + return new XPathExpression(xpath, nsuriMap);
10.4785 + },
10.4786 + createDocumentFragment: function() {
10.4787 + var node = new DocumentFragment(this);
10.4788 + return node;
10.4789 + },
10.4790 + createTextNode: function(data) {
10.4791 + var node = new Text(this);
10.4792 + node.data = data;
10.4793 + return node;
10.4794 + },
10.4795 + createComment: function(data) {
10.4796 + var node = new Comment(this);
10.4797 + node.data = data;
10.4798 + return node;
10.4799 + },
10.4800 + createCDATASection : function(data) {
10.4801 + var node = new CDATASection(this);
10.4802 + node.data = data;
10.4803 + return node;
10.4804 + },
10.4805 + createProcessingInstruction: function(target, data) {
10.4806 + // throw Exception if the target string contains an illegal character
10.4807 + if (__ownerDocument__(this).implementation.errorChecking &&
10.4808 + (!__isValidName__(target))) {
10.4809 + throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
10.4810 + }
10.4811 +
10.4812 + var node = new ProcessingInstruction(this);
10.4813 + node.target = target;
10.4814 + node.data = data;
10.4815 + return node;
10.4816 + },
10.4817 + createElement: function(tagName) {
10.4818 + // throw Exception if the tagName string contains an illegal character
10.4819 + if (__ownerDocument__(this).implementation.errorChecking &&
10.4820 + (!__isValidName__(tagName))) {
10.4821 + throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
10.4822 + }
10.4823 + var node = new Element(this);
10.4824 + node.nodeName = tagName;
10.4825 + return node;
10.4826 + },
10.4827 + createElementNS : function(namespaceURI, qualifiedName) {
10.4828 + //we use this as a parser flag to ignore the xhtml
10.4829 + //namespace assumed by the parser
10.4830 + //console.log('creating element %s %s', namespaceURI, qualifiedName);
10.4831 + if(this.baseURI === 'http://envjs.com/xml' &&
10.4832 + namespaceURI === 'http://www.w3.org/1999/xhtml'){
10.4833 + return this.createElement(qualifiedName);
10.4834 + }
10.4835 + //console.log('createElementNS %s %s', namespaceURI, qualifiedName);
10.4836 + if (__ownerDocument__(this).implementation.errorChecking) {
10.4837 + // throw Exception if the Namespace is invalid
10.4838 + if (!__isValidNamespace__(this, namespaceURI, qualifiedName)) {
10.4839 + throw(new DOMException(DOMException.NAMESPACE_ERR));
10.4840 + }
10.4841 +
10.4842 + // throw Exception if the qualifiedName string contains an illegal character
10.4843 + if (!__isValidName__(qualifiedName)) {
10.4844 + throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
10.4845 + }
10.4846 + }
10.4847 + var node = new Element(this);
10.4848 + var qname = __parseQName__(qualifiedName);
10.4849 + node.namespaceURI = namespaceURI;
10.4850 + node.prefix = qname.prefix;
10.4851 + node.nodeName = qualifiedName;
10.4852 +
10.4853 + //console.log('created element %s %s', namespaceURI, qualifiedName);
10.4854 + return node;
10.4855 + },
10.4856 + createAttribute : function(name) {
10.4857 + //console.log('createAttribute %s ', name);
10.4858 + // throw Exception if the name string contains an illegal character
10.4859 + if (__ownerDocument__(this).implementation.errorChecking &&
10.4860 + (!__isValidName__(name))) {
10.4861 + throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
10.4862 + }
10.4863 + var node = new Attr(this);
10.4864 + node.nodeName = name;
10.4865 + return node;
10.4866 + },
10.4867 + createAttributeNS : function(namespaceURI, qualifiedName) {
10.4868 + //we use this as a parser flag to ignore the xhtml
10.4869 + //namespace assumed by the parser
10.4870 + if(this.baseURI === 'http://envjs.com/xml' &&
10.4871 + namespaceURI === 'http://www.w3.org/1999/xhtml'){
10.4872 + return this.createAttribute(qualifiedName);
10.4873 + }
10.4874 + //console.log('createAttributeNS %s %s', namespaceURI, qualifiedName);
10.4875 + // test for exceptions
10.4876 + if (this.implementation.errorChecking) {
10.4877 + // throw Exception if the Namespace is invalid
10.4878 + if (!__isValidNamespace__(this, namespaceURI, qualifiedName, true)) {
10.4879 + throw(new DOMException(DOMException.NAMESPACE_ERR));
10.4880 + }
10.4881 +
10.4882 + // throw Exception if the qualifiedName string contains an illegal character
10.4883 + if (!__isValidName__(qualifiedName)) {
10.4884 + throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
10.4885 + }
10.4886 + }
10.4887 + var node = new Attr(this);
10.4888 + var qname = __parseQName__(qualifiedName);
10.4889 + node.namespaceURI = namespaceURI === '' ? null : namespaceURI;
10.4890 + node.prefix = qname.prefix;
10.4891 + node.nodeName = qualifiedName;
10.4892 + node.nodeValue = "";
10.4893 + //console.log('attribute %s %s %s', node.namespaceURI, node.prefix, node.nodeName);
10.4894 + return node;
10.4895 + },
10.4896 + createNamespace : function(qualifiedName) {
10.4897 + //console.log('createNamespace %s', qualifiedName);
10.4898 + // create Namespace specifying 'this' as ownerDocument
10.4899 + var node = new Namespace(this);
10.4900 + var qname = __parseQName__(qualifiedName);
10.4901 +
10.4902 + // assign values to properties (and aliases)
10.4903 + node.prefix = qname.prefix;
10.4904 + node.localName = qname.localName;
10.4905 + node.name = qualifiedName;
10.4906 + node.nodeValue = "";
10.4907 +
10.4908 + return node;
10.4909 + },
10.4910 +
10.4911 + createRange: function(){
10.4912 + return new Range();
10.4913 + },
10.4914 +
10.4915 + evaluate: function(xpathText, contextNode, nsuriMapper, resultType, result){
10.4916 + //return new XPathExpression().evaluate();
10.4917 + throw Error('Document.evaluate not supported yet!');
10.4918 + },
10.4919 +
10.4920 + getElementById : function(elementId) {
10.4921 + var retNode = null,
10.4922 + node;
10.4923 + // loop through all Elements
10.4924 + var all = this.getElementsByTagName('*');
10.4925 + for (var i=0; i < all.length; i++) {
10.4926 + node = all[i];
10.4927 + // if id matches
10.4928 + if (node.id == elementId) {
10.4929 + //found the node
10.4930 + retNode = node;
10.4931 + break;
10.4932 + }
10.4933 + }
10.4934 + return retNode;
10.4935 + },
10.4936 + normalizeDocument: function(){
10.4937 + this.normalize();
10.4938 + },
10.4939 + get nodeType(){
10.4940 + return Node.DOCUMENT_NODE;
10.4941 + },
10.4942 + get xml(){
10.4943 + return this.documentElement.xml;
10.4944 + },
10.4945 + toString: function(){
10.4946 + return "[object XMLDocument]";
10.4947 + },
10.4948 + get defaultView(){
10.4949 + return { getComputedStyle: function(elem){
10.4950 + return window.getComputedStyle(elem);
10.4951 + }};
10.4952 + },
10.4953 +});
10.4954 +
10.4955 +/*
10.4956 + * Helper function
10.4957 + *
10.4958 + */
10.4959 +__isValidNamespace__ = function(doc, namespaceURI, qualifiedName, isAttribute) {
10.4960 +
10.4961 + if (doc.importing === true) {
10.4962 + //we're doing an importNode operation (or a cloneNode) - in both cases, there
10.4963 + //is no need to perform any namespace checking since the nodes have to have been valid
10.4964 + //to have gotten into the DOM in the first place
10.4965 + return true;
10.4966 + }
10.4967 +
10.4968 + var valid = true;
10.4969 + // parse QName
10.4970 + var qName = __parseQName__(qualifiedName);
10.4971 +
10.4972 +
10.4973 + //only check for namespaces if we're finished parsing
10.4974 + if (this.parsing === false) {
10.4975 +
10.4976 + // if the qualifiedName is malformed
10.4977 + if (qName.localName.indexOf(":") > -1 ){
10.4978 + valid = false;
10.4979 + }
10.4980 +
10.4981 + if ((valid) && (!isAttribute)) {
10.4982 + // if the namespaceURI is not null
10.4983 + if (!namespaceURI) {
10.4984 + valid = false;
10.4985 + }
10.4986 + }
10.4987 +
10.4988 + // if the qualifiedName has a prefix
10.4989 + if ((valid) && (qName.prefix === "")) {
10.4990 + valid = false;
10.4991 + }
10.4992 + }
10.4993 +
10.4994 + // if the qualifiedName has a prefix that is "xml" and the namespaceURI is
10.4995 + // different from "http://www.w3.org/XML/1998/namespace" [Namespaces].
10.4996 + if ((valid) && (qName.prefix === "xml") && (namespaceURI !== "http://www.w3.org/XML/1998/namespace")) {
10.4997 + valid = false;
10.4998 + }
10.4999 +
10.5000 + return valid;
10.5001 +};
10.5002 +/**
10.5003 + *
10.5004 + * This file only handles XML parser.
10.5005 + * It is extended by parser/domparser.js (and parser/htmlparser.js)
10.5006 + *
10.5007 + * This depends on e4x, which some engines may not have.
10.5008 + *
10.5009 + * @author thatcher
10.5010 + */
10.5011 +DOMParser = function(principle, documentURI, baseURI) {
10.5012 + // TODO: why/what should these 3 args do?
10.5013 +};
10.5014 +__extend__(DOMParser.prototype,{
10.5015 + parseFromString: function(xmlstring, mimetype){
10.5016 + var doc = new Document(new DOMImplementation()),
10.5017 + e4;
10.5018 +
10.5019 + // The following are e4x directives.
10.5020 + // Full spec is here:
10.5021 + // http://www.ecma-international.org/publications/standards/Ecma-357.htm
10.5022 + //
10.5023 + // that is pretty gross, so checkout this summary
10.5024 + // http://rephrase.net/days/07/06/e4x
10.5025 + //
10.5026 + // also see the Mozilla Developer Center:
10.5027 + // https://developer.mozilla.org/en/E4X
10.5028 + //
10.5029 + XML.ignoreComments = false;
10.5030 + XML.ignoreProcessingInstructions = false;
10.5031 + XML.ignoreWhitespace = false;
10.5032 +
10.5033 + // for some reason e4x can't handle initial xml declarations
10.5034 + // https://bugzilla.mozilla.org/show_bug.cgi?id=336551
10.5035 + // The official workaround is the big regexp below
10.5036 + // but simpler one seems to be ok
10.5037 + // xmlstring = xmlstring.replace(/^<\?xml\s+version\s*=\s*(["'])[^\1]+\1[^?]*\?>/, "");
10.5038 + //
10.5039 + xmlstring = xmlstring.replace(/<\?xml.*\?>/);
10.5040 +
10.5041 + e4 = new XMLList(xmlstring);
10.5042 +
10.5043 + __toDomNode__(e4, doc, doc);
10.5044 +
10.5045 + //console.log('xml \n %s', doc.documentElement.xml);
10.5046 + return doc;
10.5047 + }
10.5048 +});
10.5049 +
10.5050 +var __toDomNode__ = function(e4, parent, doc){
10.5051 + var xnode,
10.5052 + domnode,
10.5053 + children,
10.5054 + target,
10.5055 + value,
10.5056 + length,
10.5057 + element,
10.5058 + kind,
10.5059 + item;
10.5060 + //console.log('converting e4x node list \n %s', e4)
10.5061 +
10.5062 + // not using the for each(item in e4) since some engines can't
10.5063 + // handle the syntax (i.e. says syntax error)
10.5064 + //
10.5065 + // for each(xnode in e4) {
10.5066 + for (item in e4) {
10.5067 + // NO do not do this if (e4.hasOwnProperty(item)) {
10.5068 + // breaks spidermonkey
10.5069 + xnode = e4[item];
10.5070 +
10.5071 + kind = xnode.nodeKind();
10.5072 + //console.log('treating node kind %s', kind);
10.5073 + switch(kind){
10.5074 + case 'element':
10.5075 + // add node
10.5076 + //console.log('creating element %s %s', xnode.localName(), xnode.namespace());
10.5077 + if(xnode.namespace() && (xnode.namespace()+'') !== ''){
10.5078 + //console.log('createElementNS %s %s',xnode.namespace()+'', xnode.localName() );
10.5079 + domnode = doc.createElementNS(xnode.namespace()+'', xnode.localName());
10.5080 + }else{
10.5081 + domnode = doc.createElement(xnode.name()+'');
10.5082 + }
10.5083 + parent.appendChild(domnode);
10.5084 +
10.5085 + // add attributes
10.5086 + __toDomNode__(xnode.attributes(), domnode, doc);
10.5087 +
10.5088 + // add children
10.5089 + children = xnode.children();
10.5090 + length = children.length();
10.5091 + //console.log('recursing? %s', length ? 'yes' : 'no');
10.5092 + if (length > 0) {
10.5093 + __toDomNode__(children, domnode, doc);
10.5094 + }
10.5095 + break;
10.5096 + case 'attribute':
10.5097 + // console.log('setting attribute %s %s %s',
10.5098 + // xnode.localName(), xnode.namespace(), xnode.valueOf());
10.5099 +
10.5100 + //
10.5101 + // cross-platform alert. The original code used
10.5102 + // xnode.text() to get the attribute value
10.5103 + // This worked in Rhino, but did not in Spidermonkey
10.5104 + // valueOf seemed to work in both
10.5105 + //
10.5106 + if(xnode.namespace() && xnode.namespace().prefix){
10.5107 + //console.log("%s", xnode.namespace().prefix);
10.5108 + parent.setAttributeNS(xnode.namespace()+'',
10.5109 + xnode.namespace().prefix+':'+xnode.localName(),
10.5110 + xnode.valueOf());
10.5111 + }else if((xnode.name()+'').match('http://www.w3.org/2000/xmlns/::')){
10.5112 + if(xnode.localName()!=='xmlns'){
10.5113 + parent.setAttributeNS('http://www.w3.org/2000/xmlns/',
10.5114 + 'xmlns:'+xnode.localName(),
10.5115 + xnode.valueOf());
10.5116 + }
10.5117 + }else{
10.5118 + parent.setAttribute(xnode.localName()+'', xnode.valueOf());
10.5119 + }
10.5120 + break;
10.5121 + case 'text':
10.5122 + //console.log('creating text node : %s', xnode);
10.5123 + domnode = doc.createTextNode(xnode+'');
10.5124 + parent.appendChild(domnode);
10.5125 + break;
10.5126 + case 'comment':
10.5127 + //console.log('creating comment node : %s', xnode);
10.5128 + value = xnode+'';
10.5129 + domnode = doc.createComment(value.substring(4,value.length-3));
10.5130 + parent.appendChild(domnode);
10.5131 + break;
10.5132 + case 'processing-instruction':
10.5133 + //console.log('creating processing-instruction node : %s', xnode);
10.5134 + value = xnode+'';
10.5135 + target = value.split(' ')[0].substring(2);
10.5136 + value = value.split(' ').splice(1).join(' ').replace('?>','');
10.5137 + //console.log('creating processing-instruction data : %s', value);
10.5138 + domnode = doc.createProcessingInstruction(target, value);
10.5139 + parent.appendChild(domnode);
10.5140 + break;
10.5141 + default:
10.5142 + console.log('e4x DOM ERROR');
10.5143 + throw new Error("Assertion failed in xml parser");
10.5144 + }
10.5145 + }
10.5146 +};
10.5147 +/**
10.5148 + * @author envjs team
10.5149 + * @class XMLSerializer
10.5150 + */
10.5151 +
10.5152 +XMLSerializer = function() {};
10.5153 +
10.5154 +__extend__(XMLSerializer.prototype, {
10.5155 + serializeToString: function(node){
10.5156 + return node.xml;
10.5157 + },
10.5158 + toString : function(){
10.5159 + return "[object XMLSerializer]";
10.5160 + }
10.5161 +});
10.5162 +
10.5163 +/**
10.5164 + * @author john resig & the envjs team
10.5165 + * @uri http://www.envjs.com/
10.5166 + * @copyright 2008-2010
10.5167 + * @license MIT
10.5168 + */
10.5169 +//CLOSURE_END
10.5170 +}());
10.5171 +/*
10.5172 + * Envjs event.1.2.13
10.5173 + * Pure JavaScript Browser Environment
10.5174 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.5175 + * Copyright 2008-2010 John Resig, under the MIT License
10.5176 + *
10.5177 + * This file simply provides the global definitions we need to
10.5178 + * be able to correctly implement to core browser DOM Event interfaces.
10.5179 + */
10.5180 +var Event,
10.5181 + MouseEvent,
10.5182 + UIEvent,
10.5183 + KeyboardEvent,
10.5184 + MutationEvent,
10.5185 + DocumentEvent,
10.5186 + EventTarget,
10.5187 + EventException,
10.5188 + //nonstandard but very useful for implementing mutation events
10.5189 + //among other things like general profiling
10.5190 + Aspect;
10.5191 +/*
10.5192 + * Envjs event.1.2.13
10.5193 + * Pure JavaScript Browser Environment
10.5194 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.5195 + * Copyright 2008-2010 John Resig, under the MIT License
10.5196 + */
10.5197 +
10.5198 +//CLOSURE_START
10.5199 +(function(){
10.5200 +
10.5201 +
10.5202 +
10.5203 +
10.5204 +
10.5205 +/**
10.5206 + * @author john resig
10.5207 + */
10.5208 +// Helper method for extending one object with another.
10.5209 +function __extend__(a,b) {
10.5210 + for ( var i in b ) {
10.5211 + var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
10.5212 + if ( g || s ) {
10.5213 + if ( g ) { a.__defineGetter__(i, g); }
10.5214 + if ( s ) { a.__defineSetter__(i, s); }
10.5215 + } else {
10.5216 + a[i] = b[i];
10.5217 + }
10.5218 + } return a;
10.5219 +}
10.5220 +
10.5221 +/**
10.5222 + * @author john resig
10.5223 + */
10.5224 +//from jQuery
10.5225 +function __setArray__( target, array ) {
10.5226 + // Resetting the length to 0, then using the native Array push
10.5227 + // is a super-fast way to populate an object with array-like properties
10.5228 + target.length = 0;
10.5229 + Array.prototype.push.apply( target, array );
10.5230 +}
10.5231 +/**
10.5232 + * Borrowed with love from:
10.5233 + *
10.5234 + * jQuery AOP - jQuery plugin to add features of aspect-oriented programming (AOP) to jQuery.
10.5235 + * http://jquery-aop.googlecode.com/
10.5236 + *
10.5237 + * Licensed under the MIT license:
10.5238 + * http://www.opensource.org/licenses/mit-license.php
10.5239 + *
10.5240 + * Version: 1.1
10.5241 + */
10.5242 +(function() {
10.5243 +
10.5244 + var _after = 1;
10.5245 + var _before = 2;
10.5246 + var _around = 3;
10.5247 + var _intro = 4;
10.5248 + var _regexEnabled = true;
10.5249 +
10.5250 + /**
10.5251 + * Private weaving function.
10.5252 + */
10.5253 + var weaveOne = function(source, method, advice) {
10.5254 +
10.5255 + var old = source[method];
10.5256 +
10.5257 + var aspect;
10.5258 + if (advice.type == _after)
10.5259 + aspect = function() {
10.5260 + var returnValue = old.apply(this, arguments);
10.5261 + return advice.value.apply(this, [returnValue, method]);
10.5262 + };
10.5263 + else if (advice.type == _before)
10.5264 + aspect = function() {
10.5265 + advice.value.apply(this, [arguments, method]);
10.5266 + return old.apply(this, arguments);
10.5267 + };
10.5268 + else if (advice.type == _intro)
10.5269 + aspect = function() {
10.5270 + return advice.value.apply(this, arguments);
10.5271 + };
10.5272 + else if (advice.type == _around) {
10.5273 + aspect = function() {
10.5274 + var invocation = { object: this, args: arguments };
10.5275 + return advice.value.apply(invocation.object, [{ arguments: invocation.args, method: method, proceed :
10.5276 + function() {
10.5277 + return old.apply(invocation.object, invocation.args);
10.5278 + }
10.5279 + }] );
10.5280 + };
10.5281 + }
10.5282 +
10.5283 + aspect.unweave = function() {
10.5284 + source[method] = old;
10.5285 + pointcut = source = aspect = old = null;
10.5286 + };
10.5287 +
10.5288 + source[method] = aspect;
10.5289 +
10.5290 + return aspect;
10.5291 +
10.5292 + };
10.5293 +
10.5294 +
10.5295 + /**
10.5296 + * Private weaver and pointcut parser.
10.5297 + */
10.5298 + var weave = function(pointcut, advice)
10.5299 + {
10.5300 +
10.5301 + var source = (typeof(pointcut.target.prototype) != 'undefined') ? pointcut.target.prototype : pointcut.target;
10.5302 + var advices = [];
10.5303 +
10.5304 + // If it's not an introduction and no method was found, try with regex...
10.5305 + if (advice.type != _intro && typeof(source[pointcut.method]) == 'undefined')
10.5306 + {
10.5307 +
10.5308 + for (var method in source)
10.5309 + {
10.5310 + if (source[method] != null && source[method] instanceof Function && method.match(pointcut.method))
10.5311 + {
10.5312 + advices[advices.length] = weaveOne(source, method, advice);
10.5313 + }
10.5314 + }
10.5315 +
10.5316 + if (advices.length == 0)
10.5317 + throw 'No method: ' + pointcut.method;
10.5318 +
10.5319 + }
10.5320 + else
10.5321 + {
10.5322 + // Return as an array of one element
10.5323 + advices[0] = weaveOne(source, pointcut.method, advice);
10.5324 + }
10.5325 +
10.5326 + return _regexEnabled ? advices : advices[0];
10.5327 +
10.5328 + };
10.5329 +
10.5330 + Aspect =
10.5331 + {
10.5332 + /**
10.5333 + * Creates an advice after the defined point-cut. The advice will be executed after the point-cut method
10.5334 + * has completed execution successfully, and will receive one parameter with the result of the execution.
10.5335 + * This function returns an array of weaved aspects (Function).
10.5336 + *
10.5337 + * @example jQuery.aop.after( {target: window, method: 'MyGlobalMethod'}, function(result) { alert('Returned: ' + result); } );
10.5338 + * @result Array<Function>
10.5339 + *
10.5340 + * @example jQuery.aop.after( {target: String, method: 'indexOf'}, function(index) { alert('Result found at: ' + index + ' on:' + this); } );
10.5341 + * @result Array<Function>
10.5342 + *
10.5343 + * @name after
10.5344 + * @param Map pointcut Definition of the point-cut to apply the advice. A point-cut is the definition of the object/s and method/s to be weaved.
10.5345 + * @option Object target Target object to be weaved.
10.5346 + * @option String method Name of the function to be weaved. Regex are supported, but not on built-in objects.
10.5347 + * @param Function advice Function containing the code that will get called after the execution of the point-cut. It receives one parameter
10.5348 + * with the result of the point-cut's execution.
10.5349 + *
10.5350 + * @type Array<Function>
10.5351 + * @cat Plugins/General
10.5352 + */
10.5353 + after : function(pointcut, advice)
10.5354 + {
10.5355 + return weave( pointcut, { type: _after, value: advice } );
10.5356 + },
10.5357 +
10.5358 + /**
10.5359 + * Creates an advice before the defined point-cut. The advice will be executed before the point-cut method
10.5360 + * but cannot modify the behavior of the method, or prevent its execution.
10.5361 + * This function returns an array of weaved aspects (Function).
10.5362 + *
10.5363 + * @example jQuery.aop.before( {target: window, method: 'MyGlobalMethod'}, function() { alert('About to execute MyGlobalMethod'); } );
10.5364 + * @result Array<Function>
10.5365 + *
10.5366 + * @example jQuery.aop.before( {target: String, method: 'indexOf'}, function(index) { alert('About to execute String.indexOf on: ' + this); } );
10.5367 + * @result Array<Function>
10.5368 + *
10.5369 + * @name before
10.5370 + * @param Map pointcut Definition of the point-cut to apply the advice. A point-cut is the definition of the object/s and method/s to be weaved.
10.5371 + * @option Object target Target object to be weaved.
10.5372 + * @option String method Name of the function to be weaved. Regex are supported, but not on built-in objects.
10.5373 + * @param Function advice Function containing the code that will get called before the execution of the point-cut.
10.5374 + *
10.5375 + * @type Array<Function>
10.5376 + * @cat Plugins/General
10.5377 + */
10.5378 + before : function(pointcut, advice)
10.5379 + {
10.5380 + return weave( pointcut, { type: _before, value: advice } );
10.5381 + },
10.5382 +
10.5383 +
10.5384 + /**
10.5385 + * Creates an advice 'around' the defined point-cut. This type of advice can control the point-cut method execution by calling
10.5386 + * the functions '.proceed()' on the 'invocation' object, and also, can modify the arguments collection before sending them to the function call.
10.5387 + * This function returns an array of weaved aspects (Function).
10.5388 + *
10.5389 + * @example jQuery.aop.around( {target: window, method: 'MyGlobalMethod'}, function(invocation) {
10.5390 + * alert('# of Arguments: ' + invocation.arguments.length);
10.5391 + * return invocation.proceed();
10.5392 + * } );
10.5393 + * @result Array<Function>
10.5394 + *
10.5395 + * @example jQuery.aop.around( {target: String, method: 'indexOf'}, function(invocation) {
10.5396 + * alert('Searching: ' + invocation.arguments[0] + ' on: ' + this);
10.5397 + * return invocation.proceed();
10.5398 + * } );
10.5399 + * @result Array<Function>
10.5400 + *
10.5401 + * @example jQuery.aop.around( {target: window, method: /Get(\d+)/}, function(invocation) {
10.5402 + * alert('Executing ' + invocation.method);
10.5403 + * return invocation.proceed();
10.5404 + * } );
10.5405 + * @desc Matches all global methods starting with 'Get' and followed by a number.
10.5406 + * @result Array<Function>
10.5407 + *
10.5408 + *
10.5409 + * @name around
10.5410 + * @param Map pointcut Definition of the point-cut to apply the advice. A point-cut is the definition of the object/s and method/s to be weaved.
10.5411 + * @option Object target Target object to be weaved.
10.5412 + * @option String method Name of the function to be weaved. Regex are supported, but not on built-in objects.
10.5413 + * @param Function advice Function containing the code that will get called around the execution of the point-cut. This advice will be called with one
10.5414 + * argument containing one function '.proceed()', the collection of arguments '.arguments', and the matched method name '.method'.
10.5415 + *
10.5416 + * @type Array<Function>
10.5417 + * @cat Plugins/General
10.5418 + */
10.5419 + around : function(pointcut, advice)
10.5420 + {
10.5421 + return weave( pointcut, { type: _around, value: advice } );
10.5422 + },
10.5423 +
10.5424 + /**
10.5425 + * Creates an introduction on the defined point-cut. This type of advice replaces any existing methods with the same
10.5426 + * name. To restore them, just unweave it.
10.5427 + * This function returns an array with only one weaved aspect (Function).
10.5428 + *
10.5429 + * @example jQuery.aop.introduction( {target: window, method: 'MyGlobalMethod'}, function(result) { alert('Returned: ' + result); } );
10.5430 + * @result Array<Function>
10.5431 + *
10.5432 + * @example jQuery.aop.introduction( {target: String, method: 'log'}, function() { alert('Console: ' + this); } );
10.5433 + * @result Array<Function>
10.5434 + *
10.5435 + * @name introduction
10.5436 + * @param Map pointcut Definition of the point-cut to apply the advice. A point-cut is the definition of the object/s and method/s to be weaved.
10.5437 + * @option Object target Target object to be weaved.
10.5438 + * @option String method Name of the function to be weaved.
10.5439 + * @param Function advice Function containing the code that will be executed on the point-cut.
10.5440 + *
10.5441 + * @type Array<Function>
10.5442 + * @cat Plugins/General
10.5443 + */
10.5444 + introduction : function(pointcut, advice)
10.5445 + {
10.5446 + return weave( pointcut, { type: _intro, value: advice } );
10.5447 + },
10.5448 +
10.5449 + /**
10.5450 + * Configures global options.
10.5451 + *
10.5452 + * @name setup
10.5453 + * @param Map settings Configuration options.
10.5454 + * @option Boolean regexMatch Enables/disables regex matching of method names.
10.5455 + *
10.5456 + * @example jQuery.aop.setup( { regexMatch: false } );
10.5457 + * @desc Disable regex matching.
10.5458 + *
10.5459 + * @type Void
10.5460 + * @cat Plugins/General
10.5461 + */
10.5462 + setup: function(settings)
10.5463 + {
10.5464 + _regexEnabled = settings.regexMatch;
10.5465 + }
10.5466 + };
10.5467 +
10.5468 +})();
10.5469 +
10.5470 +
10.5471 +
10.5472 +
10.5473 +/**
10.5474 + * @name EventTarget
10.5475 + * @w3c:domlevel 2
10.5476 + * @uri -//TODO: paste dom event level 2 w3c spc uri here
10.5477 + */
10.5478 +EventTarget = function(){};
10.5479 +EventTarget.prototype.addEventListener = function(type, fn, phase){
10.5480 + __addEventListener__(this, type, fn, phase);
10.5481 +};
10.5482 +EventTarget.prototype.removeEventListener = function(type, fn){
10.5483 + __removeEventListener__(this, type, fn);
10.5484 +};
10.5485 +EventTarget.prototype.dispatchEvent = function(event, bubbles){
10.5486 + __dispatchEvent__(this, event, bubbles);
10.5487 +};
10.5488 +
10.5489 +__extend__(Node.prototype, EventTarget.prototype);
10.5490 +
10.5491 +
10.5492 +var $events = [{}];
10.5493 +
10.5494 +function __addEventListener__(target, type, fn, phase){
10.5495 + phase = !!phase?"CAPTURING":"BUBBLING";
10.5496 + if ( !target.uuid ) {
10.5497 + //console.log('event uuid %s %s', target, target.uuid);
10.5498 + target.uuid = $events.length+'';
10.5499 + }
10.5500 + if ( !$events[target.uuid] ) {
10.5501 + //console.log('creating listener for target: %s %s', target, target.uuid);
10.5502 + $events[target.uuid] = {};
10.5503 + }
10.5504 + if ( !$events[target.uuid][type] ){
10.5505 + //console.log('creating listener for type: %s %s %s', target, target.uuid, type);
10.5506 + $events[target.uuid][type] = {
10.5507 + CAPTURING:[],
10.5508 + BUBBLING:[]
10.5509 + };
10.5510 + }
10.5511 + if ( $events[target.uuid][type][phase].indexOf( fn ) < 0 ){
10.5512 + //console.log('adding event listener %s %s %s %s %s %s', target, target.uuid, type, phase,
10.5513 + // $events[target.uuid][type][phase].length, $events[target.uuid][type][phase].indexOf( fn ));
10.5514 + //console.log('creating listener for function: %s %s %s', target, target.uuid, phase);
10.5515 + $events[target.uuid][type][phase].push( fn );
10.5516 + //console.log('adding event listener %s %s %s %s %s %s', target, target.uuid, type, phase,
10.5517 + // $events[target.uuid][type][phase].length, $events[target.uuid][type][phase].indexOf( fn ));
10.5518 + }
10.5519 + //console.log('registered event listeners %s', $events.length);
10.5520 +}
10.5521 +
10.5522 +function __removeEventListener__(target, type, fn, phase){
10.5523 +
10.5524 + phase = !!phase?"CAPTURING":"BUBBLING";
10.5525 + if ( !target.uuid ) {
10.5526 + return;
10.5527 + }
10.5528 + if ( !$events[target.uuid] ) {
10.5529 + return;
10.5530 + }
10.5531 + if(type == '*'){
10.5532 + //used to clean all event listeners for a given node
10.5533 + //console.log('cleaning all event listeners for node %s %s',target, target.uuid);
10.5534 + delete $events[target.uuid];
10.5535 + return;
10.5536 + }else if ( !$events[target.uuid][type] ){
10.5537 + return;
10.5538 + }
10.5539 + $events[target.uuid][type][phase] =
10.5540 + $events[target.uuid][type][phase].filter(function(f){
10.5541 + //console.log('removing event listener %s %s %s %s', target, type, phase, fn);
10.5542 + return f != fn;
10.5543 + });
10.5544 +}
10.5545 +
10.5546 +var __eventuuid__ = 0;
10.5547 +function __dispatchEvent__(target, event, bubbles){
10.5548 +
10.5549 + if (!event.uuid) {
10.5550 + event.uuid = __eventuuid__++;
10.5551 + }
10.5552 + //the window scope defines the $event object, for IE(^^^) compatibility;
10.5553 + //$event = event;
10.5554 + //console.log('dispatching event %s', event.uuid);
10.5555 + if (bubbles === undefined || bubbles === null) {
10.5556 + bubbles = true;
10.5557 + }
10.5558 +
10.5559 + if (!event.target) {
10.5560 + event.target = target;
10.5561 + }
10.5562 +
10.5563 + //console.log('dispatching? %s %s %s', target, event.type, bubbles);
10.5564 + if ( event.type && (target.nodeType || target === window )) {
10.5565 +
10.5566 + //console.log('dispatching event %s %s %s', target, event.type, bubbles);
10.5567 + __captureEvent__(target, event);
10.5568 +
10.5569 + event.eventPhase = Event.AT_TARGET;
10.5570 + if ( target.uuid && $events[target.uuid] && $events[target.uuid][event.type] ) {
10.5571 + event.currentTarget = target;
10.5572 + //console.log('dispatching %s %s %s %s', target, event.type,
10.5573 + // $events[target.uuid][event.type]['CAPTURING'].length);
10.5574 + $events[target.uuid][event.type].CAPTURING.forEach(function(fn){
10.5575 + //console.log('AT_TARGET (CAPTURING) event %s', fn);
10.5576 + var returnValue = fn( event );
10.5577 + //console.log('AT_TARGET (CAPTURING) return value %s', returnValue);
10.5578 + if(returnValue === false){
10.5579 + event.stopPropagation();
10.5580 + }
10.5581 + });
10.5582 + //console.log('dispatching %s %s %s %s', target, event.type,
10.5583 + // $events[target.uuid][event.type]['BUBBLING'].length);
10.5584 + $events[target.uuid][event.type].BUBBLING.forEach(function(fn){
10.5585 + //console.log('AT_TARGET (BUBBLING) event %s', fn);
10.5586 + var returnValue = fn( event );
10.5587 + //console.log('AT_TARGET (BUBBLING) return value %s', returnValue);
10.5588 + if(returnValue === false){
10.5589 + event.stopPropagation();
10.5590 + }
10.5591 + });
10.5592 + }
10.5593 + if (target["on" + event.type]) {
10.5594 + target["on" + event.type](event);
10.5595 + }
10.5596 + if (bubbles && !event.cancelled){
10.5597 + __bubbleEvent__(target, event);
10.5598 + }
10.5599 + if(!event._preventDefault){
10.5600 + //At this point I'm guessing that just HTMLEvents are concerned
10.5601 + //with default behavior being executed in a browser but I could be
10.5602 + //wrong as usual. The goal is much more to filter at this point
10.5603 + //what events have no need to be handled
10.5604 + //console.log('triggering default behavior for %s', event.type);
10.5605 + if(event.type in Envjs.defaultEventBehaviors){
10.5606 + Envjs.defaultEventBehaviors[event.type](event);
10.5607 + }
10.5608 + }
10.5609 + //console.log('deleting event %s', event.uuid);
10.5610 + event.target = null;
10.5611 + event = null;
10.5612 + }else{
10.5613 + throw new EventException(EventException.UNSPECIFIED_EVENT_TYPE_ERR);
10.5614 + }
10.5615 +}
10.5616 +
10.5617 +function __captureEvent__(target, event){
10.5618 + var ancestorStack = [],
10.5619 + parent = target.parentNode;
10.5620 +
10.5621 + event.eventPhase = Event.CAPTURING_PHASE;
10.5622 + while(parent){
10.5623 + if(parent.uuid && $events[parent.uuid] && $events[parent.uuid][event.type]){
10.5624 + ancestorStack.push(parent);
10.5625 + }
10.5626 + parent = parent.parentNode;
10.5627 + }
10.5628 + while(ancestorStack.length && !event.cancelled){
10.5629 + event.currentTarget = ancestorStack.pop();
10.5630 + if($events[event.currentTarget.uuid] && $events[event.currentTarget.uuid][event.type]){
10.5631 + $events[event.currentTarget.uuid][event.type].CAPTURING.forEach(function(fn){
10.5632 + var returnValue = fn( event );
10.5633 + if(returnValue === false){
10.5634 + event.stopPropagation();
10.5635 + }
10.5636 + });
10.5637 + }
10.5638 + }
10.5639 +}
10.5640 +
10.5641 +function __bubbleEvent__(target, event){
10.5642 + var parent = target.parentNode;
10.5643 + event.eventPhase = Event.BUBBLING_PHASE;
10.5644 + while(parent){
10.5645 + if(parent.uuid && $events[parent.uuid] && $events[parent.uuid][event.type] ){
10.5646 + event.currentTarget = parent;
10.5647 + $events[event.currentTarget.uuid][event.type].BUBBLING.forEach(function(fn){
10.5648 + var returnValue = fn( event );
10.5649 + if(returnValue === false){
10.5650 + event.stopPropagation();
10.5651 + }
10.5652 + });
10.5653 + }
10.5654 + parent = parent.parentNode;
10.5655 + }
10.5656 +}
10.5657 +
10.5658 +/**
10.5659 + * @class Event
10.5660 + */
10.5661 +Event = function(options){
10.5662 + // event state is kept read-only by forcing
10.5663 + // a new object for each event. This may not
10.5664 + // be appropriate in the long run and we'll
10.5665 + // have to decide if we simply dont adhere to
10.5666 + // the read-only restriction of the specification
10.5667 + this._bubbles = true;
10.5668 + this._cancelable = true;
10.5669 + this._cancelled = false;
10.5670 + this._currentTarget = null;
10.5671 + this._target = null;
10.5672 + this._eventPhase = Event.AT_TARGET;
10.5673 + this._timeStamp = new Date().getTime();
10.5674 + this._preventDefault = false;
10.5675 + this._stopPropogation = false;
10.5676 +};
10.5677 +
10.5678 +__extend__(Event.prototype,{
10.5679 + get bubbles(){return this._bubbles;},
10.5680 + get cancelable(){return this._cancelable;},
10.5681 + get currentTarget(){return this._currentTarget;},
10.5682 + set currentTarget(currentTarget){ this._currentTarget = currentTarget; },
10.5683 + get eventPhase(){return this._eventPhase;},
10.5684 + set eventPhase(eventPhase){this._eventPhase = eventPhase;},
10.5685 + get target(){return this._target;},
10.5686 + set target(target){ this._target = target;},
10.5687 + get timeStamp(){return this._timeStamp;},
10.5688 + get type(){return this._type;},
10.5689 + initEvent: function(type, bubbles, cancelable){
10.5690 + this._type=type?type:'';
10.5691 + this._bubbles=!!bubbles;
10.5692 + this._cancelable=!!cancelable;
10.5693 + },
10.5694 + preventDefault: function(){
10.5695 + this._preventDefault = true;
10.5696 + },
10.5697 + stopPropagation: function(){
10.5698 + if(this._cancelable){
10.5699 + this._cancelled = true;
10.5700 + this._bubbles = false;
10.5701 + }
10.5702 + },
10.5703 + get cancelled(){
10.5704 + return this._cancelled;
10.5705 + },
10.5706 + toString: function(){
10.5707 + return '[object Event]';
10.5708 + }
10.5709 +});
10.5710 +
10.5711 +__extend__(Event,{
10.5712 + CAPTURING_PHASE : 1,
10.5713 + AT_TARGET : 2,
10.5714 + BUBBLING_PHASE : 3
10.5715 +});
10.5716 +
10.5717 +
10.5718 +
10.5719 +/**
10.5720 + * @name UIEvent
10.5721 + * @param {Object} options
10.5722 + */
10.5723 +UIEvent = function(options) {
10.5724 + this._view = null;
10.5725 + this._detail = 0;
10.5726 +};
10.5727 +
10.5728 +UIEvent.prototype = new Event();
10.5729 +__extend__(UIEvent.prototype,{
10.5730 + get view(){
10.5731 + return this._view;
10.5732 + },
10.5733 + get detail(){
10.5734 + return this._detail;
10.5735 + },
10.5736 + initUIEvent: function(type, bubbles, cancelable, windowObject, detail){
10.5737 + this.initEvent(type, bubbles, cancelable);
10.5738 + this._detail = 0;
10.5739 + this._view = windowObject;
10.5740 + }
10.5741 +});
10.5742 +
10.5743 +var $onblur,
10.5744 + $onfocus,
10.5745 + $onresize;
10.5746 +
10.5747 +
10.5748 +/**
10.5749 + * @name MouseEvent
10.5750 + * @w3c:domlevel 2
10.5751 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
10.5752 + */
10.5753 +MouseEvent = function(options) {
10.5754 + this._screenX= 0;
10.5755 + this._screenY= 0;
10.5756 + this._clientX= 0;
10.5757 + this._clientY= 0;
10.5758 + this._ctrlKey= false;
10.5759 + this._metaKey= false;
10.5760 + this._altKey= false;
10.5761 + this._button= null;
10.5762 + this._relatedTarget= null;
10.5763 +};
10.5764 +MouseEvent.prototype = new UIEvent();
10.5765 +__extend__(MouseEvent.prototype,{
10.5766 + get screenX(){
10.5767 + return this._screenX;
10.5768 + },
10.5769 + get screenY(){
10.5770 + return this._screenY;
10.5771 + },
10.5772 + get clientX(){
10.5773 + return this._clientX;
10.5774 + },
10.5775 + get clientY(){
10.5776 + return this._clientY;
10.5777 + },
10.5778 + get ctrlKey(){
10.5779 + return this._ctrlKey;
10.5780 + },
10.5781 + get altKey(){
10.5782 + return this._altKey;
10.5783 + },
10.5784 + get shiftKey(){
10.5785 + return this._shiftKey;
10.5786 + },
10.5787 + get metaKey(){
10.5788 + return this._metaKey;
10.5789 + },
10.5790 + get button(){
10.5791 + return this._button;
10.5792 + },
10.5793 + get relatedTarget(){
10.5794 + return this._relatedTarget;
10.5795 + },
10.5796 + initMouseEvent: function(type, bubbles, cancelable, windowObject, detail,
10.5797 + screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey,
10.5798 + metaKey, button, relatedTarget){
10.5799 + this.initUIEvent(type, bubbles, cancelable, windowObject, detail);
10.5800 + this._screenX = screenX;
10.5801 + this._screenY = screenY;
10.5802 + this._clientX = clientX;
10.5803 + this._clientY = clientY;
10.5804 + this._ctrlKey = ctrlKey;
10.5805 + this._altKey = altKey;
10.5806 + this._shiftKey = shiftKey;
10.5807 + this._metaKey = metaKey;
10.5808 + this._button = button;
10.5809 + this._relatedTarget = relatedTarget;
10.5810 + }
10.5811 +});
10.5812 +
10.5813 +/**
10.5814 + * Interface KeyboardEvent (introduced in DOM Level 3)
10.5815 + */
10.5816 +KeyboardEvent = function(options) {
10.5817 + this._keyIdentifier = 0;
10.5818 + this._keyLocation = 0;
10.5819 + this._ctrlKey = false;
10.5820 + this._metaKey = false;
10.5821 + this._altKey = false;
10.5822 + this._metaKey = false;
10.5823 +};
10.5824 +KeyboardEvent.prototype = new UIEvent();
10.5825 +
10.5826 +__extend__(KeyboardEvent.prototype,{
10.5827 +
10.5828 + get ctrlKey(){
10.5829 + return this._ctrlKey;
10.5830 + },
10.5831 + get altKey(){
10.5832 + return this._altKey;
10.5833 + },
10.5834 + get shiftKey(){
10.5835 + return this._shiftKey;
10.5836 + },
10.5837 + get metaKey(){
10.5838 + return this._metaKey;
10.5839 + },
10.5840 + get button(){
10.5841 + return this._button;
10.5842 + },
10.5843 + get relatedTarget(){
10.5844 + return this._relatedTarget;
10.5845 + },
10.5846 + getModifiersState: function(keyIdentifier){
10.5847 +
10.5848 + },
10.5849 + initMouseEvent: function(type, bubbles, cancelable, windowObject,
10.5850 + keyIdentifier, keyLocation, modifiersList, repeat){
10.5851 + this.initUIEvent(type, bubbles, cancelable, windowObject, 0);
10.5852 + this._keyIdentifier = keyIdentifier;
10.5853 + this._keyLocation = keyLocation;
10.5854 + this._modifiersList = modifiersList;
10.5855 + this._repeat = repeat;
10.5856 + }
10.5857 +});
10.5858 +
10.5859 +KeyboardEvent.DOM_KEY_LOCATION_STANDARD = 0;
10.5860 +KeyboardEvent.DOM_KEY_LOCATION_LEFT = 1;
10.5861 +KeyboardEvent.DOM_KEY_LOCATION_RIGHT = 2;
10.5862 +KeyboardEvent.DOM_KEY_LOCATION_NUMPAD = 3;
10.5863 +KeyboardEvent.DOM_KEY_LOCATION_MOBILE = 4;
10.5864 +KeyboardEvent.DOM_KEY_LOCATION_JOYSTICK = 5;
10.5865 +
10.5866 +
10.5867 +
10.5868 +//We dont fire mutation events until someone has registered for them
10.5869 +var __supportedMutations__ = /DOMSubtreeModified|DOMNodeInserted|DOMNodeRemoved|DOMAttrModified|DOMCharacterDataModified/;
10.5870 +
10.5871 +var __fireMutationEvents__ = Aspect.before({
10.5872 + target: EventTarget,
10.5873 + method: 'addEventListener'
10.5874 +}, function(target, type){
10.5875 + if(type && type.match(__supportedMutations__)){
10.5876 + //unweaving removes the __addEventListener__ aspect
10.5877 + __fireMutationEvents__.unweave();
10.5878 + // These two methods are enough to cover all dom 2 manipulations
10.5879 + Aspect.around({
10.5880 + target: Node,
10.5881 + method:"removeChild"
10.5882 + }, function(invocation){
10.5883 + var event,
10.5884 + node = invocation.arguments[0];
10.5885 + event = node.ownerDocument.createEvent('MutationEvents');
10.5886 + event.initEvent('DOMNodeRemoved', true, false, node.parentNode, null, null, null, null);
10.5887 + node.dispatchEvent(event, false);
10.5888 + return invocation.proceed();
10.5889 +
10.5890 + });
10.5891 + Aspect.around({
10.5892 + target: Node,
10.5893 + method:"appendChild"
10.5894 + }, function(invocation) {
10.5895 + var event,
10.5896 + node = invocation.proceed();
10.5897 + event = node.ownerDocument.createEvent('MutationEvents');
10.5898 + event.initEvent('DOMNodeInserted', true, false, node.parentNode, null, null, null, null);
10.5899 + node.dispatchEvent(event, false);
10.5900 + return node;
10.5901 + });
10.5902 + }
10.5903 +});
10.5904 +
10.5905 +/**
10.5906 + * @name MutationEvent
10.5907 + * @param {Object} options
10.5908 + */
10.5909 +MutationEvent = function(options) {
10.5910 + this._cancelable = false;
10.5911 + this._timeStamp = 0;
10.5912 +};
10.5913 +
10.5914 +MutationEvent.prototype = new Event();
10.5915 +__extend__(MutationEvent.prototype,{
10.5916 + get relatedNode(){
10.5917 + return this._relatedNode;
10.5918 + },
10.5919 + get prevValue(){
10.5920 + return this._prevValue;
10.5921 + },
10.5922 + get newValue(){
10.5923 + return this._newValue;
10.5924 + },
10.5925 + get attrName(){
10.5926 + return this._attrName;
10.5927 + },
10.5928 + get attrChange(){
10.5929 + return this._attrChange;
10.5930 + },
10.5931 + initMutationEvent: function( type, bubbles, cancelable,
10.5932 + relatedNode, prevValue, newValue, attrName, attrChange ){
10.5933 + this._relatedNode = relatedNode;
10.5934 + this._prevValue = prevValue;
10.5935 + this._newValue = newValue;
10.5936 + this._attrName = attrName;
10.5937 + this._attrChange = attrChange;
10.5938 + switch(type){
10.5939 + case "DOMSubtreeModified":
10.5940 + this.initEvent(type, true, false);
10.5941 + break;
10.5942 + case "DOMNodeInserted":
10.5943 + this.initEvent(type, true, false);
10.5944 + break;
10.5945 + case "DOMNodeRemoved":
10.5946 + this.initEvent(type, true, false);
10.5947 + break;
10.5948 + case "DOMNodeRemovedFromDocument":
10.5949 + this.initEvent(type, false, false);
10.5950 + break;
10.5951 + case "DOMNodeInsertedIntoDocument":
10.5952 + this.initEvent(type, false, false);
10.5953 + break;
10.5954 + case "DOMAttrModified":
10.5955 + this.initEvent(type, true, false);
10.5956 + break;
10.5957 + case "DOMCharacterDataModified":
10.5958 + this.initEvent(type, true, false);
10.5959 + break;
10.5960 + default:
10.5961 + this.initEvent(type, bubbles, cancelable);
10.5962 + }
10.5963 + }
10.5964 +});
10.5965 +
10.5966 +// constants
10.5967 +MutationEvent.ADDITION = 0;
10.5968 +MutationEvent.MODIFICATION = 1;
10.5969 +MutationEvent.REMOVAL = 2;
10.5970 +
10.5971 +
10.5972 +/**
10.5973 + * @name EventException
10.5974 + */
10.5975 +EventException = function(code) {
10.5976 + this.code = code;
10.5977 +};
10.5978 +EventException.UNSPECIFIED_EVENT_TYPE_ERR = 0;
10.5979 +/**
10.5980 + *
10.5981 + * DOM Level 2: http://www.w3.org/TR/DOM-Level-2-Events/events.html
10.5982 + * DOM Level 3: http://www.w3.org/TR/DOM-Level-3-Events/
10.5983 + *
10.5984 + * interface DocumentEvent {
10.5985 + * Event createEvent (in DOMString eventType)
10.5986 + * raises (DOMException);
10.5987 + * };
10.5988 + *
10.5989 + * Firefox (3.6) exposes DocumentEvent
10.5990 + * Safari (4) does NOT.
10.5991 + */
10.5992 +
10.5993 +/**
10.5994 + * TODO: Not sure we need a full prototype. We not just an regular object?
10.5995 + */
10.5996 +DocumentEvent = function(){};
10.5997 +DocumentEvent.prototype.__EventMap__ = {
10.5998 + // Safari4: singular and plural forms accepted
10.5999 + // Firefox3.6: singular and plural forms accepted
10.6000 + 'Event' : Event,
10.6001 + 'Events' : Event,
10.6002 + 'UIEvent' : UIEvent,
10.6003 + 'UIEvents' : UIEvent,
10.6004 + 'MouseEvent' : MouseEvent,
10.6005 + 'MouseEvents' : MouseEvent,
10.6006 + 'MutationEvent' : MutationEvent,
10.6007 + 'MutationEvents' : MutationEvent,
10.6008 +
10.6009 + // Safari4: accepts HTMLEvents, but not HTMLEvent
10.6010 + // Firefox3.6: accepts HTMLEvents, but not HTMLEvent
10.6011 + 'HTMLEvent' : Event,
10.6012 + 'HTMLEvents' : Event,
10.6013 +
10.6014 + // Safari4: both not accepted
10.6015 + // Firefox3.6, only KeyEvents is accepted
10.6016 + 'KeyEvent' : KeyboardEvent,
10.6017 + 'KeyEvents' : KeyboardEvent,
10.6018 +
10.6019 + // Safari4: both accepted
10.6020 + // Firefox3.6: none accepted
10.6021 + 'KeyboardEvent' : KeyboardEvent,
10.6022 + 'KeyboardEvents' : KeyboardEvent
10.6023 +};
10.6024 +
10.6025 +DocumentEvent.prototype.createEvent = function(eventType) {
10.6026 + var Clazz = this.__EventMap__[eventType];
10.6027 + if (Clazz) {
10.6028 + return new Clazz();
10.6029 + }
10.6030 + throw(new DOMException(DOMException.NOT_SUPPORTED_ERR));
10.6031 +};
10.6032 +
10.6033 +__extend__(Document.prototype, DocumentEvent.prototype);
10.6034 +
10.6035 +/**
10.6036 + * @author john resig & the envjs team
10.6037 + * @uri http://www.envjs.com/
10.6038 + * @copyright 2008-2010
10.6039 + * @license MIT
10.6040 + */
10.6041 +//CLOSURE_END
10.6042 +}());
10.6043 +
10.6044 +/*
10.6045 + * Envjs timer.1.2.13
10.6046 + * Pure JavaScript Browser Environment
10.6047 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.6048 + * Copyright 2008-2010 John Resig, under the MIT License
10.6049 + *
10.6050 + * Parts of the implementation were originally written by:\
10.6051 + * Steven Parkes
10.6052 + *
10.6053 + * requires Envjs.wait, Envjs.sleep, Envjs.WAIT_INTERVAL
10.6054 + */
10.6055 +var setTimeout,
10.6056 + clearTimeout,
10.6057 + setInterval,
10.6058 + clearInterval;
10.6059 +
10.6060 +/*
10.6061 + * Envjs timer.1.2.13
10.6062 + * Pure JavaScript Browser Environment
10.6063 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.6064 + * Copyright 2008-2010 John Resig, under the MIT License
10.6065 + */
10.6066 +
10.6067 +//CLOSURE_START
10.6068 +(function(){
10.6069 +
10.6070 +
10.6071 +
10.6072 +
10.6073 +/*
10.6074 +* timer.js
10.6075 +* implementation provided by Steven Parkes
10.6076 +*/
10.6077 +
10.6078 +//private
10.6079 +var $timers = [],
10.6080 + EVENT_LOOP_RUNNING = false;
10.6081 +
10.6082 +$timers.lock = function(fn){
10.6083 + Envjs.sync(fn)();
10.6084 +};
10.6085 +
10.6086 +//private internal class
10.6087 +var Timer = function(fn, interval){
10.6088 + this.fn = fn;
10.6089 + this.interval = interval;
10.6090 + this.at = Date.now() + interval;
10.6091 + // allows for calling wait() from callbacks
10.6092 + this.running = false;
10.6093 +};
10.6094 +
10.6095 +Timer.prototype.start = function(){};
10.6096 +Timer.prototype.stop = function(){};
10.6097 +
10.6098 +//static
10.6099 +Timer.normalize = function(time) {
10.6100 + time = time*1;
10.6101 + if ( isNaN(time) || time < 0 ) {
10.6102 + time = 0;
10.6103 + }
10.6104 +
10.6105 + if ( EVENT_LOOP_RUNNING && time < Timer.MIN_TIME ) {
10.6106 + time = Timer.MIN_TIME;
10.6107 + }
10.6108 + return time;
10.6109 +};
10.6110 +// html5 says this should be at least 4, but the parser is using
10.6111 +// a setTimeout for the SAX stuff which messes up the world
10.6112 +Timer.MIN_TIME = /* 4 */ 0;
10.6113 +
10.6114 +/**
10.6115 + * @function setTimeout
10.6116 + * @param {Object} fn
10.6117 + * @param {Object} time
10.6118 + */
10.6119 +setTimeout = function(fn, time){
10.6120 + var num;
10.6121 + time = Timer.normalize(time);
10.6122 + $timers.lock(function(){
10.6123 + num = $timers.length+1;
10.6124 + var tfn;
10.6125 + if (typeof fn == 'string') {
10.6126 + tfn = function() {
10.6127 + try {
10.6128 + // eval in global scope
10.6129 + eval(fn, null);
10.6130 + // } catch (e) {
10.6131 + // console.log('timer error %s %s', fn, e);
10.6132 + } finally {
10.6133 + clearInterval(num);
10.6134 + }
10.6135 + };
10.6136 + } else {
10.6137 + tfn = function() {
10.6138 + try {
10.6139 + fn();
10.6140 + // } catch (e) {
10.6141 + // console.log('timer error %s %s', fn, e);
10.6142 + } finally {
10.6143 + clearInterval(num);
10.6144 + }
10.6145 + };
10.6146 + }
10.6147 + //console.log("Creating timer number %s", num);
10.6148 + $timers[num] = new Timer(tfn, time);
10.6149 + $timers[num].start();
10.6150 + });
10.6151 + return num;
10.6152 +};
10.6153 +
10.6154 +/**
10.6155 + * @function setInterval
10.6156 + * @param {Object} fn
10.6157 + * @param {Object} time
10.6158 + */
10.6159 +setInterval = function(fn, time){
10.6160 + //console.log('setting interval %s %s', time, fn.toString().substring(0,64));
10.6161 + time = Timer.normalize(time);
10.6162 + if ( time < 10 ) {
10.6163 + time = 10;
10.6164 + }
10.6165 + if (typeof fn == 'string') {
10.6166 + var fnstr = fn;
10.6167 + fn = function() {
10.6168 + eval(fnstr);
10.6169 + };
10.6170 + }
10.6171 + var num;
10.6172 + $timers.lock(function(){
10.6173 + num = $timers.length+1;
10.6174 + //Envjs.debug("Creating timer number "+num);
10.6175 + $timers[num] = new Timer(fn, time);
10.6176 + $timers[num].start();
10.6177 + });
10.6178 + return num;
10.6179 +};
10.6180 +
10.6181 +/**
10.6182 + * clearInterval
10.6183 + * @param {Object} num
10.6184 + */
10.6185 +clearInterval = clearTimeout = function(num){
10.6186 + //console.log("clearing interval "+num);
10.6187 + $timers.lock(function(){
10.6188 + if ( $timers[num] ) {
10.6189 + $timers[num].stop();
10.6190 + delete $timers[num];
10.6191 + }
10.6192 + });
10.6193 +};
10.6194 +
10.6195 +// wait === null/undefined: execute any timers as they fire,
10.6196 +// waiting until there are none left
10.6197 +// wait(n) (n > 0): execute any timers as they fire until there
10.6198 +// are none left waiting at least n ms but no more, even if there
10.6199 +// are future events/current threads
10.6200 +// wait(0): execute any immediately runnable timers and return
10.6201 +// wait(-n): keep sleeping until the next event is more than n ms
10.6202 +// in the future
10.6203 +//
10.6204 +// TODO: make a priority queue ...
10.6205 +
10.6206 +Envjs.wait = function(wait) {
10.6207 + //console.log('wait %s', wait);
10.6208 + var delta_wait,
10.6209 + start = Date.now(),
10.6210 + was_running = EVENT_LOOP_RUNNING;
10.6211 +
10.6212 + if (wait < 0) {
10.6213 + delta_wait = -wait;
10.6214 + wait = 0;
10.6215 + }
10.6216 + EVENT_LOOP_RUNNING = true;
10.6217 + if (wait !== 0 && wait !== null && wait !== undefined){
10.6218 + wait += Date.now();
10.6219 + }
10.6220 +
10.6221 + var earliest,
10.6222 + timer,
10.6223 + sleep,
10.6224 + index,
10.6225 + goal,
10.6226 + now,
10.6227 + nextfn;
10.6228 +
10.6229 + for (;;) {
10.6230 + //console.log('timer loop');
10.6231 + earliest = sleep = goal = now = nextfn = null;
10.6232 + $timers.lock(function(){
10.6233 + for(index in $timers){
10.6234 + if( isNaN(index*0) ) {
10.6235 + continue;
10.6236 + }
10.6237 + timer = $timers[index];
10.6238 + // determine timer with smallest run-at time that is
10.6239 + // not already running
10.6240 + if( !timer.running && ( !earliest || timer.at < earliest.at) ) {
10.6241 + earliest = timer;
10.6242 + }
10.6243 + }
10.6244 + });
10.6245 + //next sleep time
10.6246 + sleep = earliest && earliest.at - Date.now();
10.6247 + if ( earliest && sleep <= 0 ) {
10.6248 + nextfn = earliest.fn;
10.6249 + try {
10.6250 + //console.log('running stack %s', nextfn.toString().substring(0,64));
10.6251 + earliest.running = true;
10.6252 + nextfn();
10.6253 + // } catch (e) {
10.6254 + // console.log('timer error %s %s', nextfn, e);
10.6255 + } finally {
10.6256 + earliest.running = false;
10.6257 + }
10.6258 + goal = earliest.at + earliest.interval;
10.6259 + now = Date.now();
10.6260 + if ( goal < now ) {
10.6261 + earliest.at = now;
10.6262 + } else {
10.6263 + earliest.at = goal;
10.6264 + }
10.6265 + continue;
10.6266 + }
10.6267 +
10.6268 + // bunch of subtle cases here ...
10.6269 + if ( !earliest ) {
10.6270 + // no events in the queue (but maybe XHR will bring in events, so ...
10.6271 + if ( !wait || wait < Date.now() ) {
10.6272 + // Loop ends if there are no events and a wait hasn't been
10.6273 + // requested or has expired
10.6274 + break;
10.6275 + }
10.6276 + // no events, but a wait requested: fall through to sleep
10.6277 + } else {
10.6278 + // there are events in the queue, but they aren't firable now
10.6279 + /*if ( delta_wait && sleep <= delta_wait ) {
10.6280 + //TODO: why waste a check on a tight
10.6281 + // loop if it just falls through?
10.6282 + // if they will happen within the next delta, fall through to sleep
10.6283 + } else */if ( wait === 0 || ( wait > 0 && wait < Date.now () ) ) {
10.6284 + // loop ends even if there are events but the user
10.6285 + // specifcally asked not to wait too long
10.6286 + break;
10.6287 + }
10.6288 + // there are events and the user wants to wait: fall through to sleep
10.6289 + }
10.6290 +
10.6291 + // Related to ajax threads ... hopefully can go away ..
10.6292 + var interval = Envjs.WAIT_INTERVAL || 100;
10.6293 + if ( !sleep || sleep > interval ) {
10.6294 + sleep = interval;
10.6295 + }
10.6296 + //console.log('sleeping %s', sleep);
10.6297 + Envjs.sleep(sleep);
10.6298 +
10.6299 + }
10.6300 + EVENT_LOOP_RUNNING = was_running;
10.6301 +};
10.6302 +
10.6303 +
10.6304 +/**
10.6305 + * @author john resig & the envjs team
10.6306 + * @uri http://www.envjs.com/
10.6307 + * @copyright 2008-2010
10.6308 + * @license MIT
10.6309 + */
10.6310 +//CLOSURE_END
10.6311 +}());
10.6312 +/*
10.6313 + * Pure JavaScript Browser Environment
10.6314 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.6315 + * Copyright 2008-2010 John Resig, under the MIT License
10.6316 + *
10.6317 + * This file simply provides the global definitions we need to
10.6318 + * be able to correctly implement to core browser DOM HTML interfaces.
10.6319 + */
10.6320 +var HTMLDocument,
10.6321 + HTMLElement,
10.6322 + HTMLCollection,
10.6323 + HTMLAnchorElement,
10.6324 + HTMLAreaElement,
10.6325 + HTMLBaseElement,
10.6326 + HTMLQuoteElement,
10.6327 + HTMLBodyElement,
10.6328 + HTMLBRElement,
10.6329 + HTMLButtonElement,
10.6330 + HTMLCanvasElement,
10.6331 + HTMLTableColElement,
10.6332 + HTMLModElement,
10.6333 + HTMLDivElement,
10.6334 + HTMLDListElement,
10.6335 + HTMLFieldSetElement,
10.6336 + HTMLFormElement,
10.6337 + HTMLFrameElement,
10.6338 + HTMLFrameSetElement,
10.6339 + HTMLHeadElement,
10.6340 + HTMLHeadingElement,
10.6341 + HTMLHRElement,
10.6342 + HTMLHtmlElement,
10.6343 + HTMLIFrameElement,
10.6344 + HTMLImageElement,
10.6345 + HTMLInputElement,
10.6346 + HTMLLabelElement,
10.6347 + HTMLLegendElement,
10.6348 + HTMLLIElement,
10.6349 + HTMLLinkElement,
10.6350 + HTMLMapElement,
10.6351 + HTMLMetaElement,
10.6352 + HTMLObjectElement,
10.6353 + HTMLOListElement,
10.6354 + HTMLOptGroupElement,
10.6355 + HTMLOptionElement,
10.6356 + HTMLParagraphElement,
10.6357 + HTMLParamElement,
10.6358 + HTMLPreElement,
10.6359 + HTMLScriptElement,
10.6360 + HTMLSelectElement,
10.6361 + HTMLSpanElement,
10.6362 + HTMLStyleElement,
10.6363 + HTMLTableElement,
10.6364 + HTMLTableSectionElement,
10.6365 + HTMLTableCellElement,
10.6366 + HTMLTableDataCellElement,
10.6367 + HTMLTableHeaderCellElement,
10.6368 + HTMLTableRowElement,
10.6369 + HTMLTextAreaElement,
10.6370 + HTMLTitleElement,
10.6371 + HTMLUListElement,
10.6372 + HTMLUnknownElement,
10.6373 + Image,
10.6374 + Option,
10.6375 + __loadImage__,
10.6376 + __loadLink__;
10.6377 +
10.6378 +/*
10.6379 + * Envjs html.1.2.13
10.6380 + * Pure JavaScript Browser Environment
10.6381 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.6382 + * Copyright 2008-2010 John Resig, under the MIT License
10.6383 + */
10.6384 +
10.6385 +//CLOSURE_START
10.6386 +(function(){
10.6387 +
10.6388 +
10.6389 +
10.6390 +
10.6391 +
10.6392 +/**
10.6393 + * @author ariel flesler
10.6394 + * http://flesler.blogspot.com/2008/11/fast-trim-function-for-javascript.html
10.6395 + * @param {Object} str
10.6396 + */
10.6397 +function __trim__( str ){
10.6398 + return (str || "").replace( /^\s+|\s+$/g, "" );
10.6399 +}
10.6400 +
10.6401 +
10.6402 +/**
10.6403 + * @author john resig
10.6404 + */
10.6405 +// Helper method for extending one object with another.
10.6406 +function __extend__(a,b) {
10.6407 + for ( var i in b ) {
10.6408 + var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
10.6409 + if ( g || s ) {
10.6410 + if ( g ) { a.__defineGetter__(i, g); }
10.6411 + if ( s ) { a.__defineSetter__(i, s); }
10.6412 + } else {
10.6413 + a[i] = b[i];
10.6414 + }
10.6415 + } return a;
10.6416 +}
10.6417 +
10.6418 +/**
10.6419 + * @author john resig
10.6420 + */
10.6421 +//from jQuery
10.6422 +function __setArray__( target, array ) {
10.6423 + // Resetting the length to 0, then using the native Array push
10.6424 + // is a super-fast way to populate an object with array-like properties
10.6425 + target.length = 0;
10.6426 + Array.prototype.push.apply( target, array );
10.6427 +}
10.6428 +
10.6429 +/**
10.6430 + * @class HTMLDocument
10.6431 + * The Document interface represents the entire HTML or XML document.
10.6432 + * Conceptually, it is the root of the document tree, and provides
10.6433 + * the primary access to the document's data.
10.6434 + *
10.6435 + * @extends Document
10.6436 + */
10.6437 +HTMLDocument = function(implementation, ownerWindow, referrer) {
10.6438 + Document.apply(this, arguments);
10.6439 + this.referrer = referrer || '';
10.6440 + this.baseURI = "about:blank";
10.6441 + this.ownerWindow = ownerWindow;
10.6442 +};
10.6443 +
10.6444 +HTMLDocument.prototype = new Document();
10.6445 +
10.6446 +__extend__(HTMLDocument.prototype, {
10.6447 + createElement: function(tagName){
10.6448 + var node;
10.6449 + tagName = tagName.toUpperCase();
10.6450 + // create Element specifying 'this' as ownerDocument
10.6451 + // This is an html document so we need to use explicit interfaces per the
10.6452 + //TODO: would be much faster as a big switch
10.6453 + switch(tagName){
10.6454 + case "A":
10.6455 + node = new HTMLAnchorElement(this);break;
10.6456 + case "AREA":
10.6457 + node = new HTMLAreaElement(this);break;
10.6458 + case "BASE":
10.6459 + node = new HTMLBaseElement(this);break;
10.6460 + case "BLOCKQUOTE":
10.6461 + node = new HTMLQuoteElement(this);break;
10.6462 + case "CANVAS":
10.6463 + node = new HTMLCanvasElement(this);break;
10.6464 + case "Q":
10.6465 + node = new HTMLQuoteElement(this);break;
10.6466 + case "BODY":
10.6467 + node = new HTMLBodyElement(this);break;
10.6468 + case "BR":
10.6469 + node = new HTMLBRElement(this);break;
10.6470 + case "BUTTON":
10.6471 + node = new HTMLButtonElement(this);break;
10.6472 + case "CAPTION":
10.6473 + node = new HTMLElement(this);break;
10.6474 + case "COL":
10.6475 + node = new HTMLTableColElement(this);break;
10.6476 + case "COLGROUP":
10.6477 + node = new HTMLTableColElement(this);break;
10.6478 + case "DEL":
10.6479 + node = new HTMLModElement(this);break;
10.6480 + case "INS":
10.6481 + node = new HTMLModElement(this);break;
10.6482 + case "DIV":
10.6483 + node = new HTMLDivElement(this);break;
10.6484 + case "DL":
10.6485 + node = new HTMLDListElement(this);break;
10.6486 + case "DT":
10.6487 + node = new HTMLElement(this); break;
10.6488 + case "FIELDSET":
10.6489 + node = new HTMLFieldSetElement(this);break;
10.6490 + case "FORM":
10.6491 + node = new HTMLFormElement(this);break;
10.6492 + case "FRAME":
10.6493 + node = new HTMLFrameElement(this);break;
10.6494 + case "H1":
10.6495 + node = new HTMLHeadingElement(this);break;
10.6496 + case "H2":
10.6497 + node = new HTMLHeadingElement(this);break;
10.6498 + case "H3":
10.6499 + node = new HTMLHeadingElement(this);break;
10.6500 + case "H4":
10.6501 + node = new HTMLHeadingElement(this);break;
10.6502 + case "H5":
10.6503 + node = new HTMLHeadingElement(this);break;
10.6504 + case "H6":
10.6505 + node = new HTMLHeadingElement(this);break;
10.6506 + case "HEAD":
10.6507 + node = new HTMLHeadElement(this);break;
10.6508 + case "HR":
10.6509 + node = new HTMLHRElement(this);break;
10.6510 + case "HTML":
10.6511 + node = new HTMLHtmlElement(this);break;
10.6512 + case "IFRAME":
10.6513 + node = new HTMLIFrameElement(this);break;
10.6514 + case "IMG":
10.6515 + node = new HTMLImageElement(this);break;
10.6516 + case "INPUT":
10.6517 + node = new HTMLInputElement(this);break;
10.6518 + case "LABEL":
10.6519 + node = new HTMLLabelElement(this);break;
10.6520 + case "LEGEND":
10.6521 + node = new HTMLLegendElement(this);break;
10.6522 + case "LI":
10.6523 + node = new HTMLLIElement(this);break;
10.6524 + case "LINK":
10.6525 + node = new HTMLLinkElement(this);break;
10.6526 + case "MAP":
10.6527 + node = new HTMLMapElement(this);break;
10.6528 + case "META":
10.6529 + node = new HTMLMetaElement(this);break;
10.6530 + case "NOSCRIPT":
10.6531 + node = new HTMLElement(this);break;
10.6532 + case "OBJECT":
10.6533 + node = new HTMLObjectElement(this);break;
10.6534 + case "OPTGROUP":
10.6535 + node = new HTMLOptGroupElement(this);break;
10.6536 + case "OL":
10.6537 + node = new HTMLOListElement(this); break;
10.6538 + case "OPTION":
10.6539 + node = new HTMLOptionElement(this);break;
10.6540 + case "P":
10.6541 + node = new HTMLParagraphElement(this);break;
10.6542 + case "PARAM":
10.6543 + node = new HTMLParamElement(this);break;
10.6544 + case "PRE":
10.6545 + node = new HTMLPreElement(this);break;
10.6546 + case "SCRIPT":
10.6547 + node = new HTMLScriptElement(this);break;
10.6548 + case "SELECT":
10.6549 + node = new HTMLSelectElement(this);break;
10.6550 + case "SMALL":
10.6551 + node = new HTMLElement(this);break;
10.6552 + case "SPAN":
10.6553 + node = new HTMLSpanElement(this);break;
10.6554 + case "STRONG":
10.6555 + node = new HTMLElement(this);break;
10.6556 + case "STYLE":
10.6557 + node = new HTMLStyleElement(this);break;
10.6558 + case "TABLE":
10.6559 + node = new HTMLTableElement(this);break;
10.6560 + case "TBODY":
10.6561 + node = new HTMLTableSectionElement(this);break;
10.6562 + case "TFOOT":
10.6563 + node = new HTMLTableSectionElement(this);break;
10.6564 + case "THEAD":
10.6565 + node = new HTMLTableSectionElement(this);break;
10.6566 + case "TD":
10.6567 + node = new HTMLTableDataCellElement(this);break;
10.6568 + case "TH":
10.6569 + node = new HTMLTableHeaderCellElement(this);break;
10.6570 + case "TEXTAREA":
10.6571 + node = new HTMLTextAreaElement(this);break;
10.6572 + case "TITLE":
10.6573 + node = new HTMLTitleElement(this);break;
10.6574 + case "TR":
10.6575 + node = new HTMLTableRowElement(this);break;
10.6576 + case "UL":
10.6577 + node = new HTMLUListElement(this);break;
10.6578 + default:
10.6579 + node = new HTMLUnknownElement(this);
10.6580 + }
10.6581 + // assign values to properties (and aliases)
10.6582 + node.nodeName = tagName;
10.6583 + return node;
10.6584 + },
10.6585 + createElementNS : function (uri, local) {
10.6586 + //print('createElementNS :'+uri+" "+local);
10.6587 + if(!uri){
10.6588 + return this.createElement(local);
10.6589 + }else if ("http://www.w3.org/1999/xhtml" == uri) {
10.6590 + return this.createElement(local);
10.6591 + } else if ("http://www.w3.org/1998/Math/MathML" == uri) {
10.6592 + return this.createElement(local);
10.6593 + } else {
10.6594 + return Document.prototype.createElementNS.apply(this,[uri, local]);
10.6595 + }
10.6596 + },
10.6597 + get anchors(){
10.6598 + return new HTMLCollection(this.getElementsByTagName('a'));
10.6599 + },
10.6600 + get applets(){
10.6601 + return new HTMLCollection(this.getElementsByTagName('applet'));
10.6602 + },
10.6603 + get documentElement(){
10.6604 + var html = Document.prototype.__lookupGetter__('documentElement').apply(this,[]);
10.6605 + if( html === null){
10.6606 + html = this.createElement('html');
10.6607 + this.appendChild(html);
10.6608 + html.appendChild(this.createElement('head'));
10.6609 + html.appendChild(this.createElement('body'));
10.6610 + }
10.6611 + return html;
10.6612 + },
10.6613 + //document.head is non-standard
10.6614 + get head(){
10.6615 + //console.log('get head');
10.6616 + if (!this.documentElement) {
10.6617 + this.appendChild(this.createElement('html'));
10.6618 + }
10.6619 + var element = this.documentElement,
10.6620 + length = element.childNodes.length,
10.6621 + i;
10.6622 + //check for the presence of the head element in this html doc
10.6623 + for(i=0;i<length;i++){
10.6624 + if(element.childNodes[i].nodeType === Node.ELEMENT_NODE){
10.6625 + if(element.childNodes[i].tagName.toLowerCase() === 'head'){
10.6626 + return element.childNodes[i];
10.6627 + }
10.6628 + }
10.6629 + }
10.6630 + //no head? ugh bad news html.. I guess we'll force the issue?
10.6631 + var head = element.appendChild(this.createElement('head'));
10.6632 + return head;
10.6633 + },
10.6634 + get title(){
10.6635 + //console.log('get title');
10.6636 + if (!this.documentElement) {
10.6637 + this.appendChild(this.createElement('html'));
10.6638 + }
10.6639 + var title,
10.6640 + head = this.head,
10.6641 + length = head.childNodes.length,
10.6642 + i;
10.6643 + //check for the presence of the title element in this head element
10.6644 + for(i=0;i<length;i++){
10.6645 + if(head.childNodes[i].nodeType === Node.ELEMENT_NODE){
10.6646 + if(head.childNodes[i].tagName.toLowerCase() === 'title'){
10.6647 + return head.childNodes[i].textContent;
10.6648 + }
10.6649 + }
10.6650 + }
10.6651 + //no title? ugh bad news html.. I guess we'll force the issue?
10.6652 + title = head.appendChild(this.createElement('title'));
10.6653 + return title.appendChild(this.createTextNode('Untitled Document')).nodeValue;
10.6654 + },
10.6655 + set title(titleStr){
10.6656 + //console.log('set title %s', titleStr);
10.6657 + if (!this.documentElement) {
10.6658 + this.appendChild(this.createElement('html'));
10.6659 + }
10.6660 + var title = this.title;
10.6661 + title.textContent = titleStr;
10.6662 + },
10.6663 +
10.6664 + get body(){
10.6665 + //console.log('get body');
10.6666 + if (!this.documentElement) {
10.6667 + this.appendChild(this.createElement('html'));
10.6668 + }
10.6669 + var body,
10.6670 + element = this.documentElement,
10.6671 + length = element.childNodes.length,
10.6672 + i;
10.6673 + //check for the presence of the head element in this html doc
10.6674 + for(i=0;i<length;i++){
10.6675 + if(element.childNodes[i].nodeType === Node.ELEMENT_NODE){
10.6676 + if(element.childNodes[i].tagName.toLowerCase() === 'body'){
10.6677 + return element.childNodes[i];
10.6678 + }
10.6679 + }
10.6680 + }
10.6681 + //no head? ugh bad news html.. I guess we'll force the issue?
10.6682 + return element.appendChild(this.createElement('body'));
10.6683 + },
10.6684 + set body(x){console.log('set body');/**in firefox this is a benevolent do nothing*/},
10.6685 + get cookie(){
10.6686 + return Envjs.getCookies(this.location+'');
10.6687 + },
10.6688 + set cookie(cookie){
10.6689 + return Envjs.setCookie(this.location+'', cookie);
10.6690 + },
10.6691 +
10.6692 + /**
10.6693 + * document.location
10.6694 + *
10.6695 + * should be identical to window.location
10.6696 + *
10.6697 + * HTML5:
10.6698 + * http://dev.w3.org/html5/spec/Overview.html#the-location-interface
10.6699 + *
10.6700 + * Mozilla MDC:
10.6701 + * https://developer.mozilla.org/en/DOM/document.location
10.6702 + *
10.6703 + */
10.6704 + get location() {
10.6705 + if (this.ownerWindow) {
10.6706 + return this.ownerWindow.location;
10.6707 + } else {
10.6708 + return this.baseURI;
10.6709 + }
10.6710 + },
10.6711 + set location(url) {
10.6712 + this.baseURI = url;
10.6713 + if (this.ownerWindow) {
10.6714 + this.ownerWindow.location = url;
10.6715 + }
10.6716 + },
10.6717 +
10.6718 + /**
10.6719 + * document.URL (read-only)
10.6720 + *
10.6721 + * HTML DOM Level 2:
10.6722 + * http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-46183437
10.6723 + *
10.6724 + * HTML5:
10.6725 + * http://dev.w3.org/html5/spec/Overview.html#dom-document-url
10.6726 + *
10.6727 + * Mozilla MDC:
10.6728 + * https://developer.mozilla.org/en/DOM/document.URL
10.6729 + */
10.6730 + get URL() {
10.6731 + return this.location;
10.6732 + },
10.6733 + set URL(url) {
10.6734 + this.location = url;
10.6735 + },
10.6736 +
10.6737 + /**
10.6738 + * document.domain
10.6739 + *
10.6740 + * HTML5 Spec:
10.6741 + * http://dev.w3.org/html5/spec/Overview.html#dom-document-domain
10.6742 + *
10.6743 + * Mozilla MDC:
10.6744 + * https://developer.mozilla.org/en/DOM/document.domain
10.6745 + *
10.6746 + */
10.6747 + get domain(){
10.6748 + var HOSTNAME = new RegExp('\/\/([^\:\/]+)'),
10.6749 + matches = HOSTNAME.exec(this.baseURI);
10.6750 + return matches&&matches.length>1?matches[1]:"";
10.6751 + },
10.6752 + set domain(value){
10.6753 + var i,
10.6754 + domainParts = this.domain.split('.').reverse(),
10.6755 + newDomainParts = value.split('.').reverse();
10.6756 + if(newDomainParts.length > 1){
10.6757 + for(i=0;i<newDomainParts.length;i++){
10.6758 + if(!(newDomainParts[i] === domainParts[i])){
10.6759 + return;
10.6760 + }
10.6761 + }
10.6762 + this.baseURI = this.baseURI.replace(domainParts.join('.'), value);
10.6763 + }
10.6764 + },
10.6765 +
10.6766 + get forms(){
10.6767 + return new HTMLCollection(this.getElementsByTagName('form'));
10.6768 + },
10.6769 + get images(){
10.6770 + return new HTMLCollection(this.getElementsByTagName('img'));
10.6771 + },
10.6772 + get lastModified(){
10.6773 + /* TODO */
10.6774 + return this._lastModified;
10.6775 + },
10.6776 + get links(){
10.6777 + return new HTMLCollection(this.getElementsByTagName('a'));
10.6778 + },
10.6779 + getElementsByName : function(name){
10.6780 + //returns a real Array + the NodeList
10.6781 + var retNodes = __extend__([],new NodeList(this, this.documentElement)),
10.6782 + node;
10.6783 + // loop through all Elements
10.6784 + var all = this.getElementsByTagName('*');
10.6785 + for (var i=0; i < all.length; i++) {
10.6786 + node = all[i];
10.6787 + if (node.nodeType === Node.ELEMENT_NODE &&
10.6788 + node.getAttribute('name') == name) {
10.6789 + retNodes.push(node);
10.6790 + }
10.6791 + }
10.6792 + return retNodes;
10.6793 + },
10.6794 + toString: function(){
10.6795 + return "[object HTMLDocument]";
10.6796 + },
10.6797 + get innerHTML(){
10.6798 + return this.documentElement.outerHTML;
10.6799 + }
10.6800 +});
10.6801 +
10.6802 +
10.6803 +
10.6804 +Aspect.around({
10.6805 + target: Node,
10.6806 + method:"appendChild"
10.6807 +}, function(invocation) {
10.6808 + var event,
10.6809 + okay,
10.6810 + node = invocation.proceed(),
10.6811 + doc = node.ownerDocument;
10.6812 +
10.6813 + //console.log('element appended: %s %s %s', node+'', node.nodeName, node.namespaceURI);
10.6814 + if((node.nodeType !== Node.ELEMENT_NODE)){
10.6815 + //for now we are only handling element insertions. probably
10.6816 + //we will need to handle text node changes to script tags and
10.6817 + //changes to src attributes
10.6818 + return node;
10.6819 + }
10.6820 + //console.log('appended html element %s %s %s',
10.6821 + // node.namespaceURI, node.nodeName, node);
10.6822 + switch(doc.parsing){
10.6823 + case true:
10.6824 + //handled by parser if included
10.6825 + //console.log('html document in parse mode');
10.6826 + break;
10.6827 + case false:
10.6828 + switch(node.namespaceURI){
10.6829 + case null:
10.6830 + //fall through
10.6831 + case "":
10.6832 + //fall through
10.6833 + case "http://www.w3.org/1999/xhtml":
10.6834 + switch(node.tagName.toLowerCase()){
10.6835 + case 'style':
10.6836 + document.styleSheets.push(CSSStyleSheet(node));
10.6837 + break;
10.6838 + case 'script':
10.6839 + if((this.nodeName.toLowerCase() === 'head')){
10.6840 + try{
10.6841 + okay = Envjs.loadLocalScript(node, null);
10.6842 + //console.log('loaded script? %s %s', node.uuid, okay);
10.6843 + // only fire event if we actually had something to load
10.6844 + if (node.src && node.src.length > 0){
10.6845 + event = doc.createEvent('HTMLEvents');
10.6846 + event.initEvent( okay ? "load" : "error", false, false );
10.6847 + node.dispatchEvent( event, false );
10.6848 + }
10.6849 + }catch(e){
10.6850 + console.log('error loading html element %s %e', node, e.toString());
10.6851 + }
10.6852 + }
10.6853 + break;
10.6854 + case 'frame':
10.6855 + case 'iframe':
10.6856 + node.contentWindow = { };
10.6857 + node.contentDocument = new HTMLDocument(new DOMImplementation(), node.contentWindow);
10.6858 + node.contentWindow.document = node.contentDocument;
10.6859 + try{
10.6860 + Window;
10.6861 + }catch(e){
10.6862 + node.contentDocument.addEventListener('DOMContentLoaded', function(){
10.6863 + event = node.contentDocument.createEvent('HTMLEvents');
10.6864 + event.initEvent("load", false, false);
10.6865 + node.dispatchEvent( event, false );
10.6866 + });
10.6867 + }
10.6868 + try{
10.6869 + if (node.src && node.src.length > 0){
10.6870 + //console.log("getting content document for (i)frame from %s", node.src);
10.6871 + Envjs.loadFrame(node, Envjs.uri(node.src));
10.6872 + event = node.contentDocument.createEvent('HTMLEvents');
10.6873 + event.initEvent("load", false, false);
10.6874 + node.dispatchEvent( event, false );
10.6875 + }else{
10.6876 + //I dont like this being here:
10.6877 + //TODO: better mix-in strategy so the try/catch isnt required
10.6878 + try{
10.6879 + if(Window){
10.6880 + Envjs.loadFrame(node);
10.6881 + //console.log('src/html/document.js: triggering frame load');
10.6882 + event = node.contentDocument.createEvent('HTMLEvents');
10.6883 + event.initEvent("load", false, false);
10.6884 + node.dispatchEvent( event, false );
10.6885 + }
10.6886 + }catch(e){}
10.6887 + }
10.6888 + }catch(e){
10.6889 + console.log('error loading html element %s %e', node, e.toString());
10.6890 + }
10.6891 + break;
10.6892 +
10.6893 + case 'link':
10.6894 + if (node.href && node.href.length > 0) {
10.6895 + __loadLink__(node, node.href);
10.6896 + }
10.6897 + break;
10.6898 + /*
10.6899 + case 'img':
10.6900 + if (node.src && node.src.length > 0){
10.6901 + // don't actually load anything, so we're "done" immediately:
10.6902 + event = doc.createEvent('HTMLEvents');
10.6903 + event.initEvent("load", false, false);
10.6904 + node.dispatchEvent( event, false );
10.6905 + }
10.6906 + break;
10.6907 + */
10.6908 + case 'option':
10.6909 + node._updateoptions();
10.6910 + break;
10.6911 + default:
10.6912 + if(node.getAttribute('onload')){
10.6913 + console.log('calling attribute onload %s | %s', node.onload, node.tagName);
10.6914 + node.onload();
10.6915 + }
10.6916 + break;
10.6917 + }//switch on name
10.6918 + default:
10.6919 + break;
10.6920 + }//switch on ns
10.6921 + break;
10.6922 + default:
10.6923 + // console.log('element appended: %s %s', node+'', node.namespaceURI);
10.6924 + }//switch on doc.parsing
10.6925 + return node;
10.6926 +
10.6927 +});
10.6928 +
10.6929 +Aspect.around({
10.6930 + target: Node,
10.6931 + method:"removeChild"
10.6932 +}, function(invocation) {
10.6933 + var event,
10.6934 + okay,
10.6935 + node = invocation.proceed(),
10.6936 + doc = node.ownerDocument;
10.6937 + if((node.nodeType !== Node.ELEMENT_NODE)){
10.6938 + //for now we are only handling element insertions. probably we will need
10.6939 + //to handle text node changes to script tags and changes to src
10.6940 + //attributes
10.6941 + if(node.nodeType !== Node.DOCUMENT_NODE && node.uuid){
10.6942 + //console.log('removing event listeners, %s', node, node.uuid);
10.6943 + node.removeEventListener('*', null, null);
10.6944 + }
10.6945 + return node;
10.6946 + }
10.6947 + //console.log('appended html element %s %s %s', node.namespaceURI, node.nodeName, node);
10.6948 +
10.6949 + switch(doc.parsing){
10.6950 + case true:
10.6951 + //handled by parser if included
10.6952 + break;
10.6953 + case false:
10.6954 + switch(node.namespaceURI){
10.6955 + case null:
10.6956 + //fall through
10.6957 + case "":
10.6958 + //fall through
10.6959 + case "http://www.w3.org/1999/xhtml":
10.6960 + //this is interesting dillema since our event engine is
10.6961 + //storing the registered events in an array accessed
10.6962 + //by the uuid property of the node. unforunately this
10.6963 + //means listeners hang out way after(forever ;)) the node
10.6964 + //has been removed and gone out of scope.
10.6965 + //console.log('removing event listeners, %s', node, node.uuid);
10.6966 + node.removeEventListener('*', null, null);
10.6967 + switch(node.tagName.toLowerCase()){
10.6968 + case 'frame':
10.6969 + case 'iframe':
10.6970 + try{
10.6971 + //console.log('removing iframe document');
10.6972 + try{
10.6973 + Envjs.unloadFrame(node);
10.6974 + }catch(e){
10.6975 + console.log('error freeing resources from frame %s', e);
10.6976 + }
10.6977 + node.contentWindow = null;
10.6978 + node.contentDocument = null;
10.6979 + }catch(e){
10.6980 + console.log('error unloading html element %s %e', node, e.toString());
10.6981 + }
10.6982 + break;
10.6983 + default:
10.6984 + break;
10.6985 + }//switch on name
10.6986 + default:
10.6987 + break;
10.6988 + }//switch on ns
10.6989 + break;
10.6990 + default:
10.6991 + console.log('element appended: %s %s', node+'', node.namespaceURI);
10.6992 + }//switch on doc.parsing
10.6993 + return node;
10.6994 +
10.6995 +});
10.6996 +
10.6997 +
10.6998 +
10.6999 +/**
10.7000 + * Named Element Support
10.7001 + *
10.7002 + *
10.7003 + */
10.7004 +
10.7005 +/*
10.7006 + *
10.7007 + * @returns 'name' if the node has a appropriate name
10.7008 + * null if node does not have a name
10.7009 + */
10.7010 +
10.7011 +var __isNamedElement__ = function(node) {
10.7012 + if (node.nodeType !== Node.ELEMENT_NODE) {
10.7013 + return null;
10.7014 + }
10.7015 + var tagName = node.tagName.toLowerCase();
10.7016 + var nodename = null;
10.7017 +
10.7018 + switch (tagName) {
10.7019 + case 'embed':
10.7020 + case 'form':
10.7021 + case 'iframe':
10.7022 + nodename = node.getAttribute('name');
10.7023 + break;
10.7024 + case 'applet':
10.7025 + nodename = node.id;
10.7026 + break;
10.7027 + case 'object':
10.7028 + // TODO: object needs to be 'fallback free'
10.7029 + nodename = node.id;
10.7030 + break;
10.7031 + case 'img':
10.7032 + nodename = node.id;
10.7033 + if (!nodename || ! node.getAttribute('name')) {
10.7034 + nodename = null;
10.7035 + }
10.7036 + break;
10.7037 + }
10.7038 + return (nodename) ? nodename : null;
10.7039 +};
10.7040 +
10.7041 +
10.7042 +var __addNamedMap__ = function(target, node) {
10.7043 + var nodename = __isNamedElement__(node);
10.7044 + if (nodename) {
10.7045 + target.__defineGetter__(nodename, function() {
10.7046 + return node;
10.7047 + });
10.7048 + }
10.7049 +};
10.7050 +
10.7051 +var __removeNamedMap__ = function(target, node) {
10.7052 + if (!node) {
10.7053 + return;
10.7054 + }
10.7055 + var nodename = __isNamedElement__(node);
10.7056 + if (nodename) {
10.7057 + delete target[nodename];
10.7058 + }
10.7059 +};
10.7060 +
10.7061 +/**
10.7062 + * @name HTMLEvents
10.7063 + * @w3c:domlevel 2
10.7064 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
10.7065 + */
10.7066 +
10.7067 +var __eval__ = function(script, node){
10.7068 + if (!script == ""){
10.7069 + // don't assemble environment if no script...
10.7070 + try{
10.7071 + eval(script);
10.7072 + }catch(e){
10.7073 + console.log('error evaluating %s', e);
10.7074 + }
10.7075 + }
10.7076 +};
10.7077 +
10.7078 +var HTMLEvents= function(){};
10.7079 +HTMLEvents.prototype = {
10.7080 + onload: function(event){
10.7081 + __eval__(this.getAttribute('onload')||'', this);
10.7082 + },
10.7083 + onunload: function(event){
10.7084 + __eval__(this.getAttribute('onunload')||'', this);
10.7085 + },
10.7086 + onabort: function(event){
10.7087 + __eval__(this.getAttribute('onabort')||'', this);
10.7088 + },
10.7089 + onerror: function(event){
10.7090 + __eval__(this.getAttribute('onerror')||'', this);
10.7091 + },
10.7092 + onselect: function(event){
10.7093 + __eval__(this.getAttribute('onselect')||'', this);
10.7094 + },
10.7095 + onchange: function(event){
10.7096 + __eval__(this.getAttribute('onchange')||'', this);
10.7097 + },
10.7098 + onsubmit: function(event){
10.7099 + if (__eval__(this.getAttribute('onsubmit')||'', this)) {
10.7100 + this.submit();
10.7101 + }
10.7102 + },
10.7103 + onreset: function(event){
10.7104 + __eval__(this.getAttribute('onreset')||'', this);
10.7105 + },
10.7106 + onfocus: function(event){
10.7107 + __eval__(this.getAttribute('onfocus')||'', this);
10.7108 + },
10.7109 + onblur: function(event){
10.7110 + __eval__(this.getAttribute('onblur')||'', this);
10.7111 + },
10.7112 + onresize: function(event){
10.7113 + __eval__(this.getAttribute('onresize')||'', this);
10.7114 + },
10.7115 + onscroll: function(event){
10.7116 + __eval__(this.getAttribute('onscroll')||'', this);
10.7117 + }
10.7118 +};
10.7119 +
10.7120 +//HTMLDocument, HTMLFramesetElement, HTMLObjectElement
10.7121 +var __load__ = function(element){
10.7122 + var event = new Event('HTMLEvents');
10.7123 + event.initEvent("load", false, false);
10.7124 + element.dispatchEvent(event);
10.7125 + return event;
10.7126 +};
10.7127 +
10.7128 +//HTMLFramesetElement, HTMLBodyElement
10.7129 +var __unload__ = function(element){
10.7130 + var event = new Event('HTMLEvents');
10.7131 + event.initEvent("unload", false, false);
10.7132 + element.dispatchEvent(event);
10.7133 + return event;
10.7134 +};
10.7135 +
10.7136 +//HTMLObjectElement
10.7137 +var __abort__ = function(element){
10.7138 + var event = new Event('HTMLEvents');
10.7139 + event.initEvent("abort", true, false);
10.7140 + element.dispatchEvent(event);
10.7141 + return event;
10.7142 +};
10.7143 +
10.7144 +//HTMLFramesetElement, HTMLObjectElement, HTMLBodyElement
10.7145 +var __error__ = function(element){
10.7146 + var event = new Event('HTMLEvents');
10.7147 + event.initEvent("error", true, false);
10.7148 + element.dispatchEvent(event);
10.7149 + return event;
10.7150 +};
10.7151 +
10.7152 +//HTMLInputElement, HTMLTextAreaElement
10.7153 +var __select__ = function(element){
10.7154 + var event = new Event('HTMLEvents');
10.7155 + event.initEvent("select", true, false);
10.7156 + element.dispatchEvent(event);
10.7157 + return event;
10.7158 +};
10.7159 +
10.7160 +//HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement
10.7161 +var __change__ = function(element){
10.7162 + var event = new Event('HTMLEvents');
10.7163 + event.initEvent("change", true, false);
10.7164 + element.dispatchEvent(event);
10.7165 + return event;
10.7166 +};
10.7167 +
10.7168 +//HtmlFormElement
10.7169 +var __submit__ = function(element){
10.7170 + var event = new Event('HTMLEvents');
10.7171 + event.initEvent("submit", true, true);
10.7172 + element.dispatchEvent(event);
10.7173 + return event;
10.7174 +};
10.7175 +
10.7176 +//HtmlFormElement
10.7177 +var __reset__ = function(element){
10.7178 + var event = new Event('HTMLEvents');
10.7179 + event.initEvent("reset", false, false);
10.7180 + element.dispatchEvent(event);
10.7181 + return event;
10.7182 +};
10.7183 +
10.7184 +//LABEL, INPUT, SELECT, TEXTAREA, and BUTTON
10.7185 +var __focus__ = function(element){
10.7186 + var event = new Event('HTMLEvents');
10.7187 + event.initEvent("focus", false, false);
10.7188 + element.dispatchEvent(event);
10.7189 + return event;
10.7190 +};
10.7191 +
10.7192 +//LABEL, INPUT, SELECT, TEXTAREA, and BUTTON
10.7193 +var __blur__ = function(element){
10.7194 + var event = new Event('HTMLEvents');
10.7195 + event.initEvent("blur", false, false);
10.7196 + element.dispatchEvent(event);
10.7197 + return event;
10.7198 +};
10.7199 +
10.7200 +//Window
10.7201 +var __resize__ = function(element){
10.7202 + var event = new Event('HTMLEvents');
10.7203 + event.initEvent("resize", true, false);
10.7204 + element.dispatchEvent(event);
10.7205 + return event;
10.7206 +};
10.7207 +
10.7208 +//Window
10.7209 +var __scroll__ = function(element){
10.7210 + var event = new Event('HTMLEvents');
10.7211 + event.initEvent("scroll", true, false);
10.7212 + element.dispatchEvent(event);
10.7213 + return event;
10.7214 +};
10.7215 +
10.7216 +/**
10.7217 + * @name KeyboardEvents
10.7218 + * @w3c:domlevel 2
10.7219 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
10.7220 + */
10.7221 +var KeyboardEvents= function(){};
10.7222 +KeyboardEvents.prototype = {
10.7223 + onkeydown: function(event){
10.7224 + __eval__(this.getAttribute('onkeydown')||'', this);
10.7225 + },
10.7226 + onkeypress: function(event){
10.7227 + __eval__(this.getAttribute('onkeypress')||'', this);
10.7228 + },
10.7229 + onkeyup: function(event){
10.7230 + __eval__(this.getAttribute('onkeyup')||'', this);
10.7231 + }
10.7232 +};
10.7233 +
10.7234 +
10.7235 +var __registerKeyboardEventAttrs__ = function(elm){
10.7236 + if(elm.hasAttribute('onkeydown')){
10.7237 + elm.addEventListener('keydown', elm.onkeydown, false);
10.7238 + }
10.7239 + if(elm.hasAttribute('onkeypress')){
10.7240 + elm.addEventListener('keypress', elm.onkeypress, false);
10.7241 + }
10.7242 + if(elm.hasAttribute('onkeyup')){
10.7243 + elm.addEventListener('keyup', elm.onkeyup, false);
10.7244 + }
10.7245 + return elm;
10.7246 +};
10.7247 +
10.7248 +//HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement
10.7249 +var __keydown__ = function(element){
10.7250 + var event = new Event('KeyboardEvents');
10.7251 + event.initEvent("keydown", false, false);
10.7252 + element.dispatchEvent(event);
10.7253 +};
10.7254 +
10.7255 +//HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement
10.7256 +var __keypress__ = function(element){
10.7257 + var event = new Event('KeyboardEvents');
10.7258 + event.initEvent("keypress", false, false);
10.7259 + element.dispatchEvent(event);
10.7260 +};
10.7261 +
10.7262 +//HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement
10.7263 +var __keyup__ = function(element){
10.7264 + var event = new Event('KeyboardEvents');
10.7265 + event.initEvent("keyup", false, false);
10.7266 + element.dispatchEvent(event);
10.7267 +};
10.7268 +
10.7269 +/**
10.7270 + * @name MaouseEvents
10.7271 + * @w3c:domlevel 2
10.7272 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
10.7273 + */
10.7274 +var MouseEvents= function(){};
10.7275 +MouseEvents.prototype = {
10.7276 + onclick: function(event){
10.7277 + __eval__(this.getAttribute('onclick')||'', this);
10.7278 + },
10.7279 + ondblclick: function(event){
10.7280 + __eval__(this.getAttribute('ondblclick')||'', this);
10.7281 + },
10.7282 + onmousedown: function(event){
10.7283 + __eval__(this.getAttribute('onmousedown')||'', this);
10.7284 + },
10.7285 + onmousemove: function(event){
10.7286 + __eval__(this.getAttribute('onmousemove')||'', this);
10.7287 + },
10.7288 + onmouseout: function(event){
10.7289 + __eval__(this.getAttribute('onmouseout')||'', this);
10.7290 + },
10.7291 + onmouseover: function(event){
10.7292 + __eval__(this.getAttribute('onmouseover')||'', this);
10.7293 + },
10.7294 + onmouseup: function(event){
10.7295 + __eval__(this.getAttribute('onmouseup')||'', this);
10.7296 + }
10.7297 +};
10.7298 +
10.7299 +var __registerMouseEventAttrs__ = function(elm){
10.7300 + if(elm.hasAttribute('onclick')){
10.7301 + elm.addEventListener('click', elm.onclick, false);
10.7302 + }
10.7303 + if(elm.hasAttribute('ondblclick')){
10.7304 + elm.addEventListener('dblclick', elm.ondblclick, false);
10.7305 + }
10.7306 + if(elm.hasAttribute('onmousedown')){
10.7307 + elm.addEventListener('mousedown', elm.onmousedown, false);
10.7308 + }
10.7309 + if(elm.hasAttribute('onmousemove')){
10.7310 + elm.addEventListener('mousemove', elm.onmousemove, false);
10.7311 + }
10.7312 + if(elm.hasAttribute('onmouseout')){
10.7313 + elm.addEventListener('mouseout', elm.onmouseout, false);
10.7314 + }
10.7315 + if(elm.hasAttribute('onmouseover')){
10.7316 + elm.addEventListener('mouseover', elm.onmouseover, false);
10.7317 + }
10.7318 + if(elm.hasAttribute('onmouseup')){
10.7319 + elm.addEventListener('mouseup', elm.onmouseup, false);
10.7320 + }
10.7321 + return elm;
10.7322 +};
10.7323 +
10.7324 +
10.7325 +var __click__ = function(element){
10.7326 + var event = new Event('MouseEvents');
10.7327 + event.initEvent("click", true, true, null, 0,
10.7328 + 0, 0, 0, 0, false, false, false,
10.7329 + false, null, null);
10.7330 + element.dispatchEvent(event);
10.7331 +};
10.7332 +var __mousedown__ = function(element){
10.7333 + var event = new Event('MouseEvents');
10.7334 + event.initEvent("mousedown", true, true, null, 0,
10.7335 + 0, 0, 0, 0, false, false, false,
10.7336 + false, null, null);
10.7337 + element.dispatchEvent(event);
10.7338 +};
10.7339 +var __mouseup__ = function(element){
10.7340 + var event = new Event('MouseEvents');
10.7341 + event.initEvent("mouseup", true, true, null, 0,
10.7342 + 0, 0, 0, 0, false, false, false,
10.7343 + false, null, null);
10.7344 + element.dispatchEvent(event);
10.7345 +};
10.7346 +var __mouseover__ = function(element){
10.7347 + var event = new Event('MouseEvents');
10.7348 + event.initEvent("mouseover", true, true, null, 0,
10.7349 + 0, 0, 0, 0, false, false, false,
10.7350 + false, null, null);
10.7351 + element.dispatchEvent(event);
10.7352 +};
10.7353 +var __mousemove__ = function(element){
10.7354 + var event = new Event('MouseEvents');
10.7355 + event.initEvent("mousemove", true, true, null, 0,
10.7356 + 0, 0, 0, 0, false, false, false,
10.7357 + false, null, null);
10.7358 + element.dispatchEvent(event);
10.7359 +};
10.7360 +var __mouseout__ = function(element){
10.7361 + var event = new Event('MouseEvents');
10.7362 + event.initEvent("mouseout", true, true, null, 0,
10.7363 + 0, 0, 0, 0, false, false, false,
10.7364 + false, null, null);
10.7365 + element.dispatchEvent(event);
10.7366 +};
10.7367 +
10.7368 +/**
10.7369 + * HTMLElement - DOM Level 2
10.7370 + */
10.7371 +
10.7372 +
10.7373 +/* Hack for http://www.prototypejs.org/
10.7374 + *
10.7375 + * Prototype 1.6 (the library) creates a new global Element, which causes
10.7376 + * envjs to use the wrong Element.
10.7377 + *
10.7378 + * http://envjs.lighthouseapp.com/projects/21590/tickets/108-prototypejs-wont-load-due-it-clobbering-element
10.7379 + *
10.7380 + * Options:
10.7381 + * (1) Rename the dom/element to something else
10.7382 + * rejected: been done before. people want Element.
10.7383 + * (2) merge dom+html and not export Element to global namespace
10.7384 + * (meaning we would use a local var Element in a closure, so prototype
10.7385 + * can do what ever it wants)
10.7386 + * rejected: want dom and html separate
10.7387 + * (3) use global namespace (put everything under Envjs = {})
10.7388 + * rejected: massive change
10.7389 + * (4) use commonjs modules (similar to (3) in spirit)
10.7390 + * rejected: massive change
10.7391 + *
10.7392 + * or
10.7393 + *
10.7394 + * (5) take a reference to Element during initial loading ("compile
10.7395 + * time"), and use the reference instead of "Element". That's
10.7396 + * what the next line does. We use __DOMElement__ if we need to
10.7397 + * reference the parent class. Only this file explcity uses
10.7398 + * Element so this should work, and is the most minimal change I
10.7399 + * could think of with no external API changes.
10.7400 + *
10.7401 + */
10.7402 +var __DOMElement__ = Element;
10.7403 +
10.7404 +HTMLElement = function(ownerDocument) {
10.7405 + __DOMElement__.apply(this, arguments);
10.7406 +};
10.7407 +
10.7408 +HTMLElement.prototype = new Element();
10.7409 +__extend__(HTMLElement.prototype, HTMLEvents.prototype);
10.7410 +__extend__(HTMLElement.prototype, {
10.7411 + get className() {
10.7412 + return this.getAttribute("class")||'';
10.7413 + },
10.7414 + set className(value) {
10.7415 + return this.setAttribute("class",__trim__(value));
10.7416 + },
10.7417 + get dir() {
10.7418 + return this.getAttribute("dir")||"ltr";
10.7419 + },
10.7420 + set dir(val) {
10.7421 + return this.setAttribute("dir",val);
10.7422 + },
10.7423 + get id(){
10.7424 + return this.getAttribute('id');
10.7425 + },
10.7426 + set id(id){
10.7427 + this.setAttribute('id', id);
10.7428 + },
10.7429 + get innerHTML(){
10.7430 + var ret = "",
10.7431 + i;
10.7432 +
10.7433 + // create string containing the concatenation of the string
10.7434 + // values of each child
10.7435 + for (i=0; i < this.childNodes.length; i++) {
10.7436 + if(this.childNodes[i]){
10.7437 + if(this.childNodes[i].nodeType === Node.ELEMENT_NODE){
10.7438 + ret += this.childNodes[i].xhtml;
10.7439 + } else if (this.childNodes[i].nodeType === Node.TEXT_NODE && i>0 &&
10.7440 + this.childNodes[i-1].nodeType === Node.TEXT_NODE){
10.7441 + //add a single space between adjacent text nodes
10.7442 + ret += " "+this.childNodes[i].xml;
10.7443 + }else{
10.7444 + ret += this.childNodes[i].xml;
10.7445 + }
10.7446 + }
10.7447 + }
10.7448 + return ret;
10.7449 + },
10.7450 + get lang() {
10.7451 + return this.getAttribute("lang");
10.7452 + },
10.7453 + set lang(val) {
10.7454 + return this.setAttribute("lang",val);
10.7455 + },
10.7456 + get offsetHeight(){
10.7457 + return Number((this.style.height || '').replace("px",""));
10.7458 + },
10.7459 + get offsetWidth(){
10.7460 + return Number((this.style.width || '').replace("px",""));
10.7461 + },
10.7462 + offsetLeft: 0,
10.7463 + offsetRight: 0,
10.7464 + get offsetParent(){
10.7465 + /* TODO */
10.7466 + return;
10.7467 + },
10.7468 + set offsetParent(element){
10.7469 + /* TODO */
10.7470 + return;
10.7471 + },
10.7472 + scrollHeight: 0,
10.7473 + scrollWidth: 0,
10.7474 + scrollLeft: 0,
10.7475 + scrollRight: 0,
10.7476 + get style(){
10.7477 + return this.getAttribute('style')||'';
10.7478 + },
10.7479 + get title() {
10.7480 + return this.getAttribute("title");
10.7481 + },
10.7482 + set title(value) {
10.7483 + return this.setAttribute("title", value);
10.7484 + },
10.7485 + get tabIndex(){
10.7486 + var tabindex = this.getAttribute('tabindex');
10.7487 + if(tabindex!==null){
10.7488 + return Number(tabindex);
10.7489 + } else {
10.7490 + return 0;
10.7491 + }
10.7492 + },
10.7493 + set tabIndex(value){
10.7494 + if (value === undefined || value === null) {
10.7495 + value = 0;
10.7496 + }
10.7497 + this.setAttribute('tabindex',Number(value));
10.7498 + },
10.7499 + get outerHTML(){
10.7500 + //Not in the specs but I'll leave it here for now.
10.7501 + return this.xhtml;
10.7502 + },
10.7503 + scrollIntoView: function(){
10.7504 + /*TODO*/
10.7505 + return;
10.7506 + },
10.7507 + toString: function(){
10.7508 + return '[object HTMLElement]';
10.7509 + },
10.7510 + get xhtml() {
10.7511 + // HTMLDocument.xhtml is non-standard
10.7512 + // This is exactly like Document.xml except the tagName has to be
10.7513 + // lower cased. I dont like to duplicate this but its really not
10.7514 + // a simple work around between xml and html serialization via
10.7515 + // XMLSerializer (which uppercases html tags) and innerHTML (which
10.7516 + // lowercases tags)
10.7517 +
10.7518 + var ret = "",
10.7519 + ns = "",
10.7520 + name = (this.tagName+"").toLowerCase(),
10.7521 + attrs,
10.7522 + attrstring = "",
10.7523 + i;
10.7524 +
10.7525 + // serialize namespace declarations
10.7526 + if (this.namespaceURI){
10.7527 + if((this === this.ownerDocument.documentElement) ||
10.7528 + (!this.parentNode) ||
10.7529 + (this.parentNode &&
10.7530 + (this.parentNode.namespaceURI !== this.namespaceURI))) {
10.7531 + ns = ' xmlns' + (this.prefix ? (':' + this.prefix) : '') +
10.7532 + '="' + this.namespaceURI + '"';
10.7533 + }
10.7534 + }
10.7535 +
10.7536 + // serialize Attribute declarations
10.7537 + attrs = this.attributes;
10.7538 + for(i=0;i< attrs.length;i++){
10.7539 + attrstring += " "+attrs[i].name+'="'+attrs[i].xml+'"';
10.7540 + }
10.7541 +
10.7542 + if(this.hasChildNodes()){
10.7543 + // serialize this Element
10.7544 + ret += "<" + name + ns + attrstring +">";
10.7545 + for(i=0;i< this.childNodes.length;i++){
10.7546 + ret += this.childNodes[i].xhtml ?
10.7547 + this.childNodes[i].xhtml :
10.7548 + this.childNodes[i].xml;
10.7549 + }
10.7550 + ret += "</" + name + ">";
10.7551 + }else{
10.7552 + switch(name){
10.7553 + case 'script':
10.7554 + ret += "<" + name + ns + attrstring +"></"+name+">";
10.7555 + break;
10.7556 + default:
10.7557 + ret += "<" + name + ns + attrstring +"/>";
10.7558 + }
10.7559 + }
10.7560 +
10.7561 + return ret;
10.7562 + },
10.7563 +
10.7564 + /**
10.7565 + * setAttribute use a dispatch table that other tags can set to
10.7566 + * "listen" to various values being set. The dispatch table
10.7567 + * and registration functions are at the end of the file.
10.7568 + *
10.7569 + */
10.7570 +
10.7571 + setAttribute: function(name, value) {
10.7572 + var result = __DOMElement__.prototype.setAttribute.apply(this, arguments);
10.7573 + __addNamedMap__(this.ownerDocument, this);
10.7574 + var tagname = this.tagName;
10.7575 + var callback = HTMLElement.getAttributeCallback('set', tagname, name);
10.7576 + if (callback) {
10.7577 + callback(this, value);
10.7578 + }
10.7579 + },
10.7580 + setAttributeNS: function(namespaceURI, name, value) {
10.7581 + var result = __DOMElement__.prototype.setAttributeNS.apply(this, arguments);
10.7582 + __addNamedMap__(this.ownerDocument, this);
10.7583 + var tagname = this.tagName;
10.7584 + var callback = HTMLElement.getAttributeCallback('set', tagname, name);
10.7585 + if (callback) {
10.7586 + callback(this, value);
10.7587 + }
10.7588 +
10.7589 + return result;
10.7590 + },
10.7591 + setAttributeNode: function(newnode) {
10.7592 + var result = __DOMElement__.prototype.setAttributeNode.apply(this, arguments);
10.7593 + __addNamedMap__(this.ownerDocument, this);
10.7594 + var tagname = this.tagName;
10.7595 + var callback = HTMLElement.getAttributeCallback('set', tagname, newnode.name);
10.7596 + if (callback) {
10.7597 + callback(this, node.value);
10.7598 + }
10.7599 + return result;
10.7600 + },
10.7601 + setAttributeNodeNS: function(newnode) {
10.7602 + var result = __DOMElement__.prototype.setAttributeNodeNS.apply(this, arguments);
10.7603 + __addNamedMap__(this.ownerDocument, this);
10.7604 + var tagname = this.tagName;
10.7605 + var callback = HTMLElement.getAttributeCallback('set', tagname, newnode.name);
10.7606 + if (callback) {
10.7607 + callback(this, node.value);
10.7608 + }
10.7609 + return result;
10.7610 + },
10.7611 + removeAttribute: function(name) {
10.7612 + __removeNamedMap__(this.ownerDocument, this);
10.7613 + return __DOMElement__.prototype.removeAttribute.apply(this, arguments);
10.7614 + },
10.7615 + removeAttributeNS: function(namespace, localname) {
10.7616 + __removeNamedMap__(this.ownerDocument, this);
10.7617 + return __DOMElement__.prototype.removeAttributeNS.apply(this, arguments);
10.7618 + },
10.7619 + removeAttributeNode: function(name) {
10.7620 + __removeNamedMap__(this.ownerDocument, this);
10.7621 + return __DOMElement__.prototype.removeAttribute.apply(this, arguments);
10.7622 + },
10.7623 + removeChild: function(oldChild) {
10.7624 + __removeNamedMap__(this.ownerDocument, oldChild);
10.7625 + return __DOMElement__.prototype.removeChild.apply(this, arguments);
10.7626 + },
10.7627 + importNode: function(othernode, deep) {
10.7628 + var newnode = __DOMElement__.prototype.importNode.apply(this, arguments);
10.7629 + __addNamedMap__(this.ownerDocument, newnode);
10.7630 + return newnode;
10.7631 + },
10.7632 +
10.7633 + // not actually sure if this is needed or not
10.7634 + replaceNode: function(newchild, oldchild) {
10.7635 + var newnode = __DOMElement__.prototype.replaceNode.apply(this, arguments);
10.7636 + __removeNamedMap__(this.ownerDocument, oldchild);
10.7637 + __addNamedMap__(this.ownerDocument, newnode);
10.7638 + return newnode;
10.7639 + }
10.7640 +});
10.7641 +
10.7642 +
10.7643 +HTMLElement.attributeCallbacks = {};
10.7644 +HTMLElement.registerSetAttribute = function(tag, attrib, callbackfn) {
10.7645 + HTMLElement.attributeCallbacks[tag + ':set:' + attrib] = callbackfn;
10.7646 +};
10.7647 +HTMLElement.registerRemoveAttribute = function(tag, attrib, callbackfn) {
10.7648 + HTMLElement.attributeCallbacks[tag + ':remove:' + attrib] = callbackfn;
10.7649 +};
10.7650 +
10.7651 +/**
10.7652 + * This is really only useful internally
10.7653 + *
10.7654 + */
10.7655 +HTMLElement.getAttributeCallback = function(type, tag, attrib) {
10.7656 + return HTMLElement.attributeCallbacks[tag + ':' + type + ':' + attrib] || null;
10.7657 +};
10.7658 +/*
10.7659 + * HTMLCollection
10.7660 + *
10.7661 + * HTML5 -- 2.7.2.1 HTMLCollection
10.7662 + * http://dev.w3.org/html5/spec/Overview.html#htmlcollection
10.7663 + * http://dev.w3.org/html5/spec/Overview.html#collections
10.7664 + */
10.7665 +HTMLCollection = function(nodelist, type) {
10.7666 +
10.7667 + __setArray__(this, []);
10.7668 + var n;
10.7669 + for (var i=0; i<nodelist.length; i++) {
10.7670 + this[i] = nodelist[i];
10.7671 + n = nodelist[i].name;
10.7672 + if (n) {
10.7673 + this[n] = nodelist[i];
10.7674 + }
10.7675 + n = nodelist[i].id;
10.7676 + if (n) {
10.7677 + this[n] = nodelist[i];
10.7678 + }
10.7679 + }
10.7680 +
10.7681 + this.length = nodelist.length;
10.7682 +};
10.7683 +
10.7684 +HTMLCollection.prototype = {
10.7685 +
10.7686 + item: function (idx) {
10.7687 + return ((idx >= 0) && (idx < this.length)) ? this[idx] : null;
10.7688 + },
10.7689 +
10.7690 + namedItem: function (name) {
10.7691 + return this[name] || null;
10.7692 + },
10.7693 +
10.7694 + toString: function() {
10.7695 + return '[object HTMLCollection]';
10.7696 + }
10.7697 +};
10.7698 +/*
10.7699 + * a set of convenience classes to centralize implementation of
10.7700 + * properties and methods across multiple in-form elements
10.7701 + *
10.7702 + * the hierarchy of related HTML elements and their members is as follows:
10.7703 + *
10.7704 + * Condensed Version
10.7705 + *
10.7706 + * HTMLInputCommon
10.7707 + * * legent (no value attr)
10.7708 + * * fieldset (no value attr)
10.7709 + * * label (no value attr)
10.7710 + * * option (custom value)
10.7711 + * HTMLTypeValueInputs (extends InputCommon)
10.7712 + * * select (custom value)
10.7713 + * * button (just sets value)
10.7714 + * HTMLInputAreaCommon (extends TypeValueIput)
10.7715 + * * input (custom)
10.7716 + * * textarea (just sets value)
10.7717 + *
10.7718 + * -----------------------
10.7719 + * HTMLInputCommon: common to all elements
10.7720 + * .form
10.7721 + *
10.7722 + * <legend>
10.7723 + * [common plus:]
10.7724 + * .align
10.7725 + *
10.7726 + * <fieldset>
10.7727 + * [identical to "legend" plus:]
10.7728 + * .margin
10.7729 + *
10.7730 + *
10.7731 + * ****
10.7732 + *
10.7733 + * <label>
10.7734 + * [common plus:]
10.7735 + * .dataFormatAs
10.7736 + * .htmlFor
10.7737 + * [plus data properties]
10.7738 + *
10.7739 + * <option>
10.7740 + * [common plus:]
10.7741 + * .defaultSelected
10.7742 + * .index
10.7743 + * .label
10.7744 + * .selected
10.7745 + * .text
10.7746 + * .value // unique implementation, not duplicated
10.7747 + * .form // unique implementation, not duplicated
10.7748 + * ****
10.7749 + *
10.7750 + * HTMLTypeValueInputs: common to remaining elements
10.7751 + * [common plus:]
10.7752 + * .name
10.7753 + * .type
10.7754 + * .value
10.7755 + * [plus data properties]
10.7756 + *
10.7757 + *
10.7758 + * <select>
10.7759 + * .length
10.7760 + * .multiple
10.7761 + * .options[]
10.7762 + * .selectedIndex
10.7763 + * .add()
10.7764 + * .remove()
10.7765 + * .item() // unimplemented
10.7766 + * .namedItem() // unimplemented
10.7767 + * [plus ".onchange"]
10.7768 + * [plus focus events]
10.7769 + * [plus data properties]
10.7770 + * [plus ".size"]
10.7771 + *
10.7772 + * <button>
10.7773 + * .dataFormatAs // duplicated from above, oh well....
10.7774 + * [plus ".status", ".createTextRange()"]
10.7775 + *
10.7776 + * ****
10.7777 + *
10.7778 + * HTMLInputAreaCommon: common to remaining elements
10.7779 + * .defaultValue
10.7780 + * .readOnly
10.7781 + * .handleEvent() // unimplemented
10.7782 + * .select()
10.7783 + * .onselect
10.7784 + * [plus ".size"]
10.7785 + * [plus ".status", ".createTextRange()"]
10.7786 + * [plus focus events]
10.7787 + * [plus ".onchange"]
10.7788 + *
10.7789 + * <textarea>
10.7790 + * .cols
10.7791 + * .rows
10.7792 + * .wrap // unimplemented
10.7793 + * .onscroll // unimplemented
10.7794 + *
10.7795 + * <input>
10.7796 + * .alt
10.7797 + * .accept // unimplemented
10.7798 + * .checked
10.7799 + * .complete // unimplemented
10.7800 + * .defaultChecked
10.7801 + * .dynsrc // unimplemented
10.7802 + * .height
10.7803 + * .hspace // unimplemented
10.7804 + * .indeterminate // unimplemented
10.7805 + * .loop // unimplemented
10.7806 + * .lowsrc // unimplemented
10.7807 + * .maxLength
10.7808 + * .src
10.7809 + * .start // unimplemented
10.7810 + * .useMap
10.7811 + * .vspace // unimplemented
10.7812 + * .width
10.7813 + * .onclick
10.7814 + * [plus ".size"]
10.7815 + * [plus ".status", ".createTextRange()"]
10.7816 +
10.7817 + * [data properties] // unimplemented
10.7818 + * .dataFld
10.7819 + * .dataSrc
10.7820 +
10.7821 + * [status stuff] // unimplemented
10.7822 + * .status
10.7823 + * .createTextRange()
10.7824 +
10.7825 + * [focus events]
10.7826 + * .onblur
10.7827 + * .onfocus
10.7828 +
10.7829 + */
10.7830 +
10.7831 +
10.7832 +
10.7833 +var inputElements_dataProperties = {};
10.7834 +var inputElements_status = {};
10.7835 +
10.7836 +var inputElements_onchange = {
10.7837 + onchange: function(event){
10.7838 + __eval__(this.getAttribute('onchange')||'', this);
10.7839 + }
10.7840 +};
10.7841 +
10.7842 +var inputElements_size = {
10.7843 + get size(){
10.7844 + return Number(this.getAttribute('size'));
10.7845 + },
10.7846 + set size(value){
10.7847 + this.setAttribute('size',value);
10.7848 + }
10.7849 +};
10.7850 +
10.7851 +var inputElements_focusEvents = {
10.7852 + blur: function(){
10.7853 + __blur__(this);
10.7854 +
10.7855 + if (this._oldValue != this.value){
10.7856 + var event = document.createEvent("HTMLEvents");
10.7857 + event.initEvent("change", true, true);
10.7858 + this.dispatchEvent( event );
10.7859 + }
10.7860 + },
10.7861 + focus: function(){
10.7862 + __focus__(this);
10.7863 + this._oldValue = this.value;
10.7864 + }
10.7865 +};
10.7866 +
10.7867 +
10.7868 +/*
10.7869 +* HTMLInputCommon - convenience class, not DOM
10.7870 +*/
10.7871 +var HTMLInputCommon = function(ownerDocument) {
10.7872 + HTMLElement.apply(this, arguments);
10.7873 +};
10.7874 +HTMLInputCommon.prototype = new HTMLElement();
10.7875 +__extend__(HTMLInputCommon.prototype, {
10.7876 + get form() {
10.7877 + // parent can be null if element is outside of a form
10.7878 + // or not yet added to the document
10.7879 + var parent = this.parentNode;
10.7880 + while (parent && parent.nodeName.toLowerCase() !== 'form') {
10.7881 + parent = parent.parentNode;
10.7882 + }
10.7883 + return parent;
10.7884 + },
10.7885 + get accessKey(){
10.7886 + return this.getAttribute('accesskey');
10.7887 + },
10.7888 + set accessKey(value){
10.7889 + this.setAttribute('accesskey',value);
10.7890 + },
10.7891 + get access(){
10.7892 + return this.getAttribute('access');
10.7893 + },
10.7894 + set access(value){
10.7895 + this.setAttribute('access', value);
10.7896 + },
10.7897 + get disabled(){
10.7898 + return (this.getAttribute('disabled') === 'disabled');
10.7899 + },
10.7900 + set disabled(value){
10.7901 + this.setAttribute('disabled', (value ? 'disabled' :''));
10.7902 + }
10.7903 +});
10.7904 +
10.7905 +
10.7906 +
10.7907 +
10.7908 +/*
10.7909 +* HTMLTypeValueInputs - convenience class, not DOM
10.7910 +*/
10.7911 +var HTMLTypeValueInputs = function(ownerDocument) {
10.7912 +
10.7913 + HTMLInputCommon.apply(this, arguments);
10.7914 +
10.7915 + this._oldValue = "";
10.7916 +};
10.7917 +HTMLTypeValueInputs.prototype = new HTMLInputCommon();
10.7918 +__extend__(HTMLTypeValueInputs.prototype, inputElements_size);
10.7919 +__extend__(HTMLTypeValueInputs.prototype, inputElements_status);
10.7920 +__extend__(HTMLTypeValueInputs.prototype, inputElements_dataProperties);
10.7921 +__extend__(HTMLTypeValueInputs.prototype, {
10.7922 + get name(){
10.7923 + return this.getAttribute('name')||'';
10.7924 + },
10.7925 + set name(value){
10.7926 + this.setAttribute('name',value);
10.7927 + },
10.7928 +});
10.7929 +
10.7930 +
10.7931 +/*
10.7932 +* HTMLInputAreaCommon - convenience class, not DOM
10.7933 +*/
10.7934 +var HTMLInputAreaCommon = function(ownerDocument) {
10.7935 + HTMLTypeValueInputs.apply(this, arguments);
10.7936 +};
10.7937 +HTMLInputAreaCommon.prototype = new HTMLTypeValueInputs();
10.7938 +__extend__(HTMLInputAreaCommon.prototype, inputElements_focusEvents);
10.7939 +__extend__(HTMLInputAreaCommon.prototype, inputElements_onchange);
10.7940 +__extend__(HTMLInputAreaCommon.prototype, {
10.7941 + get readOnly(){
10.7942 + return (this.getAttribute('readonly')=='readonly');
10.7943 + },
10.7944 + set readOnly(value){
10.7945 + this.setAttribute('readonly', (value ? 'readonly' :''));
10.7946 + },
10.7947 + select:function(){
10.7948 + __select__(this);
10.7949 +
10.7950 + }
10.7951 +});
10.7952 +
10.7953 +
10.7954 +var __updateFormForNamedElement__ = function(node, value) {
10.7955 + if (node.form) {
10.7956 + // to check for ID or NAME attribute too
10.7957 + // not, then nothing to do
10.7958 + node.form._updateElements();
10.7959 + }
10.7960 +};
10.7961 +
10.7962 +/**
10.7963 + * HTMLAnchorElement - DOM Level 2
10.7964 + *
10.7965 + * HTML5: 4.6.1 The a element
10.7966 + * http://dev.w3.org/html5/spec/Overview.html#the-a-element
10.7967 + */
10.7968 +HTMLAnchorElement = function(ownerDocument) {
10.7969 + HTMLElement.apply(this, arguments);
10.7970 +};
10.7971 +HTMLAnchorElement.prototype = new HTMLElement();
10.7972 +__extend__(HTMLAnchorElement.prototype, {
10.7973 + get accessKey() {
10.7974 + return this.getAttribute("accesskey")||'';
10.7975 + },
10.7976 + set accessKey(val) {
10.7977 + return this.setAttribute("accesskey",val);
10.7978 + },
10.7979 + get charset() {
10.7980 + return this.getAttribute("charset")||'';
10.7981 + },
10.7982 + set charset(val) {
10.7983 + return this.setAttribute("charset",val);
10.7984 + },
10.7985 + get coords() {
10.7986 + return this.getAttribute("coords")||'';
10.7987 + },
10.7988 + set coords(val) {
10.7989 + return this.setAttribute("coords",val);
10.7990 + },
10.7991 + get href() {
10.7992 + var link = this.getAttribute('href');
10.7993 + if (!link) {
10.7994 + return '';
10.7995 + }
10.7996 + return Envjs.uri(link,
10.7997 + this.ownerDocument.location.toString());
10.7998 + },
10.7999 + set href(val) {
10.8000 + return this.setAttribute("href", val);
10.8001 + },
10.8002 + get hreflang() {
10.8003 + return this.getAttribute("hreflang")||'';
10.8004 + },
10.8005 + set hreflang(val) {
10.8006 + this.setAttribute("hreflang",val);
10.8007 + },
10.8008 + get name() {
10.8009 + return this.getAttribute("name")||'';
10.8010 + },
10.8011 + set name(val) {
10.8012 + this.setAttribute("name",val);
10.8013 + },
10.8014 + get rel() {
10.8015 + return this.getAttribute("rel")||'';
10.8016 + },
10.8017 + set rel(val) {
10.8018 + return this.setAttribute("rel", val);
10.8019 + },
10.8020 + get rev() {
10.8021 + return this.getAttribute("rev")||'';
10.8022 + },
10.8023 + set rev(val) {
10.8024 + return this.setAttribute("rev",val);
10.8025 + },
10.8026 + get shape() {
10.8027 + return this.getAttribute("shape")||'';
10.8028 + },
10.8029 + set shape(val) {
10.8030 + return this.setAttribute("shape",val);
10.8031 + },
10.8032 + get target() {
10.8033 + return this.getAttribute("target")||'';
10.8034 + },
10.8035 + set target(val) {
10.8036 + return this.setAttribute("target",val);
10.8037 + },
10.8038 + get type() {
10.8039 + return this.getAttribute("type")||'';
10.8040 + },
10.8041 + set type(val) {
10.8042 + return this.setAttribute("type",val);
10.8043 + },
10.8044 + blur: function() {
10.8045 + __blur__(this);
10.8046 + },
10.8047 + focus: function() {
10.8048 + __focus__(this);
10.8049 + },
10.8050 +
10.8051 + /**
10.8052 + * Unlike other elements, toString returns the href
10.8053 + */
10.8054 + toString: function() {
10.8055 + return this.href;
10.8056 + }
10.8057 +});
10.8058 +
10.8059 +/*
10.8060 + * HTMLAreaElement - DOM Level 2
10.8061 + *
10.8062 + * HTML5: 4.8.13 The area element
10.8063 + * http://dev.w3.org/html5/spec/Overview.html#the-area-element
10.8064 + */
10.8065 +HTMLAreaElement = function(ownerDocument) {
10.8066 + HTMLElement.apply(this, arguments);
10.8067 +};
10.8068 +HTMLAreaElement.prototype = new HTMLElement();
10.8069 +__extend__(HTMLAreaElement.prototype, {
10.8070 + get accessKey(){
10.8071 + return this.getAttribute('accesskey');
10.8072 + },
10.8073 + set accessKey(value){
10.8074 + this.setAttribute('accesskey',value);
10.8075 + },
10.8076 + get alt(){
10.8077 + return this.getAttribute('alt') || '';
10.8078 + },
10.8079 + set alt(value){
10.8080 + this.setAttribute('alt',value);
10.8081 + },
10.8082 + get coords(){
10.8083 + return this.getAttribute('coords');
10.8084 + },
10.8085 + set coords(value){
10.8086 + this.setAttribute('coords',value);
10.8087 + },
10.8088 + get href(){
10.8089 + return this.getAttribute('href') || '';
10.8090 + },
10.8091 + set href(value){
10.8092 + this.setAttribute('href',value);
10.8093 + },
10.8094 + get noHref(){
10.8095 + return this.hasAttribute('href');
10.8096 + },
10.8097 + get shape(){
10.8098 + //TODO
10.8099 + return 0;
10.8100 + },
10.8101 + /*get tabIndex(){
10.8102 + return this.getAttribute('tabindex');
10.8103 + },
10.8104 + set tabIndex(value){
10.8105 + this.setAttribute('tabindex',value);
10.8106 + },*/
10.8107 + get target(){
10.8108 + return this.getAttribute('target');
10.8109 + },
10.8110 + set target(value){
10.8111 + this.setAttribute('target',value);
10.8112 + },
10.8113 +
10.8114 + /**
10.8115 + * toString like <a>, returns the href
10.8116 + */
10.8117 + toString: function() {
10.8118 + return this.href;
10.8119 + }
10.8120 +});
10.8121 +
10.8122 +
10.8123 +/*
10.8124 + * HTMLBaseElement - DOM Level 2
10.8125 + *
10.8126 + * HTML5: 4.2.3 The base element
10.8127 + * http://dev.w3.org/html5/spec/Overview.html#the-base-element
10.8128 + */
10.8129 +HTMLBaseElement = function(ownerDocument) {
10.8130 + HTMLElement.apply(this, arguments);
10.8131 +};
10.8132 +HTMLBaseElement.prototype = new HTMLElement();
10.8133 +__extend__(HTMLBaseElement.prototype, {
10.8134 + get href(){
10.8135 + return this.getAttribute('href');
10.8136 + },
10.8137 + set href(value){
10.8138 + this.setAttribute('href',value);
10.8139 + },
10.8140 + get target(){
10.8141 + return this.getAttribute('target');
10.8142 + },
10.8143 + set target(value){
10.8144 + this.setAttribute('target',value);
10.8145 + },
10.8146 + toString: function() {
10.8147 + return '[object HTMLBaseElement]';
10.8148 + }
10.8149 +});
10.8150 +
10.8151 +
10.8152 +/*
10.8153 + * HTMLQuoteElement - DOM Level 2
10.8154 + * HTML5: 4.5.5 The blockquote element
10.8155 + * http://dev.w3.org/html5/spec/Overview.html#htmlquoteelement
10.8156 + */
10.8157 +HTMLQuoteElement = function(ownerDocument) {
10.8158 + HTMLElement.apply(this, arguments);
10.8159 +};
10.8160 +__extend__(HTMLQuoteElement.prototype, HTMLElement.prototype);
10.8161 +__extend__(HTMLQuoteElement.prototype, {
10.8162 + /**
10.8163 + * Quoth the spec:
10.8164 + * """
10.8165 + * If the cite attribute is present, it must be a valid URL. To
10.8166 + * obtain the corresponding citation link, the value of the
10.8167 + * attribute must be resolved relative to the element. User agents
10.8168 + * should allow users to follow such citation links.
10.8169 + * """
10.8170 + *
10.8171 + * TODO: normalize
10.8172 + *
10.8173 + */
10.8174 + get cite() {
10.8175 + return this.getAttribute('cite') || '';
10.8176 + },
10.8177 +
10.8178 + set cite(value) {
10.8179 + this.setAttribute('cite', value);
10.8180 + },
10.8181 + toString: function() {
10.8182 + return '[object HTMLQuoteElement]';
10.8183 + }
10.8184 +});
10.8185 +
10.8186 +/*
10.8187 + * HTMLBodyElement - DOM Level 2
10.8188 + * HTML5: http://dev.w3.org/html5/spec/Overview.html#the-body-element-0
10.8189 + */
10.8190 +HTMLBodyElement = function(ownerDocument) {
10.8191 + HTMLElement.apply(this, arguments);
10.8192 +};
10.8193 +HTMLBodyElement.prototype = new HTMLElement();
10.8194 +__extend__(HTMLBodyElement.prototype, {
10.8195 + onload: function(event){
10.8196 + __eval__(this.getAttribute('onload')||'', this);
10.8197 + },
10.8198 + onunload: function(event){
10.8199 + __eval__(this.getAttribute('onunload')||'', this);
10.8200 + },
10.8201 + toString: function() {
10.8202 + return '[object HTMLBodyElement]';
10.8203 + }
10.8204 +});
10.8205 +
10.8206 +/*
10.8207 + * HTMLBRElement
10.8208 + * HTML5: 4.5.3 The hr Element
10.8209 + * http://dev.w3.org/html5/spec/Overview.html#the-br-element
10.8210 + */
10.8211 +HTMLBRElement = function(ownerDocument) {
10.8212 + HTMLElement.apply(this, arguments);
10.8213 +};
10.8214 +
10.8215 +HTMLBRElement.prototype = new HTMLElement();
10.8216 +__extend__(HTMLBRElement.prototype, {
10.8217 +
10.8218 + // no additional properties or elements
10.8219 +
10.8220 + toString: function() {
10.8221 + return '[object HTMLBRElement]';
10.8222 + }
10.8223 +});
10.8224 +
10.8225 +
10.8226 +/*
10.8227 + * HTMLButtonElement - DOM Level 2
10.8228 + *
10.8229 + * HTML5: 4.10.6 The button element
10.8230 + * http://dev.w3.org/html5/spec/Overview.html#the-button-element
10.8231 + */
10.8232 +HTMLButtonElement = function(ownerDocument) {
10.8233 + HTMLTypeValueInputs.apply(this, arguments);
10.8234 +};
10.8235 +HTMLButtonElement.prototype = new HTMLTypeValueInputs();
10.8236 +__extend__(HTMLButtonElement.prototype, inputElements_status);
10.8237 +__extend__(HTMLButtonElement.prototype, {
10.8238 + get dataFormatAs(){
10.8239 + return this.getAttribute('dataFormatAs');
10.8240 + },
10.8241 + set dataFormatAs(value){
10.8242 + this.setAttribute('dataFormatAs',value);
10.8243 + },
10.8244 + get type() {
10.8245 + return this.getAttribute('type') || 'submit';
10.8246 + },
10.8247 + set type(value) {
10.8248 + this.setAttribute('type', value);
10.8249 + },
10.8250 + get value() {
10.8251 + return this.getAttribute('value') || '';
10.8252 + },
10.8253 + set value(value) {
10.8254 + this.setAttribute('value', value);
10.8255 + },
10.8256 + toString: function() {
10.8257 + return '[object HTMLButtonElement]';
10.8258 + }
10.8259 +});
10.8260 +
10.8261 +// Named Element Support
10.8262 +HTMLElement.registerSetAttribute('BUTTON', 'name',
10.8263 + __updateFormForNamedElement__);
10.8264 +
10.8265 +/*
10.8266 + * HTMLCanvasElement - DOM Level 2
10.8267 + * HTML5: 4.8.11 The canvas element
10.8268 + * http://dev.w3.org/html5/spec/Overview.html#the-canvas-element
10.8269 + */
10.8270 +
10.8271 +
10.8272 +/*
10.8273 + * This is a "non-Abstract Base Class". For an implmentation that actually
10.8274 + * did something, all these methods would need to over-written
10.8275 + */
10.8276 +CanvasRenderingContext2D = function() {
10.8277 + // NOP
10.8278 +};
10.8279 +
10.8280 +var nullfunction = function() {};
10.8281 +
10.8282 +CanvasRenderingContext2D.prototype = {
10.8283 + addColorStop: nullfunction,
10.8284 + arc: nullfunction,
10.8285 + beginPath: nullfunction,
10.8286 + bezierCurveTo: nullfunction,
10.8287 + clearRect: nullfunction,
10.8288 + clip: nullfunction,
10.8289 + closePath: nullfunction,
10.8290 + createLinearGradient: nullfunction,
10.8291 + createPattern: nullfunction,
10.8292 + createRadialGradient: nullfunction,
10.8293 + drawImage: nullfunction,
10.8294 + fill: nullfunction,
10.8295 + fillRect: nullfunction,
10.8296 + lineTo: nullfunction,
10.8297 + moveTo: nullfunction,
10.8298 + quadraticCurveTo: nullfunction,
10.8299 + rect: nullfunction,
10.8300 + restore: nullfunction,
10.8301 + rotate: nullfunction,
10.8302 + save: nullfunction,
10.8303 + scale: nullfunction,
10.8304 + setTranform: nullfunction,
10.8305 + stroke: nullfunction,
10.8306 + strokeRect: nullfunction,
10.8307 + transform: nullfunction,
10.8308 + translate: nullfunction,
10.8309 +
10.8310 + toString: function() {
10.8311 + return '[object CanvasRenderingContext2D]';
10.8312 + }
10.8313 +};
10.8314 +
10.8315 +HTMLCanvasElement = function(ownerDocument) {
10.8316 + HTMLElement.apply(this, arguments);
10.8317 +};
10.8318 +HTMLCanvasElement.prototype = new HTMLElement();
10.8319 +__extend__(HTMLCanvasElement.prototype, {
10.8320 +
10.8321 + getContext: function(ctxtype) {
10.8322 + if (ctxtype === '2d') {
10.8323 + return new CanvasRenderingContext2D();
10.8324 + }
10.8325 + throw new Error("Unknown context type of '" + ctxtype + '"');
10.8326 + },
10.8327 +
10.8328 + get height(){
10.8329 + return Number(this.getAttribute('height')|| 150);
10.8330 + },
10.8331 + set height(value){
10.8332 + this.setAttribute('height', value);
10.8333 + },
10.8334 +
10.8335 + get width(){
10.8336 + return Number(this.getAttribute('width')|| 300);
10.8337 + },
10.8338 + set width(value){
10.8339 + this.setAttribute('width', value);
10.8340 + },
10.8341 +
10.8342 + toString: function() {
10.8343 + return '[object HTMLCanvasElement]';
10.8344 + }
10.8345 +
10.8346 +});
10.8347 +
10.8348 +
10.8349 +/*
10.8350 +* HTMLTableColElement - DOM Level 2
10.8351 +*
10.8352 +* HTML5: 4.9.3 The colgroup element
10.8353 +* http://dev.w3.org/html5/spec/Overview.html#the-colgroup-element
10.8354 +*/
10.8355 +HTMLTableColElement = function(ownerDocument) {
10.8356 + HTMLElement.apply(this, arguments);
10.8357 +};
10.8358 +HTMLTableColElement.prototype = new HTMLElement();
10.8359 +__extend__(HTMLTableColElement.prototype, {
10.8360 + get align(){
10.8361 + return this.getAttribute('align');
10.8362 + },
10.8363 + set align(value){
10.8364 + this.setAttribute('align', value);
10.8365 + },
10.8366 + get ch(){
10.8367 + return this.getAttribute('ch');
10.8368 + },
10.8369 + set ch(value){
10.8370 + this.setAttribute('ch', value);
10.8371 + },
10.8372 + get chOff(){
10.8373 + return this.getAttribute('ch');
10.8374 + },
10.8375 + set chOff(value){
10.8376 + this.setAttribute('ch', value);
10.8377 + },
10.8378 + get span(){
10.8379 + return this.getAttribute('span');
10.8380 + },
10.8381 + set span(value){
10.8382 + this.setAttribute('span', value);
10.8383 + },
10.8384 + get vAlign(){
10.8385 + return this.getAttribute('valign');
10.8386 + },
10.8387 + set vAlign(value){
10.8388 + this.setAttribute('valign', value);
10.8389 + },
10.8390 + get width(){
10.8391 + return this.getAttribute('width');
10.8392 + },
10.8393 + set width(value){
10.8394 + this.setAttribute('width', value);
10.8395 + },
10.8396 + toString: function() {
10.8397 + return '[object HTMLTableColElement]';
10.8398 + }
10.8399 +});
10.8400 +
10.8401 +
10.8402 +/*
10.8403 + * HTMLModElement - DOM Level 2
10.8404 + * http://dev.w3.org/html5/spec/Overview.html#htmlmodelement
10.8405 + */
10.8406 +HTMLModElement = function(ownerDocument) {
10.8407 + HTMLElement.apply(this, arguments);
10.8408 +};
10.8409 +HTMLModElement.prototype = new HTMLElement();
10.8410 +__extend__(HTMLModElement.prototype, {
10.8411 + get cite(){
10.8412 + return this.getAttribute('cite');
10.8413 + },
10.8414 + set cite(value){
10.8415 + this.setAttribute('cite', value);
10.8416 + },
10.8417 + get dateTime(){
10.8418 + return this.getAttribute('datetime');
10.8419 + },
10.8420 + set dateTime(value){
10.8421 + this.setAttribute('datetime', value);
10.8422 + },
10.8423 + toString: function() {
10.8424 + return '[object HTMLModElement]';
10.8425 + }
10.8426 +});
10.8427 +
10.8428 +/*
10.8429 + * HTMLDivElement - DOM Level 2
10.8430 + * HTML5: 4.5.12 The Div Element
10.8431 + * http://dev.w3.org/html5/spec/Overview.html#the-div-element
10.8432 + */
10.8433 +HTMLDivElement = function(ownerDocument) {
10.8434 + HTMLElement.apply(this, arguments);
10.8435 +};
10.8436 +
10.8437 +HTMLDivElement.prototype = new HTMLElement();
10.8438 +__extend__(HTMLDivElement.prototype, {
10.8439 + get align(){
10.8440 + return this.getAttribute('align') || 'left';
10.8441 + },
10.8442 + set align(value){
10.8443 + this.setAttribute('align', value);
10.8444 + },
10.8445 + toString: function() {
10.8446 + return '[object HTMLDivElement]';
10.8447 + }
10.8448 +});
10.8449 +
10.8450 +
10.8451 +/*
10.8452 + * HTMLDListElement
10.8453 + * HTML5: 4.5.7 The dl Element
10.8454 + * http://dev.w3.org/html5/spec/Overview.html#the-dl-element
10.8455 + */
10.8456 +HTMLDListElement = function(ownerDocument) {
10.8457 + HTMLElement.apply(this, arguments);
10.8458 +};
10.8459 +
10.8460 +HTMLDListElement.prototype = new HTMLElement();
10.8461 +__extend__(HTMLDListElement.prototype, {
10.8462 +
10.8463 + // no additional properties or elements
10.8464 +
10.8465 + toString: function() {
10.8466 + return '[object HTMLDListElement]';
10.8467 + }
10.8468 +});
10.8469 +
10.8470 +
10.8471 +/**
10.8472 + * HTMLLegendElement - DOM Level 2
10.8473 + *
10.8474 + * HTML5: 4.10.3 The legend element
10.8475 + * http://dev.w3.org/html5/spec/Overview.html#the-legend-element
10.8476 + */
10.8477 +HTMLLegendElement = function(ownerDocument) {
10.8478 + HTMLInputCommon.apply(this, arguments);
10.8479 +};
10.8480 +HTMLLegendElement.prototype = new HTMLInputCommon();
10.8481 +__extend__(HTMLLegendElement.prototype, {
10.8482 + get align(){
10.8483 + return this.getAttribute('align');
10.8484 + },
10.8485 + set align(value){
10.8486 + this.setAttribute('align',value);
10.8487 + }
10.8488 +});
10.8489 +
10.8490 +
10.8491 +/*
10.8492 + * HTMLFieldSetElement - DOM Level 2
10.8493 + *
10.8494 + * HTML5: 4.10.2 The fieldset element
10.8495 + * http://dev.w3.org/html5/spec/Overview.html#the-fieldset-element
10.8496 + */
10.8497 +HTMLFieldSetElement = function(ownerDocument) {
10.8498 + HTMLLegendElement.apply(this, arguments);
10.8499 +};
10.8500 +HTMLFieldSetElement.prototype = new HTMLLegendElement();
10.8501 +__extend__(HTMLFieldSetElement.prototype, {
10.8502 + get margin(){
10.8503 + return this.getAttribute('margin');
10.8504 + },
10.8505 + set margin(value){
10.8506 + this.setAttribute('margin',value);
10.8507 + },
10.8508 + toString: function() {
10.8509 + return '[object HTMLFieldSetElement]';
10.8510 + }
10.8511 +});
10.8512 +
10.8513 +// Named Element Support
10.8514 +HTMLElement.registerSetAttribute('FIELDSET', 'name',
10.8515 + __updateFormForNamedElement__);
10.8516 +/*
10.8517 + * HTMLFormElement - DOM Level 2
10.8518 + *
10.8519 + * HTML5: http://dev.w3.org/html5/spec/Overview.html#the-form-element
10.8520 + */
10.8521 +HTMLFormElement = function(ownerDocument){
10.8522 + HTMLElement.apply(this, arguments);
10.8523 +
10.8524 + //TODO: on __elementPopped__ from the parser
10.8525 + // we need to determine all the forms default
10.8526 + // values
10.8527 +};
10.8528 +HTMLFormElement.prototype = new HTMLElement();
10.8529 +__extend__(HTMLFormElement.prototype,{
10.8530 + get acceptCharset(){
10.8531 + return this.getAttribute('accept-charset');
10.8532 + },
10.8533 + set acceptCharset(acceptCharset) {
10.8534 + this.setAttribute('accept-charset', acceptCharset);
10.8535 + },
10.8536 + get action() {
10.8537 + return this.getAttribute('action');
10.8538 + },
10.8539 + set action(action){
10.8540 + this.setAttribute('action', action);
10.8541 + },
10.8542 +
10.8543 + get enctype() {
10.8544 + return this.getAttribute('enctype');
10.8545 + },
10.8546 + set enctype(enctype) {
10.8547 + this.setAttribute('enctype', enctype);
10.8548 + },
10.8549 + get method() {
10.8550 + return this.getAttribute('method');
10.8551 + },
10.8552 + set method(method) {
10.8553 + this.setAttribute('method', method);
10.8554 + },
10.8555 + get name() {
10.8556 + return this.getAttribute("name");
10.8557 + },
10.8558 + set name(val) {
10.8559 + return this.setAttribute("name",val);
10.8560 + },
10.8561 + get target() {
10.8562 + return this.getAttribute("target");
10.8563 + },
10.8564 + set target(val) {
10.8565 + return this.setAttribute("target",val);
10.8566 + },
10.8567 +
10.8568 + /**
10.8569 + * "Named Elements"
10.8570 + *
10.8571 + */
10.8572 + /**
10.8573 + * returns HTMLFormControlsCollection
10.8574 + * http://dev.w3.org/html5/spec/Overview.html#dom-form-elements
10.8575 + *
10.8576 + * button fieldset input keygen object output select textarea
10.8577 + */
10.8578 + get elements() {
10.8579 + var nodes = this.getElementsByTagName('*');
10.8580 + var alist = [];
10.8581 + var i, tmp;
10.8582 + for (i = 0; i < nodes.length; ++i) {
10.8583 + nodename = nodes[i].nodeName;
10.8584 + // would like to replace switch with something else
10.8585 + // since it's redundant with the SetAttribute callbacks
10.8586 + switch (nodes[i].nodeName) {
10.8587 + case 'BUTTON':
10.8588 + case 'FIELDSET':
10.8589 + case 'INPUT':
10.8590 + case 'KEYGEN':
10.8591 + case 'OBJECT':
10.8592 + case 'OUTPUT':
10.8593 + case 'SELECT':
10.8594 + case 'TEXTAREA':
10.8595 + alist.push(nodes[i]);
10.8596 + this[i] = nodes[i];
10.8597 + tmp = nodes[i].name;
10.8598 + if (tmp) {
10.8599 + this[tmp] = nodes[i];
10.8600 + }
10.8601 + tmp = nodes[i].id;
10.8602 + if (tmp) {
10.8603 + this[tmp] = nodes[i];
10.8604 + }
10.8605 + }
10.8606 + }
10.8607 + return new HTMLCollection(alist);
10.8608 + },
10.8609 + _updateElements: function() {
10.8610 + this.elements;
10.8611 + },
10.8612 + get length() {
10.8613 + return this.elements.length;
10.8614 + },
10.8615 + item: function(idx) {
10.8616 + return this.elements[idx];
10.8617 + },
10.8618 + namedItem: function(aname) {
10.8619 + return this.elements.namedItem(aname);
10.8620 + },
10.8621 + toString: function() {
10.8622 + return '[object HTMLFormElement]';
10.8623 + },
10.8624 + submit: function() {
10.8625 + //TODO: this needs to perform the form inputs serialization
10.8626 + // and submission
10.8627 + // DONE: see xhr/form.js
10.8628 + var event = __submit__(this);
10.8629 +
10.8630 + },
10.8631 + reset: function() {
10.8632 + //TODO: this needs to reset all values specified in the form
10.8633 + // to those which where set as defaults
10.8634 + __reset__(this);
10.8635 +
10.8636 + },
10.8637 + onsubmit: HTMLEvents.prototype.onsubmit,
10.8638 + onreset: HTMLEvents.prototype.onreset
10.8639 +});
10.8640 +
10.8641 +/**
10.8642 + * HTMLFrameElement - DOM Level 2
10.8643 + */
10.8644 +HTMLFrameElement = function(ownerDocument) {
10.8645 + HTMLElement.apply(this, arguments);
10.8646 + // this is normally a getter but we need to be
10.8647 + // able to set it to correctly emulate behavior
10.8648 + this.contentDocument = null;
10.8649 + this.contentWindow = null;
10.8650 +};
10.8651 +HTMLFrameElement.prototype = new HTMLElement();
10.8652 +__extend__(HTMLFrameElement.prototype, {
10.8653 +
10.8654 + get frameBorder(){
10.8655 + return this.getAttribute('border')||"";
10.8656 + },
10.8657 + set frameBorder(value){
10.8658 + this.setAttribute('border', value);
10.8659 + },
10.8660 + get longDesc(){
10.8661 + return this.getAttribute('longdesc')||"";
10.8662 + },
10.8663 + set longDesc(value){
10.8664 + this.setAttribute('longdesc', value);
10.8665 + },
10.8666 + get marginHeight(){
10.8667 + return this.getAttribute('marginheight')||"";
10.8668 + },
10.8669 + set marginHeight(value){
10.8670 + this.setAttribute('marginheight', value);
10.8671 + },
10.8672 + get marginWidth(){
10.8673 + return this.getAttribute('marginwidth')||"";
10.8674 + },
10.8675 + set marginWidth(value){
10.8676 + this.setAttribute('marginwidth', value);
10.8677 + },
10.8678 + get name(){
10.8679 + return this.getAttribute('name')||"";
10.8680 + },
10.8681 + set name(value){
10.8682 + this.setAttribute('name', value);
10.8683 + },
10.8684 + get noResize(){
10.8685 + return this.getAttribute('noresize')||false;
10.8686 + },
10.8687 + set noResize(value){
10.8688 + this.setAttribute('noresize', value);
10.8689 + },
10.8690 + get scrolling(){
10.8691 + return this.getAttribute('scrolling')||"";
10.8692 + },
10.8693 + set scrolling(value){
10.8694 + this.setAttribute('scrolling', value);
10.8695 + },
10.8696 + get src(){
10.8697 + return this.getAttribute('src')||"";
10.8698 + },
10.8699 + set src(value){
10.8700 + this.setAttribute('src', value);
10.8701 + },
10.8702 + toString: function(){
10.8703 + return '[object HTMLFrameElement]';
10.8704 + },
10.8705 + onload: HTMLEvents.prototype.onload
10.8706 +});
10.8707 +
10.8708 +/**
10.8709 + * HTMLFrameSetElement - DOM Level 2
10.8710 + *
10.8711 + * HTML5: 12.3.3 Frames
10.8712 + * http://dev.w3.org/html5/spec/Overview.html#frameset
10.8713 + */
10.8714 +HTMLFrameSetElement = function(ownerDocument) {
10.8715 + HTMLElement.apply(this, arguments);
10.8716 +};
10.8717 +HTMLFrameSetElement.prototype = new HTMLElement();
10.8718 +__extend__(HTMLFrameSetElement.prototype, {
10.8719 + get cols(){
10.8720 + return this.getAttribute('cols');
10.8721 + },
10.8722 + set cols(value){
10.8723 + this.setAttribute('cols', value);
10.8724 + },
10.8725 + get rows(){
10.8726 + return this.getAttribute('rows');
10.8727 + },
10.8728 + set rows(value){
10.8729 + this.setAttribute('rows', value);
10.8730 + },
10.8731 + toString: function() {
10.8732 + return '[object HTMLFrameSetElement]';
10.8733 + }
10.8734 +});
10.8735 +
10.8736 +/*
10.8737 + * HTMLHeadingElement
10.8738 + * HTML5: 4.4.6 The h1, h2, h3, h4, h5, and h6 elements
10.8739 + * http://dev.w3.org/html5/spec/Overview.html#the-h1-h2-h3-h4-h5-and-h6-elements
10.8740 + */
10.8741 +HTMLHeadingElement = function(ownerDocument) {
10.8742 + HTMLElement.apply(this, arguments);
10.8743 +};
10.8744 +
10.8745 +HTMLHeadingElement.prototype = new HTMLElement();
10.8746 +__extend__(HTMLHeadingElement.prototype, {
10.8747 + toString: function() {
10.8748 + return '[object HTMLHeadingElement]';
10.8749 + }
10.8750 +});
10.8751 +
10.8752 +/**
10.8753 + * HTMLHeadElement - DOM Level 2
10.8754 + *
10.8755 + * HTML5: 4.2.1 The head element
10.8756 + * http://dev.w3.org/html5/spec/Overview.html#the-head-element-0
10.8757 + */
10.8758 +HTMLHeadElement = function(ownerDocument) {
10.8759 + HTMLElement.apply(this, arguments);
10.8760 +};
10.8761 +HTMLHeadElement.prototype = new HTMLElement();
10.8762 +__extend__(HTMLHeadElement.prototype, {
10.8763 + get profile(){
10.8764 + return this.getAttribute('profile');
10.8765 + },
10.8766 + set profile(value){
10.8767 + this.setAttribute('profile', value);
10.8768 + },
10.8769 + //we override this so we can apply browser behavior specific to head children
10.8770 + //like loading scripts
10.8771 + appendChild : function(newChild) {
10.8772 + newChild = HTMLElement.prototype.appendChild.apply(this,[newChild]);
10.8773 + //TODO: evaluate scripts which are appended to the head
10.8774 + //__evalScript__(newChild);
10.8775 + return newChild;
10.8776 + },
10.8777 + insertBefore : function(newChild, refChild) {
10.8778 + newChild = HTMLElement.prototype.insertBefore.apply(this,[newChild]);
10.8779 + //TODO: evaluate scripts which are appended to the head
10.8780 + //__evalScript__(newChild);
10.8781 + return newChild;
10.8782 + },
10.8783 + toString: function(){
10.8784 + return '[object HTMLHeadElement]';
10.8785 + }
10.8786 +});
10.8787 +
10.8788 +
10.8789 +/*
10.8790 + * HTMLHRElement
10.8791 + * HTML5: 4.5.2 The hr Element
10.8792 + * http://dev.w3.org/html5/spec/Overview.html#the-hr-element
10.8793 + */
10.8794 +HTMLHRElement = function(ownerDocument) {
10.8795 + HTMLElement.apply(this, arguments);
10.8796 +};
10.8797 +
10.8798 +HTMLHRElement.prototype = new HTMLElement();
10.8799 +__extend__(HTMLHRElement.prototype, {
10.8800 +
10.8801 + // no additional properties or elements
10.8802 +
10.8803 + toString: function() {
10.8804 + return '[object HTMLHRElement]';
10.8805 + }
10.8806 +});
10.8807 +
10.8808 +
10.8809 +/*
10.8810 + * HTMLHtmlElement
10.8811 + * HTML5: 4.1.1 The Html Element
10.8812 + * http://dev.w3.org/html5/spec/Overview.html#htmlhtmlelement
10.8813 + */
10.8814 +HTMLHtmlElement = function(ownerDocument) {
10.8815 + HTMLElement.apply(this, arguments);
10.8816 +};
10.8817 +
10.8818 +HTMLHtmlElement.prototype = new HTMLElement();
10.8819 +__extend__(HTMLHtmlElement.prototype, {
10.8820 +
10.8821 + // no additional properties or elements
10.8822 +
10.8823 + toString: function() {
10.8824 + return '[object HTMLHtmlElement]';
10.8825 + }
10.8826 +});
10.8827 +
10.8828 +
10.8829 +/*
10.8830 + * HTMLIFrameElement - DOM Level 2
10.8831 + *
10.8832 + * HTML5: 4.8.3 The iframe element
10.8833 + * http://dev.w3.org/html5/spec/Overview.html#the-iframe-element
10.8834 + */
10.8835 +HTMLIFrameElement = function(ownerDocument) {
10.8836 + HTMLFrameElement.apply(this, arguments);
10.8837 +};
10.8838 +HTMLIFrameElement.prototype = new HTMLFrameElement();
10.8839 +__extend__(HTMLIFrameElement.prototype, {
10.8840 + get height() {
10.8841 + return this.getAttribute("height") || "";
10.8842 + },
10.8843 + set height(val) {
10.8844 + return this.setAttribute("height",val);
10.8845 + },
10.8846 + get width() {
10.8847 + return this.getAttribute("width") || "";
10.8848 + },
10.8849 + set width(val) {
10.8850 + return this.setAttribute("width",val);
10.8851 + },
10.8852 + toString: function(){
10.8853 + return '[object HTMLIFrameElement]';
10.8854 + }
10.8855 +});
10.8856 +
10.8857 +/**
10.8858 + * HTMLImageElement and Image
10.8859 + */
10.8860 +
10.8861 +
10.8862 +HTMLImageElement = function(ownerDocument) {
10.8863 + HTMLElement.apply(this, arguments);
10.8864 +};
10.8865 +HTMLImageElement.prototype = new HTMLElement();
10.8866 +__extend__(HTMLImageElement.prototype, {
10.8867 + get alt(){
10.8868 + return this.getAttribute('alt');
10.8869 + },
10.8870 + set alt(value){
10.8871 + this.setAttribute('alt', value);
10.8872 + },
10.8873 + get height(){
10.8874 + return parseInt(this.getAttribute('height'), 10) || 0;
10.8875 + },
10.8876 + set height(value){
10.8877 + this.setAttribute('height', value);
10.8878 + },
10.8879 + get isMap(){
10.8880 + return this.hasAttribute('map');
10.8881 + },
10.8882 + set useMap(value){
10.8883 + this.setAttribute('map', value);
10.8884 + },
10.8885 + get longDesc(){
10.8886 + return this.getAttribute('longdesc');
10.8887 + },
10.8888 + set longDesc(value){
10.8889 + this.setAttribute('longdesc', value);
10.8890 + },
10.8891 + get name(){
10.8892 + return this.getAttribute('name');
10.8893 + },
10.8894 + set name(value){
10.8895 + this.setAttribute('name', value);
10.8896 + },
10.8897 + get src(){
10.8898 + return this.getAttribute('src') || '';
10.8899 + },
10.8900 + set src(value){
10.8901 + this.setAttribute('src', value);
10.8902 + },
10.8903 + get width(){
10.8904 + return parseInt(this.getAttribute('width'), 10) || 0;
10.8905 + },
10.8906 + set width(value){
10.8907 + this.setAttribute('width', value);
10.8908 + },
10.8909 + toString: function(){
10.8910 + return '[object HTMLImageElement]';
10.8911 + }
10.8912 +});
10.8913 +
10.8914 +/*
10.8915 + * html5 4.8.1
10.8916 + * http://dev.w3.org/html5/spec/Overview.html#the-img-element
10.8917 + */
10.8918 +Image = function(width, height) {
10.8919 + // Not sure if "[global].document" satifies this requirement:
10.8920 + // "The element's document must be the active document of the
10.8921 + // browsing context of the Window object on which the interface
10.8922 + // object of the invoked constructor is found."
10.8923 +
10.8924 + HTMLElement.apply(this, [document]);
10.8925 + // Note: firefox will throw an error if the width/height
10.8926 + // is not an integer. Safari just converts to 0 on error.
10.8927 + this.width = parseInt(width, 10) || 0;
10.8928 + this.height = parseInt(height, 10) || 0;
10.8929 + this.nodeName = 'IMG';
10.8930 +};
10.8931 +Image.prototype = new HTMLImageElement();
10.8932 +
10.8933 +
10.8934 +/*
10.8935 + * Image.src attribute events.
10.8936 + *
10.8937 + * Not sure where this should live... in events/img.js? in parser/img.js?
10.8938 + * Split out to make it easy to move.
10.8939 + */
10.8940 +
10.8941 +/**
10.8942 + * HTMLImageElement && Image are a bit odd in that the 'src' attribute
10.8943 + * is 'active' -- changing it triggers loading of the image from the
10.8944 + * network.
10.8945 + *
10.8946 + * This can occur by
10.8947 + * - Directly setting the Image.src =
10.8948 + * - Using one of the Element.setAttributeXXX methods
10.8949 + * - Node.importNode an image
10.8950 + * - The initial creation and parsing of an <img> tag
10.8951 + *
10.8952 + * __onImageRequest__ is a function that handles eventing
10.8953 + * and dispatches to a user-callback.
10.8954 + *
10.8955 + */
10.8956 +__loadImage__ = function(node, value) {
10.8957 + var event;
10.8958 + if (value && (!Envjs.loadImage ||
10.8959 + (Envjs.loadImage &&
10.8960 + Envjs.loadImage(node, value)))) {
10.8961 + // value has to be something (easy)
10.8962 + // if the user-land API doesn't exist
10.8963 + // Or if the API exists and it returns true, then ok:
10.8964 + event = document.createEvent('Events');
10.8965 + event.initEvent('load');
10.8966 + } else {
10.8967 + // oops
10.8968 + event = document.createEvent('Events');
10.8969 + event.initEvent('error');
10.8970 + }
10.8971 + node.dispatchEvent(event, false);
10.8972 +};
10.8973 +
10.8974 +__extend__(HTMLImageElement.prototype, {
10.8975 + onload: function(event){
10.8976 + __eval__(this.getAttribute('onload') || '', this);
10.8977 + }
10.8978 +});
10.8979 +
10.8980 +
10.8981 +/*
10.8982 + * Image Loading
10.8983 + *
10.8984 + * The difference between "owner.parsing" and "owner.fragment"
10.8985 + *
10.8986 + * If owner.parsing === true, then during the html5 parsing then,
10.8987 + * __elementPopped__ is called when a compete tag (with attrs and
10.8988 + * children) is full parsed and added the DOM.
10.8989 + *
10.8990 + * For images, __elementPopped__ is called with everything the
10.8991 + * tag has. which in turn looks for a "src" attr and calls
10.8992 + * __loadImage__
10.8993 + *
10.8994 + * If owner.parser === false (or non-existant), then we are not in
10.8995 + * a parsing step. For images, perhaps someone directly modified
10.8996 + * a 'src' attribute of an existing image.
10.8997 + *
10.8998 + * 'innerHTML' is tricky since we first create a "fake document",
10.8999 + * parse it, then import the right parts. This may call
10.9000 + * img.setAttributeNS twice. once during the parse and once
10.9001 + * during the clone of the node. We want event to trigger on the
10.9002 + * later and not during th fake doco. "owner.fragment" is set by
10.9003 + * the fake doco parser to indicate that events should not be
10.9004 + * triggered on this.
10.9005 + *
10.9006 + * We coud make 'owner.parser' == [ 'none', 'full', 'fragment']
10.9007 + * and just use one variable That was not done since the patch is
10.9008 + * quite large as is.
10.9009 + *
10.9010 + * This same problem occurs with scripts. innerHTML oddly does
10.9011 + * not eval any <script> tags inside.
10.9012 + */
10.9013 +HTMLElement.registerSetAttribute('IMG', 'src', function(node, value) {
10.9014 + var owner = node.ownerDocument;
10.9015 + if (!owner.parsing && !owner.fragment) {
10.9016 + __loadImage__(node, value);
10.9017 + }
10.9018 +});
10.9019 +/**
10.9020 + * HTMLInputElement
10.9021 + *
10.9022 + * HTML5: 4.10.5 The input element
10.9023 + * http://dev.w3.org/html5/spec/Overview.html#the-input-element
10.9024 + */
10.9025 +HTMLInputElement = function(ownerDocument) {
10.9026 + HTMLInputAreaCommon.apply(this, arguments);
10.9027 + this._dirty = false;
10.9028 + this._checked = null;
10.9029 + this._value = null;
10.9030 +};
10.9031 +HTMLInputElement.prototype = new HTMLInputAreaCommon();
10.9032 +__extend__(HTMLInputElement.prototype, {
10.9033 + get alt(){
10.9034 + return this.getAttribute('alt') || '';
10.9035 + },
10.9036 + set alt(value){
10.9037 + this.setAttribute('alt', value);
10.9038 + },
10.9039 +
10.9040 + /**
10.9041 + * 'checked' returns state, NOT the value of the attribute
10.9042 + */
10.9043 + get checked(){
10.9044 + if (this._checked === null) {
10.9045 + this._checked = this.defaultChecked;
10.9046 + }
10.9047 + return this._checked;
10.9048 + },
10.9049 + set checked(value){
10.9050 + // force to boolean value
10.9051 + this._checked = (value) ? true : false;
10.9052 + },
10.9053 +
10.9054 + /**
10.9055 + * 'defaultChecked' actually reflects if the 'checked' attribute
10.9056 + * is present or not
10.9057 + */
10.9058 + get defaultChecked(){
10.9059 + return this.hasAttribute('checked');
10.9060 + },
10.9061 + set defaultChecked(val){
10.9062 + if (val) {
10.9063 + this.setAttribute('checked', '');
10.9064 + } else {
10.9065 + if (this.defaultChecked) {
10.9066 + this.removeAttribute('checked');
10.9067 + }
10.9068 + }
10.9069 + },
10.9070 + get defaultValue() {
10.9071 + return this.getAttribute('value') || '';
10.9072 + },
10.9073 + set defaultValue(value) {
10.9074 + this._dirty = true;
10.9075 + this.setAttribute('value', value);
10.9076 + },
10.9077 + get value() {
10.9078 + return (this._value === null) ? this.defaultValue : this._value;
10.9079 + },
10.9080 + set value(newvalue) {
10.9081 + this._value = newvalue;
10.9082 + },
10.9083 + /**
10.9084 + * Height is a string
10.9085 + */
10.9086 + get height(){
10.9087 + // spec says it is a string
10.9088 + return this.getAttribute('height') || '';
10.9089 + },
10.9090 + set height(value){
10.9091 + this.setAttribute('height',value);
10.9092 + },
10.9093 +
10.9094 + /**
10.9095 + * MaxLength is a number
10.9096 + */
10.9097 + get maxLength(){
10.9098 + return Number(this.getAttribute('maxlength')||'-1');
10.9099 + },
10.9100 + set maxLength(value){
10.9101 + this.setAttribute('maxlength', value);
10.9102 + },
10.9103 +
10.9104 + /**
10.9105 + * Src is a URL string
10.9106 + */
10.9107 + get src(){
10.9108 + return this.getAttribute('src') || '';
10.9109 + },
10.9110 + set src(value){
10.9111 + // TODO: make absolute any relative URLS
10.9112 + this.setAttribute('src', value);
10.9113 + },
10.9114 +
10.9115 + get type() {
10.9116 + return this.getAttribute('type') || 'text';
10.9117 + },
10.9118 + set type(value) {
10.9119 + this.setAttribute('type', value);
10.9120 + },
10.9121 +
10.9122 + get useMap(){
10.9123 + return this.getAttribute('map') || '';
10.9124 + },
10.9125 +
10.9126 + /**
10.9127 + * Width: spec says it is a string
10.9128 + */
10.9129 + get width(){
10.9130 + return this.getAttribute('width') || '';
10.9131 + },
10.9132 + set width(value){
10.9133 + this.setAttribute('width',value);
10.9134 + },
10.9135 + click:function(){
10.9136 + __click__(this);
10.9137 + },
10.9138 + toString: function() {
10.9139 + return '[object HTMLInputElement]';
10.9140 + }
10.9141 +});
10.9142 +
10.9143 +//http://dev.w3.org/html5/spec/Overview.html#dom-input-value
10.9144 +// if someone directly modifies the value attribute, then the input's value
10.9145 +// also directly changes.
10.9146 +HTMLElement.registerSetAttribute('INPUT', 'value', function(node, value) {
10.9147 + if (!node._dirty) {
10.9148 + node._value = value;
10.9149 + node._dirty = true;
10.9150 + }
10.9151 +});
10.9152 +
10.9153 +/*
10.9154 + *The checked content attribute is a boolean attribute that gives the
10.9155 + *default checkedness of the input element. When the checked content
10.9156 + *attribute is added, if the control does not have dirty checkedness,
10.9157 + *the user agent must set the checkedness of the element to true; when
10.9158 + *the checked content attribute is removed, if the control does not
10.9159 + *have dirty checkedness, the user agent must set the checkedness of
10.9160 + *the element to false.
10.9161 + */
10.9162 +// Named Element Support
10.9163 +HTMLElement.registerSetAttribute('INPUT', 'name',
10.9164 + __updateFormForNamedElement__);
10.9165 +
10.9166 +/**
10.9167 + * HTMLLabelElement - DOM Level 2
10.9168 + * HTML5 4.10.4 The label element
10.9169 + * http://dev.w3.org/html5/spec/Overview.html#the-label-element
10.9170 + */
10.9171 +HTMLLabelElement = function(ownerDocument) {
10.9172 + HTMLInputCommon.apply(this, arguments);
10.9173 +};
10.9174 +HTMLLabelElement.prototype = new HTMLInputCommon();
10.9175 +__extend__(HTMLLabelElement.prototype, inputElements_dataProperties);
10.9176 +__extend__(HTMLLabelElement.prototype, {
10.9177 + get htmlFor() {
10.9178 + return this.getAttribute('for');
10.9179 + },
10.9180 + set htmlFor(value) {
10.9181 + this.setAttribute('for',value);
10.9182 + },
10.9183 + get dataFormatAs() {
10.9184 + return this.getAttribute('dataFormatAs');
10.9185 + },
10.9186 + set dataFormatAs(value) {
10.9187 + this.setAttribute('dataFormatAs',value);
10.9188 + },
10.9189 + toString: function() {
10.9190 + return '[object HTMLLabelElement]';
10.9191 + }
10.9192 +});
10.9193 +
10.9194 +/*
10.9195 + * HTMLLIElement
10.9196 + * HTML5: 4.5.8 The li Element
10.9197 + * http://dev.w3.org/html5/spec/Overview.html#the-li-element
10.9198 + */
10.9199 +HTMLLIElement = function(ownerDocument) {
10.9200 + HTMLElement.apply(this, arguments);
10.9201 +};
10.9202 +
10.9203 +HTMLLIElement.prototype = new HTMLElement();
10.9204 +__extend__(HTMLLIElement.prototype, {
10.9205 +
10.9206 + // TODO: attribute long value;
10.9207 +
10.9208 + toString: function() {
10.9209 + return '[object HTMLLIElement]';
10.9210 + }
10.9211 +});
10.9212 +
10.9213 +
10.9214 +/*
10.9215 + * HTMLLinkElement - DOM Level 2
10.9216 + *
10.9217 + * HTML5: 4.8.12 The map element
10.9218 + * http://dev.w3.org/html5/spec/Overview.html#the-map-element
10.9219 + */
10.9220 +HTMLLinkElement = function(ownerDocument) {
10.9221 + HTMLElement.apply(this, arguments);
10.9222 +};
10.9223 +HTMLLinkElement.prototype = new HTMLElement();
10.9224 +__extend__(HTMLLinkElement.prototype, {
10.9225 + get disabled(){
10.9226 + return this.getAttribute('disabled');
10.9227 + },
10.9228 + set disabled(value){
10.9229 + this.setAttribute('disabled',value);
10.9230 + },
10.9231 + get charset(){
10.9232 + return this.getAttribute('charset');
10.9233 + },
10.9234 + set charset(value){
10.9235 + this.setAttribute('charset',value);
10.9236 + },
10.9237 + get href(){
10.9238 + return this.getAttribute('href');
10.9239 + },
10.9240 + set href(value){
10.9241 + this.setAttribute('href',value);
10.9242 + },
10.9243 + get hreflang(){
10.9244 + return this.getAttribute('hreflang');
10.9245 + },
10.9246 + set hreflang(value){
10.9247 + this.setAttribute('hreflang',value);
10.9248 + },
10.9249 + get media(){
10.9250 + return this.getAttribute('media');
10.9251 + },
10.9252 + set media(value){
10.9253 + this.setAttribute('media',value);
10.9254 + },
10.9255 + get rel(){
10.9256 + return this.getAttribute('rel');
10.9257 + },
10.9258 + set rel(value){
10.9259 + this.setAttribute('rel',value);
10.9260 + },
10.9261 + get rev(){
10.9262 + return this.getAttribute('rev');
10.9263 + },
10.9264 + set rev(value){
10.9265 + this.setAttribute('rev',value);
10.9266 + },
10.9267 + get target(){
10.9268 + return this.getAttribute('target');
10.9269 + },
10.9270 + set target(value){
10.9271 + this.setAttribute('target',value);
10.9272 + },
10.9273 + get type(){
10.9274 + return this.getAttribute('type');
10.9275 + },
10.9276 + set type(value){
10.9277 + this.setAttribute('type',value);
10.9278 + },
10.9279 + toString: function() {
10.9280 + return '[object HTMLLinkElement]';
10.9281 + }
10.9282 +});
10.9283 +
10.9284 +__loadLink__ = function(node, value) {
10.9285 + var event;
10.9286 + var owner = node.ownerDocument;
10.9287 +
10.9288 + if (owner.fragment) {
10.9289 + /**
10.9290 + * if we are in an innerHTML fragment parsing step
10.9291 + * then ignore. It will be handled once the fragment is
10.9292 + * added to the real doco
10.9293 + */
10.9294 + return;
10.9295 + }
10.9296 +
10.9297 + if (node.parentNode === null) {
10.9298 + /*
10.9299 + * if a <link> is parentless (normally by create a new link
10.9300 + * via document.createElement('link'), then do *not* fire an
10.9301 + * event, even if it has a valid 'href' attribute.
10.9302 + */
10.9303 + return;
10.9304 + }
10.9305 + if (value != '' && (!Envjs.loadLink ||
10.9306 + (Envjs.loadLink &&
10.9307 + Envjs.loadLink(node, value)))) {
10.9308 + // value has to be something (easy)
10.9309 + // if the user-land API doesn't exist
10.9310 + // Or if the API exists and it returns true, then ok:
10.9311 + event = document.createEvent('Events');
10.9312 + event.initEvent('load');
10.9313 + } else {
10.9314 + // oops
10.9315 + event = document.createEvent('Events');
10.9316 + event.initEvent('error');
10.9317 + }
10.9318 + node.dispatchEvent(event, false);
10.9319 +};
10.9320 +
10.9321 +
10.9322 +HTMLElement.registerSetAttribute('LINK', 'href', function(node, value) {
10.9323 + __loadLink__(node, value);
10.9324 +});
10.9325 +
10.9326 +/**
10.9327 + * Event stuff, not sure where it goes
10.9328 + */
10.9329 +__extend__(HTMLLinkElement.prototype, {
10.9330 + onload: function(event){
10.9331 + __eval__(this.getAttribute('onload')||'', this);
10.9332 + },
10.9333 +});
10.9334 +
10.9335 +/**
10.9336 + * HTMLMapElement
10.9337 + *
10.9338 + * 4.8.12 The map element
10.9339 + * http://dev.w3.org/html5/spec/Overview.html#the-map-element
10.9340 + */
10.9341 +HTMLMapElement = function(ownerDocument) {
10.9342 + HTMLElement.apply(this, arguments);
10.9343 +};
10.9344 +HTMLMapElement.prototype = new HTMLElement();
10.9345 +__extend__(HTMLMapElement.prototype, {
10.9346 + get areas(){
10.9347 + return this.getElementsByTagName('area');
10.9348 + },
10.9349 + get name(){
10.9350 + return this.getAttribute('name') || '';
10.9351 + },
10.9352 + set name(value){
10.9353 + this.setAttribute('name',value);
10.9354 + },
10.9355 + toString: function() {
10.9356 + return '[object HTMLMapElement]';
10.9357 + }
10.9358 +});
10.9359 +
10.9360 +/**
10.9361 + * HTMLMetaElement - DOM Level 2
10.9362 + * HTML5: 4.2.5 The meta element
10.9363 + * http://dev.w3.org/html5/spec/Overview.html#meta
10.9364 + */
10.9365 +HTMLMetaElement = function(ownerDocument) {
10.9366 + HTMLElement.apply(this, arguments);
10.9367 +};
10.9368 +HTMLMetaElement.prototype = new HTMLElement();
10.9369 +__extend__(HTMLMetaElement.prototype, {
10.9370 + get content() {
10.9371 + return this.getAttribute('content') || '';
10.9372 + },
10.9373 + set content(value){
10.9374 + this.setAttribute('content',value);
10.9375 + },
10.9376 + get httpEquiv(){
10.9377 + return this.getAttribute('http-equiv') || '';
10.9378 + },
10.9379 + set httpEquiv(value){
10.9380 + this.setAttribute('http-equiv',value);
10.9381 + },
10.9382 + get name(){
10.9383 + return this.getAttribute('name') || '';
10.9384 + },
10.9385 + set name(value){
10.9386 + this.setAttribute('name',value);
10.9387 + },
10.9388 + get scheme(){
10.9389 + return this.getAttribute('scheme');
10.9390 + },
10.9391 + set scheme(value){
10.9392 + this.setAttribute('scheme',value);
10.9393 + },
10.9394 + toString: function() {
10.9395 + return '[object HTMLMetaElement]';
10.9396 + }
10.9397 +});
10.9398 +
10.9399 +
10.9400 +/**
10.9401 + * HTMLObjectElement - DOM Level 2
10.9402 + * HTML5: 4.8.5 The object element
10.9403 + * http://dev.w3.org/html5/spec/Overview.html#the-object-element
10.9404 + */
10.9405 +HTMLObjectElement = function(ownerDocument) {
10.9406 + HTMLElement.apply(this, arguments);
10.9407 +};
10.9408 +HTMLObjectElement.prototype = new HTMLElement();
10.9409 +__extend__(HTMLObjectElement.prototype, {
10.9410 + get code(){
10.9411 + return this.getAttribute('code');
10.9412 + },
10.9413 + set code(value){
10.9414 + this.setAttribute('code',value);
10.9415 + },
10.9416 + get archive(){
10.9417 + return this.getAttribute('archive');
10.9418 + },
10.9419 + set archive(value){
10.9420 + this.setAttribute('archive',value);
10.9421 + },
10.9422 + get codeBase(){
10.9423 + return this.getAttribute('codebase');
10.9424 + },
10.9425 + set codeBase(value){
10.9426 + this.setAttribute('codebase',value);
10.9427 + },
10.9428 + get codeType(){
10.9429 + return this.getAttribute('codetype');
10.9430 + },
10.9431 + set codeType(value){
10.9432 + this.setAttribute('codetype',value);
10.9433 + },
10.9434 + get data(){
10.9435 + return this.getAttribute('data');
10.9436 + },
10.9437 + set data(value){
10.9438 + this.setAttribute('data',value);
10.9439 + },
10.9440 + get declare(){
10.9441 + return this.getAttribute('declare');
10.9442 + },
10.9443 + set declare(value){
10.9444 + this.setAttribute('declare',value);
10.9445 + },
10.9446 + get height(){
10.9447 + return this.getAttribute('height');
10.9448 + },
10.9449 + set height(value){
10.9450 + this.setAttribute('height',value);
10.9451 + },
10.9452 + get standby(){
10.9453 + return this.getAttribute('standby');
10.9454 + },
10.9455 + set standby(value){
10.9456 + this.setAttribute('standby',value);
10.9457 + },
10.9458 + /*get tabIndex(){
10.9459 + return this.getAttribute('tabindex');
10.9460 + },
10.9461 + set tabIndex(value){
10.9462 + this.setAttribute('tabindex',value);
10.9463 + },*/
10.9464 + get type(){
10.9465 + return this.getAttribute('type');
10.9466 + },
10.9467 + set type(value){
10.9468 + this.setAttribute('type',value);
10.9469 + },
10.9470 + get useMap(){
10.9471 + return this.getAttribute('usemap');
10.9472 + },
10.9473 + set useMap(value){
10.9474 + this.setAttribute('usemap',value);
10.9475 + },
10.9476 + get width(){
10.9477 + return this.getAttribute('width');
10.9478 + },
10.9479 + set width(value){
10.9480 + this.setAttribute('width',value);
10.9481 + },
10.9482 + get contentDocument(){
10.9483 + return this.ownerDocument;
10.9484 + },
10.9485 + toString: function() {
10.9486 + return '[object HTMLObjectElement]';
10.9487 + }
10.9488 +});
10.9489 +
10.9490 +// Named Element Support
10.9491 +HTMLElement.registerSetAttribute('OBJECT', 'name',
10.9492 + __updateFormForNamedElement__);
10.9493 +
10.9494 +/*
10.9495 + * HTMLOListElement
10.9496 + * HTML5: 4.5.6 The ol Element
10.9497 + * http://dev.w3.org/html5/spec/Overview.html#the-ol-element
10.9498 + */
10.9499 +HTMLOListElement = function(ownerDocument) {
10.9500 + HTMLElement.apply(this, arguments);
10.9501 +};
10.9502 +
10.9503 +HTMLOListElement.prototype = new HTMLElement();
10.9504 +__extend__(HTMLOListElement.prototype, {
10.9505 +
10.9506 + // TODO: attribute boolean reversed;
10.9507 + // TODO: attribute long start;
10.9508 +
10.9509 + toString: function() {
10.9510 + return '[object HTMLOListElement]';
10.9511 + }
10.9512 +});
10.9513 +
10.9514 +
10.9515 +/**
10.9516 + * HTMLOptGroupElement - DOM Level 2
10.9517 + * HTML 5: 4.10.9 The optgroup element
10.9518 + * http://dev.w3.org/html5/spec/Overview.html#the-optgroup-element
10.9519 + */
10.9520 +HTMLOptGroupElement = function(ownerDocument) {
10.9521 + HTMLElement.apply(this, arguments);
10.9522 +};
10.9523 +HTMLOptGroupElement.prototype = new HTMLElement();
10.9524 +__extend__(HTMLOptGroupElement.prototype, {
10.9525 + get disabled(){
10.9526 + return this.getAttribute('disabled');
10.9527 + },
10.9528 + set disabled(value){
10.9529 + this.setAttribute('disabled',value);
10.9530 + },
10.9531 + get label(){
10.9532 + return this.getAttribute('label');
10.9533 + },
10.9534 + set label(value){
10.9535 + this.setAttribute('label',value);
10.9536 + },
10.9537 + appendChild: function(node){
10.9538 + var i,
10.9539 + length,
10.9540 + selected = false;
10.9541 + //make sure at least one is selected by default
10.9542 + if(node.nodeType === Node.ELEMENT_NODE && node.tagName === 'OPTION'){
10.9543 + length = this.childNodes.length;
10.9544 + for(i=0;i<length;i++){
10.9545 + if(this.childNodes[i].nodeType === Node.ELEMENT_NODE &&
10.9546 + this.childNodes[i].tagName === 'OPTION'){
10.9547 + //check if it is selected
10.9548 + if(this.selected){
10.9549 + selected = true;
10.9550 + break;
10.9551 + }
10.9552 + }
10.9553 + }
10.9554 + if(!selected){
10.9555 + node.selected = true;
10.9556 + this.value = node.value?node.value:'';
10.9557 + }
10.9558 + }
10.9559 + return HTMLElement.prototype.appendChild.apply(this, [node]);
10.9560 + },
10.9561 + toString: function() {
10.9562 + return '[object HTMLOptGroupElement]';
10.9563 + }
10.9564 +});
10.9565 +
10.9566 +/**
10.9567 + * HTMLOptionElement, Option
10.9568 + * HTML5: 4.10.10 The option element
10.9569 + * http://dev.w3.org/html5/spec/Overview.html#the-option-element
10.9570 + */
10.9571 +HTMLOptionElement = function(ownerDocument) {
10.9572 + HTMLInputCommon.apply(this, arguments);
10.9573 + this._selected = null;
10.9574 +};
10.9575 +HTMLOptionElement.prototype = new HTMLInputCommon();
10.9576 +__extend__(HTMLOptionElement.prototype, {
10.9577 +
10.9578 + /**
10.9579 + * defaultSelected actually reflects the presence of the
10.9580 + * 'selected' attribute.
10.9581 + */
10.9582 + get defaultSelected() {
10.9583 + return this.hasAttribute('selected');
10.9584 + },
10.9585 + set defaultSelected(value) {
10.9586 + if (value) {
10.9587 + this.setAttribute('selected','');
10.9588 + } else {
10.9589 + if (this.hasAttribute('selected')) {
10.9590 + this.removeAttribute('selected');
10.9591 + }
10.9592 + }
10.9593 + },
10.9594 +
10.9595 + /*
10.9596 + * HTML5: The form IDL attribute's behavior depends on whether the
10.9597 + * option element is in a select element or not. If the option has
10.9598 + * a select element as its parent, or has a colgroup element as
10.9599 + * its parent and that colgroup element has a select element as
10.9600 + * its parent, then the form IDL attribute must return the same
10.9601 + * value as the form IDL attribute on that select
10.9602 + * element. Otherwise, it must return null.
10.9603 + */
10.9604 + _selectparent: function() {
10.9605 + var parent = this.parentNode;
10.9606 + if (!parent) {
10.9607 + return null;
10.9608 + }
10.9609 +
10.9610 + if (parent.tagName === 'SELECT') {
10.9611 + return parent;
10.9612 + }
10.9613 + if (parent.tagName === 'COLGROUP') {
10.9614 + parent = parent.parentNode;
10.9615 + if (parent && parent.tagName === 'SELECT') {
10.9616 + return parent;
10.9617 + }
10.9618 + }
10.9619 + },
10.9620 + _updateoptions: function() {
10.9621 + var parent = this._selectparent();
10.9622 + if (parent) {
10.9623 + // has side effects and updates owner select's options
10.9624 + parent.options;
10.9625 + }
10.9626 + },
10.9627 + get form() {
10.9628 + var parent = this._selectparent();
10.9629 + return parent ? parent.form : null;
10.9630 + },
10.9631 + get index() {
10.9632 + var options, i;
10.9633 +
10.9634 + if (! this.parentNode) {
10.9635 + return -1;
10.9636 + }
10.9637 + options = this.parentNode.options;
10.9638 + for (i=0; i < options.length; ++i) {
10.9639 + if (this === options[i]) {
10.9640 + return i;
10.9641 + }
10.9642 + }
10.9643 + return 0;
10.9644 + },
10.9645 + get label() {
10.9646 + return this.getAttribute('label');
10.9647 + },
10.9648 + set label(value) {
10.9649 + this.setAttribute('label', value);
10.9650 + },
10.9651 +
10.9652 + /*
10.9653 + * This is not in the spec, but safari and firefox both
10.9654 + * use this
10.9655 + */
10.9656 + get name() {
10.9657 + return this.getAttribute('name');
10.9658 + },
10.9659 + set name(value) {
10.9660 + this.setAttribute('name', value);
10.9661 + },
10.9662 +
10.9663 + /**
10.9664 + *
10.9665 + */
10.9666 + get selected() {
10.9667 + // if disabled, return false, no matter what
10.9668 + if (this.disabled) {
10.9669 + return false;
10.9670 + }
10.9671 + if (this._selected === null) {
10.9672 + return this.defaultSelected;
10.9673 + }
10.9674 +
10.9675 + return this._selected;
10.9676 + },
10.9677 + set selected(value) {
10.9678 + this._selected = (value) ? true : false;
10.9679 + },
10.9680 +
10.9681 + get text() {
10.9682 + var val = this.nodeValue;
10.9683 + return (val === null || this.value === undefined) ?
10.9684 + this.innerHTML :
10.9685 + val;
10.9686 + },
10.9687 + get value() {
10.9688 + var val = this.getAttribute('value');
10.9689 + return (val === null || val === undefined) ?
10.9690 + this.textContent :
10.9691 + val;
10.9692 + },
10.9693 + set value(value) {
10.9694 + this.setAttribute('value', value);
10.9695 + },
10.9696 + toString: function() {
10.9697 + return '[object HTMLOptionElement]';
10.9698 + }
10.9699 +});
10.9700 +
10.9701 +Option = function(text, value, defaultSelected, selected) {
10.9702 +
10.9703 + // Not sure if this is correct:
10.9704 + //
10.9705 + // The element's document must be the active document of the
10.9706 + // browsing context of the Window object on which the interface
10.9707 + // object of the invoked constructor is found.
10.9708 + HTMLOptionElement.apply(this, [document]);
10.9709 + this.nodeName = 'OPTION';
10.9710 +
10.9711 + if (arguments.length >= 1) {
10.9712 + this.appendChild(document.createTextNode('' + text));
10.9713 + }
10.9714 + if (arguments.length >= 2) {
10.9715 + this.value = value;
10.9716 + }
10.9717 + if (arguments.length >= 3) {
10.9718 + if (defaultSelected) {
10.9719 + this.defaultSelected = '';
10.9720 + }
10.9721 + }
10.9722 + if (arguments.length >= 4) {
10.9723 + this.selected = (selected) ? true : false;
10.9724 + }
10.9725 +};
10.9726 +
10.9727 +Option.prototype = new HTMLOptionElement();
10.9728 +
10.9729 +// Named Element Support
10.9730 +
10.9731 +function updater(node, value) {
10.9732 + node._updateoptions();
10.9733 +}
10.9734 +HTMLElement.registerSetAttribute('OPTION', 'name', updater);
10.9735 +HTMLElement.registerSetAttribute('OPTION', 'id', updater);
10.9736 +
10.9737 +/*
10.9738 +* HTMLParagraphElement - DOM Level 2
10.9739 +*/
10.9740 +HTMLParagraphElement = function(ownerDocument) {
10.9741 + HTMLElement.apply(this, arguments);
10.9742 +};
10.9743 +HTMLParagraphElement.prototype = new HTMLElement();
10.9744 +__extend__(HTMLParagraphElement.prototype, {
10.9745 + toString: function(){
10.9746 + return '[object HTMLParagraphElement]';
10.9747 + }
10.9748 +});
10.9749 +
10.9750 +
10.9751 +/**
10.9752 + * HTMLParamElement
10.9753 + *
10.9754 + * HTML5: 4.8.6 The param element
10.9755 + * http://dev.w3.org/html5/spec/Overview.html#the-param-element
10.9756 + */
10.9757 +HTMLParamElement = function(ownerDocument) {
10.9758 + HTMLElement.apply(this, arguments);
10.9759 +};
10.9760 +HTMLParamElement.prototype = new HTMLElement();
10.9761 +__extend__(HTMLParamElement.prototype, {
10.9762 + get name() {
10.9763 + return this.getAttribute('name') || '';
10.9764 + },
10.9765 + set name(value) {
10.9766 + this.setAttribute('name', value);
10.9767 + },
10.9768 + get type(){
10.9769 + return this.getAttribute('type');
10.9770 + },
10.9771 + set type(value){
10.9772 + this.setAttribute('type',value);
10.9773 + },
10.9774 + get value(){
10.9775 + return this.getAttribute('value');
10.9776 + },
10.9777 + set value(value){
10.9778 + this.setAttribute('value',value);
10.9779 + },
10.9780 + get valueType(){
10.9781 + return this.getAttribute('valuetype');
10.9782 + },
10.9783 + set valueType(value){
10.9784 + this.setAttribute('valuetype',value);
10.9785 + },
10.9786 + toString: function() {
10.9787 + return '[object HTMLParamElement]';
10.9788 + }
10.9789 +});
10.9790 +
10.9791 +
10.9792 +/**
10.9793 + * HTMLScriptElement - DOM Level 2
10.9794 + *
10.9795 + * HTML5: 4.3.1 The script element
10.9796 + * http://dev.w3.org/html5/spec/Overview.html#script
10.9797 + */
10.9798 +HTMLScriptElement = function(ownerDocument) {
10.9799 + HTMLElement.apply(this, arguments);
10.9800 +};
10.9801 +HTMLScriptElement.prototype = new HTMLElement();
10.9802 +__extend__(HTMLScriptElement.prototype, {
10.9803 +
10.9804 + /**
10.9805 + * HTML5 spec @ http://dev.w3.org/html5/spec/Overview.html#script
10.9806 + *
10.9807 + * "The IDL attribute text must return a concatenation of the
10.9808 + * contents of all the text nodes that are direct children of the
10.9809 + * script element (ignoring any other nodes such as comments or
10.9810 + * elements), in tree order. On setting, it must act the same way
10.9811 + * as the textContent IDL attribute."
10.9812 + *
10.9813 + * AND... "The term text node refers to any Text node,
10.9814 + * including CDATASection nodes; specifically, any Node with node
10.9815 + * type TEXT_NODE (3) or CDATA_SECTION_NODE (4)"
10.9816 + */
10.9817 + get text() {
10.9818 + var kids = this.childNodes;
10.9819 + var kid;
10.9820 + var s = '';
10.9821 + var imax = kids.length;
10.9822 + for (var i = 0; i < imax; ++i) {
10.9823 + kid = kids[i];
10.9824 + if (kid.nodeType === Node.TEXT_NODE ||
10.9825 + kid.nodeType === Node.CDATA_SECTION_NODE) {
10.9826 + s += kid.nodeValue;
10.9827 + }
10.9828 + }
10.9829 + return s;
10.9830 + },
10.9831 +
10.9832 + /**
10.9833 + * HTML5 spec "Can be set, to replace the element's children with
10.9834 + * the given value."
10.9835 + */
10.9836 + set text(value) {
10.9837 + // this deletes all children, and make a new single text node
10.9838 + // with value
10.9839 + this.textContent = value;
10.9840 +
10.9841 + /* Currently we always execute, but this isn't quite right if
10.9842 + * the node has *not* been inserted into the document, then it
10.9843 + * should *not* fire. The more detailed answer from the spec:
10.9844 + *
10.9845 + * When a script element that is neither marked as having
10.9846 + * "already started" nor marked as being "parser-inserted"
10.9847 + * experiences one of the events listed in the following list,
10.9848 + * the user agent must synchronously run the script element:
10.9849 + *
10.9850 + * * The script element gets inserted into a document.
10.9851 + * * The script element is in a Document and its child nodes
10.9852 + * are changed.
10.9853 + * * The script element is in a Document and has a src
10.9854 + * attribute set where previously the element had no such
10.9855 + * attribute.
10.9856 + *
10.9857 + * And no doubt there are other cases as well.
10.9858 + */
10.9859 + Envjs.loadInlineScript(this);
10.9860 + },
10.9861 +
10.9862 + get htmlFor(){
10.9863 + return this.getAttribute('for');
10.9864 + },
10.9865 + set htmlFor(value){
10.9866 + this.setAttribute('for',value);
10.9867 + },
10.9868 + get event(){
10.9869 + return this.getAttribute('event');
10.9870 + },
10.9871 + set event(value){
10.9872 + this.setAttribute('event',value);
10.9873 + },
10.9874 + get charset(){
10.9875 + return this.getAttribute('charset');
10.9876 + },
10.9877 + set charset(value){
10.9878 + this.setAttribute('charset',value);
10.9879 + },
10.9880 + get defer(){
10.9881 + return this.getAttribute('defer');
10.9882 + },
10.9883 + set defer(value){
10.9884 + this.setAttribute('defer',value);
10.9885 + },
10.9886 + get src(){
10.9887 + return this.getAttribute('src')||'';
10.9888 + },
10.9889 + set src(value){
10.9890 + this.setAttribute('src',value);
10.9891 + },
10.9892 + get type(){
10.9893 + return this.getAttribute('type')||'';
10.9894 + },
10.9895 + set type(value){
10.9896 + this.setAttribute('type',value);
10.9897 + },
10.9898 + onload: HTMLEvents.prototype.onload,
10.9899 + onerror: HTMLEvents.prototype.onerror,
10.9900 + toString: function() {
10.9901 + return '[object HTMLScriptElement]';
10.9902 + }
10.9903 +});
10.9904 +
10.9905 +
10.9906 +/**
10.9907 + * HTMLSelectElement
10.9908 + * HTML5: http://dev.w3.org/html5/spec/Overview.html#the-select-element
10.9909 + */
10.9910 +HTMLSelectElement = function(ownerDocument) {
10.9911 + HTMLTypeValueInputs.apply(this, arguments);
10.9912 + this._oldIndex = -1;
10.9913 +};
10.9914 +
10.9915 +HTMLSelectElement.prototype = new HTMLTypeValueInputs();
10.9916 +__extend__(HTMLSelectElement.prototype, inputElements_dataProperties);
10.9917 +__extend__(HTMLButtonElement.prototype, inputElements_size);
10.9918 +__extend__(HTMLSelectElement.prototype, inputElements_onchange);
10.9919 +__extend__(HTMLSelectElement.prototype, inputElements_focusEvents);
10.9920 +__extend__(HTMLSelectElement.prototype, {
10.9921 +
10.9922 + get value() {
10.9923 + var index = this.selectedIndex;
10.9924 + return (index === -1) ? '' : this.options[index].value;
10.9925 + },
10.9926 + set value(newValue) {
10.9927 + var options = this.options;
10.9928 + var imax = options.length;
10.9929 + for (var i=0; i< imax; ++i) {
10.9930 + if (options[i].value == newValue) {
10.9931 + this.setAttribute('value', newValue);
10.9932 + this.selectedIndex = i;
10.9933 + return;
10.9934 + }
10.9935 + }
10.9936 + },
10.9937 + get multiple() {
10.9938 + return this.hasAttribute('multiple');
10.9939 + },
10.9940 + set multiple(value) {
10.9941 + if (value) {
10.9942 + this.setAttribute('multiple', '');
10.9943 + } else {
10.9944 + if (this.hasAttribute('multiple')) {
10.9945 + this.removeAttribute('multiple');
10.9946 + }
10.9947 + }
10.9948 + },
10.9949 + // Returns HTMLOptionsCollection
10.9950 + get options() {
10.9951 + var nodes = this.getElementsByTagName('option');
10.9952 + var alist = [];
10.9953 + var i, tmp;
10.9954 + for (i = 0; i < nodes.length; ++i) {
10.9955 + alist.push(nodes[i]);
10.9956 + this[i] = nodes[i];
10.9957 + tmp = nodes[i].name;
10.9958 + if (tmp) {
10.9959 + this[tmp] = nodes[i];
10.9960 + }
10.9961 + tmp = nodes[i].id;
10.9962 + if (tmp) {
10.9963 + this[tmp] = nodes[i];
10.9964 + }
10.9965 + }
10.9966 + return new HTMLCollection(alist);
10.9967 + },
10.9968 + get length() {
10.9969 + return this.options.length;
10.9970 + },
10.9971 + item: function(idx) {
10.9972 + return this.options[idx];
10.9973 + },
10.9974 + namedItem: function(aname) {
10.9975 + return this.options[aname];
10.9976 + },
10.9977 +
10.9978 + get selectedIndex() {
10.9979 + var options = this.options;
10.9980 + var imax = options.length;
10.9981 + for (var i=0; i < imax; ++i) {
10.9982 + if (options[i].selected) {
10.9983 + //console.log('select get selectedIndex %s', i);
10.9984 + return i;
10.9985 + }
10.9986 + }
10.9987 + //console.log('select get selectedIndex %s', -1);
10.9988 + return -1;
10.9989 + },
10.9990 +
10.9991 + set selectedIndex(value) {
10.9992 + var options = this.options;
10.9993 + var num = Number(value);
10.9994 + var imax = options.length;
10.9995 + for (var i = 0; i < imax; ++i) {
10.9996 + options[i].selected = (i === num);
10.9997 + }
10.9998 + },
10.9999 + get type() {
10.10000 + return this.multiple ? 'select-multiple' : 'select-one';
10.10001 + },
10.10002 +
10.10003 + add: function(element, before) {
10.10004 + this.appendChild(element);
10.10005 + //__add__(this);
10.10006 + },
10.10007 + remove: function() {
10.10008 + __remove__(this);
10.10009 + },
10.10010 + toString: function() {
10.10011 + return '[object HTMLSelectElement]';
10.10012 + }
10.10013 +});
10.10014 +
10.10015 +// Named Element Support
10.10016 +HTMLElement.registerSetAttribute('SELECT', 'name',
10.10017 + __updateFormForNamedElement__);
10.10018 +/**
10.10019 + * HTML 5: 4.6.22 The span element
10.10020 + * http://dev.w3.org/html5/spec/Overview.html#the-span-element
10.10021 + *
10.10022 + */
10.10023 +HTMLSpanElement = function(ownerDocument) {
10.10024 + HTMLElement.apply(this, arguments);
10.10025 +};
10.10026 +HTMLSpanElement.prototype = new HTMLElement();
10.10027 +__extend__(HTMLSpanElement.prototype, {
10.10028 + toString: function(){
10.10029 + return '[object HTMLSpanElement]';
10.10030 + }
10.10031 +});
10.10032 +
10.10033 +
10.10034 +/**
10.10035 + * HTMLStyleElement - DOM Level 2
10.10036 + * HTML5 4.2.6 The style element
10.10037 + * http://dev.w3.org/html5/spec/Overview.html#the-style-element
10.10038 + */
10.10039 +HTMLStyleElement = function(ownerDocument) {
10.10040 + HTMLElement.apply(this, arguments);
10.10041 +};
10.10042 +HTMLStyleElement.prototype = new HTMLElement();
10.10043 +__extend__(HTMLStyleElement.prototype, {
10.10044 + get disabled(){
10.10045 + return this.getAttribute('disabled');
10.10046 + },
10.10047 + set disabled(value){
10.10048 + this.setAttribute('disabled',value);
10.10049 + },
10.10050 + get media(){
10.10051 + return this.getAttribute('media');
10.10052 + },
10.10053 + set media(value){
10.10054 + this.setAttribute('media',value);
10.10055 + },
10.10056 + get type(){
10.10057 + return this.getAttribute('type');
10.10058 + },
10.10059 + set type(value){
10.10060 + this.setAttribute('type',value);
10.10061 + },
10.10062 + toString: function() {
10.10063 + return '[object HTMLStyleElement]';
10.10064 + }
10.10065 +});
10.10066 +
10.10067 +/**
10.10068 + * HTMLTableElement - DOM Level 2
10.10069 + * Implementation Provided by Steven Wood
10.10070 + *
10.10071 + * HTML5: 4.9.1 The table element
10.10072 + * http://dev.w3.org/html5/spec/Overview.html#the-table-element
10.10073 + */
10.10074 +HTMLTableElement = function(ownerDocument) {
10.10075 + HTMLElement.apply(this, arguments);
10.10076 +};
10.10077 +HTMLTableElement.prototype = new HTMLElement();
10.10078 +__extend__(HTMLTableElement.prototype, {
10.10079 +
10.10080 + get tFoot() {
10.10081 + //tFoot returns the table footer.
10.10082 + return this.getElementsByTagName("tfoot")[0];
10.10083 + },
10.10084 +
10.10085 + createTFoot : function () {
10.10086 + var tFoot = this.tFoot;
10.10087 +
10.10088 + if (!tFoot) {
10.10089 + tFoot = document.createElement("tfoot");
10.10090 + this.appendChild(tFoot);
10.10091 + }
10.10092 +
10.10093 + return tFoot;
10.10094 + },
10.10095 +
10.10096 + deleteTFoot : function () {
10.10097 + var foot = this.tFoot;
10.10098 + if (foot) {
10.10099 + foot.parentNode.removeChild(foot);
10.10100 + }
10.10101 + },
10.10102 +
10.10103 + get tHead() {
10.10104 + //tHead returns the table head.
10.10105 + return this.getElementsByTagName("thead")[0];
10.10106 + },
10.10107 +
10.10108 + createTHead : function () {
10.10109 + var tHead = this.tHead;
10.10110 +
10.10111 + if (!tHead) {
10.10112 + tHead = document.createElement("thead");
10.10113 + this.insertBefore(tHead, this.firstChild);
10.10114 + }
10.10115 +
10.10116 + return tHead;
10.10117 + },
10.10118 +
10.10119 + deleteTHead : function () {
10.10120 + var head = this.tHead;
10.10121 + if (head) {
10.10122 + head.parentNode.removeChild(head);
10.10123 + }
10.10124 + },
10.10125 +
10.10126 + /*appendChild : function (child) {
10.10127 +
10.10128 + var tagName;
10.10129 + if(child&&child.nodeType==Node.ELEMENT_NODE){
10.10130 + tagName = child.tagName.toLowerCase();
10.10131 + if (tagName === "tr") {
10.10132 + // need an implcit <tbody> to contain this...
10.10133 + if (!this.currentBody) {
10.10134 + this.currentBody = document.createElement("tbody");
10.10135 +
10.10136 + Node.prototype.appendChild.apply(this, [this.currentBody]);
10.10137 + }
10.10138 +
10.10139 + return this.currentBody.appendChild(child);
10.10140 +
10.10141 + } else if (tagName === "tbody" || tagName === "tfoot" && this.currentBody) {
10.10142 + this.currentBody = child;
10.10143 + return Node.prototype.appendChild.apply(this, arguments);
10.10144 +
10.10145 + } else {
10.10146 + return Node.prototype.appendChild.apply(this, arguments);
10.10147 + }
10.10148 + }else{
10.10149 + //tables can still have text node from white space
10.10150 + return Node.prototype.appendChild.apply(this, arguments);
10.10151 + }
10.10152 + },*/
10.10153 +
10.10154 + get tBodies() {
10.10155 + return new HTMLCollection(this.getElementsByTagName("tbody"));
10.10156 +
10.10157 + },
10.10158 +
10.10159 + get rows() {
10.10160 + return new HTMLCollection(this.getElementsByTagName("tr"));
10.10161 + },
10.10162 +
10.10163 + insertRow : function (idx) {
10.10164 + if (idx === undefined) {
10.10165 + throw new Error("Index omitted in call to HTMLTableElement.insertRow ");
10.10166 + }
10.10167 +
10.10168 + var rows = this.rows,
10.10169 + numRows = rows.length,
10.10170 + node,
10.10171 + inserted,
10.10172 + lastRow;
10.10173 +
10.10174 + if (idx > numRows) {
10.10175 + throw new Error("Index > rows.length in call to HTMLTableElement.insertRow");
10.10176 + }
10.10177 +
10.10178 + inserted = document.createElement("tr");
10.10179 + // If index is -1 or equal to the number of rows,
10.10180 + // the row is appended as the last row. If index is omitted
10.10181 + // or greater than the number of rows, an error will result
10.10182 + if (idx === -1 || idx === numRows) {
10.10183 + this.appendChild(inserted);
10.10184 + } else {
10.10185 + rows[idx].parentNode.insertBefore(inserted, rows[idx]);
10.10186 + }
10.10187 +
10.10188 + return inserted;
10.10189 + },
10.10190 +
10.10191 + deleteRow : function (idx) {
10.10192 + var elem = this.rows[idx];
10.10193 + elem.parentNode.removeChild(elem);
10.10194 + },
10.10195 +
10.10196 + get summary() {
10.10197 + return this.getAttribute("summary");
10.10198 + },
10.10199 +
10.10200 + set summary(summary) {
10.10201 + this.setAttribute("summary", summary);
10.10202 + },
10.10203 +
10.10204 + get align() {
10.10205 + return this.getAttribute("align");
10.10206 + },
10.10207 +
10.10208 + set align(align) {
10.10209 + this.setAttribute("align", align);
10.10210 + },
10.10211 +
10.10212 + get bgColor() {
10.10213 + return this.getAttribute("bgColor");
10.10214 + },
10.10215 +
10.10216 + set bgColor(bgColor) {
10.10217 + return this.setAttribute("bgColor", bgColor);
10.10218 + },
10.10219 +
10.10220 + get cellPadding() {
10.10221 + return this.getAttribute("cellPadding");
10.10222 + },
10.10223 +
10.10224 + set cellPadding(cellPadding) {
10.10225 + return this.setAttribute("cellPadding", cellPadding);
10.10226 + },
10.10227 +
10.10228 + get cellSpacing() {
10.10229 + return this.getAttribute("cellSpacing");
10.10230 + },
10.10231 +
10.10232 + set cellSpacing(cellSpacing) {
10.10233 + this.setAttribute("cellSpacing", cellSpacing);
10.10234 + },
10.10235 +
10.10236 + get frame() {
10.10237 + return this.getAttribute("frame");
10.10238 + },
10.10239 +
10.10240 + set frame(frame) {
10.10241 + this.setAttribute("frame", frame);
10.10242 + },
10.10243 +
10.10244 + get rules() {
10.10245 + return this.getAttribute("rules");
10.10246 + },
10.10247 +
10.10248 + set rules(rules) {
10.10249 + this.setAttribute("rules", rules);
10.10250 + },
10.10251 +
10.10252 + get width() {
10.10253 + return this.getAttribute("width");
10.10254 + },
10.10255 +
10.10256 + set width(width) {
10.10257 + this.setAttribute("width", width);
10.10258 + },
10.10259 + toString: function() {
10.10260 + return '[object HTMLTableElement]';
10.10261 + }
10.10262 +});
10.10263 +
10.10264 +/*
10.10265 + * HTMLxElement - DOM Level 2
10.10266 + * - Contributed by Steven Wood
10.10267 + *
10.10268 + * HTML5: 4.9.5 The tbody element
10.10269 + * http://dev.w3.org/html5/spec/Overview.html#the-tbody-element
10.10270 + * http://dev.w3.org/html5/spec/Overview.html#htmltablesectionelement
10.10271 + */
10.10272 +HTMLTableSectionElement = function(ownerDocument) {
10.10273 + HTMLElement.apply(this, arguments);
10.10274 +};
10.10275 +HTMLTableSectionElement.prototype = new HTMLElement();
10.10276 +__extend__(HTMLTableSectionElement.prototype, {
10.10277 +
10.10278 + /*appendChild : function (child) {
10.10279 +
10.10280 + // disallow nesting of these elements.
10.10281 + if (child.tagName.match(/TBODY|TFOOT|THEAD/)) {
10.10282 + return this.parentNode.appendChild(child);
10.10283 + } else {
10.10284 + return Node.prototype.appendChild.apply(this, arguments);
10.10285 + }
10.10286 +
10.10287 + },*/
10.10288 +
10.10289 + get align() {
10.10290 + return this.getAttribute("align");
10.10291 + },
10.10292 +
10.10293 + get ch() {
10.10294 + return this.getAttribute("ch");
10.10295 + },
10.10296 +
10.10297 + set ch(ch) {
10.10298 + this.setAttribute("ch", ch);
10.10299 + },
10.10300 +
10.10301 + // ch gets or sets the alignment character for cells in a column.
10.10302 + set chOff(chOff) {
10.10303 + this.setAttribute("chOff", chOff);
10.10304 + },
10.10305 +
10.10306 + get chOff() {
10.10307 + return this.getAttribute("chOff");
10.10308 + },
10.10309 +
10.10310 + get vAlign () {
10.10311 + return this.getAttribute("vAlign");
10.10312 + },
10.10313 +
10.10314 + get rows() {
10.10315 + return new HTMLCollection(this.getElementsByTagName("tr"));
10.10316 + },
10.10317 +
10.10318 + insertRow : function (idx) {
10.10319 + if (idx === undefined) {
10.10320 + throw new Error("Index omitted in call to HTMLTableSectionElement.insertRow ");
10.10321 + }
10.10322 +
10.10323 + var numRows = this.rows.length,
10.10324 + node = null;
10.10325 +
10.10326 + if (idx > numRows) {
10.10327 + throw new Error("Index > rows.length in call to HTMLTableSectionElement.insertRow");
10.10328 + }
10.10329 +
10.10330 + var row = document.createElement("tr");
10.10331 + // If index is -1 or equal to the number of rows,
10.10332 + // the row is appended as the last row. If index is omitted
10.10333 + // or greater than the number of rows, an error will result
10.10334 + if (idx === -1 || idx === numRows) {
10.10335 + this.appendChild(row);
10.10336 + } else {
10.10337 + node = this.firstChild;
10.10338 +
10.10339 + for (var i=0; i<idx; i++) {
10.10340 + node = node.nextSibling;
10.10341 + }
10.10342 + }
10.10343 +
10.10344 + this.insertBefore(row, node);
10.10345 +
10.10346 + return row;
10.10347 + },
10.10348 +
10.10349 + deleteRow : function (idx) {
10.10350 + var elem = this.rows[idx];
10.10351 + this.removeChild(elem);
10.10352 + },
10.10353 +
10.10354 + toString: function() {
10.10355 + return '[object HTMLTableSectionElement]';
10.10356 + }
10.10357 +});
10.10358 +
10.10359 +/**
10.10360 + * HTMLTableCellElement
10.10361 + * base interface for TD and TH
10.10362 + *
10.10363 + * HTML5: 4.9.11 Attributes common to td and th elements
10.10364 + * http://dev.w3.org/html5/spec/Overview.html#htmltablecellelement
10.10365 + */
10.10366 +HTMLTableCellElement = function(ownerDocument) {
10.10367 + HTMLElement.apply(this, arguments);
10.10368 +};
10.10369 +HTMLTableCellElement.prototype = new HTMLElement();
10.10370 +__extend__(HTMLTableCellElement.prototype, {
10.10371 +
10.10372 +
10.10373 + // TOOD: attribute unsigned long colSpan;
10.10374 + // TODO: attribute unsigned long rowSpan;
10.10375 + // TODO: attribute DOMString headers;
10.10376 + // TODO: readonly attribute long cellIndex;
10.10377 +
10.10378 + // Not really necessary but might be helpful in debugging
10.10379 + toString: function() {
10.10380 + return '[object HTMLTableCellElement]';
10.10381 + }
10.10382 +
10.10383 +});
10.10384 +
10.10385 +/**
10.10386 + * HTMLTableDataCellElement
10.10387 + * HTML5: 4.9.9 The td Element
10.10388 + * http://dev.w3.org/html5/spec/Overview.html#the-td-element
10.10389 + */
10.10390 +HTMLTableDataCellElement = function(ownerDocument) {
10.10391 + HTMLElement.apply(this, arguments);
10.10392 +};
10.10393 +HTMLTableDataCellElement.prototype = new HTMLTableCellElement();
10.10394 +__extend__(HTMLTableDataCellElement.prototype, {
10.10395 +
10.10396 + // adds no new properties or methods
10.10397 +
10.10398 + toString: function() {
10.10399 + return '[object HTMLTableDataCellElement]';
10.10400 + }
10.10401 +});
10.10402 +
10.10403 +/**
10.10404 + * HTMLTableHeaderCellElement
10.10405 + * HTML5: 4.9.10 The th Element
10.10406 + * http://dev.w3.org/html5/spec/Overview.html#the-th-element
10.10407 + */
10.10408 +HTMLTableHeaderCellElement = function(ownerDocument) {
10.10409 + HTMLElement.apply(this, arguments);
10.10410 +};
10.10411 +HTMLTableHeaderCellElement.prototype = new HTMLTableCellElement();
10.10412 +__extend__(HTMLTableHeaderCellElement.prototype, {
10.10413 +
10.10414 + // TODO: attribute DOMString scope
10.10415 +
10.10416 + toString: function() {
10.10417 + return '[object HTMLTableHeaderCellElement]';
10.10418 + }
10.10419 +});
10.10420 +
10.10421 +
10.10422 +/**
10.10423 + * HTMLTextAreaElement - DOM Level 2
10.10424 + * HTML5: 4.10.11 The textarea element
10.10425 + * http://dev.w3.org/html5/spec/Overview.html#the-textarea-element
10.10426 + */
10.10427 +HTMLTextAreaElement = function(ownerDocument) {
10.10428 + HTMLInputAreaCommon.apply(this, arguments);
10.10429 + this._rawvalue = null;
10.10430 +};
10.10431 +HTMLTextAreaElement.prototype = new HTMLInputAreaCommon();
10.10432 +__extend__(HTMLTextAreaElement.prototype, {
10.10433 + get cols(){
10.10434 + return Number(this.getAttribute('cols')||'-1');
10.10435 + },
10.10436 + set cols(value){
10.10437 + this.setAttribute('cols', value);
10.10438 + },
10.10439 + get rows(){
10.10440 + return Number(this.getAttribute('rows')||'-1');
10.10441 + },
10.10442 + set rows(value){
10.10443 + this.setAttribute('rows', value);
10.10444 + },
10.10445 +
10.10446 + /*
10.10447 + * read-only
10.10448 + */
10.10449 + get type() {
10.10450 + return this.getAttribute('type') || 'textarea';
10.10451 + },
10.10452 +
10.10453 + /**
10.10454 + * This modifies the text node under the widget
10.10455 + */
10.10456 + get defaultValue() {
10.10457 + return this.textContent;
10.10458 + },
10.10459 + set defaultValue(value) {
10.10460 + this.textContent = value;
10.10461 + },
10.10462 +
10.10463 + /**
10.10464 + * http://dev.w3.org/html5/spec/Overview.html#concept-textarea-raw-value
10.10465 + */
10.10466 + get value() {
10.10467 + return (this._rawvalue === null) ? this.defaultValue : this._rawvalue;
10.10468 + },
10.10469 + set value(value) {
10.10470 + this._rawvalue = value;
10.10471 + },
10.10472 + toString: function() {
10.10473 + return '[object HTMLTextAreaElement]';
10.10474 + }
10.10475 +});
10.10476 +
10.10477 +// Named Element Support
10.10478 +HTMLElement.registerSetAttribute('TEXTAREA', 'name',
10.10479 + __updateFormForNamedElement__);
10.10480 +
10.10481 +/**
10.10482 + * HTMLTitleElement - DOM Level 2
10.10483 + *
10.10484 + * HTML5: 4.2.2 The title element
10.10485 + * http://dev.w3.org/html5/spec/Overview.html#the-title-element-0
10.10486 + */
10.10487 +HTMLTitleElement = function(ownerDocument) {
10.10488 + HTMLElement.apply(this, arguments);
10.10489 +};
10.10490 +HTMLTitleElement.prototype = new HTMLElement();
10.10491 +__extend__(HTMLTitleElement.prototype, {
10.10492 + get text() {
10.10493 + return this.innerText;
10.10494 + },
10.10495 +
10.10496 + set text(titleStr) {
10.10497 + this.textContent = titleStr;
10.10498 + },
10.10499 + toString: function() {
10.10500 + return '[object HTMLTitleElement]';
10.10501 + }
10.10502 +});
10.10503 +
10.10504 +
10.10505 +
10.10506 +/**
10.10507 + * HTMLRowElement - DOM Level 2
10.10508 + * Implementation Provided by Steven Wood
10.10509 + *
10.10510 + * HTML5: 4.9.8 The tr element
10.10511 + * http://dev.w3.org/html5/spec/Overview.html#the-tr-element
10.10512 + */
10.10513 +HTMLTableRowElement = function(ownerDocument) {
10.10514 + HTMLElement.apply(this, arguments);
10.10515 +};
10.10516 +HTMLTableRowElement.prototype = new HTMLElement();
10.10517 +__extend__(HTMLTableRowElement.prototype, {
10.10518 +
10.10519 + /*appendChild : function (child) {
10.10520 +
10.10521 + var retVal = Node.prototype.appendChild.apply(this, arguments);
10.10522 + retVal.cellIndex = this.cells.length -1;
10.10523 +
10.10524 + return retVal;
10.10525 + },*/
10.10526 + // align gets or sets the horizontal alignment of data within cells of the row.
10.10527 + get align() {
10.10528 + return this.getAttribute("align");
10.10529 + },
10.10530 +
10.10531 + get bgColor() {
10.10532 + return this.getAttribute("bgcolor");
10.10533 + },
10.10534 +
10.10535 + get cells() {
10.10536 + var nl = this.getElementsByTagName("td");
10.10537 + return new HTMLCollection(nl);
10.10538 + },
10.10539 +
10.10540 + get ch() {
10.10541 + return this.getAttribute("ch");
10.10542 + },
10.10543 +
10.10544 + set ch(ch) {
10.10545 + this.setAttribute("ch", ch);
10.10546 + },
10.10547 +
10.10548 + // ch gets or sets the alignment character for cells in a column.
10.10549 + set chOff(chOff) {
10.10550 + this.setAttribute("chOff", chOff);
10.10551 + },
10.10552 +
10.10553 + get chOff() {
10.10554 + return this.getAttribute("chOff");
10.10555 + },
10.10556 +
10.10557 + /**
10.10558 + * http://dev.w3.org/html5/spec/Overview.html#dom-tr-rowindex
10.10559 + */
10.10560 + get rowIndex() {
10.10561 + var nl = this.parentNode.childNodes;
10.10562 + for (var i=0; i<nl.length; i++) {
10.10563 + if (nl[i] === this) {
10.10564 + return i;
10.10565 + }
10.10566 + }
10.10567 + return -1;
10.10568 + },
10.10569 +
10.10570 + /**
10.10571 + * http://dev.w3.org/html5/spec/Overview.html#dom-tr-sectionrowindex
10.10572 + */
10.10573 + get sectionRowIndex() {
10.10574 + var nl = this.parentNode.getElementsByTagName(this.tagName);
10.10575 + for (var i=0; i<nl.length; i++) {
10.10576 + if (nl[i] === this) {
10.10577 + return i;
10.10578 + }
10.10579 + }
10.10580 + return -1;
10.10581 + },
10.10582 +
10.10583 + get vAlign () {
10.10584 + return this.getAttribute("vAlign");
10.10585 + },
10.10586 +
10.10587 + insertCell : function (idx) {
10.10588 + if (idx === undefined) {
10.10589 + throw new Error("Index omitted in call to HTMLTableRow.insertCell");
10.10590 + }
10.10591 +
10.10592 + var numCells = this.cells.length,
10.10593 + node = null;
10.10594 +
10.10595 + if (idx > numCells) {
10.10596 + throw new Error("Index > rows.length in call to HTMLTableRow.insertCell");
10.10597 + }
10.10598 +
10.10599 + var cell = document.createElement("td");
10.10600 +
10.10601 + if (idx === -1 || idx === numCells) {
10.10602 + this.appendChild(cell);
10.10603 + } else {
10.10604 +
10.10605 +
10.10606 + node = this.firstChild;
10.10607 +
10.10608 + for (var i=0; i<idx; i++) {
10.10609 + node = node.nextSibling;
10.10610 + }
10.10611 + }
10.10612 +
10.10613 + this.insertBefore(cell, node);
10.10614 + cell.cellIndex = idx;
10.10615 +
10.10616 + return cell;
10.10617 + },
10.10618 + deleteCell : function (idx) {
10.10619 + var elem = this.cells[idx];
10.10620 + this.removeChild(elem);
10.10621 + },
10.10622 + toString: function() {
10.10623 + return '[object HTMLTableRowElement]';
10.10624 + }
10.10625 +
10.10626 +});
10.10627 +
10.10628 +/*
10.10629 + * HTMLUListElement
10.10630 + * HTML5: 4.5.7 The ul Element
10.10631 + * http://dev.w3.org/html5/spec/Overview.html#htmlhtmlelement
10.10632 + */
10.10633 +HTMLUListElement = function(ownerDocument) {
10.10634 + HTMLElement.apply(this, arguments);
10.10635 +};
10.10636 +
10.10637 +HTMLUListElement.prototype = new HTMLElement();
10.10638 +__extend__(HTMLUListElement.prototype, {
10.10639 +
10.10640 + // no additional properties or elements
10.10641 +
10.10642 + toString: function() {
10.10643 + return '[object HTMLUListElement]';
10.10644 + }
10.10645 +});
10.10646 +
10.10647 +
10.10648 +/**
10.10649 + * HTMLUnknownElement DOM Level 2
10.10650 + */
10.10651 +HTMLUnknownElement = function(ownerDocument) {
10.10652 + HTMLElement.apply(this, arguments);
10.10653 +};
10.10654 +HTMLUnknownElement.prototype = new HTMLElement();
10.10655 +__extend__(HTMLUnknownElement.prototype,{
10.10656 + toString: function(){
10.10657 + return '[object HTMLUnknownElement]';
10.10658 + }
10.10659 +});
10.10660 +
10.10661 +/**
10.10662 + * @author john resig & the envjs team
10.10663 + * @uri http://www.envjs.com/
10.10664 + * @copyright 2008-2010
10.10665 + * @license MIT
10.10666 + */
10.10667 +//CLOSURE_END
10.10668 +}());
10.10669 +
10.10670 +/**
10.10671 + * DOM Style Level 2
10.10672 + */
10.10673 +var CSS2Properties,
10.10674 + CSSRule,
10.10675 + CSSStyleRule,
10.10676 + CSSImportRule,
10.10677 + CSSMediaRule,
10.10678 + CSSFontFaceRule,
10.10679 + CSSPageRule,
10.10680 + CSSRuleList,
10.10681 + CSSStyleSheet,
10.10682 + StyleSheet,
10.10683 + StyleSheetList;
10.10684 +;
10.10685 +
10.10686 +/*
10.10687 + * Envjs css.1.2.13
10.10688 + * Pure JavaScript Browser Environment
10.10689 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.10690 + * Copyright 2008-2010 John Resig, under the MIT License
10.10691 + */
10.10692 +
10.10693 +//CLOSURE_START
10.10694 +(function(){
10.10695 +
10.10696 +
10.10697 +
10.10698 +
10.10699 +
10.10700 +/**
10.10701 + * @author john resig
10.10702 + */
10.10703 +// Helper method for extending one object with another.
10.10704 +function __extend__(a,b) {
10.10705 + for ( var i in b ) {
10.10706 + var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
10.10707 + if ( g || s ) {
10.10708 + if ( g ) { a.__defineGetter__(i, g); }
10.10709 + if ( s ) { a.__defineSetter__(i, s); }
10.10710 + } else {
10.10711 + a[i] = b[i];
10.10712 + }
10.10713 + } return a;
10.10714 +}
10.10715 +
10.10716 +/**
10.10717 + * @author john resig
10.10718 + */
10.10719 +//from jQuery
10.10720 +function __setArray__( target, array ) {
10.10721 + // Resetting the length to 0, then using the native Array push
10.10722 + // is a super-fast way to populate an object with array-like properties
10.10723 + target.length = 0;
10.10724 + Array.prototype.push.apply( target, array );
10.10725 +}
10.10726 +
10.10727 +/**
10.10728 + * @author ariel flesler
10.10729 + * http://flesler.blogspot.com/2008/11/fast-trim-function-for-javascript.html
10.10730 + * @param {Object} str
10.10731 + */
10.10732 +function __trim__( str ){
10.10733 + return (str || "").replace( /^\s+|\s+$/g, "" );
10.10734 +}
10.10735 +
10.10736 +/*
10.10737 + * Interface DocumentStyle (introduced in DOM Level 2)
10.10738 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/stylesheets.html#StyleSheets-StyleSheet-DocumentStyle
10.10739 + *
10.10740 + * interface DocumentStyle {
10.10741 + * readonly attribute StyleSheetList styleSheets;
10.10742 + * };
10.10743 + *
10.10744 + */
10.10745 +__extend__(Document.prototype, {
10.10746 + get styleSheets() {
10.10747 + if (! this._styleSheets) {
10.10748 + this._styleSheets = new StyleSheetList();
10.10749 + }
10.10750 + return this._styleSheets;
10.10751 + }
10.10752 +});
10.10753 +/*
10.10754 + * CSS2Properties - DOM Level 2 CSS
10.10755 + * Renamed to CSSStyleDeclaration??
10.10756 + */
10.10757 +
10.10758 +var __toCamelCase__ = function(name) {
10.10759 + if (name) {
10.10760 + return name.replace(/\-(\w)/g, function(all, letter) {
10.10761 + return letter.toUpperCase();
10.10762 + });
10.10763 + }
10.10764 + return name;
10.10765 +};
10.10766 +
10.10767 +var __toDashed__ = function(camelCaseName) {
10.10768 + if (camelCaseName) {
10.10769 + return camelCaseName.replace(/[A-Z]/g, function(all) {
10.10770 + return '-' + all.toLowerCase();
10.10771 + });
10.10772 + }
10.10773 + return camelCaseName;
10.10774 +};
10.10775 +
10.10776 +CSS2Properties = function(element){
10.10777 + //console.log('css2properties %s', __cssproperties__++);
10.10778 + this.styleIndex = __supportedStyles__;//non-standard
10.10779 + this.type = element.tagName;//non-standard
10.10780 + __setArray__(this, []);
10.10781 + __cssTextToStyles__(this, element.cssText || '');
10.10782 +};
10.10783 +__extend__(CSS2Properties.prototype, {
10.10784 + get cssText() {
10.10785 + var i, css = [];
10.10786 + for (i = 0; i < this.length; ++i) {
10.10787 + css.push(this[i] + ': ' + this.getPropertyValue(this[i]) + ';');
10.10788 + }
10.10789 + return css.join(' ');
10.10790 + },
10.10791 + set cssText(cssText) {
10.10792 + __cssTextToStyles__(this, cssText);
10.10793 + },
10.10794 + getPropertyCSSValue: function(name) {
10.10795 + //?
10.10796 + },
10.10797 + getPropertyPriority: function() {
10.10798 +
10.10799 + },
10.10800 + getPropertyValue: function(name) {
10.10801 + var index, cname = __toCamelCase__(name);
10.10802 + if (cname in this.styleIndex) {
10.10803 + return this[cname];
10.10804 + } else {
10.10805 + index = Array.prototype.indexOf.apply(this, [name]);
10.10806 + if (index > -1) {
10.10807 + return this[index];
10.10808 + }
10.10809 + }
10.10810 + return null;
10.10811 + },
10.10812 + item: function(index) {
10.10813 + return this[index];
10.10814 + },
10.10815 + removeProperty: function(name) {
10.10816 + this.styleIndex[name] = null;
10.10817 + name = __toDashed__(name);
10.10818 + var index = Array.prototype.indexOf.apply(this, [name]);
10.10819 + if (index > -1) {
10.10820 + Array.prototype.splice.apply(this, [1,index]);
10.10821 + }
10.10822 + },
10.10823 + setProperty: function(name, value, priority) {
10.10824 + var nval;
10.10825 + name = __toCamelCase__(name);
10.10826 + if (value !== undefined && name in this.styleIndex) {
10.10827 + // NOTE: parseFloat('300px') ==> 300 no
10.10828 + // NOTE: Number('300px') ==> Nan yes
10.10829 + nval = Number(value);
10.10830 + this.styleIndex[name] = isNaN(nval) ? value : nval;
10.10831 + name = __toDashed__(name);
10.10832 + if (Array.prototype.indexOf.apply(this, [name]) === -1 ){
10.10833 + Array.prototype.push.apply(this,[name]);
10.10834 + }
10.10835 + }
10.10836 + },
10.10837 + toString: function() {
10.10838 + return '[object CSS2Properties]';
10.10839 + }
10.10840 +});
10.10841 +
10.10842 +
10.10843 +
10.10844 +var __cssTextToStyles__ = function(css2props, cssText) {
10.10845 + //console.log('__cssTextToStyles__ %s %s', css2props, cssText);
10.10846 + //var styleArray=[];
10.10847 + var i, style, styles = cssText.split(';');
10.10848 + for (i = 0; i < styles.length; ++i) {
10.10849 + style = styles[i].split(':');
10.10850 + if (style.length === 2) {
10.10851 + css2props.setProperty(style[0].replace(' ', '', 'g'),
10.10852 + style[1].replace(' ', '', 'g'));
10.10853 + }
10.10854 + }
10.10855 +};
10.10856 +
10.10857 +//Obviously these arent all supported but by commenting out various
10.10858 +//sections this provides a single location to configure what is
10.10859 +//exposed as supported.
10.10860 +var __supportedStyles__ = {
10.10861 + azimuth: null,
10.10862 + background: null,
10.10863 + backgroundAttachment: null,
10.10864 + backgroundColor: 'rgb(0,0,0)',
10.10865 + backgroundImage: null,
10.10866 + backgroundPosition: null,
10.10867 + backgroundRepeat: null,
10.10868 + border: null,
10.10869 + borderBottom: null,
10.10870 + borderBottomColor: null,
10.10871 + borderBottomStyle: null,
10.10872 + borderBottomWidth: null,
10.10873 + borderCollapse: null,
10.10874 + borderColor: null,
10.10875 + borderLeft: null,
10.10876 + borderLeftColor: null,
10.10877 + borderLeftStyle: null,
10.10878 + borderLeftWidth: null,
10.10879 + borderRight: null,
10.10880 + borderRightColor: null,
10.10881 + borderRightStyle: null,
10.10882 + borderRightWidth: null,
10.10883 + borderSpacing: null,
10.10884 + borderStyle: null,
10.10885 + borderTop: null,
10.10886 + borderTopColor: null,
10.10887 + borderTopStyle: null,
10.10888 + borderTopWidth: null,
10.10889 + borderWidth: null,
10.10890 + bottom: null,
10.10891 + captionSide: null,
10.10892 + clear: null,
10.10893 + clip: null,
10.10894 + color: null,
10.10895 + content: null,
10.10896 + counterIncrement: null,
10.10897 + counterReset: null,
10.10898 + cssFloat: null,
10.10899 + cue: null,
10.10900 + cueAfter: null,
10.10901 + cueBefore: null,
10.10902 + cursor: null,
10.10903 + direction: 'ltr',
10.10904 + display: null,
10.10905 + elevation: null,
10.10906 + emptyCells: null,
10.10907 + font: null,
10.10908 + fontFamily: null,
10.10909 + fontSize: '1em',
10.10910 + fontSizeAdjust: null,
10.10911 + fontStretch: null,
10.10912 + fontStyle: null,
10.10913 + fontVariant: null,
10.10914 + fontWeight: null,
10.10915 + height: '',
10.10916 + left: null,
10.10917 + letterSpacing: null,
10.10918 + lineHeight: null,
10.10919 + listStyle: null,
10.10920 + listStyleImage: null,
10.10921 + listStylePosition: null,
10.10922 + listStyleType: null,
10.10923 + margin: null,
10.10924 + marginBottom: '0px',
10.10925 + marginLeft: '0px',
10.10926 + marginRight: '0px',
10.10927 + marginTop: '0px',
10.10928 + markerOffset: null,
10.10929 + marks: null,
10.10930 + maxHeight: null,
10.10931 + maxWidth: null,
10.10932 + minHeight: null,
10.10933 + minWidth: null,
10.10934 + opacity: 1,
10.10935 + orphans: null,
10.10936 + outline: null,
10.10937 + outlineColor: null,
10.10938 + outlineOffset: null,
10.10939 + outlineStyle: null,
10.10940 + outlineWidth: null,
10.10941 + overflow: null,
10.10942 + overflowX: null,
10.10943 + overflowY: null,
10.10944 + padding: null,
10.10945 + paddingBottom: '0px',
10.10946 + paddingLeft: '0px',
10.10947 + paddingRight: '0px',
10.10948 + paddingTop: '0px',
10.10949 + page: null,
10.10950 + pageBreakAfter: null,
10.10951 + pageBreakBefore: null,
10.10952 + pageBreakInside: null,
10.10953 + pause: null,
10.10954 + pauseAfter: null,
10.10955 + pauseBefore: null,
10.10956 + pitch: null,
10.10957 + pitchRange: null,
10.10958 + position: null,
10.10959 + quotes: null,
10.10960 + richness: null,
10.10961 + right: null,
10.10962 + size: null,
10.10963 + speak: null,
10.10964 + speakHeader: null,
10.10965 + speakNumeral: null,
10.10966 + speakPunctuation: null,
10.10967 + speechRate: null,
10.10968 + stress: null,
10.10969 + tableLayout: null,
10.10970 + textAlign: null,
10.10971 + textDecoration: null,
10.10972 + textIndent: null,
10.10973 + textShadow: null,
10.10974 + textTransform: null,
10.10975 + top: null,
10.10976 + unicodeBidi: null,
10.10977 + verticalAlign: null,
10.10978 + visibility: '',
10.10979 + voiceFamily: null,
10.10980 + volume: null,
10.10981 + whiteSpace: null,
10.10982 + widows: null,
10.10983 + width: '1px',
10.10984 + wordSpacing: null,
10.10985 + zIndex: 1
10.10986 +};
10.10987 +
10.10988 +var __displayMap__ = {
10.10989 + DIV : 'block',
10.10990 + P : 'block',
10.10991 + A : 'inline',
10.10992 + CODE : 'inline',
10.10993 + PRE : 'block',
10.10994 + SPAN : 'inline',
10.10995 + TABLE : 'table',
10.10996 + THEAD : 'table-header-group',
10.10997 + TBODY : 'table-row-group',
10.10998 + TR : 'table-row',
10.10999 + TH : 'table-cell',
10.11000 + TD : 'table-cell',
10.11001 + UL : 'block',
10.11002 + LI : 'list-item'
10.11003 +};
10.11004 +
10.11005 +for (var style in __supportedStyles__) {
10.11006 + if (__supportedStyles__.hasOwnProperty(style)) {
10.11007 + (function(name) {
10.11008 + if (name === 'width' || name === 'height') {
10.11009 + CSS2Properties.prototype.__defineGetter__(name, function() {
10.11010 + if (this.display === 'none'){
10.11011 + return '0px';
10.11012 + }
10.11013 + return this.styleIndex[name];
10.11014 + });
10.11015 + } else if (name === 'display') {
10.11016 + //display will be set to a tagName specific value if ''
10.11017 + CSS2Properties.prototype.__defineGetter__(name, function() {
10.11018 + var val = this.styleIndex[name];
10.11019 + val = val ? val :__displayMap__[this.type];
10.11020 + return val;
10.11021 + });
10.11022 + } else {
10.11023 + CSS2Properties.prototype.__defineGetter__(name, function() {
10.11024 + return this.styleIndex[name];
10.11025 + });
10.11026 + }
10.11027 + CSS2Properties.prototype.__defineSetter__(name, function(value) {
10.11028 + this.setProperty(name, value);
10.11029 + });
10.11030 + }(style));
10.11031 + }
10.11032 +}
10.11033 +
10.11034 +/*
10.11035 + * CSSRule - DOM Level 2
10.11036 + */
10.11037 +CSSRule = function(options) {
10.11038 +
10.11039 +
10.11040 +
10.11041 + var $style,
10.11042 + $selectorText = options.selectorText ? options.selectorText : '';
10.11043 + $style = new CSS2Properties({
10.11044 + cssText: options.cssText ? options.cssText : null
10.11045 + });
10.11046 +
10.11047 + return __extend__(this, {
10.11048 + get style(){
10.11049 + return $style;
10.11050 + },
10.11051 + get selectorText(){
10.11052 + return $selectorText;
10.11053 + },
10.11054 + set selectorText(selectorText){
10.11055 + $selectorText = selectorText;
10.11056 + },
10.11057 + toString : function(){
10.11058 + return "[object CSSRule]";
10.11059 + }
10.11060 + });
10.11061 +};
10.11062 +CSSRule.STYLE_RULE = 1;
10.11063 +CSSRule.IMPORT_RULE = 3;
10.11064 +CSSRule.MEDIA_RULE = 4;
10.11065 +CSSRule.FONT_FACE_RULE = 5;
10.11066 +CSSRule.PAGE_RULE = 6;
10.11067 +//CSSRule.NAMESPACE_RULE = 10;
10.11068 +
10.11069 +
10.11070 +CSSStyleRule = function() {
10.11071 +
10.11072 +};
10.11073 +
10.11074 +CSSImportRule = function() {
10.11075 +
10.11076 +};
10.11077 +
10.11078 +CSSMediaRule = function() {
10.11079 +
10.11080 +};
10.11081 +
10.11082 +CSSFontFaceRule = function() {
10.11083 +
10.11084 +};
10.11085 +
10.11086 +CSSPageRule = function() {
10.11087 +
10.11088 +};
10.11089 +
10.11090 +
10.11091 +CSSRuleList = function(data) {
10.11092 + this.length = 0;
10.11093 + __setArray__(this, data);
10.11094 +};
10.11095 +
10.11096 +__extend__(CSSRuleList.prototype, {
10.11097 + item : function(index) {
10.11098 + if ((index >= 0) && (index < this.length)) {
10.11099 + // bounds check
10.11100 + return this[index];
10.11101 + }
10.11102 + return null;
10.11103 + },
10.11104 + toString: function() {
10.11105 + return '[object CSSRuleList]';
10.11106 + }
10.11107 +});
10.11108 +
10.11109 +/**
10.11110 + * StyleSheet
10.11111 + * http://dev.w3.org/csswg/cssom/#stylesheet
10.11112 + *
10.11113 + * interface StyleSheet {
10.11114 + * readonly attribute DOMString type;
10.11115 + * readonly attribute DOMString href;
10.11116 + * readonly attribute Node ownerNode;
10.11117 + * readonly attribute StyleSheet parentStyleSheet;
10.11118 + * readonly attribute DOMString title;
10.11119 + * [PutForwards=mediaText] readonly attribute MediaList media;
10.11120 + * attribute boolean disabled;
10.11121 + * };
10.11122 + */
10.11123 +StyleSheet = function() {
10.11124 +}
10.11125 +
10.11126 +/*
10.11127 + * CSSStyleSheet
10.11128 + * http://dev.w3.org/csswg/cssom/#cssstylesheet
10.11129 + *
10.11130 + * interface CSSStyleSheet : StyleSheet {
10.11131 + * readonly attribute CSSRule ownerRule;
10.11132 + * readonly attribute CSSRuleList cssRules;
10.11133 + * unsigned long insertRule(DOMString rule, unsigned long index);
10.11134 + * void deleteRule(unsigned long index);
10.11135 + * };
10.11136 + */
10.11137 +CSSStyleSheet = function(options){
10.11138 + var $cssRules,
10.11139 + $disabled = options.disabled ? options.disabled : false,
10.11140 + $href = options.href ? options.href : null,
10.11141 + $parentStyleSheet = options.parentStyleSheet ? options.parentStyleSheet : null,
10.11142 + $title = options.title ? options.title : "",
10.11143 + $type = "text/css";
10.11144 +
10.11145 + function parseStyleSheet(text){
10.11146 + //$debug("parsing css");
10.11147 + //this is pretty ugly, but text is the entire text of a stylesheet
10.11148 + var cssRules = [];
10.11149 + if (!text) {
10.11150 + text = '';
10.11151 + }
10.11152 + text = __trim__(text.replace(/\/\*(\r|\n|.)*\*\//g,""));
10.11153 + // TODO: @import
10.11154 + var blocks = text.split("}");
10.11155 + blocks.pop();
10.11156 + var i, j, len = blocks.length;
10.11157 + var definition_block, properties, selectors;
10.11158 + for (i=0; i<len; i++) {
10.11159 + definition_block = blocks[i].split("{");
10.11160 + if (definition_block.length === 2) {
10.11161 + selectors = definition_block[0].split(",");
10.11162 + for (j=0; j<selectors.length; j++) {
10.11163 + cssRules.push(new CSSRule({
10.11164 + selectorText : __trim__(selectors[j]),
10.11165 + cssText : definition_block[1]
10.11166 + }));
10.11167 + }
10.11168 + }
10.11169 + }
10.11170 + return cssRules;
10.11171 + }
10.11172 +
10.11173 + $cssRules = new CSSRuleList(parseStyleSheet(options.textContent));
10.11174 +
10.11175 + return __extend__(this, {
10.11176 + get cssRules(){
10.11177 + return $cssRules;
10.11178 + },
10.11179 + get rule(){
10.11180 + return $cssRules;
10.11181 + },//IE - may be deprecated
10.11182 + get href(){
10.11183 + return $href;
10.11184 + },
10.11185 + get parentStyleSheet(){
10.11186 + return $parentStyleSheet;
10.11187 + },
10.11188 + get title(){
10.11189 + return $title;
10.11190 + },
10.11191 + get type(){
10.11192 + return $type;
10.11193 + },
10.11194 + addRule: function(selector, style, index){/*TODO*/},
10.11195 + deleteRule: function(index){/*TODO*/},
10.11196 + insertRule: function(rule, index){/*TODO*/},
10.11197 + //IE - may be deprecated
10.11198 + removeRule: function(index){
10.11199 + this.deleteRule(index);
10.11200 + }
10.11201 + });
10.11202 +};
10.11203 +
10.11204 +StyleSheetList = function() {
10.11205 +}
10.11206 +StyleSheetList.prototype = new Array();
10.11207 +__extend__(StyleSheetList.prototype, {
10.11208 + item : function(index) {
10.11209 + if ((index >= 0) && (index < this.length)) {
10.11210 + // bounds check
10.11211 + return this[index];
10.11212 + }
10.11213 + return null;
10.11214 + },
10.11215 + toString: function() {
10.11216 + return '[object StyleSheetList]';
10.11217 + }
10.11218 +});
10.11219 +/**
10.11220 + * This extends HTMLElement to handle CSS-specific interfaces.
10.11221 + *
10.11222 + * More work / research would be needed to extend just (DOM) Element
10.11223 + * for xml use and additional changes for just HTMLElement.
10.11224 + */
10.11225 +
10.11226 +
10.11227 +/**
10.11228 + * Replace or add the getter for 'style'
10.11229 + *
10.11230 + * This could be wrapped in a closure
10.11231 + */
10.11232 +var $css2properties = [{}];
10.11233 +
10.11234 +__extend__(HTMLElement.prototype, {
10.11235 + get style(){
10.11236 + if ( !this.css2uuid ) {
10.11237 + this.css2uuid = $css2properties.length;
10.11238 + $css2properties[this.css2uuid] = new CSS2Properties(this);
10.11239 + }
10.11240 + return $css2properties[this.css2uuid];
10.11241 + },
10.11242 +});
10.11243 +
10.11244 +/**
10.11245 + * Change for how 'setAttribute("style", ...)' works
10.11246 + *
10.11247 + * We are truly adding functionality to HtmlElement.setAttribute, not
10.11248 + * replacing it. So we need to save the old one first, call it, then
10.11249 + * do our stuff. If we need to do more hacks like this, HTMLElement
10.11250 + * (or regular Element) needs to have a hooks array or dispatch table
10.11251 + * for global changes.
10.11252 + *
10.11253 + * This could be wrapped in a closure if desired.
10.11254 + */
10.11255 +var updateCss2Props = function(elem, values) {
10.11256 + //console.log('__updateCss2Props__ %s %s', elem, values);
10.11257 + if ( !elem.css2uuid ) {
10.11258 + elem.css2uuid = $css2properties.length;
10.11259 + $css2properties[elem.css2uuid] = new CSS2Properties(elem);
10.11260 + }
10.11261 + __cssTextToStyles__($css2properties[elem.css2uuid], values);
10.11262 +}
10.11263 +
10.11264 +var origSetAttribute = HTMLElement.prototype.setAttribute;
10.11265 +
10.11266 +HTMLElement.prototype.setAttribute = function(name, value) {
10.11267 + //console.log("CSS set attribute: " + name + ", " + value);
10.11268 + origSetAttribute.apply(this, arguments);
10.11269 + if (name === "style") {
10.11270 + updateCss2Props(this, value);
10.11271 + }
10.11272 +}
10.11273 +
10.11274 +/**
10.11275 + * @author john resig & the envjs team
10.11276 + * @uri http://www.envjs.com/
10.11277 + * @copyright 2008-2010
10.11278 + * @license MIT
10.11279 + */
10.11280 +//CLOSURE_END
10.11281 +}());
10.11282 +
10.11283 +//these are both non-standard globals that
10.11284 +//provide static namespaces and functions
10.11285 +//to support the html 5 parser from nu.
10.11286 +var XMLParser = {},
10.11287 + HTMLParser = {};
10.11288 +
10.11289 +
10.11290 +/*
10.11291 + * Envjs parser.1.2.13
10.11292 + * Pure JavaScript Browser Environment
10.11293 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.11294 + * Copyright 2008-2010 John Resig, under the MIT License
10.11295 + */
10.11296 +
10.11297 +//CLOSURE_START
10.11298 +(function(){
10.11299 +
10.11300 +
10.11301 +
10.11302 +
10.11303 +
10.11304 +/**
10.11305 + * @author john resig
10.11306 + */
10.11307 +// Helper method for extending one object with another.
10.11308 +function __extend__(a,b) {
10.11309 + for ( var i in b ) {
10.11310 + var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
10.11311 + if ( g || s ) {
10.11312 + if ( g ) { a.__defineGetter__(i, g); }
10.11313 + if ( s ) { a.__defineSetter__(i, s); }
10.11314 + } else {
10.11315 + a[i] = b[i];
10.11316 + }
10.11317 + } return a;
10.11318 +}
10.11319 +
10.11320 +/**
10.11321 + * @author john resig
10.11322 + */
10.11323 +//from jQuery
10.11324 +function __setArray__( target, array ) {
10.11325 + // Resetting the length to 0, then using the native Array push
10.11326 + // is a super-fast way to populate an object with array-like properties
10.11327 + target.length = 0;
10.11328 + Array.prototype.push.apply( target, array );
10.11329 +}
10.11330 +var __defineParser__;
10.11331 +(function () {var $gwt_version = "1.5.1";var $wnd = {};var $doc = {};var $moduleName, $moduleBase;var $stats = $wnd.__gwtStatsEvent ? function(a) {$wnd.__gwtStatsEvent(a)} : null;var _, N8000000000000000_longLit = [0, -9223372036854775808], P1000000_longLit = [16777216, 0], P7fffffffffffffff_longLit = [4294967295, 9223372032559808512];
10.11332 +function equals_1(other){
10.11333 + return (this == null?null:this) === (other == null?null:other);
10.11334 +}
10.11335 +
10.11336 +function getClass_13(){
10.11337 + return Ljava_lang_Object_2_classLit;
10.11338 +}
10.11339 +
10.11340 +function hashCode_2(){
10.11341 + return this.$H || (this.$H = ++sNextHashId);
10.11342 +}
10.11343 +
10.11344 +function toString_3(){
10.11345 + return (this.typeMarker$ == nullMethod || this.typeId$ == 2?this.getClass$():Lcom_google_gwt_core_client_JavaScriptObject_2_classLit).typeName + '@' + toPowerOfTwoString(this.typeMarker$ == nullMethod || this.typeId$ == 2?this.hashCode$():this.$H || (this.$H = ++sNextHashId), 4);
10.11346 +}
10.11347 +
10.11348 +function Object_0(){
10.11349 +}
10.11350 +
10.11351 +_ = Object_0.prototype = {};
10.11352 +_.equals$ = equals_1;
10.11353 +_.getClass$ = getClass_13;
10.11354 +_.hashCode$ = hashCode_2;
10.11355 +_.toString$ = toString_3;
10.11356 +_.toString = function(){
10.11357 + return this.toString$();
10.11358 +}
10.11359 +;
10.11360 +_.typeMarker$ = nullMethod;
10.11361 +_.typeId$ = 1;
10.11362 +function $toString_1(this$static){
10.11363 + var className, msg;
10.11364 + className = this$static.getClass$().typeName;
10.11365 + msg = this$static.getMessage();
10.11366 + if (msg != null) {
10.11367 + return className + ': ' + msg;
10.11368 + }
10.11369 + else {
10.11370 + return className;
10.11371 + }
10.11372 +}
10.11373 +
10.11374 +function getClass_19(){
10.11375 + return Ljava_lang_Throwable_2_classLit;
10.11376 +}
10.11377 +
10.11378 +function getMessage(){
10.11379 + return this.detailMessage;
10.11380 +}
10.11381 +
10.11382 +function toString_7(){
10.11383 + return $toString_1(this);
10.11384 +}
10.11385 +
10.11386 +function Throwable(){
10.11387 +}
10.11388 +
10.11389 +_ = Throwable.prototype = new Object_0();
10.11390 +_.getClass$ = getClass_19;
10.11391 +_.getMessage = getMessage;
10.11392 +_.toString$ = toString_7;
10.11393 +_.typeId$ = 3;
10.11394 +_.detailMessage = null;
10.11395 +function $Exception(this$static, message){
10.11396 + this$static.detailMessage = message;
10.11397 + return this$static;
10.11398 +}
10.11399 +
10.11400 +function getClass_9(){
10.11401 + return Ljava_lang_Exception_2_classLit;
10.11402 +}
10.11403 +
10.11404 +function Exception(){
10.11405 +}
10.11406 +
10.11407 +_ = Exception.prototype = new Throwable();
10.11408 +_.getClass$ = getClass_9;
10.11409 +_.typeId$ = 4;
10.11410 +function $RuntimeException(this$static, message){
10.11411 + this$static.detailMessage = message;
10.11412 + return this$static;
10.11413 +}
10.11414 +
10.11415 +function getClass_14(){
10.11416 + return Ljava_lang_RuntimeException_2_classLit;
10.11417 +}
10.11418 +
10.11419 +function RuntimeException(){
10.11420 +}
10.11421 +
10.11422 +_ = RuntimeException.prototype = new Exception();
10.11423 +_.getClass$ = getClass_14;
10.11424 +_.typeId$ = 5;
10.11425 +function $JavaScriptException(this$static, e){
10.11426 + $Exception(this$static, '(' + getName(e) + '): ' + getDescription(e) + (e != null && (e.typeMarker$ != nullMethod && e.typeId$ != 2)?getProperties0(dynamicCastJso(e)):''));
10.11427 + getName(e);
10.11428 + getDescription(e);
10.11429 + getException(e);
10.11430 + return this$static;
10.11431 +}
10.11432 +
10.11433 +function getClass_0(){
10.11434 + return Lcom_google_gwt_core_client_JavaScriptException_2_classLit;
10.11435 +}
10.11436 +
10.11437 +function getDescription(e){
10.11438 + if (e != null && (e.typeMarker$ != nullMethod && e.typeId$ != 2)) {
10.11439 + return getDescription0(dynamicCastJso(e));
10.11440 + }
10.11441 + else {
10.11442 + return e + '';
10.11443 + }
10.11444 +}
10.11445 +
10.11446 +function getDescription0(e){
10.11447 + return e == null?null:e.message;
10.11448 +}
10.11449 +
10.11450 +function getException(e){
10.11451 + if (e != null && (e.typeMarker$ != nullMethod && e.typeId$ != 2)) {
10.11452 + return dynamicCastJso(e);
10.11453 + }
10.11454 + else {
10.11455 + return null;
10.11456 + }
10.11457 +}
10.11458 +
10.11459 +function getName(e){
10.11460 + if (e == null) {
10.11461 + return 'null';
10.11462 + }
10.11463 + else if (e != null && (e.typeMarker$ != nullMethod && e.typeId$ != 2)) {
10.11464 + return getName0(dynamicCastJso(e));
10.11465 + }
10.11466 + else if (e != null && canCast(e.typeId$, 1)) {
10.11467 + return 'String';
10.11468 + }
10.11469 + else {
10.11470 + return (e.typeMarker$ == nullMethod || e.typeId$ == 2?e.getClass$():Lcom_google_gwt_core_client_JavaScriptObject_2_classLit).typeName;
10.11471 + }
10.11472 +}
10.11473 +
10.11474 +function getName0(e){
10.11475 + return e == null?null:e.name;
10.11476 +}
10.11477 +
10.11478 +function getProperties0(e){
10.11479 + var result = '';
10.11480 + for (prop in e) {
10.11481 + if (prop != 'name' && prop != 'message') {
10.11482 + result += '\n ' + prop + ': ' + e[prop];
10.11483 + }
10.11484 + }
10.11485 + return result;
10.11486 +}
10.11487 +
10.11488 +function JavaScriptException(){
10.11489 +}
10.11490 +
10.11491 +_ = JavaScriptException.prototype = new RuntimeException();
10.11492 +_.getClass$ = getClass_0;
10.11493 +_.typeId$ = 6;
10.11494 +function createFunction(){
10.11495 + return function(){
10.11496 + }
10.11497 + ;
10.11498 +}
10.11499 +
10.11500 +function equals__devirtual$(this$static, other){
10.11501 + return this$static.typeMarker$ == nullMethod || this$static.typeId$ == 2?this$static.equals$(other):(this$static == null?null:this$static) === (other == null?null:other);
10.11502 +}
10.11503 +
10.11504 +function hashCode__devirtual$(this$static){
10.11505 + return this$static.typeMarker$ == nullMethod || this$static.typeId$ == 2?this$static.hashCode$():this$static.$H || (this$static.$H = ++sNextHashId);
10.11506 +}
10.11507 +
10.11508 +var sNextHashId = 0;
10.11509 +function createFromSeed(seedType, length){
10.11510 + var seedArray = [null, 0, false, [0, 0]];
10.11511 + var value = seedArray[seedType];
10.11512 + var array = new Array(length);
10.11513 + for (var i = 0; i < length; ++i) {
10.11514 + array[i] = value;
10.11515 + }
10.11516 + return array;
10.11517 +}
10.11518 +
10.11519 +function getClass_2(){
10.11520 + return this.arrayClass$;
10.11521 +}
10.11522 +
10.11523 +function initDim(arrayClass, typeId, queryId, length, seedType){
10.11524 + var result;
10.11525 + result = createFromSeed(seedType, length);
10.11526 + initValues(arrayClass, typeId, queryId, result);
10.11527 + return result;
10.11528 +}
10.11529 +
10.11530 +function initValues(arrayClass, typeId, queryId, array){
10.11531 + if (!protoTypeArray_0) {
10.11532 + protoTypeArray_0 = new Array_0();
10.11533 + }
10.11534 + wrapArray(array, protoTypeArray_0);
10.11535 + array.arrayClass$ = arrayClass;
10.11536 + array.typeId$ = typeId;
10.11537 + array.queryId$ = queryId;
10.11538 + return array;
10.11539 +}
10.11540 +
10.11541 +function setCheck(array, index, value){
10.11542 + if (value != null) {
10.11543 + if (array.queryId$ > 0 && !canCastUnsafe(value.typeId$, array.queryId$)) {
10.11544 + throw new ArrayStoreException();
10.11545 + }
10.11546 + if (array.queryId$ < 0 && (value.typeMarker$ == nullMethod || value.typeId$ == 2)) {
10.11547 + throw new ArrayStoreException();
10.11548 + }
10.11549 + }
10.11550 + return array[index] = value;
10.11551 +}
10.11552 +
10.11553 +function wrapArray(array, protoTypeArray){
10.11554 + for (var i in protoTypeArray) {
10.11555 + var toCopy = protoTypeArray[i];
10.11556 + if (toCopy) {
10.11557 + array[i] = toCopy;
10.11558 + }
10.11559 + }
10.11560 + return array;
10.11561 +}
10.11562 +
10.11563 +function Array_0(){
10.11564 +}
10.11565 +
10.11566 +_ = Array_0.prototype = new Object_0();
10.11567 +_.getClass$ = getClass_2;
10.11568 +_.typeId$ = 0;
10.11569 +_.arrayClass$ = null;
10.11570 +_.length = 0;
10.11571 +_.queryId$ = 0;
10.11572 +var protoTypeArray_0 = null;
10.11573 +function canCast(srcId, dstId){
10.11574 + return srcId && !!typeIdArray[srcId][dstId];
10.11575 +}
10.11576 +
10.11577 +function canCastUnsafe(srcId, dstId){
10.11578 + return srcId && typeIdArray[srcId][dstId];
10.11579 +}
10.11580 +
10.11581 +function dynamicCast(src, dstId){
10.11582 + if (src != null && !canCastUnsafe(src.typeId$, dstId)) {
10.11583 + throw new ClassCastException();
10.11584 + }
10.11585 + return src;
10.11586 +}
10.11587 +
10.11588 +function dynamicCastJso(src){
10.11589 + if (src != null && (src.typeMarker$ == nullMethod || src.typeId$ == 2)) {
10.11590 + throw new ClassCastException();
10.11591 + }
10.11592 + return src;
10.11593 +}
10.11594 +
10.11595 +function instanceOf(src, dstId){
10.11596 + return src != null && canCast(src.typeId$, dstId);
10.11597 +}
10.11598 +
10.11599 +var typeIdArray = [{}, {}, {1:1, 6:1, 7:1, 8:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1, 19:1}, {4:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {6:1, 8:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {7:1}, {7:1}, {2:1, 6:1}, {2:1, 6:1}, {18:1}, {14:1}, {14:1}, {14:1}, {15:1}, {15:1}, {6:1, 15:1}, {6:1, 16:1}, {6:1, 15:1}, {2:1, 6:1, 17:1}, {6:1, 8:1}, {6:1, 8:1}, {6:1, 8:1}, {20:1}, {3:1}, {9:1}, {10:1}, {11:1}, {21:1}, {2:1, 6:1, 22:1}, {2:1, 6:1, 22:1}, {12:1}, {13:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}];
10.11600 +function caught(e){
10.11601 + if (e != null && canCast(e.typeId$, 2)) {
10.11602 + return e;
10.11603 + }
10.11604 + return $JavaScriptException(new JavaScriptException(), e);
10.11605 +}
10.11606 +
10.11607 +function create(valueLow, valueHigh){
10.11608 + var diffHigh, diffLow;
10.11609 + valueHigh %= 1.8446744073709552E19;
10.11610 + valueLow %= 1.8446744073709552E19;
10.11611 + diffHigh = valueHigh % 4294967296;
10.11612 + diffLow = Math.floor(valueLow / 4294967296) * 4294967296;
10.11613 + valueHigh = valueHigh - diffHigh + diffLow;
10.11614 + valueLow = valueLow - diffLow + diffHigh;
10.11615 + while (valueLow < 0) {
10.11616 + valueLow += 4294967296;
10.11617 + valueHigh -= 4294967296;
10.11618 + }
10.11619 + while (valueLow > 4294967295) {
10.11620 + valueLow -= 4294967296;
10.11621 + valueHigh += 4294967296;
10.11622 + }
10.11623 + valueHigh = valueHigh % 1.8446744073709552E19;
10.11624 + while (valueHigh > 9223372032559808512) {
10.11625 + valueHigh -= 1.8446744073709552E19;
10.11626 + }
10.11627 + while (valueHigh < -9223372036854775808) {
10.11628 + valueHigh += 1.8446744073709552E19;
10.11629 + }
10.11630 + return [valueLow, valueHigh];
10.11631 +}
10.11632 +
10.11633 +function fromDouble(value){
10.11634 + if (isNaN(value)) {
10.11635 + return $clinit_7() , ZERO;
10.11636 + }
10.11637 + if (value < -9223372036854775808) {
10.11638 + return $clinit_7() , MIN_VALUE;
10.11639 + }
10.11640 + if (value >= 9223372036854775807) {
10.11641 + return $clinit_7() , MAX_VALUE;
10.11642 + }
10.11643 + if (value > 0) {
10.11644 + return create(Math.floor(value), 0);
10.11645 + }
10.11646 + else {
10.11647 + return create(Math.ceil(value), 0);
10.11648 + }
10.11649 +}
10.11650 +
10.11651 +function fromInt(value){
10.11652 + var rebase, result;
10.11653 + if (value > -129 && value < 128) {
10.11654 + rebase = value + 128;
10.11655 + result = ($clinit_6() , boxedValues)[rebase];
10.11656 + if (result == null) {
10.11657 + result = boxedValues[rebase] = internalFromInt(value);
10.11658 + }
10.11659 + return result;
10.11660 + }
10.11661 + return internalFromInt(value);
10.11662 +}
10.11663 +
10.11664 +function internalFromInt(value){
10.11665 + if (value >= 0) {
10.11666 + return [value, 0];
10.11667 + }
10.11668 + else {
10.11669 + return [value + 4294967296, -4294967296];
10.11670 + }
10.11671 +}
10.11672 +
10.11673 +function $clinit_6(){
10.11674 + $clinit_6 = nullMethod;
10.11675 + boxedValues = initDim(_3_3D_classLit, 53, 13, 256, 0);
10.11676 +}
10.11677 +
10.11678 +var boxedValues;
10.11679 +function $clinit_7(){
10.11680 + $clinit_7 = nullMethod;
10.11681 + Math.log(2);
10.11682 + MAX_VALUE = P7fffffffffffffff_longLit;
10.11683 + MIN_VALUE = N8000000000000000_longLit;
10.11684 + fromInt(-1);
10.11685 + fromInt(1);
10.11686 + fromInt(2);
10.11687 + ZERO = fromInt(0);
10.11688 +}
10.11689 +
10.11690 +var MAX_VALUE, MIN_VALUE, ZERO;
10.11691 +function $clinit_12(){
10.11692 + $clinit_12 = nullMethod;
10.11693 + timers = $ArrayList(new ArrayList());
10.11694 + addWindowCloseListener(new Timer$1());
10.11695 +}
10.11696 +
10.11697 +function $cancel(this$static){
10.11698 + if (this$static.isRepeating) {
10.11699 + clearInterval(this$static.timerId);
10.11700 + }
10.11701 + else {
10.11702 + clearTimeout(this$static.timerId);
10.11703 + }
10.11704 + $remove_0(timers, this$static);
10.11705 +}
10.11706 +
10.11707 +function $fireImpl(this$static){
10.11708 + if (!this$static.isRepeating) {
10.11709 + $remove_0(timers, this$static);
10.11710 + }
10.11711 + $run(this$static);
10.11712 +}
10.11713 +
10.11714 +function $schedule(this$static, delayMillis){
10.11715 + if (delayMillis <= 0) {
10.11716 + throw $IllegalArgumentException(new IllegalArgumentException(), 'must be positive');
10.11717 + }
10.11718 + $cancel(this$static);
10.11719 + this$static.isRepeating = false;
10.11720 + this$static.timerId = createTimeout(this$static, delayMillis);
10.11721 + $add(timers, this$static);
10.11722 +}
10.11723 +
10.11724 +function createTimeout(timer, delay){
10.11725 + return setTimeout(function(){
10.11726 + timer.fire();
10.11727 + }
10.11728 + , delay);
10.11729 +}
10.11730 +
10.11731 +function fire(){
10.11732 + $fireImpl(this);
10.11733 +}
10.11734 +
10.11735 +function getClass_4(){
10.11736 + return Lcom_google_gwt_user_client_Timer_2_classLit;
10.11737 +}
10.11738 +
10.11739 +function Timer(){
10.11740 +}
10.11741 +
10.11742 +_ = Timer.prototype = new Object_0();
10.11743 +_.fire = fire;
10.11744 +_.getClass$ = getClass_4;
10.11745 +_.typeId$ = 0;
10.11746 +_.isRepeating = false;
10.11747 +_.timerId = 0;
10.11748 +var timers;
10.11749 +function $onWindowClosed(){
10.11750 + while (($clinit_12() , timers).size > 0) {
10.11751 + $cancel(dynamicCast($get_0(timers, 0), 3));
10.11752 + }
10.11753 +}
10.11754 +
10.11755 +function getClass_3(){
10.11756 + return Lcom_google_gwt_user_client_Timer$1_2_classLit;
10.11757 +}
10.11758 +
10.11759 +function Timer$1(){
10.11760 +}
10.11761 +
10.11762 +_ = Timer$1.prototype = new Object_0();
10.11763 +_.getClass$ = getClass_3;
10.11764 +_.typeId$ = 7;
10.11765 +function addWindowCloseListener(listener){
10.11766 + maybeInitializeHandlers();
10.11767 + if (!closingListeners) {
10.11768 + closingListeners = $ArrayList(new ArrayList());
10.11769 + }
10.11770 + $add(closingListeners, listener);
10.11771 +}
10.11772 +
10.11773 +function fireClosedImpl(){
10.11774 + var listener$iterator;
10.11775 + if (closingListeners) {
10.11776 + for (listener$iterator = $AbstractList$IteratorImpl(new AbstractList$IteratorImpl(), closingListeners); listener$iterator.i < listener$iterator.this$0.size_0();) {
10.11777 + dynamicCast($next(listener$iterator), 4);
10.11778 + $onWindowClosed();
10.11779 + }
10.11780 + }
10.11781 +}
10.11782 +
10.11783 +function fireClosingImpl(){
10.11784 + var listener$iterator, ret;
10.11785 + ret = null;
10.11786 + if (closingListeners) {
10.11787 + for (listener$iterator = $AbstractList$IteratorImpl(new AbstractList$IteratorImpl(), closingListeners); listener$iterator.i < listener$iterator.this$0.size_0();) {
10.11788 + dynamicCast($next(listener$iterator), 4);
10.11789 + ret = null;
10.11790 + }
10.11791 + }
10.11792 + return ret;
10.11793 +}
10.11794 +
10.11795 +function __init__xxx__(){
10.11796 + __gwt_initHandlers(function(){
10.11797 + }
10.11798 + , function(){
10.11799 + return fireClosingImpl();
10.11800 + }
10.11801 + , function(){
10.11802 + fireClosedImpl();
10.11803 + }
10.11804 + );
10.11805 +}
10.11806 +
10.11807 +function maybeInitializeHandlers(){
10.11808 + if (!handlersAreInitialized) {
10.11809 + // __init__xxx__();
10.11810 + handlersAreInitialized = true;
10.11811 + }
10.11812 +}
10.11813 +
10.11814 +var closingListeners = null, handlersAreInitialized = false;
10.11815 +function $ArrayStoreException(this$static, message){
10.11816 + this$static.detailMessage = message;
10.11817 + return this$static;
10.11818 +}
10.11819 +
10.11820 +function getClass_5(){
10.11821 + return Ljava_lang_ArrayStoreException_2_classLit;
10.11822 +}
10.11823 +
10.11824 +function ArrayStoreException(){
10.11825 +}
10.11826 +
10.11827 +_ = ArrayStoreException.prototype = new RuntimeException();
10.11828 +_.getClass$ = getClass_5;
10.11829 +_.typeId$ = 9;
10.11830 +function createForArray(packageName, className){
10.11831 + var clazz;
10.11832 + clazz = new Class();
10.11833 + clazz.typeName = packageName + className;
10.11834 + clazz.modifiers = 4;
10.11835 + return clazz;
10.11836 +}
10.11837 +
10.11838 +function createForClass(packageName, className){
10.11839 + var clazz;
10.11840 + clazz = new Class();
10.11841 + clazz.typeName = packageName + className;
10.11842 + return clazz;
10.11843 +}
10.11844 +
10.11845 +function createForEnum(packageName, className){
10.11846 + var clazz;
10.11847 + clazz = new Class();
10.11848 + clazz.typeName = packageName + className;
10.11849 + clazz.modifiers = 8;
10.11850 + return clazz;
10.11851 +}
10.11852 +
10.11853 +function getClass_7(){
10.11854 + return Ljava_lang_Class_2_classLit;
10.11855 +}
10.11856 +
10.11857 +function toString_1(){
10.11858 + return ((this.modifiers & 2) != 0?'interface ':(this.modifiers & 1) != 0?'':'class ') + this.typeName;
10.11859 +}
10.11860 +
10.11861 +function Class(){
10.11862 +}
10.11863 +
10.11864 +_ = Class.prototype = new Object_0();
10.11865 +_.getClass$ = getClass_7;
10.11866 +_.toString$ = toString_1;
10.11867 +_.typeId$ = 0;
10.11868 +_.modifiers = 0;
10.11869 +_.typeName = null;
10.11870 +function getClass_6(){
10.11871 + return Ljava_lang_ClassCastException_2_classLit;
10.11872 +}
10.11873 +
10.11874 +function ClassCastException(){
10.11875 +}
10.11876 +
10.11877 +_ = ClassCastException.prototype = new RuntimeException();
10.11878 +_.getClass$ = getClass_6;
10.11879 +_.typeId$ = 12;
10.11880 +function compareTo(other){
10.11881 + return this.ordinal - other.ordinal;
10.11882 +}
10.11883 +
10.11884 +function equals_0(other){
10.11885 + return (this == null?null:this) === (other == null?null:other);
10.11886 +}
10.11887 +
10.11888 +function getClass_8(){
10.11889 + return Ljava_lang_Enum_2_classLit;
10.11890 +}
10.11891 +
10.11892 +function hashCode_1(){
10.11893 + return this.$H || (this.$H = ++sNextHashId);
10.11894 +}
10.11895 +
10.11896 +function toString_2(){
10.11897 + return this.name_0;
10.11898 +}
10.11899 +
10.11900 +function Enum(){
10.11901 +}
10.11902 +
10.11903 +_ = Enum.prototype = new Object_0();
10.11904 +_.compareTo$ = compareTo;
10.11905 +_.equals$ = equals_0;
10.11906 +_.getClass$ = getClass_8;
10.11907 +_.hashCode$ = hashCode_1;
10.11908 +_.toString$ = toString_2;
10.11909 +_.typeId$ = 13;
10.11910 +_.name_0 = null;
10.11911 +_.ordinal = 0;
10.11912 +function $IllegalArgumentException(this$static, message){
10.11913 + this$static.detailMessage = message;
10.11914 + return this$static;
10.11915 +}
10.11916 +
10.11917 +function getClass_10(){
10.11918 + return Ljava_lang_IllegalArgumentException_2_classLit;
10.11919 +}
10.11920 +
10.11921 +function IllegalArgumentException(){
10.11922 +}
10.11923 +
10.11924 +_ = IllegalArgumentException.prototype = new RuntimeException();
10.11925 +_.getClass$ = getClass_10;
10.11926 +_.typeId$ = 14;
10.11927 +function $IndexOutOfBoundsException(this$static, message){
10.11928 + this$static.detailMessage = message;
10.11929 + return this$static;
10.11930 +}
10.11931 +
10.11932 +function getClass_11(){
10.11933 + return Ljava_lang_IndexOutOfBoundsException_2_classLit;
10.11934 +}
10.11935 +
10.11936 +function IndexOutOfBoundsException(){
10.11937 +}
10.11938 +
10.11939 +_ = IndexOutOfBoundsException.prototype = new RuntimeException();
10.11940 +_.getClass$ = getClass_11;
10.11941 +_.typeId$ = 15;
10.11942 +function toPowerOfTwoString(value, shift){
10.11943 + var bitMask, buf, bufSize, pos;
10.11944 + bufSize = ~~(32 / shift);
10.11945 + bitMask = (1 << shift) - 1;
10.11946 + buf = initDim(_3C_classLit, 42, -1, bufSize, 1);
10.11947 + pos = bufSize - 1;
10.11948 + if (value >= 0) {
10.11949 + while (value > bitMask) {
10.11950 + buf[pos--] = ($clinit_31() , digits)[value & bitMask];
10.11951 + value >>= shift;
10.11952 + }
10.11953 + }
10.11954 + else {
10.11955 + while (pos > 0) {
10.11956 + buf[pos--] = ($clinit_31() , digits)[value & bitMask];
10.11957 + value >>= shift;
10.11958 + }
10.11959 + }
10.11960 + buf[pos] = ($clinit_31() , digits)[value & bitMask];
10.11961 + return __valueOf(buf, pos, bufSize);
10.11962 +}
10.11963 +
10.11964 +function getClass_12(){
10.11965 + return Ljava_lang_NullPointerException_2_classLit;
10.11966 +}
10.11967 +
10.11968 +function NullPointerException(){
10.11969 +}
10.11970 +
10.11971 +_ = NullPointerException.prototype = new RuntimeException();
10.11972 +_.getClass$ = getClass_12;
10.11973 +_.typeId$ = 16;
10.11974 +function $clinit_31(){
10.11975 + $clinit_31 = nullMethod;
10.11976 + digits = initValues(_3C_classLit, 42, -1, [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122]);
10.11977 +}
10.11978 +
10.11979 +var digits;
10.11980 +function $equals_0(this$static, other){
10.11981 + if (!(other != null && canCast(other.typeId$, 1))) {
10.11982 + return false;
10.11983 + }
10.11984 + return String(this$static) == other;
10.11985 +}
10.11986 +
10.11987 +function $getChars_0(this$static, srcBegin, srcEnd, dst, dstBegin){
10.11988 + var srcIdx;
10.11989 + for (srcIdx = srcBegin; srcIdx < srcEnd; ++srcIdx) {
10.11990 + dst[dstBegin++] = this$static.charCodeAt(srcIdx);
10.11991 + }
10.11992 +}
10.11993 +
10.11994 +function $toCharArray(this$static){
10.11995 + var charArr, n;
10.11996 + n = this$static.length;
10.11997 + charArr = initDim(_3C_classLit, 42, -1, n, 1);
10.11998 + $getChars_0(this$static, 0, n, charArr, 0);
10.11999 + return charArr;
10.12000 +}
10.12001 +
10.12002 +function __checkBounds(legalCount, start, end){
10.12003 + if (start < 0) {
10.12004 + throw $StringIndexOutOfBoundsException(new StringIndexOutOfBoundsException(), start);
10.12005 + }
10.12006 + if (end < start) {
10.12007 + throw $StringIndexOutOfBoundsException(new StringIndexOutOfBoundsException(), end - start);
10.12008 + }
10.12009 + if (end > legalCount) {
10.12010 + throw $StringIndexOutOfBoundsException(new StringIndexOutOfBoundsException(), end);
10.12011 + }
10.12012 +}
10.12013 +
10.12014 +function __valueOf(x, start, end){
10.12015 + x = x.slice(start, end);
10.12016 + return String.fromCharCode.apply(null, x);
10.12017 +}
10.12018 +
10.12019 +function compareTo_1(thisStr, otherStr){
10.12020 + thisStr = String(thisStr);
10.12021 + if (thisStr == otherStr) {
10.12022 + return 0;
10.12023 + }
10.12024 + return thisStr < otherStr?-1:1;
10.12025 +}
10.12026 +
10.12027 +function compareTo_0(other){
10.12028 + return compareTo_1(this, other);
10.12029 +}
10.12030 +
10.12031 +function equals_2(other){
10.12032 + return $equals_0(this, other);
10.12033 +}
10.12034 +
10.12035 +function getClass_18(){
10.12036 + return Ljava_lang_String_2_classLit;
10.12037 +}
10.12038 +
10.12039 +function hashCode_3(){
10.12040 + return getHashCode_0(this);
10.12041 +}
10.12042 +
10.12043 +function toString_6(){
10.12044 + return this;
10.12045 +}
10.12046 +
10.12047 +function valueOf_1(x, offset, count){
10.12048 + var end;
10.12049 + end = offset + count;
10.12050 + __checkBounds(x.length, offset, end);
10.12051 + return __valueOf(x, offset, end);
10.12052 +}
10.12053 +
10.12054 +_ = String.prototype;
10.12055 +_.compareTo$ = compareTo_0;
10.12056 +_.equals$ = equals_2;
10.12057 +_.getClass$ = getClass_18;
10.12058 +_.hashCode$ = hashCode_3;
10.12059 +_.toString$ = toString_6;
10.12060 +_.typeId$ = 2;
10.12061 +function $clinit_35(){
10.12062 + $clinit_35 = nullMethod;
10.12063 + back = {};
10.12064 + front = {};
10.12065 +}
10.12066 +
10.12067 +function compute(str){
10.12068 + var hashCode, i, inc, n;
10.12069 + n = str.length;
10.12070 + inc = n < 64?1:~~(n / 32);
10.12071 + hashCode = 0;
10.12072 + for (i = 0; i < n; i += inc) {
10.12073 + hashCode <<= 1;
10.12074 + hashCode += str.charCodeAt(i);
10.12075 + }
10.12076 + hashCode |= 0;
10.12077 + return hashCode;
10.12078 +}
10.12079 +
10.12080 +function getHashCode_0(str){
10.12081 + $clinit_35();
10.12082 + var key = ':' + str;
10.12083 + var result = front[key];
10.12084 + if (result != null) {
10.12085 + return result;
10.12086 + }
10.12087 + result = back[key];
10.12088 + if (result == null) {
10.12089 + result = compute(str);
10.12090 + }
10.12091 + increment();
10.12092 + return front[key] = result;
10.12093 +}
10.12094 +
10.12095 +function increment(){
10.12096 + if (count_0 == 256) {
10.12097 + back = front;
10.12098 + front = {};
10.12099 + count_0 = 0;
10.12100 + }
10.12101 + ++count_0;
10.12102 +}
10.12103 +
10.12104 +var back, count_0 = 0, front;
10.12105 +function $StringBuffer(this$static){
10.12106 + this$static.builder = $StringBuilder(new StringBuilder());
10.12107 + return this$static;
10.12108 +}
10.12109 +
10.12110 +function $append(this$static, toAppend){
10.12111 + $append_0(this$static.builder, toAppend);
10.12112 + return this$static;
10.12113 +}
10.12114 +
10.12115 +function getClass_15(){
10.12116 + return Ljava_lang_StringBuffer_2_classLit;
10.12117 +}
10.12118 +
10.12119 +function toString_4(){
10.12120 + return $toString_0(this.builder);
10.12121 +}
10.12122 +
10.12123 +function StringBuffer(){
10.12124 +}
10.12125 +
10.12126 +_ = StringBuffer.prototype = new Object_0();
10.12127 +_.getClass$ = getClass_15;
10.12128 +_.toString$ = toString_4;
10.12129 +_.typeId$ = 17;
10.12130 +function $StringBuilder(this$static){
10.12131 + this$static.stringArray = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 0, 0);
10.12132 + return this$static;
10.12133 +}
10.12134 +
10.12135 +function $append_0(this$static, toAppend){
10.12136 + var appendLength;
10.12137 + if (toAppend == null) {
10.12138 + toAppend = 'null';
10.12139 + }
10.12140 + appendLength = toAppend.length;
10.12141 + if (appendLength > 0) {
10.12142 + this$static.stringArray[this$static.arrayLen++] = toAppend;
10.12143 + this$static.stringLength += appendLength;
10.12144 + if (this$static.arrayLen > 1024) {
10.12145 + $toString_0(this$static);
10.12146 + this$static.stringArray.length = 1024;
10.12147 + }
10.12148 + }
10.12149 + return this$static;
10.12150 +}
10.12151 +
10.12152 +function $getChars(this$static, srcStart, srcEnd, dst, dstStart){
10.12153 + var s;
10.12154 + __checkBounds(this$static.stringLength, srcStart, srcEnd);
10.12155 + __checkBounds(dst.length, dstStart, dstStart + (srcEnd - srcStart));
10.12156 + s = $toString_0(this$static);
10.12157 + while (srcStart < srcEnd) {
10.12158 + dst[dstStart++] = s.charCodeAt(srcStart++);
10.12159 + }
10.12160 +}
10.12161 +
10.12162 +function $setLength(this$static, newLength){
10.12163 + var oldLength, s;
10.12164 + oldLength = this$static.stringLength;
10.12165 + if (newLength < oldLength) {
10.12166 + s = $toString_0(this$static);
10.12167 + this$static.stringArray = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [s.substr(0, newLength - 0), '', s.substr(oldLength, s.length - oldLength)]);
10.12168 + this$static.arrayLen = 3;
10.12169 + this$static.stringLength += ''.length - (oldLength - newLength);
10.12170 + }
10.12171 + else if (newLength > oldLength) {
10.12172 + $append_0(this$static, String.fromCharCode.apply(null, initDim(_3C_classLit, 42, -1, newLength - oldLength, 1)));
10.12173 + }
10.12174 +}
10.12175 +
10.12176 +function $toString_0(this$static){
10.12177 + var s;
10.12178 + if (this$static.arrayLen != 1) {
10.12179 + this$static.stringArray.length = this$static.arrayLen;
10.12180 + s = this$static.stringArray.join('');
10.12181 + this$static.stringArray = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [s]);
10.12182 + this$static.arrayLen = 1;
10.12183 + }
10.12184 + return this$static.stringArray[0];
10.12185 +}
10.12186 +
10.12187 +function getClass_16(){
10.12188 + return Ljava_lang_StringBuilder_2_classLit;
10.12189 +}
10.12190 +
10.12191 +function toString_5(){
10.12192 + return $toString_0(this);
10.12193 +}
10.12194 +
10.12195 +function StringBuilder(){
10.12196 +}
10.12197 +
10.12198 +_ = StringBuilder.prototype = new Object_0();
10.12199 +_.getClass$ = getClass_16;
10.12200 +_.toString$ = toString_5;
10.12201 +_.typeId$ = 18;
10.12202 +_.arrayLen = 0;
10.12203 +_.stringLength = 0;
10.12204 +function $StringIndexOutOfBoundsException(this$static, index){
10.12205 + this$static.detailMessage = 'String index out of range: ' + index;
10.12206 + return this$static;
10.12207 +}
10.12208 +
10.12209 +function getClass_17(){
10.12210 + return Ljava_lang_StringIndexOutOfBoundsException_2_classLit;
10.12211 +}
10.12212 +
10.12213 +function StringIndexOutOfBoundsException(){
10.12214 +}
10.12215 +
10.12216 +_ = StringIndexOutOfBoundsException.prototype = new IndexOutOfBoundsException();
10.12217 +_.getClass$ = getClass_17;
10.12218 +_.typeId$ = 19;
10.12219 +function arraycopy(src, srcOfs, dest, destOfs, len){
10.12220 + var destArray, destEnd, destTypeName, destlen, srcArray, srcTypeName, srclen;
10.12221 + if (src == null || dest == null) {
10.12222 + throw new NullPointerException();
10.12223 + }
10.12224 + srcTypeName = (src.typeMarker$ == nullMethod || src.typeId$ == 2?src.getClass$():Lcom_google_gwt_core_client_JavaScriptObject_2_classLit).typeName;
10.12225 + destTypeName = (dest.typeMarker$ == nullMethod || dest.typeId$ == 2?dest.getClass$():Lcom_google_gwt_core_client_JavaScriptObject_2_classLit).typeName;
10.12226 + if (srcTypeName.charCodeAt(0) != 91 || destTypeName.charCodeAt(0) != 91) {
10.12227 + throw $ArrayStoreException(new ArrayStoreException(), 'Must be array types');
10.12228 + }
10.12229 + if (srcTypeName.charCodeAt(1) != destTypeName.charCodeAt(1)) {
10.12230 + throw $ArrayStoreException(new ArrayStoreException(), 'Array types must match');
10.12231 + }
10.12232 + srclen = src.length;
10.12233 + destlen = dest.length;
10.12234 + if (srcOfs < 0 || destOfs < 0 || len < 0 || srcOfs + len > srclen || destOfs + len > destlen) {
10.12235 + throw new IndexOutOfBoundsException();
10.12236 + }
10.12237 + if ((srcTypeName.charCodeAt(1) == 76 || srcTypeName.charCodeAt(1) == 91) && !$equals_0(srcTypeName, destTypeName)) {
10.12238 + srcArray = dynamicCast(src, 5);
10.12239 + destArray = dynamicCast(dest, 5);
10.12240 + if ((src == null?null:src) === (dest == null?null:dest) && srcOfs < destOfs) {
10.12241 + srcOfs += len;
10.12242 + for (destEnd = destOfs + len; destEnd-- > destOfs;) {
10.12243 + setCheck(destArray, destEnd, srcArray[--srcOfs]);
10.12244 + }
10.12245 + }
10.12246 + else {
10.12247 + for (destEnd = destOfs + len; destOfs < destEnd;) {
10.12248 + setCheck(destArray, destOfs++, srcArray[srcOfs++]);
10.12249 + }
10.12250 + }
10.12251 + }
10.12252 + else {
10.12253 + Array.prototype.splice.apply(dest, [destOfs, len].concat(src.slice(srcOfs, srcOfs + len)));
10.12254 + }
10.12255 +}
10.12256 +
10.12257 +function $UnsupportedOperationException(this$static, message){
10.12258 + this$static.detailMessage = message;
10.12259 + return this$static;
10.12260 +}
10.12261 +
10.12262 +function getClass_20(){
10.12263 + return Ljava_lang_UnsupportedOperationException_2_classLit;
10.12264 +}
10.12265 +
10.12266 +function UnsupportedOperationException(){
10.12267 +}
10.12268 +
10.12269 +_ = UnsupportedOperationException.prototype = new RuntimeException();
10.12270 +_.getClass$ = getClass_20;
10.12271 +_.typeId$ = 20;
10.12272 +function $advanceToFind(iter, o){
10.12273 + var t;
10.12274 + while (iter.hasNext()) {
10.12275 + t = iter.next_0();
10.12276 + if (o == null?t == null:equals__devirtual$(o, t)) {
10.12277 + return iter;
10.12278 + }
10.12279 + }
10.12280 + return null;
10.12281 +}
10.12282 +
10.12283 +function add(o){
10.12284 + throw $UnsupportedOperationException(new UnsupportedOperationException(), 'Add not supported on this collection');
10.12285 +}
10.12286 +
10.12287 +function contains(o){
10.12288 + var iter;
10.12289 + iter = $advanceToFind(this.iterator(), o);
10.12290 + return !!iter;
10.12291 +}
10.12292 +
10.12293 +function getClass_21(){
10.12294 + return Ljava_util_AbstractCollection_2_classLit;
10.12295 +}
10.12296 +
10.12297 +function toString_8(){
10.12298 + var comma, iter, sb;
10.12299 + sb = $StringBuffer(new StringBuffer());
10.12300 + comma = null;
10.12301 + $append_0(sb.builder, '[');
10.12302 + iter = this.iterator();
10.12303 + while (iter.hasNext()) {
10.12304 + if (comma != null) {
10.12305 + $append_0(sb.builder, comma);
10.12306 + }
10.12307 + else {
10.12308 + comma = ', ';
10.12309 + }
10.12310 + $append(sb, '' + iter.next_0());
10.12311 + }
10.12312 + $append_0(sb.builder, ']');
10.12313 + return $toString_0(sb.builder);
10.12314 +}
10.12315 +
10.12316 +function AbstractCollection(){
10.12317 +}
10.12318 +
10.12319 +_ = AbstractCollection.prototype = new Object_0();
10.12320 +_.add_1 = add;
10.12321 +_.contains = contains;
10.12322 +_.getClass$ = getClass_21;
10.12323 +_.toString$ = toString_8;
10.12324 +_.typeId$ = 0;
10.12325 +function equals_5(obj){
10.12326 + var entry, entry$iterator, otherKey, otherMap, otherValue;
10.12327 + if ((obj == null?null:obj) === (this == null?null:this)) {
10.12328 + return true;
10.12329 + }
10.12330 + if (!(obj != null && canCast(obj.typeId$, 16))) {
10.12331 + return false;
10.12332 + }
10.12333 + otherMap = dynamicCast(obj, 16);
10.12334 + if (dynamicCast(this, 16).size != otherMap.size) {
10.12335 + return false;
10.12336 + }
10.12337 + for (entry$iterator = $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), $AbstractHashMap$EntrySet(new AbstractHashMap$EntrySet(), otherMap).this$0); $hasNext(entry$iterator.iter);) {
10.12338 + entry = dynamicCast($next(entry$iterator.iter), 14);
10.12339 + otherKey = entry.getKey();
10.12340 + otherValue = entry.getValue();
10.12341 + if (!(otherKey == null?dynamicCast(this, 16).nullSlotLive:otherKey != null?$hasStringValue(dynamicCast(this, 16), otherKey):$hasHashValue(dynamicCast(this, 16), otherKey, ~~getHashCode_0(otherKey)))) {
10.12342 + return false;
10.12343 + }
10.12344 + if (!equalsWithNullCheck(otherValue, otherKey == null?dynamicCast(this, 16).nullSlot:otherKey != null?dynamicCast(this, 16).stringMap[':' + otherKey]:$getHashValue(dynamicCast(this, 16), otherKey, ~~getHashCode_0(otherKey)))) {
10.12345 + return false;
10.12346 + }
10.12347 + }
10.12348 + return true;
10.12349 +}
10.12350 +
10.12351 +function getClass_31(){
10.12352 + return Ljava_util_AbstractMap_2_classLit;
10.12353 +}
10.12354 +
10.12355 +function hashCode_6(){
10.12356 + var entry, entry$iterator, hashCode;
10.12357 + hashCode = 0;
10.12358 + for (entry$iterator = $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), $AbstractHashMap$EntrySet(new AbstractHashMap$EntrySet(), dynamicCast(this, 16)).this$0); $hasNext(entry$iterator.iter);) {
10.12359 + entry = dynamicCast($next(entry$iterator.iter), 14);
10.12360 + hashCode += entry.hashCode$();
10.12361 + hashCode = ~~hashCode;
10.12362 + }
10.12363 + return hashCode;
10.12364 +}
10.12365 +
10.12366 +function toString_10(){
10.12367 + var comma, entry, iter, s;
10.12368 + s = '{';
10.12369 + comma = false;
10.12370 + for (iter = $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), $AbstractHashMap$EntrySet(new AbstractHashMap$EntrySet(), dynamicCast(this, 16)).this$0); $hasNext(iter.iter);) {
10.12371 + entry = dynamicCast($next(iter.iter), 14);
10.12372 + if (comma) {
10.12373 + s += ', ';
10.12374 + }
10.12375 + else {
10.12376 + comma = true;
10.12377 + }
10.12378 + s += '' + entry.getKey();
10.12379 + s += '=';
10.12380 + s += '' + entry.getValue();
10.12381 + }
10.12382 + return s + '}';
10.12383 +}
10.12384 +
10.12385 +function AbstractMap(){
10.12386 +}
10.12387 +
10.12388 +_ = AbstractMap.prototype = new Object_0();
10.12389 +_.equals$ = equals_5;
10.12390 +_.getClass$ = getClass_31;
10.12391 +_.hashCode$ = hashCode_6;
10.12392 +_.toString$ = toString_10;
10.12393 +_.typeId$ = 0;
10.12394 +function $addAllHashEntries(this$static, dest){
10.12395 + var hashCodeMap = this$static.hashCodeMap;
10.12396 + for (var hashCode in hashCodeMap) {
10.12397 + if (hashCode == parseInt(hashCode)) {
10.12398 + var array = hashCodeMap[hashCode];
10.12399 + for (var i = 0, c = array.length; i < c; ++i) {
10.12400 + dest.add_1(array[i]);
10.12401 + }
10.12402 + }
10.12403 + }
10.12404 +}
10.12405 +
10.12406 +function $addAllStringEntries(this$static, dest){
10.12407 + var stringMap = this$static.stringMap;
10.12408 + for (var key in stringMap) {
10.12409 + if (key.charCodeAt(0) == 58) {
10.12410 + var entry = new_$(this$static, key.substring(1));
10.12411 + dest.add_1(entry);
10.12412 + }
10.12413 + }
10.12414 +}
10.12415 +
10.12416 +function $clearImpl(this$static){
10.12417 + this$static.hashCodeMap = [];
10.12418 + this$static.stringMap = {};
10.12419 + this$static.nullSlotLive = false;
10.12420 + this$static.nullSlot = null;
10.12421 + this$static.size = 0;
10.12422 +}
10.12423 +
10.12424 +function $containsKey(this$static, key){
10.12425 + return key == null?this$static.nullSlotLive:key != null?':' + key in this$static.stringMap:$hasHashValue(this$static, key, ~~getHashCode_0(key));
10.12426 +}
10.12427 +
10.12428 +function $get(this$static, key){
10.12429 + return key == null?this$static.nullSlot:key != null?this$static.stringMap[':' + key]:$getHashValue(this$static, key, ~~getHashCode_0(key));
10.12430 +}
10.12431 +
10.12432 +function $getHashValue(this$static, key, hashCode){
10.12433 + var array = this$static.hashCodeMap[hashCode];
10.12434 + if (array) {
10.12435 + for (var i = 0, c = array.length; i < c; ++i) {
10.12436 + var entry = array[i];
10.12437 + var entryKey = entry.getKey();
10.12438 + if (this$static.equalsBridge(key, entryKey)) {
10.12439 + return entry.getValue();
10.12440 + }
10.12441 + }
10.12442 + }
10.12443 + return null;
10.12444 +}
10.12445 +
10.12446 +function $hasHashValue(this$static, key, hashCode){
10.12447 + var array = this$static.hashCodeMap[hashCode];
10.12448 + if (array) {
10.12449 + for (var i = 0, c = array.length; i < c; ++i) {
10.12450 + var entry = array[i];
10.12451 + var entryKey = entry.getKey();
10.12452 + if (this$static.equalsBridge(key, entryKey)) {
10.12453 + return true;
10.12454 + }
10.12455 + }
10.12456 + }
10.12457 + return false;
10.12458 +}
10.12459 +
10.12460 +function $hasStringValue(this$static, key){
10.12461 + return ':' + key in this$static.stringMap;
10.12462 +}
10.12463 +
10.12464 +function equalsBridge(value1, value2){
10.12465 + return (value1 == null?null:value1) === (value2 == null?null:value2) || value1 != null && equals__devirtual$(value1, value2);
10.12466 +}
10.12467 +
10.12468 +function getClass_26(){
10.12469 + return Ljava_util_AbstractHashMap_2_classLit;
10.12470 +}
10.12471 +
10.12472 +function AbstractHashMap(){
10.12473 +}
10.12474 +
10.12475 +_ = AbstractHashMap.prototype = new AbstractMap();
10.12476 +_.equalsBridge = equalsBridge;
10.12477 +_.getClass$ = getClass_26;
10.12478 +_.typeId$ = 0;
10.12479 +_.hashCodeMap = null;
10.12480 +_.nullSlot = null;
10.12481 +_.nullSlotLive = false;
10.12482 +_.size = 0;
10.12483 +_.stringMap = null;
10.12484 +function equals_6(o){
10.12485 + var iter, other, otherItem;
10.12486 + if ((o == null?null:o) === (this == null?null:this)) {
10.12487 + return true;
10.12488 + }
10.12489 + if (!(o != null && canCast(o.typeId$, 18))) {
10.12490 + return false;
10.12491 + }
10.12492 + other = dynamicCast(o, 18);
10.12493 + if (other.this$0.size != this.size_0()) {
10.12494 + return false;
10.12495 + }
10.12496 + for (iter = $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), other.this$0); $hasNext(iter.iter);) {
10.12497 + otherItem = dynamicCast($next(iter.iter), 14);
10.12498 + if (!this.contains(otherItem)) {
10.12499 + return false;
10.12500 + }
10.12501 + }
10.12502 + return true;
10.12503 +}
10.12504 +
10.12505 +function getClass_33(){
10.12506 + return Ljava_util_AbstractSet_2_classLit;
10.12507 +}
10.12508 +
10.12509 +function hashCode_7(){
10.12510 + var hashCode, iter, next;
10.12511 + hashCode = 0;
10.12512 + for (iter = this.iterator(); iter.hasNext();) {
10.12513 + next = iter.next_0();
10.12514 + if (next != null) {
10.12515 + hashCode += hashCode__devirtual$(next);
10.12516 + hashCode = ~~hashCode;
10.12517 + }
10.12518 + }
10.12519 + return hashCode;
10.12520 +}
10.12521 +
10.12522 +function AbstractSet(){
10.12523 +}
10.12524 +
10.12525 +_ = AbstractSet.prototype = new AbstractCollection();
10.12526 +_.equals$ = equals_6;
10.12527 +_.getClass$ = getClass_33;
10.12528 +_.hashCode$ = hashCode_7;
10.12529 +_.typeId$ = 0;
10.12530 +function $AbstractHashMap$EntrySet(this$static, this$0){
10.12531 + this$static.this$0 = this$0;
10.12532 + return this$static;
10.12533 +}
10.12534 +
10.12535 +function contains_0(o){
10.12536 + var entry, key, value;
10.12537 + if (o != null && canCast(o.typeId$, 14)) {
10.12538 + entry = dynamicCast(o, 14);
10.12539 + key = entry.getKey();
10.12540 + if ($containsKey(this.this$0, key)) {
10.12541 + value = $get(this.this$0, key);
10.12542 + return $equals_1(entry.getValue(), value);
10.12543 + }
10.12544 + }
10.12545 + return false;
10.12546 +}
10.12547 +
10.12548 +function getClass_23(){
10.12549 + return Ljava_util_AbstractHashMap$EntrySet_2_classLit;
10.12550 +}
10.12551 +
10.12552 +function iterator(){
10.12553 + return $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), this.this$0);
10.12554 +}
10.12555 +
10.12556 +function size_0(){
10.12557 + return this.this$0.size;
10.12558 +}
10.12559 +
10.12560 +function AbstractHashMap$EntrySet(){
10.12561 +}
10.12562 +
10.12563 +_ = AbstractHashMap$EntrySet.prototype = new AbstractSet();
10.12564 +_.contains = contains_0;
10.12565 +_.getClass$ = getClass_23;
10.12566 +_.iterator = iterator;
10.12567 +_.size_0 = size_0;
10.12568 +_.typeId$ = 21;
10.12569 +_.this$0 = null;
10.12570 +function $AbstractHashMap$EntrySetIterator(this$static, this$0){
10.12571 + var list;
10.12572 + this$static.this$0 = this$0;
10.12573 + list = $ArrayList(new ArrayList());
10.12574 + if (this$static.this$0.nullSlotLive) {
10.12575 + $add(list, $AbstractHashMap$MapEntryNull(new AbstractHashMap$MapEntryNull(), this$static.this$0));
10.12576 + }
10.12577 + $addAllStringEntries(this$static.this$0, list);
10.12578 + $addAllHashEntries(this$static.this$0, list);
10.12579 + this$static.iter = $AbstractList$IteratorImpl(new AbstractList$IteratorImpl(), list);
10.12580 + return this$static;
10.12581 +}
10.12582 +
10.12583 +function getClass_22(){
10.12584 + return Ljava_util_AbstractHashMap$EntrySetIterator_2_classLit;
10.12585 +}
10.12586 +
10.12587 +function hasNext(){
10.12588 + return $hasNext(this.iter);
10.12589 +}
10.12590 +
10.12591 +function next_0(){
10.12592 + return dynamicCast($next(this.iter), 14);
10.12593 +}
10.12594 +
10.12595 +function AbstractHashMap$EntrySetIterator(){
10.12596 +}
10.12597 +
10.12598 +_ = AbstractHashMap$EntrySetIterator.prototype = new Object_0();
10.12599 +_.getClass$ = getClass_22;
10.12600 +_.hasNext = hasNext;
10.12601 +_.next_0 = next_0;
10.12602 +_.typeId$ = 0;
10.12603 +_.iter = null;
10.12604 +_.this$0 = null;
10.12605 +function equals_4(other){
10.12606 + var entry;
10.12607 + if (other != null && canCast(other.typeId$, 14)) {
10.12608 + entry = dynamicCast(other, 14);
10.12609 + if (equalsWithNullCheck(this.getKey(), entry.getKey()) && equalsWithNullCheck(this.getValue(), entry.getValue())) {
10.12610 + return true;
10.12611 + }
10.12612 + }
10.12613 + return false;
10.12614 +}
10.12615 +
10.12616 +function getClass_30(){
10.12617 + return Ljava_util_AbstractMapEntry_2_classLit;
10.12618 +}
10.12619 +
10.12620 +function hashCode_5(){
10.12621 + var keyHash, valueHash;
10.12622 + keyHash = 0;
10.12623 + valueHash = 0;
10.12624 + if (this.getKey() != null) {
10.12625 + keyHash = getHashCode_0(this.getKey());
10.12626 + }
10.12627 + if (this.getValue() != null) {
10.12628 + valueHash = hashCode__devirtual$(this.getValue());
10.12629 + }
10.12630 + return keyHash ^ valueHash;
10.12631 +}
10.12632 +
10.12633 +function toString_9(){
10.12634 + return this.getKey() + '=' + this.getValue();
10.12635 +}
10.12636 +
10.12637 +function AbstractMapEntry(){
10.12638 +}
10.12639 +
10.12640 +_ = AbstractMapEntry.prototype = new Object_0();
10.12641 +_.equals$ = equals_4;
10.12642 +_.getClass$ = getClass_30;
10.12643 +_.hashCode$ = hashCode_5;
10.12644 +_.toString$ = toString_9;
10.12645 +_.typeId$ = 22;
10.12646 +function $AbstractHashMap$MapEntryNull(this$static, this$0){
10.12647 + this$static.this$0 = this$0;
10.12648 + return this$static;
10.12649 +}
10.12650 +
10.12651 +function getClass_24(){
10.12652 + return Ljava_util_AbstractHashMap$MapEntryNull_2_classLit;
10.12653 +}
10.12654 +
10.12655 +function getKey(){
10.12656 + return null;
10.12657 +}
10.12658 +
10.12659 +function getValue(){
10.12660 + return this.this$0.nullSlot;
10.12661 +}
10.12662 +
10.12663 +function AbstractHashMap$MapEntryNull(){
10.12664 +}
10.12665 +
10.12666 +_ = AbstractHashMap$MapEntryNull.prototype = new AbstractMapEntry();
10.12667 +_.getClass$ = getClass_24;
10.12668 +_.getKey = getKey;
10.12669 +_.getValue = getValue;
10.12670 +_.typeId$ = 23;
10.12671 +_.this$0 = null;
10.12672 +function $AbstractHashMap$MapEntryString(this$static, key, this$0){
10.12673 + this$static.this$0 = this$0;
10.12674 + this$static.key = key;
10.12675 + return this$static;
10.12676 +}
10.12677 +
10.12678 +function getClass_25(){
10.12679 + return Ljava_util_AbstractHashMap$MapEntryString_2_classLit;
10.12680 +}
10.12681 +
10.12682 +function getKey_0(){
10.12683 + return this.key;
10.12684 +}
10.12685 +
10.12686 +function getValue_0(){
10.12687 + return this.this$0.stringMap[':' + this.key];
10.12688 +}
10.12689 +
10.12690 +function new_$(this$outer, key){
10.12691 + return $AbstractHashMap$MapEntryString(new AbstractHashMap$MapEntryString(), key, this$outer);
10.12692 +}
10.12693 +
10.12694 +function AbstractHashMap$MapEntryString(){
10.12695 +}
10.12696 +
10.12697 +_ = AbstractHashMap$MapEntryString.prototype = new AbstractMapEntry();
10.12698 +_.getClass$ = getClass_25;
10.12699 +_.getKey = getKey_0;
10.12700 +_.getValue = getValue_0;
10.12701 +_.typeId$ = 24;
10.12702 +_.key = null;
10.12703 +_.this$0 = null;
10.12704 +function add_1(obj){
10.12705 + this.add_0(this.size_0(), obj);
10.12706 + return true;
10.12707 +}
10.12708 +
10.12709 +function add_0(index, element){
10.12710 + throw $UnsupportedOperationException(new UnsupportedOperationException(), 'Add not supported on this list');
10.12711 +}
10.12712 +
10.12713 +function checkIndex(index, size){
10.12714 + if (index < 0 || index >= size) {
10.12715 + indexOutOfBounds(index, size);
10.12716 + }
10.12717 +}
10.12718 +
10.12719 +function equals_3(o){
10.12720 + var elem, elemOther, iter, iterOther, other;
10.12721 + if ((o == null?null:o) === (this == null?null:this)) {
10.12722 + return true;
10.12723 + }
10.12724 + if (!(o != null && canCast(o.typeId$, 15))) {
10.12725 + return false;
10.12726 + }
10.12727 + other = dynamicCast(o, 15);
10.12728 + if (this.size_0() != other.size_0()) {
10.12729 + return false;
10.12730 + }
10.12731 + iter = this.iterator();
10.12732 + iterOther = other.iterator();
10.12733 + while (iter.i < iter.this$0.size_0()) {
10.12734 + elem = $next(iter);
10.12735 + elemOther = $next(iterOther);
10.12736 + if (!(elem == null?elemOther == null:equals__devirtual$(elem, elemOther))) {
10.12737 + return false;
10.12738 + }
10.12739 + }
10.12740 + return true;
10.12741 +}
10.12742 +
10.12743 +function getClass_29(){
10.12744 + return Ljava_util_AbstractList_2_classLit;
10.12745 +}
10.12746 +
10.12747 +function hashCode_4(){
10.12748 + var iter, k, obj;
10.12749 + k = 1;
10.12750 + iter = this.iterator();
10.12751 + while (iter.i < iter.this$0.size_0()) {
10.12752 + obj = $next(iter);
10.12753 + k = 31 * k + (obj == null?0:hashCode__devirtual$(obj));
10.12754 + k = ~~k;
10.12755 + }
10.12756 + return k;
10.12757 +}
10.12758 +
10.12759 +function indexOutOfBounds(index, size){
10.12760 + throw $IndexOutOfBoundsException(new IndexOutOfBoundsException(), 'Index: ' + index + ', Size: ' + size);
10.12761 +}
10.12762 +
10.12763 +function iterator_0(){
10.12764 + return $AbstractList$IteratorImpl(new AbstractList$IteratorImpl(), this);
10.12765 +}
10.12766 +
10.12767 +function AbstractList(){
10.12768 +}
10.12769 +
10.12770 +_ = AbstractList.prototype = new AbstractCollection();
10.12771 +_.add_1 = add_1;
10.12772 +_.add_0 = add_0;
10.12773 +_.equals$ = equals_3;
10.12774 +_.getClass$ = getClass_29;
10.12775 +_.hashCode$ = hashCode_4;
10.12776 +_.iterator = iterator_0;
10.12777 +_.typeId$ = 25;
10.12778 +function $AbstractList$IteratorImpl(this$static, this$0){
10.12779 + this$static.this$0 = this$0;
10.12780 + return this$static;
10.12781 +}
10.12782 +
10.12783 +function $hasNext(this$static){
10.12784 + return this$static.i < this$static.this$0.size_0();
10.12785 +}
10.12786 +
10.12787 +function $next(this$static){
10.12788 + if (this$static.i >= this$static.this$0.size_0()) {
10.12789 + throw new NoSuchElementException();
10.12790 + }
10.12791 + return this$static.this$0.get(this$static.i++);
10.12792 +}
10.12793 +
10.12794 +function getClass_27(){
10.12795 + return Ljava_util_AbstractList$IteratorImpl_2_classLit;
10.12796 +}
10.12797 +
10.12798 +function hasNext_0(){
10.12799 + return this.i < this.this$0.size_0();
10.12800 +}
10.12801 +
10.12802 +function next_1(){
10.12803 + return $next(this);
10.12804 +}
10.12805 +
10.12806 +function AbstractList$IteratorImpl(){
10.12807 +}
10.12808 +
10.12809 +_ = AbstractList$IteratorImpl.prototype = new Object_0();
10.12810 +_.getClass$ = getClass_27;
10.12811 +_.hasNext = hasNext_0;
10.12812 +_.next_0 = next_1;
10.12813 +_.typeId$ = 0;
10.12814 +_.i = 0;
10.12815 +_.this$0 = null;
10.12816 +function $AbstractList$ListIteratorImpl(this$static, this$0){
10.12817 + this$static.this$0 = this$0;
10.12818 + return this$static;
10.12819 +}
10.12820 +
10.12821 +function getClass_28(){
10.12822 + return Ljava_util_AbstractList$ListIteratorImpl_2_classLit;
10.12823 +}
10.12824 +
10.12825 +function AbstractList$ListIteratorImpl(){
10.12826 +}
10.12827 +
10.12828 +_ = AbstractList$ListIteratorImpl.prototype = new AbstractList$IteratorImpl();
10.12829 +_.getClass$ = getClass_28;
10.12830 +_.typeId$ = 0;
10.12831 +function add_2(index, element){
10.12832 + var iter;
10.12833 + iter = $listIterator(this, index);
10.12834 + $addBefore(iter.this$0, element, iter.currentNode);
10.12835 + ++iter.currentIndex;
10.12836 + iter.lastNode = null;
10.12837 +}
10.12838 +
10.12839 +function get(index){
10.12840 + var $e0, iter;
10.12841 + iter = $listIterator(this, index);
10.12842 + try {
10.12843 + return $next_0(iter);
10.12844 + }
10.12845 + catch ($e0) {
10.12846 + $e0 = caught($e0);
10.12847 + if (instanceOf($e0, 17)) {
10.12848 + throw $IndexOutOfBoundsException(new IndexOutOfBoundsException(), "Can't get element " + index);
10.12849 + }
10.12850 + else
10.12851 + throw $e0;
10.12852 + }
10.12853 +}
10.12854 +
10.12855 +function getClass_32(){
10.12856 + return Ljava_util_AbstractSequentialList_2_classLit;
10.12857 +}
10.12858 +
10.12859 +function iterator_1(){
10.12860 + return $AbstractList$ListIteratorImpl(new AbstractList$ListIteratorImpl(), this);
10.12861 +}
10.12862 +
10.12863 +function AbstractSequentialList(){
10.12864 +}
10.12865 +
10.12866 +_ = AbstractSequentialList.prototype = new AbstractList();
10.12867 +_.add_0 = add_2;
10.12868 +_.get = get;
10.12869 +_.getClass$ = getClass_32;
10.12870 +_.iterator = iterator_1;
10.12871 +_.typeId$ = 26;
10.12872 +function $ArrayList(this$static){
10.12873 + this$static.array = initDim(_3Ljava_lang_Object_2_classLit, 47, 0, 0, 0);
10.12874 + this$static.size = 0;
10.12875 + return this$static;
10.12876 +}
10.12877 +
10.12878 +function $add(this$static, o){
10.12879 + setCheck(this$static.array, this$static.size++, o);
10.12880 + return true;
10.12881 +}
10.12882 +
10.12883 +function $get_0(this$static, index){
10.12884 + checkIndex(index, this$static.size);
10.12885 + return this$static.array[index];
10.12886 +}
10.12887 +
10.12888 +function $indexOf_0(this$static, o, index){
10.12889 + for (; index < this$static.size; ++index) {
10.12890 + if (equalsWithNullCheck(o, this$static.array[index])) {
10.12891 + return index;
10.12892 + }
10.12893 + }
10.12894 + return -1;
10.12895 +}
10.12896 +
10.12897 +function $remove_0(this$static, o){
10.12898 + var i, previous;
10.12899 + i = $indexOf_0(this$static, o, 0);
10.12900 + if (i == -1) {
10.12901 + return false;
10.12902 + }
10.12903 + previous = (checkIndex(i, this$static.size) , this$static.array[i]);
10.12904 + this$static.array.splice(i, 1);
10.12905 + --this$static.size;
10.12906 + return true;
10.12907 +}
10.12908 +
10.12909 +function add_4(o){
10.12910 + return setCheck(this.array, this.size++, o) , true;
10.12911 +}
10.12912 +
10.12913 +function add_3(index, o){
10.12914 + if (index < 0 || index > this.size) {
10.12915 + indexOutOfBounds(index, this.size);
10.12916 + }
10.12917 + this.array.splice(index, 0, o);
10.12918 + ++this.size;
10.12919 +}
10.12920 +
10.12921 +function contains_1(o){
10.12922 + return $indexOf_0(this, o, 0) != -1;
10.12923 +}
10.12924 +
10.12925 +function get_0(index){
10.12926 + return checkIndex(index, this.size) , this.array[index];
10.12927 +}
10.12928 +
10.12929 +function getClass_34(){
10.12930 + return Ljava_util_ArrayList_2_classLit;
10.12931 +}
10.12932 +
10.12933 +function size_1(){
10.12934 + return this.size;
10.12935 +}
10.12936 +
10.12937 +function ArrayList(){
10.12938 +}
10.12939 +
10.12940 +_ = ArrayList.prototype = new AbstractList();
10.12941 +_.add_1 = add_4;
10.12942 +_.add_0 = add_3;
10.12943 +_.contains = contains_1;
10.12944 +_.get = get_0;
10.12945 +_.getClass$ = getClass_34;
10.12946 +_.size_0 = size_1;
10.12947 +_.typeId$ = 27;
10.12948 +_.array = null;
10.12949 +_.size = 0;
10.12950 +function binarySearch(sortedArray, key){
10.12951 + var high, low, mid, midVal;
10.12952 + low = 0;
10.12953 + high = sortedArray.length - 1;
10.12954 + while (low <= high) {
10.12955 + mid = low + (high - low >> 1);
10.12956 + midVal = sortedArray[mid];
10.12957 + if (midVal < key) {
10.12958 + low = mid + 1;
10.12959 + }
10.12960 + else if (midVal > key) {
10.12961 + high = mid - 1;
10.12962 + }
10.12963 + else {
10.12964 + return mid;
10.12965 + }
10.12966 + }
10.12967 + return -low - 1;
10.12968 +}
10.12969 +
10.12970 +function binarySearch_0(sortedArray, key, comparator){
10.12971 + var compareResult, high, low, mid, midVal;
10.12972 + if (!comparator) {
10.12973 + comparator = ($clinit_61() , NATURAL);
10.12974 + }
10.12975 + low = 0;
10.12976 + high = sortedArray.length - 1;
10.12977 + while (low <= high) {
10.12978 + mid = low + (high - low >> 1);
10.12979 + midVal = sortedArray[mid];
10.12980 + compareResult = midVal.compareTo$(key);
10.12981 + if (compareResult < 0) {
10.12982 + low = mid + 1;
10.12983 + }
10.12984 + else if (compareResult > 0) {
10.12985 + high = mid - 1;
10.12986 + }
10.12987 + else {
10.12988 + return mid;
10.12989 + }
10.12990 + }
10.12991 + return -low - 1;
10.12992 +}
10.12993 +
10.12994 +function $clinit_61(){
10.12995 + $clinit_61 = nullMethod;
10.12996 + NATURAL = new Comparators$1();
10.12997 +}
10.12998 +
10.12999 +var NATURAL;
10.13000 +function getClass_35(){
10.13001 + return Ljava_util_Comparators$1_2_classLit;
10.13002 +}
10.13003 +
10.13004 +function Comparators$1(){
10.13005 +}
10.13006 +
10.13007 +_ = Comparators$1.prototype = new Object_0();
10.13008 +_.getClass$ = getClass_35;
10.13009 +_.typeId$ = 0;
10.13010 +function $HashMap(this$static){
10.13011 + $clearImpl(this$static);
10.13012 + return this$static;
10.13013 +}
10.13014 +
10.13015 +function $equals_1(value1, value2){
10.13016 + return (value1 == null?null:value1) === (value2 == null?null:value2) || value1 != null && equals__devirtual$(value1, value2);
10.13017 +}
10.13018 +
10.13019 +function getClass_36(){
10.13020 + return Ljava_util_HashMap_2_classLit;
10.13021 +}
10.13022 +
10.13023 +function HashMap(){
10.13024 +}
10.13025 +
10.13026 +_ = HashMap.prototype = new AbstractHashMap();
10.13027 +_.getClass$ = getClass_36;
10.13028 +_.typeId$ = 28;
10.13029 +function $LinkedList(this$static){
10.13030 + this$static.header = $LinkedList$Node(new LinkedList$Node());
10.13031 + this$static.size = 0;
10.13032 + return this$static;
10.13033 +}
10.13034 +
10.13035 +function $addBefore(this$static, o, target){
10.13036 + $LinkedList$Node_0(new LinkedList$Node(), o, target);
10.13037 + ++this$static.size;
10.13038 +}
10.13039 +
10.13040 +function $addLast(this$static, o){
10.13041 + $LinkedList$Node_0(new LinkedList$Node(), o, this$static.header);
10.13042 + ++this$static.size;
10.13043 +}
10.13044 +
10.13045 +function $clear(this$static){
10.13046 + this$static.header = $LinkedList$Node(new LinkedList$Node());
10.13047 + this$static.size = 0;
10.13048 +}
10.13049 +
10.13050 +function $getLast(this$static){
10.13051 + $throwEmptyException(this$static);
10.13052 + return this$static.header.prev.value;
10.13053 +}
10.13054 +
10.13055 +function $listIterator(this$static, index){
10.13056 + var i, node;
10.13057 + if (index < 0 || index > this$static.size) {
10.13058 + indexOutOfBounds(index, this$static.size);
10.13059 + }
10.13060 + if (index >= this$static.size >> 1) {
10.13061 + node = this$static.header;
10.13062 + for (i = this$static.size; i > index; --i) {
10.13063 + node = node.prev;
10.13064 + }
10.13065 + }
10.13066 + else {
10.13067 + node = this$static.header.next;
10.13068 + for (i = 0; i < index; ++i) {
10.13069 + node = node.next;
10.13070 + }
10.13071 + }
10.13072 + return $LinkedList$ListIteratorImpl(new LinkedList$ListIteratorImpl(), index, node, this$static);
10.13073 +}
10.13074 +
10.13075 +function $removeLast(this$static){
10.13076 + var node;
10.13077 + $throwEmptyException(this$static);
10.13078 + --this$static.size;
10.13079 + node = this$static.header.prev;
10.13080 + node.next.prev = node.prev;
10.13081 + node.prev.next = node.next;
10.13082 + node.next = node.prev = node;
10.13083 + return node.value;
10.13084 +}
10.13085 +
10.13086 +function $throwEmptyException(this$static){
10.13087 + if (this$static.size == 0) {
10.13088 + throw new NoSuchElementException();
10.13089 + }
10.13090 +}
10.13091 +
10.13092 +function add_5(o){
10.13093 + $LinkedList$Node_0(new LinkedList$Node(), o, this.header);
10.13094 + ++this.size;
10.13095 + return true;
10.13096 +}
10.13097 +
10.13098 +function getClass_39(){
10.13099 + return Ljava_util_LinkedList_2_classLit;
10.13100 +}
10.13101 +
10.13102 +function size_2(){
10.13103 + return this.size;
10.13104 +}
10.13105 +
10.13106 +function LinkedList(){
10.13107 +}
10.13108 +
10.13109 +_ = LinkedList.prototype = new AbstractSequentialList();
10.13110 +_.add_1 = add_5;
10.13111 +_.getClass$ = getClass_39;
10.13112 +_.size_0 = size_2;
10.13113 +_.typeId$ = 29;
10.13114 +_.header = null;
10.13115 +_.size = 0;
10.13116 +function $LinkedList$ListIteratorImpl(this$static, index, startNode, this$0){
10.13117 + this$static.this$0 = this$0;
10.13118 + this$static.currentNode = startNode;
10.13119 + this$static.currentIndex = index;
10.13120 + return this$static;
10.13121 +}
10.13122 +
10.13123 +function $next_0(this$static){
10.13124 + if (this$static.currentNode == this$static.this$0.header) {
10.13125 + throw new NoSuchElementException();
10.13126 + }
10.13127 + this$static.lastNode = this$static.currentNode;
10.13128 + this$static.currentNode = this$static.currentNode.next;
10.13129 + ++this$static.currentIndex;
10.13130 + return this$static.lastNode.value;
10.13131 +}
10.13132 +
10.13133 +function getClass_37(){
10.13134 + return Ljava_util_LinkedList$ListIteratorImpl_2_classLit;
10.13135 +}
10.13136 +
10.13137 +function hasNext_1(){
10.13138 + return this.currentNode != this.this$0.header;
10.13139 +}
10.13140 +
10.13141 +function next_2(){
10.13142 + return $next_0(this);
10.13143 +}
10.13144 +
10.13145 +function LinkedList$ListIteratorImpl(){
10.13146 +}
10.13147 +
10.13148 +_ = LinkedList$ListIteratorImpl.prototype = new Object_0();
10.13149 +_.getClass$ = getClass_37;
10.13150 +_.hasNext = hasNext_1;
10.13151 +_.next_0 = next_2;
10.13152 +_.typeId$ = 0;
10.13153 +_.currentIndex = 0;
10.13154 +_.currentNode = null;
10.13155 +_.lastNode = null;
10.13156 +_.this$0 = null;
10.13157 +function $LinkedList$Node(this$static){
10.13158 + this$static.next = this$static.prev = this$static;
10.13159 + return this$static;
10.13160 +}
10.13161 +
10.13162 +function $LinkedList$Node_0(this$static, value, nextNode){
10.13163 + this$static.value = value;
10.13164 + this$static.next = nextNode;
10.13165 + this$static.prev = nextNode.prev;
10.13166 + nextNode.prev.next = this$static;
10.13167 + nextNode.prev = this$static;
10.13168 + return this$static;
10.13169 +}
10.13170 +
10.13171 +function getClass_38(){
10.13172 + return Ljava_util_LinkedList$Node_2_classLit;
10.13173 +}
10.13174 +
10.13175 +function LinkedList$Node(){
10.13176 +}
10.13177 +
10.13178 +_ = LinkedList$Node.prototype = new Object_0();
10.13179 +_.getClass$ = getClass_38;
10.13180 +_.typeId$ = 0;
10.13181 +_.next = null;
10.13182 +_.prev = null;
10.13183 +_.value = null;
10.13184 +function getClass_40(){
10.13185 + return Ljava_util_NoSuchElementException_2_classLit;
10.13186 +}
10.13187 +
10.13188 +function NoSuchElementException(){
10.13189 +}
10.13190 +
10.13191 +_ = NoSuchElementException.prototype = new RuntimeException();
10.13192 +_.getClass$ = getClass_40;
10.13193 +_.typeId$ = 30;
10.13194 +function equalsWithNullCheck(a, b){
10.13195 + return (a == null?null:a) === (b == null?null:b) || a != null && equals__devirtual$(a, b);
10.13196 +}
10.13197 +
10.13198 +function $clinit_77(){
10.13199 + $clinit_77 = nullMethod;
10.13200 + HTML = $DoctypeExpectation(new DoctypeExpectation(), 'HTML', 0);
10.13201 + $DoctypeExpectation(new DoctypeExpectation(), 'HTML401_TRANSITIONAL', 1);
10.13202 + $DoctypeExpectation(new DoctypeExpectation(), 'HTML401_STRICT', 2);
10.13203 + $DoctypeExpectation(new DoctypeExpectation(), 'AUTO', 3);
10.13204 + $DoctypeExpectation(new DoctypeExpectation(), 'NO_DOCTYPE_ERRORS', 4);
10.13205 +}
10.13206 +
10.13207 +function $DoctypeExpectation(this$static, enum$name, enum$ordinal){
10.13208 + $clinit_77();
10.13209 + this$static.name_0 = enum$name;
10.13210 + this$static.ordinal = enum$ordinal;
10.13211 + return this$static;
10.13212 +}
10.13213 +
10.13214 +function getClass_41(){
10.13215 + return Lnu_validator_htmlparser_common_DoctypeExpectation_2_classLit;
10.13216 +}
10.13217 +
10.13218 +function DoctypeExpectation(){
10.13219 +}
10.13220 +
10.13221 +_ = DoctypeExpectation.prototype = new Enum();
10.13222 +_.getClass$ = getClass_41;
10.13223 +_.typeId$ = 31;
10.13224 +var HTML;
10.13225 +function $clinit_78(){
10.13226 + $clinit_78 = nullMethod;
10.13227 + STANDARDS_MODE = $DocumentMode(new DocumentMode(), 'STANDARDS_MODE', 0);
10.13228 + ALMOST_STANDARDS_MODE = $DocumentMode(new DocumentMode(), 'ALMOST_STANDARDS_MODE', 1);
10.13229 + QUIRKS_MODE = $DocumentMode(new DocumentMode(), 'QUIRKS_MODE', 2);
10.13230 +}
10.13231 +
10.13232 +function $DocumentMode(this$static, enum$name, enum$ordinal){
10.13233 + $clinit_78();
10.13234 + this$static.name_0 = enum$name;
10.13235 + this$static.ordinal = enum$ordinal;
10.13236 + return this$static;
10.13237 +}
10.13238 +
10.13239 +function getClass_42(){
10.13240 + return Lnu_validator_htmlparser_common_DocumentMode_2_classLit;
10.13241 +}
10.13242 +
10.13243 +function DocumentMode(){
10.13244 +}
10.13245 +
10.13246 +_ = DocumentMode.prototype = new Enum();
10.13247 +_.getClass$ = getClass_42;
10.13248 +_.typeId$ = 32;
10.13249 +var ALMOST_STANDARDS_MODE, QUIRKS_MODE, STANDARDS_MODE;
10.13250 +function $clinit_80(){
10.13251 + $clinit_80 = nullMethod;
10.13252 + ALLOW = $XmlViolationPolicy(new XmlViolationPolicy(), 'ALLOW', 0);
10.13253 + FATAL = $XmlViolationPolicy(new XmlViolationPolicy(), 'FATAL', 1);
10.13254 + ALTER_INFOSET = $XmlViolationPolicy(new XmlViolationPolicy(), 'ALTER_INFOSET', 2);
10.13255 +}
10.13256 +
10.13257 +function $XmlViolationPolicy(this$static, enum$name, enum$ordinal){
10.13258 + $clinit_80();
10.13259 + this$static.name_0 = enum$name;
10.13260 + this$static.ordinal = enum$ordinal;
10.13261 + return this$static;
10.13262 +}
10.13263 +
10.13264 +function getClass_43(){
10.13265 + return Lnu_validator_htmlparser_common_XmlViolationPolicy_2_classLit;
10.13266 +}
10.13267 +
10.13268 +function XmlViolationPolicy(){
10.13269 +}
10.13270 +
10.13271 +_ = XmlViolationPolicy.prototype = new Enum();
10.13272 +_.getClass$ = getClass_43;
10.13273 +_.typeId$ = 33;
10.13274 +var ALLOW, ALTER_INFOSET, FATAL;
10.13275 +function $clinit_98(){
10.13276 + $clinit_98 = nullMethod;
10.13277 + ISINDEX_PROMPT = $toCharArray('This is a searchable index. Insert your search keywords here: ');
10.13278 + HTML4_PUBLIC_IDS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['-//W3C//DTD HTML 4.0 Frameset//EN', '-//W3C//DTD HTML 4.0 Transitional//EN', '-//W3C//DTD HTML 4.0//EN', '-//W3C//DTD HTML 4.01 Frameset//EN', '-//W3C//DTD HTML 4.01 Transitional//EN', '-//W3C//DTD HTML 4.01//EN']);
10.13279 + QUIRKY_PUBLIC_IDS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['+//silmaril//dtd html pro v0r11 19970101//', '-//advasoft ltd//dtd html 3.0 aswedit + extensions//', '-//as//dtd html 3.0 aswedit + extensions//', '-//ietf//dtd html 2.0 level 1//', '-//ietf//dtd html 2.0 level 2//', '-//ietf//dtd html 2.0 strict level 1//', '-//ietf//dtd html 2.0 strict level 2//', '-//ietf//dtd html 2.0 strict//', '-//ietf//dtd html 2.0//', '-//ietf//dtd html 2.1e//', '-//ietf//dtd html 3.0//', '-//ietf//dtd html 3.2 final//', '-//ietf//dtd html 3.2//', '-//ietf//dtd html 3//', '-//ietf//dtd html level 0//', '-//ietf//dtd html level 1//', '-//ietf//dtd html level 2//', '-//ietf//dtd html level 3//', '-//ietf//dtd html strict level 0//', '-//ietf//dtd html strict level 1//', '-//ietf//dtd html strict level 2//', '-//ietf//dtd html strict level 3//', '-//ietf//dtd html strict//', '-//ietf//dtd html//', '-//metrius//dtd metrius presentational//', '-//microsoft//dtd internet explorer 2.0 html strict//', '-//microsoft//dtd internet explorer 2.0 html//', '-//microsoft//dtd internet explorer 2.0 tables//', '-//microsoft//dtd internet explorer 3.0 html strict//', '-//microsoft//dtd internet explorer 3.0 html//', '-//microsoft//dtd internet explorer 3.0 tables//', '-//netscape comm. corp.//dtd html//', '-//netscape comm. corp.//dtd strict html//', "-//o'reilly and associates//dtd html 2.0//", "-//o'reilly and associates//dtd html extended 1.0//", "-//o'reilly and associates//dtd html extended relaxed 1.0//", '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//', '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//', '-//spyglass//dtd html 2.0 extended//', '-//sq//dtd html 2.0 hotmetal + extensions//', '-//sun microsystems corp.//dtd hotjava html//', '-//sun microsystems corp.//dtd hotjava strict html//', '-//w3c//dtd html 3 1995-03-24//', '-//w3c//dtd html 3.2 draft//', '-//w3c//dtd html 3.2 final//', '-//w3c//dtd html 3.2//', '-//w3c//dtd html 3.2s draft//', '-//w3c//dtd html 4.0 frameset//', '-//w3c//dtd html 4.0 transitional//', '-//w3c//dtd html experimental 19960712//', '-//w3c//dtd html experimental 970421//', '-//w3c//dtd w3 html//', '-//w3o//dtd w3 html 3.0//', '-//webtechs//dtd mozilla html 2.0//', '-//webtechs//dtd mozilla html//']);
10.13280 +}
10.13281 +
10.13282 +function $accumulateCharacter(this$static, c){
10.13283 + var newBuf, newLen;
10.13284 + newLen = this$static.charBufferLen + 1;
10.13285 + if (newLen > this$static.charBuffer.length) {
10.13286 + newBuf = initDim(_3C_classLit, 42, -1, newLen, 1);
10.13287 + arraycopy(this$static.charBuffer, 0, newBuf, 0, this$static.charBufferLen);
10.13288 + this$static.charBuffer = newBuf;
10.13289 + }
10.13290 + this$static.charBuffer[this$static.charBufferLen] = c;
10.13291 + this$static.charBufferLen = newLen;
10.13292 +}
10.13293 +
10.13294 +function $addAttributesToBody(this$static, attributes){
10.13295 + var body;
10.13296 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13297 + if (this$static.currentPtr >= 1) {
10.13298 + body = this$static.stack[1];
10.13299 + if (body.group == 3) {
10.13300 + $addAttributesToElement(this$static, body.node, attributes);
10.13301 + }
10.13302 + }
10.13303 +}
10.13304 +
10.13305 +function $adoptionAgencyEndTag(this$static, name){
10.13306 + var bookmark, clone, commonAncestor, formattingClone, formattingElt, formattingEltListPos, formattingEltStackPos, furthestBlock, furthestBlockPos, inScope, lastNode, listNode, newNode, node, nodeListPos, nodePos;
10.13307 + $flushCharacters(this$static);
10.13308 + for (;;) {
10.13309 + formattingEltListPos = this$static.listPtr;
10.13310 + while (formattingEltListPos > -1) {
10.13311 + listNode = this$static.listOfActiveFormattingElements[formattingEltListPos];
10.13312 + if (!listNode) {
10.13313 + formattingEltListPos = -1;
10.13314 + break;
10.13315 + }
10.13316 + else if (listNode.name_0 == name) {
10.13317 + break;
10.13318 + }
10.13319 + --formattingEltListPos;
10.13320 + }
10.13321 + if (formattingEltListPos == -1) {
10.13322 + return;
10.13323 + }
10.13324 + formattingElt = this$static.listOfActiveFormattingElements[formattingEltListPos];
10.13325 + formattingEltStackPos = this$static.currentPtr;
10.13326 + inScope = true;
10.13327 + while (formattingEltStackPos > -1) {
10.13328 + node = this$static.stack[formattingEltStackPos];
10.13329 + if (node == formattingElt) {
10.13330 + break;
10.13331 + }
10.13332 + else if (node.scoping) {
10.13333 + inScope = false;
10.13334 + }
10.13335 + --formattingEltStackPos;
10.13336 + }
10.13337 + if (formattingEltStackPos == -1) {
10.13338 + $removeFromListOfActiveFormattingElements(this$static, formattingEltListPos);
10.13339 + return;
10.13340 + }
10.13341 + if (!inScope) {
10.13342 + return;
10.13343 + }
10.13344 + furthestBlockPos = formattingEltStackPos + 1;
10.13345 + while (furthestBlockPos <= this$static.currentPtr) {
10.13346 + node = this$static.stack[furthestBlockPos];
10.13347 + if (node.scoping || node.special) {
10.13348 + break;
10.13349 + }
10.13350 + ++furthestBlockPos;
10.13351 + }
10.13352 + if (furthestBlockPos > this$static.currentPtr) {
10.13353 + while (this$static.currentPtr >= formattingEltStackPos) {
10.13354 + $pop(this$static);
10.13355 + }
10.13356 + $removeFromListOfActiveFormattingElements(this$static, formattingEltListPos);
10.13357 + return;
10.13358 + }
10.13359 + commonAncestor = this$static.stack[formattingEltStackPos - 1];
10.13360 + furthestBlock = this$static.stack[furthestBlockPos];
10.13361 + bookmark = formattingEltListPos;
10.13362 + nodePos = furthestBlockPos;
10.13363 + lastNode = furthestBlock;
10.13364 + for (;;) {
10.13365 + --nodePos;
10.13366 + node = this$static.stack[nodePos];
10.13367 + nodeListPos = $findInListOfActiveFormattingElements(this$static, node);
10.13368 + if (nodeListPos == -1) {
10.13369 + $removeFromStack(this$static, nodePos);
10.13370 + --furthestBlockPos;
10.13371 + continue;
10.13372 + }
10.13373 + if (nodePos == formattingEltStackPos) {
10.13374 + break;
10.13375 + }
10.13376 + if (nodePos == furthestBlockPos) {
10.13377 + bookmark = nodeListPos + 1;
10.13378 + }
10.13379 + clone = $createElement(this$static, 'http://www.w3.org/1999/xhtml', node.name_0, $cloneAttributes(node.attributes));
10.13380 + newNode = $StackNode(new StackNode(), node.group, node.ns, node.name_0, clone, node.scoping, node.special, node.fosterParenting, node.popName, node.attributes);
10.13381 + node.attributes = null;
10.13382 + this$static.stack[nodePos] = newNode;
10.13383 + ++newNode.refcount;
10.13384 + this$static.listOfActiveFormattingElements[nodeListPos] = newNode;
10.13385 + --node.refcount;
10.13386 + --node.refcount;
10.13387 + node = newNode;
10.13388 + $detachFromParent(this$static, lastNode.node);
10.13389 + $appendElement(this$static, lastNode.node, node.node);
10.13390 + lastNode = node;
10.13391 + }
10.13392 + if (commonAncestor.fosterParenting) {
10.13393 + $detachFromParent(this$static, lastNode.node);
10.13394 + $insertIntoFosterParent(this$static, lastNode.node);
10.13395 + }
10.13396 + else {
10.13397 + $detachFromParent(this$static, lastNode.node);
10.13398 + $appendElement(this$static, lastNode.node, commonAncestor.node);
10.13399 + }
10.13400 + clone = $createElement(this$static, 'http://www.w3.org/1999/xhtml', formattingElt.name_0, $cloneAttributes(formattingElt.attributes));
10.13401 + formattingClone = $StackNode(new StackNode(), formattingElt.group, formattingElt.ns, formattingElt.name_0, clone, formattingElt.scoping, formattingElt.special, formattingElt.fosterParenting, formattingElt.popName, formattingElt.attributes);
10.13402 + formattingElt.attributes = null;
10.13403 + $appendChildrenToNewParent(this$static, furthestBlock.node, clone);
10.13404 + $appendElement(this$static, clone, furthestBlock.node);
10.13405 + $removeFromListOfActiveFormattingElements(this$static, formattingEltListPos);
10.13406 + $insertIntoListOfActiveFormattingElements(this$static, formattingClone, bookmark);
10.13407 + $removeFromStack(this$static, formattingEltStackPos);
10.13408 + $insertIntoStack(this$static, formattingClone, furthestBlockPos);
10.13409 + }
10.13410 +}
10.13411 +
10.13412 +function $append_1(this$static, node){
10.13413 + var newList;
10.13414 + ++this$static.listPtr;
10.13415 + if (this$static.listPtr == this$static.listOfActiveFormattingElements.length) {
10.13416 + newList = initDim(_3Lnu_validator_htmlparser_impl_StackNode_2_classLit, 51, 11, this$static.listOfActiveFormattingElements.length + 64, 0);
10.13417 + arraycopy(this$static.listOfActiveFormattingElements, 0, newList, 0, this$static.listOfActiveFormattingElements.length);
10.13418 + this$static.listOfActiveFormattingElements = newList;
10.13419 + }
10.13420 + this$static.listOfActiveFormattingElements[this$static.listPtr] = node;
10.13421 +}
10.13422 +
10.13423 +function $appendHtmlElementToDocumentAndPush(this$static, attributes){
10.13424 + var elt, node;
10.13425 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13426 + elt = $createHtmlElementSetAsRoot(this$static, attributes);
10.13427 + node = $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , HTML_0), elt);
10.13428 + $push_0(this$static, node);
10.13429 +}
10.13430 +
10.13431 +function $appendToCurrentNodeAndPushElement(this$static, ns, elementName, attributes){
10.13432 + var elt, node;
10.13433 + $flushCharacters(this$static);
10.13434 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13435 + elt = $createElement(this$static, ns, elementName.name_0, attributes);
10.13436 + $appendElement(this$static, elt, this$static.stack[this$static.currentPtr].node);
10.13437 + node = $StackNode_0(new StackNode(), ns, elementName, elt);
10.13438 + $push_0(this$static, node);
10.13439 +}
10.13440 +
10.13441 +function $appendToCurrentNodeAndPushElementMayFoster(this$static, ns, elementName, attributes){
10.13442 + var current, elt, node, popName;
10.13443 + $flushCharacters(this$static);
10.13444 + popName = elementName.name_0;
10.13445 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13446 + if (elementName.custom) {
10.13447 + popName = $checkPopName(this$static, popName);
10.13448 + }
10.13449 + elt = $createElement(this$static, ns, popName, attributes);
10.13450 + current = this$static.stack[this$static.currentPtr];
10.13451 + if (current.fosterParenting) {
10.13452 + $insertIntoFosterParent(this$static, elt);
10.13453 + }
10.13454 + else {
10.13455 + $appendElement(this$static, elt, current.node);
10.13456 + }
10.13457 + node = $StackNode_1(new StackNode(), ns, elementName, elt, popName);
10.13458 + $push_0(this$static, node);
10.13459 +}
10.13460 +
10.13461 +function $appendToCurrentNodeAndPushElementMayFoster_0(this$static, ns, elementName, attributes){
10.13462 + var current, elt, node;
10.13463 + $flushCharacters(this$static);
10.13464 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13465 + elt = $createElement_0(this$static, ns, elementName.name_0, attributes);
10.13466 + current = this$static.stack[this$static.currentPtr];
10.13467 + if (current.fosterParenting) {
10.13468 + $insertIntoFosterParent(this$static, elt);
10.13469 + }
10.13470 + else {
10.13471 + $appendElement(this$static, elt, current.node);
10.13472 + }
10.13473 + node = $StackNode_0(new StackNode(), ns, elementName, elt);
10.13474 + $push_0(this$static, node);
10.13475 +}
10.13476 +
10.13477 +function $appendToCurrentNodeAndPushElementMayFosterCamelCase(this$static, ns, elementName, attributes){
10.13478 + var current, elt, node, popName;
10.13479 + $flushCharacters(this$static);
10.13480 + popName = elementName.camelCaseName;
10.13481 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13482 + if (elementName.custom) {
10.13483 + popName = $checkPopName(this$static, popName);
10.13484 + }
10.13485 + elt = $createElement(this$static, ns, popName, attributes);
10.13486 + current = this$static.stack[this$static.currentPtr];
10.13487 + if (current.fosterParenting) {
10.13488 + $insertIntoFosterParent(this$static, elt);
10.13489 + }
10.13490 + else {
10.13491 + $appendElement(this$static, elt, current.node);
10.13492 + }
10.13493 + node = $StackNode_2(new StackNode(), ns, elementName, elt, popName, ($clinit_89() , FOREIGNOBJECT) == elementName);
10.13494 + $push_0(this$static, node);
10.13495 +}
10.13496 +
10.13497 +function $appendToCurrentNodeAndPushElementMayFosterNoScoping(this$static, ns, elementName, attributes){
10.13498 + var current, elt, node, popName;
10.13499 + $flushCharacters(this$static);
10.13500 + popName = elementName.name_0;
10.13501 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13502 + if (elementName.custom) {
10.13503 + popName = $checkPopName(this$static, popName);
10.13504 + }
10.13505 + elt = $createElement(this$static, ns, popName, attributes);
10.13506 + current = this$static.stack[this$static.currentPtr];
10.13507 + if (current.fosterParenting) {
10.13508 + $insertIntoFosterParent(this$static, elt);
10.13509 + }
10.13510 + else {
10.13511 + $appendElement(this$static, elt, current.node);
10.13512 + }
10.13513 + node = $StackNode_2(new StackNode(), ns, elementName, elt, popName, false);
10.13514 + $push_0(this$static, node);
10.13515 +}
10.13516 +
10.13517 +function $appendToCurrentNodeAndPushFormElementMayFoster(this$static, attributes){
10.13518 + var current, elt, node;
10.13519 + $flushCharacters(this$static);
10.13520 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13521 + elt = $createElement(this$static, 'http://www.w3.org/1999/xhtml', 'form', attributes);
10.13522 + this$static.formPointer = elt;
10.13523 + current = this$static.stack[this$static.currentPtr];
10.13524 + if (current.fosterParenting) {
10.13525 + $insertIntoFosterParent(this$static, elt);
10.13526 + }
10.13527 + else {
10.13528 + $appendElement(this$static, elt, current.node);
10.13529 + }
10.13530 + node = $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , FORM_0), elt);
10.13531 + $push_0(this$static, node);
10.13532 +}
10.13533 +
10.13534 +function $appendToCurrentNodeAndPushFormattingElementMayFoster(this$static, ns, elementName, attributes){
10.13535 + var current, elt, node;
10.13536 + $flushCharacters(this$static);
10.13537 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13538 + elt = $createElement(this$static, ns, elementName.name_0, attributes);
10.13539 + current = this$static.stack[this$static.currentPtr];
10.13540 + if (current.fosterParenting) {
10.13541 + $insertIntoFosterParent(this$static, elt);
10.13542 + }
10.13543 + else {
10.13544 + $appendElement(this$static, elt, current.node);
10.13545 + }
10.13546 + node = $StackNode_3(new StackNode(), ns, elementName, elt, $cloneAttributes(attributes));
10.13547 + $push_0(this$static, node);
10.13548 + $append_1(this$static, node);
10.13549 + ++node.refcount;
10.13550 +}
10.13551 +
10.13552 +function $appendToCurrentNodeAndPushHeadElement(this$static, attributes){
10.13553 + var elt, node;
10.13554 + $flushCharacters(this$static);
10.13555 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13556 + elt = $createElement(this$static, 'http://www.w3.org/1999/xhtml', 'head', attributes);
10.13557 + $appendElement(this$static, elt, this$static.stack[this$static.currentPtr].node);
10.13558 + this$static.headPointer = elt;
10.13559 + node = $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , HEAD), elt);
10.13560 + $push_0(this$static, node);
10.13561 +}
10.13562 +
10.13563 +function $appendVoidElementToCurrentMayFoster(this$static, ns, name, attributes){
10.13564 + var current, elt;
10.13565 + $flushCharacters(this$static);
10.13566 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13567 + elt = $createElement_0(this$static, ns, name, attributes);
10.13568 + current = this$static.stack[this$static.currentPtr];
10.13569 + if (current.fosterParenting) {
10.13570 + $insertIntoFosterParent(this$static, elt);
10.13571 + }
10.13572 + else {
10.13573 + $appendElement(this$static, elt, current.node);
10.13574 + }
10.13575 + $elementPopped(this$static, ns, name, elt);
10.13576 +}
10.13577 +
10.13578 +function $appendVoidElementToCurrentMayFoster_0(this$static, ns, elementName, attributes){
10.13579 + var current, elt, popName;
10.13580 + $flushCharacters(this$static);
10.13581 + popName = elementName.name_0;
10.13582 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13583 + if (elementName.custom) {
10.13584 + popName = $checkPopName(this$static, popName);
10.13585 + }
10.13586 + elt = $createElement(this$static, ns, popName, attributes);
10.13587 + current = this$static.stack[this$static.currentPtr];
10.13588 + if (current.fosterParenting) {
10.13589 + $insertIntoFosterParent(this$static, elt);
10.13590 + }
10.13591 + else {
10.13592 + $appendElement(this$static, elt, current.node);
10.13593 + }
10.13594 + $elementPopped(this$static, ns, popName, elt);
10.13595 +}
10.13596 +
10.13597 +function $appendVoidElementToCurrentMayFosterCamelCase(this$static, ns, elementName, attributes){
10.13598 + var current, elt, popName;
10.13599 + $flushCharacters(this$static);
10.13600 + popName = elementName.camelCaseName;
10.13601 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.13602 + if (elementName.custom) {
10.13603 + popName = $checkPopName(this$static, popName);
10.13604 + }
10.13605 + elt = $createElement(this$static, ns, popName, attributes);
10.13606 + current = this$static.stack[this$static.currentPtr];
10.13607 + if (current.fosterParenting) {
10.13608 + $insertIntoFosterParent(this$static, elt);
10.13609 + }
10.13610 + else {
10.13611 + $appendElement(this$static, elt, current.node);
10.13612 + }
10.13613 + $elementPopped(this$static, ns, popName, elt);
10.13614 +}
10.13615 +
10.13616 +function $charBufferContainsNonWhitespace(this$static){
10.13617 + var i;
10.13618 + for (i = 0; i < this$static.charBufferLen; ++i) {
10.13619 + switch (this$static.charBuffer[i]) {
10.13620 + case 32:
10.13621 + case 9:
10.13622 + case 10:
10.13623 + case 12:
10.13624 + continue;
10.13625 + default:return true;
10.13626 + }
10.13627 + }
10.13628 + return false;
10.13629 +}
10.13630 +
10.13631 +function $characters(this$static, buf, start, length){
10.13632 + var end, i;
10.13633 + if (this$static.needToDropLF) {
10.13634 + if (buf[start] == 10) {
10.13635 + ++start;
10.13636 + --length;
10.13637 + if (length == 0) {
10.13638 + return;
10.13639 + }
10.13640 + }
10.13641 + this$static.needToDropLF = false;
10.13642 + }
10.13643 + switch (this$static.mode) {
10.13644 + case 6:
10.13645 + case 12:
10.13646 + case 8:
10.13647 + $reconstructTheActiveFormattingElements(this$static);
10.13648 + case 20:
10.13649 + $accumulateCharacters(this$static, buf, start, length);
10.13650 + return;
10.13651 + default:end = start + length;
10.13652 + charactersloop: for (i = start; i < end; ++i) {
10.13653 + switch (buf[i]) {
10.13654 + case 32:
10.13655 + case 9:
10.13656 + case 10:
10.13657 + case 12:
10.13658 + switch (this$static.mode) {
10.13659 + case 0:
10.13660 + case 1:
10.13661 + case 2:
10.13662 + start = i + 1;
10.13663 + continue;
10.13664 + case 21:
10.13665 + case 3:
10.13666 + case 4:
10.13667 + case 5:
10.13668 + case 9:
10.13669 + case 16:
10.13670 + case 17:
10.13671 + continue;
10.13672 + case 6:
10.13673 + case 12:
10.13674 + case 8:
10.13675 + if (start < i) {
10.13676 + $accumulateCharacters(this$static, buf, start, i - start);
10.13677 + start = i;
10.13678 + }
10.13679 +
10.13680 + $reconstructTheActiveFormattingElements(this$static);
10.13681 + break charactersloop;
10.13682 + case 7:
10.13683 + case 10:
10.13684 + case 11:
10.13685 + $reconstructTheActiveFormattingElements(this$static);
10.13686 + $accumulateCharacter(this$static, buf[i]);
10.13687 + start = i + 1;
10.13688 + continue;
10.13689 + case 15:
10.13690 + if (start < i) {
10.13691 + $accumulateCharacters(this$static, buf, start, i - start);
10.13692 + start = i;
10.13693 + }
10.13694 +
10.13695 + $reconstructTheActiveFormattingElements(this$static);
10.13696 + continue;
10.13697 + case 18:
10.13698 + case 19:
10.13699 + if (start < i) {
10.13700 + $accumulateCharacters(this$static, buf, start, i - start);
10.13701 + start = i;
10.13702 + }
10.13703 +
10.13704 + $reconstructTheActiveFormattingElements(this$static);
10.13705 + continue;
10.13706 + }
10.13707 +
10.13708 + default:switch (this$static.mode) {
10.13709 + case 0:
10.13710 + $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
10.13711 + this$static.mode = 1;
10.13712 + --i;
10.13713 + continue;
10.13714 + case 1:
10.13715 + $appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
10.13716 + this$static.mode = 2;
10.13717 + --i;
10.13718 + continue;
10.13719 + case 2:
10.13720 + if (start < i) {
10.13721 + $accumulateCharacters(this$static, buf, start, i - start);
10.13722 + start = i;
10.13723 + }
10.13724 +
10.13725 + $appendToCurrentNodeAndPushHeadElement(this$static, ($clinit_91() , EMPTY_ATTRIBUTES));
10.13726 + this$static.mode = 3;
10.13727 + --i;
10.13728 + continue;
10.13729 + case 3:
10.13730 + if (start < i) {
10.13731 + $accumulateCharacters(this$static, buf, start, i - start);
10.13732 + start = i;
10.13733 + }
10.13734 +
10.13735 + $pop(this$static);
10.13736 + this$static.mode = 5;
10.13737 + --i;
10.13738 + continue;
10.13739 + case 4:
10.13740 + if (start < i) {
10.13741 + $accumulateCharacters(this$static, buf, start, i - start);
10.13742 + start = i;
10.13743 + }
10.13744 +
10.13745 + $pop(this$static);
10.13746 + this$static.mode = 3;
10.13747 + --i;
10.13748 + continue;
10.13749 + case 5:
10.13750 + if (start < i) {
10.13751 + $accumulateCharacters(this$static, buf, start, i - start);
10.13752 + start = i;
10.13753 + }
10.13754 +
10.13755 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
10.13756 + this$static.mode = 21;
10.13757 + --i;
10.13758 + continue;
10.13759 + case 21:
10.13760 + this$static.mode = 6;
10.13761 + --i;
10.13762 + continue;
10.13763 + case 6:
10.13764 + case 12:
10.13765 + case 8:
10.13766 + if (start < i) {
10.13767 + $accumulateCharacters(this$static, buf, start, i - start);
10.13768 + start = i;
10.13769 + }
10.13770 +
10.13771 + $reconstructTheActiveFormattingElements(this$static);
10.13772 + break charactersloop;
10.13773 + case 7:
10.13774 + case 10:
10.13775 + case 11:
10.13776 + $reconstructTheActiveFormattingElements(this$static);
10.13777 + $accumulateCharacter(this$static, buf[i]);
10.13778 + start = i + 1;
10.13779 + continue;
10.13780 + case 9:
10.13781 + if (start < i) {
10.13782 + $accumulateCharacters(this$static, buf, start, i - start);
10.13783 + start = i;
10.13784 + }
10.13785 +
10.13786 + if (this$static.currentPtr == 0) {
10.13787 + start = i + 1;
10.13788 + continue;
10.13789 + }
10.13790 +
10.13791 + $pop(this$static);
10.13792 + this$static.mode = 7;
10.13793 + --i;
10.13794 + continue;
10.13795 + break charactersloop;
10.13796 + case 15:
10.13797 + this$static.mode = 6;
10.13798 + --i;
10.13799 + continue;
10.13800 + case 16:
10.13801 + if (start < i) {
10.13802 + $accumulateCharacters(this$static, buf, start, i - start);
10.13803 + start = i;
10.13804 + }
10.13805 +
10.13806 + start = i + 1;
10.13807 + continue;
10.13808 + case 17:
10.13809 + if (start < i) {
10.13810 + $accumulateCharacters(this$static, buf, start, i - start);
10.13811 + start = i;
10.13812 + }
10.13813 +
10.13814 + start = i + 1;
10.13815 + continue;
10.13816 + case 18:
10.13817 + this$static.mode = 6;
10.13818 + --i;
10.13819 + continue;
10.13820 + case 19:
10.13821 + this$static.mode = 16;
10.13822 + --i;
10.13823 + continue;
10.13824 + }
10.13825 +
10.13826 + }
10.13827 + }
10.13828 +
10.13829 + if (start < end) {
10.13830 + $accumulateCharacters(this$static, buf, start, end - start);
10.13831 + }
10.13832 +
10.13833 + }
10.13834 +}
10.13835 +
10.13836 +function $checkMetaCharset(this$static, attributes){
10.13837 + var content, internalCharsetHtml5, internalCharsetLegacy;
10.13838 + content = $getValue_0(attributes, ($clinit_87() , CONTENT));
10.13839 + internalCharsetLegacy = null;
10.13840 + if (content != null) {
10.13841 + internalCharsetLegacy = extractCharsetFromContent(content);
10.13842 + }
10.13843 + if (internalCharsetLegacy == null) {
10.13844 + internalCharsetHtml5 = $getValue_0(attributes, CHARSET);
10.13845 + if (internalCharsetHtml5 != null) {
10.13846 + this$static.tokenizer.shouldSuspend = true;
10.13847 + }
10.13848 + }
10.13849 + else {
10.13850 + this$static.tokenizer.shouldSuspend = true;
10.13851 + }
10.13852 +}
10.13853 +
10.13854 +function $checkPopName(this$static, name){
10.13855 + if (isNCName(name)) {
10.13856 + return name;
10.13857 + }
10.13858 + else {
10.13859 + switch (this$static.namePolicy.ordinal) {
10.13860 + case 0:
10.13861 + return name;
10.13862 + case 2:
10.13863 + return escapeName(name);
10.13864 + case 1:
10.13865 + $fatal_1(this$static, 'Element name \u201C' + name + '\u201D cannot be represented as XML 1.0.');
10.13866 + }
10.13867 + }
10.13868 + return null;
10.13869 +}
10.13870 +
10.13871 +function $clearStackBackTo(this$static, eltPos){
10.13872 + while (this$static.currentPtr > eltPos) {
10.13873 + $pop(this$static);
10.13874 + }
10.13875 +}
10.13876 +
10.13877 +function $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static){
10.13878 + while (this$static.listPtr > -1) {
10.13879 + if (!this$static.listOfActiveFormattingElements[this$static.listPtr]) {
10.13880 + --this$static.listPtr;
10.13881 + return;
10.13882 + }
10.13883 + --this$static.listOfActiveFormattingElements[this$static.listPtr].refcount;
10.13884 + --this$static.listPtr;
10.13885 + }
10.13886 +}
10.13887 +
10.13888 +function $closeTheCell(this$static, eltPos){
10.13889 + $generateImpliedEndTags(this$static);
10.13890 + while (this$static.currentPtr >= eltPos) {
10.13891 + $pop(this$static);
10.13892 + }
10.13893 + $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
10.13894 + this$static.mode = 11;
10.13895 + return;
10.13896 +}
10.13897 +
10.13898 +function $comment(this$static, buf, start, length){
10.13899 + var end, end_0, end_1;
10.13900 + this$static.needToDropLF = false;
10.13901 + if (!this$static.wantingComments) {
10.13902 + return;
10.13903 + }
10.13904 + commentloop: for (;;) {
10.13905 + switch (this$static.foreignFlag) {
10.13906 + case 0:
10.13907 + break commentloop;
10.13908 + default:switch (this$static.mode) {
10.13909 + case 0:
10.13910 + case 1:
10.13911 + case 18:
10.13912 + case 19:
10.13913 + $appendCommentToDocument(this$static, (end = start + length , __checkBounds(buf.length, start, end) , __valueOf(buf, start, end)));
10.13914 + return;
10.13915 + case 15:
10.13916 + $flushCharacters(this$static);
10.13917 + $appendComment(this$static, this$static.stack[0].node, (end_0 = start + length , __checkBounds(buf.length, start, end_0) , __valueOf(buf, start, end_0)));
10.13918 + return;
10.13919 + default:break commentloop;
10.13920 + }
10.13921 +
10.13922 + }
10.13923 + }
10.13924 + $flushCharacters(this$static);
10.13925 + $appendComment(this$static, this$static.stack[this$static.currentPtr].node, (end_1 = start + length , __checkBounds(buf.length, start, end_1) , __valueOf(buf, start, end_1)));
10.13926 + return;
10.13927 +}
10.13928 +
10.13929 +function $doctype(this$static, name, publicIdentifier, systemIdentifier, forceQuirks){
10.13930 + this$static.needToDropLF = false;
10.13931 + doctypeloop: for (;;) {
10.13932 + switch (this$static.foreignFlag) {
10.13933 + case 0:
10.13934 + break doctypeloop;
10.13935 + default:switch (this$static.mode) {
10.13936 + case 0:
10.13937 + switch (this$static.doctypeExpectation.ordinal) {
10.13938 + case 0:
10.13939 + if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
10.13940 + $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
10.13941 + }
10.13942 + else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
10.13943 + $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
10.13944 + }
10.13945 + else {
10.13946 + if ($equals_0('-//W3C//DTD HTML 4.0//EN', publicIdentifier) && (systemIdentifier == null || $equals_0('http://www.w3.org/TR/REC-html40/strict.dtd', systemIdentifier)) || $equals_0('-//W3C//DTD HTML 4.01//EN', publicIdentifier) && (systemIdentifier == null || $equals_0('http://www.w3.org/TR/html4/strict.dtd', systemIdentifier)) || $equals_0('-//W3C//DTD XHTML 1.0 Strict//EN', publicIdentifier) && $equals_0('http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd', systemIdentifier) || $equals_0('-//W3C//DTD XHTML 1.1//EN', publicIdentifier) && $equals_0('http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd', systemIdentifier)) {
10.13947 + }
10.13948 + else
10.13949 + !((systemIdentifier == null || $equals_0('about:legacy-compat', systemIdentifier)) && publicIdentifier == null);
10.13950 + $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
10.13951 + }
10.13952 +
10.13953 + break;
10.13954 + case 2:
10.13955 + this$static.html4 = true;
10.13956 + this$static.tokenizer.html4 = true;
10.13957 + if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
10.13958 + $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
10.13959 + }
10.13960 + else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
10.13961 + $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
10.13962 + }
10.13963 + else {
10.13964 + if ($equals_0('-//W3C//DTD HTML 4.01//EN', publicIdentifier)) {
10.13965 + !$equals_0('http://www.w3.org/TR/html4/strict.dtd', systemIdentifier);
10.13966 + }
10.13967 + else {
10.13968 + }
10.13969 + $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
10.13970 + }
10.13971 +
10.13972 + break;
10.13973 + case 1:
10.13974 + this$static.html4 = true;
10.13975 + this$static.tokenizer.html4 = true;
10.13976 + if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
10.13977 + $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
10.13978 + }
10.13979 + else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
10.13980 + if ($equals_0('-//W3C//DTD HTML 4.01 Transitional//EN', publicIdentifier) && systemIdentifier != null) {
10.13981 + !$equals_0('http://www.w3.org/TR/html4/loose.dtd', systemIdentifier);
10.13982 + }
10.13983 + else {
10.13984 + }
10.13985 + $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
10.13986 + }
10.13987 + else {
10.13988 + $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
10.13989 + }
10.13990 +
10.13991 + break;
10.13992 + case 3:
10.13993 + this$static.html4 = $isHtml4Doctype(publicIdentifier);
10.13994 + if (this$static.html4) {
10.13995 + this$static.tokenizer.html4 = true;
10.13996 + }
10.13997 +
10.13998 + if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
10.13999 + $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
10.14000 + }
10.14001 + else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
10.14002 + if ($equals_0('-//W3C//DTD HTML 4.01 Transitional//EN', publicIdentifier)) {
10.14003 + !$equals_0('http://www.w3.org/TR/html4/loose.dtd', systemIdentifier);
10.14004 + }
10.14005 + else {
10.14006 + }
10.14007 + $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
10.14008 + }
10.14009 + else {
10.14010 + if ($equals_0('-//W3C//DTD HTML 4.01//EN', publicIdentifier)) {
10.14011 + !$equals_0('http://www.w3.org/TR/html4/strict.dtd', systemIdentifier);
10.14012 + }
10.14013 + else {
10.14014 + }
10.14015 + $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
10.14016 + }
10.14017 +
10.14018 + break;
10.14019 + case 4:
10.14020 + if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
10.14021 + $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
10.14022 + }
10.14023 + else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
10.14024 + $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
10.14025 + }
10.14026 + else {
10.14027 + $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
10.14028 + }
10.14029 +
10.14030 + }
10.14031 +
10.14032 + this$static.mode = 1;
10.14033 + return;
10.14034 + default:break doctypeloop;
10.14035 + }
10.14036 +
10.14037 + }
10.14038 + }
10.14039 + return;
10.14040 +}
10.14041 +
10.14042 +function $documentModeInternal(this$static, m){
10.14043 + this$static.quirks = m == ($clinit_78() , QUIRKS_MODE);
10.14044 +}
10.14045 +
10.14046 +function $endSelect(this$static){
10.14047 + var eltPos;
10.14048 + eltPos = $findLastInTableScope(this$static, 'select');
10.14049 + if (eltPos == 2147483647) {
10.14050 + return;
10.14051 + }
10.14052 + while (this$static.currentPtr >= eltPos) {
10.14053 + $pop(this$static);
10.14054 + }
10.14055 + $resetTheInsertionMode(this$static);
10.14056 +}
10.14057 +
10.14058 +function $endTag(this$static, elementName){
10.14059 + var eltPos, group, name, node;
10.14060 + this$static.needToDropLF = false;
10.14061 + endtagloop: for (;;) {
10.14062 + group = elementName.group;
10.14063 + name = elementName.name_0;
10.14064 + switch (this$static.mode) {
10.14065 + case 11:
10.14066 + switch (group) {
10.14067 + case 37:
10.14068 + eltPos = $findLastOrRoot(this$static, 37);
10.14069 + if (eltPos == 0) {
10.14070 + break endtagloop;
10.14071 + }
10.14072 +
10.14073 + $clearStackBackTo(this$static, eltPos);
10.14074 + $pop(this$static);
10.14075 + this$static.mode = 10;
10.14076 + break endtagloop;
10.14077 + case 34:
10.14078 + eltPos = $findLastOrRoot(this$static, 37);
10.14079 + if (eltPos == 0) {
10.14080 + break endtagloop;
10.14081 + }
10.14082 +
10.14083 + $clearStackBackTo(this$static, eltPos);
10.14084 + $pop(this$static);
10.14085 + this$static.mode = 10;
10.14086 + continue;
10.14087 + case 39:
10.14088 + if ($findLastInTableScope(this$static, name) == 2147483647) {
10.14089 + break endtagloop;
10.14090 + }
10.14091 +
10.14092 + eltPos = $findLastOrRoot(this$static, 37);
10.14093 + if (eltPos == 0) {
10.14094 + break endtagloop;
10.14095 + }
10.14096 +
10.14097 + $clearStackBackTo(this$static, eltPos);
10.14098 + $pop(this$static);
10.14099 + this$static.mode = 10;
10.14100 + continue;
10.14101 + break endtagloop;
10.14102 + }
10.14103 +
10.14104 + case 10:
10.14105 + switch (group) {
10.14106 + case 39:
10.14107 + eltPos = $findLastOrRoot_0(this$static, name);
10.14108 + if (eltPos == 0) {
10.14109 + break endtagloop;
10.14110 + }
10.14111 +
10.14112 + $clearStackBackTo(this$static, eltPos);
10.14113 + $pop(this$static);
10.14114 + this$static.mode = 7;
10.14115 + break endtagloop;
10.14116 + case 34:
10.14117 + eltPos = $findLastInTableScopeOrRootTbodyTheadTfoot(this$static);
10.14118 + if (eltPos == 0) {
10.14119 + break endtagloop;
10.14120 + }
10.14121 +
10.14122 + $clearStackBackTo(this$static, eltPos);
10.14123 + $pop(this$static);
10.14124 + this$static.mode = 7;
10.14125 + continue;
10.14126 + break endtagloop;
10.14127 + }
10.14128 +
10.14129 + case 7:
10.14130 + switch (group) {
10.14131 + case 34:
10.14132 + eltPos = $findLast(this$static, 'table');
10.14133 + if (eltPos == 2147483647) {
10.14134 + break endtagloop;
10.14135 + }
10.14136 +
10.14137 + while (this$static.currentPtr >= eltPos) {
10.14138 + $pop(this$static);
10.14139 + }
10.14140 +
10.14141 + $resetTheInsertionMode(this$static);
10.14142 + break endtagloop;
10.14143 + }
10.14144 +
10.14145 + case 8:
10.14146 + switch (group) {
10.14147 + case 6:
10.14148 + eltPos = $findLastInTableScope(this$static, 'caption');
10.14149 + if (eltPos == 2147483647) {
10.14150 + break endtagloop;
10.14151 + }
10.14152 +
10.14153 + $generateImpliedEndTags(this$static);
10.14154 + while (this$static.currentPtr >= eltPos) {
10.14155 + $pop(this$static);
10.14156 + }
10.14157 +
10.14158 + $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
10.14159 + this$static.mode = 7;
10.14160 + break endtagloop;
10.14161 + case 34:
10.14162 + eltPos = $findLastInTableScope(this$static, 'caption');
10.14163 + if (eltPos == 2147483647) {
10.14164 + break endtagloop;
10.14165 + }
10.14166 +
10.14167 + $generateImpliedEndTags(this$static);
10.14168 + while (this$static.currentPtr >= eltPos) {
10.14169 + $pop(this$static);
10.14170 + }
10.14171 +
10.14172 + $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
10.14173 + this$static.mode = 7;
10.14174 + continue;
10.14175 + break endtagloop;
10.14176 + }
10.14177 +
10.14178 + case 12:
10.14179 + switch (group) {
10.14180 + case 40:
10.14181 + eltPos = $findLastInTableScope(this$static, name);
10.14182 + if (eltPos == 2147483647) {
10.14183 + break endtagloop;
10.14184 + }
10.14185 +
10.14186 + $generateImpliedEndTags(this$static);
10.14187 + while (this$static.currentPtr >= eltPos) {
10.14188 + $pop(this$static);
10.14189 + }
10.14190 +
10.14191 + $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
10.14192 + this$static.mode = 11;
10.14193 + break endtagloop;
10.14194 + case 34:
10.14195 + case 39:
10.14196 + case 37:
10.14197 + if ($findLastInTableScope(this$static, name) == 2147483647) {
10.14198 + break endtagloop;
10.14199 + }
10.14200 +
10.14201 + $closeTheCell(this$static, $findLastInTableScopeTdTh(this$static));
10.14202 + continue;
10.14203 + break endtagloop;
10.14204 + }
10.14205 +
10.14206 + case 21:
10.14207 + case 6:
10.14208 + switch (group) {
10.14209 + case 3:
10.14210 + if (!(this$static.currentPtr >= 1 && this$static.stack[1].group == 3)) {
10.14211 + break endtagloop;
10.14212 + }
10.14213 +
10.14214 + this$static.mode = 15;
10.14215 + break endtagloop;
10.14216 + case 23:
10.14217 + if (!(this$static.currentPtr >= 1 && this$static.stack[1].group == 3)) {
10.14218 + break endtagloop;
10.14219 + }
10.14220 +
10.14221 + this$static.mode = 15;
10.14222 + continue;
10.14223 + case 50:
10.14224 + case 46:
10.14225 + case 44:
10.14226 + case 61:
10.14227 + case 51:
10.14228 + eltPos = $findLastInScope(this$static, name);
10.14229 + if (eltPos == 2147483647) {
10.14230 + }
10.14231 + else {
10.14232 + $generateImpliedEndTags(this$static);
10.14233 + while (this$static.currentPtr >= eltPos) {
10.14234 + $pop(this$static);
10.14235 + }
10.14236 + }
10.14237 +
10.14238 + break endtagloop;
10.14239 + case 9:
10.14240 + if (!this$static.formPointer) {
10.14241 + break endtagloop;
10.14242 + }
10.14243 +
10.14244 + this$static.formPointer = null;
10.14245 + eltPos = $findLastInScope(this$static, name);
10.14246 + if (eltPos == 2147483647) {
10.14247 + break endtagloop;
10.14248 + }
10.14249 +
10.14250 + $generateImpliedEndTags(this$static);
10.14251 + $removeFromStack(this$static, eltPos);
10.14252 + break endtagloop;
10.14253 + case 29:
10.14254 + eltPos = $findLastInScope(this$static, 'p');
10.14255 + if (eltPos == 2147483647) {
10.14256 + if (this$static.foreignFlag == 0) {
10.14257 + while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
10.14258 + $pop(this$static);
10.14259 + }
10.14260 + this$static.foreignFlag = 1;
10.14261 + }
10.14262 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, ($clinit_91() , EMPTY_ATTRIBUTES));
10.14263 + break endtagloop;
10.14264 + }
10.14265 +
10.14266 + $generateImpliedEndTagsExceptFor(this$static, 'p');
10.14267 + while (this$static.currentPtr >= eltPos) {
10.14268 + $pop(this$static);
10.14269 + }
10.14270 +
10.14271 + break endtagloop;
10.14272 + case 41:
10.14273 + case 15:
10.14274 + eltPos = $findLastInScope(this$static, name);
10.14275 + if (eltPos == 2147483647) {
10.14276 + }
10.14277 + else {
10.14278 + $generateImpliedEndTagsExceptFor(this$static, name);
10.14279 + while (this$static.currentPtr >= eltPos) {
10.14280 + $pop(this$static);
10.14281 + }
10.14282 + }
10.14283 +
10.14284 + break endtagloop;
10.14285 + case 42:
10.14286 + eltPos = $findLastInScopeHn(this$static);
10.14287 + if (eltPos == 2147483647) {
10.14288 + }
10.14289 + else {
10.14290 + $generateImpliedEndTags(this$static);
10.14291 + while (this$static.currentPtr >= eltPos) {
10.14292 + $pop(this$static);
10.14293 + }
10.14294 + }
10.14295 +
10.14296 + break endtagloop;
10.14297 + case 1:
10.14298 + case 45:
10.14299 + case 64:
10.14300 + case 24:
10.14301 + $adoptionAgencyEndTag(this$static, name);
10.14302 + break endtagloop;
10.14303 + case 5:
10.14304 + case 63:
10.14305 + case 43:
10.14306 + eltPos = $findLastInScope(this$static, name);
10.14307 + if (eltPos == 2147483647) {
10.14308 + }
10.14309 + else {
10.14310 + $generateImpliedEndTags(this$static);
10.14311 + while (this$static.currentPtr >= eltPos) {
10.14312 + $pop(this$static);
10.14313 + }
10.14314 + $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
10.14315 + }
10.14316 +
10.14317 + break endtagloop;
10.14318 + case 4:
10.14319 + if (this$static.foreignFlag == 0) {
10.14320 + while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
10.14321 + $pop(this$static);
10.14322 + }
10.14323 + this$static.foreignFlag = 1;
10.14324 + }
10.14325 +
10.14326 + $reconstructTheActiveFormattingElements(this$static);
10.14327 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, ($clinit_91() , EMPTY_ATTRIBUTES));
10.14328 + break endtagloop;
10.14329 + case 49:
10.14330 + case 55:
10.14331 + case 48:
10.14332 + case 12:
10.14333 + case 13:
10.14334 + case 65:
10.14335 + case 22:
10.14336 + case 14:
10.14337 + case 47:
10.14338 + case 60:
10.14339 + case 25:
10.14340 + case 32:
10.14341 + case 34:
10.14342 + case 35:
10.14343 + break endtagloop;
10.14344 + case 26:
10.14345 + default:if (name == this$static.stack[this$static.currentPtr].name_0) {
10.14346 + $pop(this$static);
10.14347 + break endtagloop;
10.14348 + }
10.14349 +
10.14350 + eltPos = this$static.currentPtr;
10.14351 + for (;;) {
10.14352 + node = this$static.stack[eltPos];
10.14353 + if (node.name_0 == name) {
10.14354 + $generateImpliedEndTags(this$static);
10.14355 + while (this$static.currentPtr >= eltPos) {
10.14356 + $pop(this$static);
10.14357 + }
10.14358 + break endtagloop;
10.14359 + }
10.14360 + else if (node.scoping || node.special) {
10.14361 + break endtagloop;
10.14362 + }
10.14363 + --eltPos;
10.14364 + }
10.14365 +
10.14366 + }
10.14367 +
10.14368 + case 9:
10.14369 + switch (group) {
10.14370 + case 8:
10.14371 + if (this$static.currentPtr == 0) {
10.14372 + break endtagloop;
10.14373 + }
10.14374 +
10.14375 + $pop(this$static);
10.14376 + this$static.mode = 7;
10.14377 + break endtagloop;
10.14378 + case 7:
10.14379 + break endtagloop;
10.14380 + default:if (this$static.currentPtr == 0) {
10.14381 + break endtagloop;
10.14382 + }
10.14383 +
10.14384 + $pop(this$static);
10.14385 + this$static.mode = 7;
10.14386 + continue;
10.14387 + }
10.14388 +
10.14389 + case 14:
10.14390 + switch (group) {
10.14391 + case 6:
10.14392 + case 34:
10.14393 + case 39:
10.14394 + case 37:
10.14395 + case 40:
10.14396 + if ($findLastInTableScope(this$static, name) != 2147483647) {
10.14397 + $endSelect(this$static);
10.14398 + continue;
10.14399 + }
10.14400 + else {
10.14401 + break endtagloop;
10.14402 + }
10.14403 +
10.14404 + }
10.14405 +
10.14406 + case 13:
10.14407 + switch (group) {
10.14408 + case 28:
10.14409 + if ('option' == this$static.stack[this$static.currentPtr].name_0) {
10.14410 + $pop(this$static);
10.14411 + break endtagloop;
10.14412 + }
10.14413 + else {
10.14414 + break endtagloop;
10.14415 + }
10.14416 +
10.14417 + case 27:
10.14418 + if ('option' == this$static.stack[this$static.currentPtr].name_0 && 'optgroup' == this$static.stack[this$static.currentPtr - 1].name_0) {
10.14419 + $pop(this$static);
10.14420 + }
10.14421 +
10.14422 + if ('optgroup' == this$static.stack[this$static.currentPtr].name_0) {
10.14423 + $pop(this$static);
10.14424 + }
10.14425 + else {
10.14426 + }
10.14427 +
10.14428 + break endtagloop;
10.14429 + case 32:
10.14430 + $endSelect(this$static);
10.14431 + break endtagloop;
10.14432 + default:break endtagloop;
10.14433 + }
10.14434 +
10.14435 + case 15:
10.14436 + switch (group) {
10.14437 + case 23:
10.14438 + if (this$static.fragment) {
10.14439 + break endtagloop;
10.14440 + }
10.14441 + else {
10.14442 + this$static.mode = 18;
10.14443 + break endtagloop;
10.14444 + }
10.14445 +
10.14446 + default:this$static.mode = 6;
10.14447 + continue;
10.14448 + }
10.14449 +
10.14450 + case 16:
10.14451 + switch (group) {
10.14452 + case 11:
10.14453 + if (this$static.currentPtr == 0) {
10.14454 + break endtagloop;
10.14455 + }
10.14456 +
10.14457 + $pop(this$static);
10.14458 + if (!this$static.fragment && 'frameset' != this$static.stack[this$static.currentPtr].name_0) {
10.14459 + this$static.mode = 17;
10.14460 + }
10.14461 +
10.14462 + break endtagloop;
10.14463 + default:break endtagloop;
10.14464 + }
10.14465 +
10.14466 + case 17:
10.14467 + switch (group) {
10.14468 + case 23:
10.14469 + this$static.mode = 19;
10.14470 + break endtagloop;
10.14471 + default:break endtagloop;
10.14472 + }
10.14473 +
10.14474 + case 0:
10.14475 + $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
10.14476 + this$static.mode = 1;
10.14477 + continue;
10.14478 + case 1:
10.14479 + $appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
10.14480 + this$static.mode = 2;
10.14481 + continue;
10.14482 + case 2:
10.14483 + switch (group) {
10.14484 + case 20:
10.14485 + case 4:
10.14486 + case 23:
10.14487 + case 3:
10.14488 + $appendToCurrentNodeAndPushHeadElement(this$static, ($clinit_91() , EMPTY_ATTRIBUTES));
10.14489 + this$static.mode = 3;
10.14490 + continue;
10.14491 + default:break endtagloop;
10.14492 + }
10.14493 +
10.14494 + case 3:
10.14495 + switch (group) {
10.14496 + case 20:
10.14497 + $pop(this$static);
10.14498 + this$static.mode = 5;
10.14499 + break endtagloop;
10.14500 + case 4:
10.14501 + case 23:
10.14502 + case 3:
10.14503 + $pop(this$static);
10.14504 + this$static.mode = 5;
10.14505 + continue;
10.14506 + default:break endtagloop;
10.14507 + }
10.14508 +
10.14509 + case 4:
10.14510 + switch (group) {
10.14511 + case 26:
10.14512 + $pop(this$static);
10.14513 + this$static.mode = 3;
10.14514 + break endtagloop;
10.14515 + case 4:
10.14516 + $pop(this$static);
10.14517 + this$static.mode = 3;
10.14518 + continue;
10.14519 + default:break endtagloop;
10.14520 + }
10.14521 +
10.14522 + case 5:
10.14523 + switch (group) {
10.14524 + case 23:
10.14525 + case 3:
10.14526 + case 4:
10.14527 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
10.14528 + this$static.mode = 21;
10.14529 + continue;
10.14530 + default:break endtagloop;
10.14531 + }
10.14532 +
10.14533 + case 18:
10.14534 + this$static.mode = 6;
10.14535 + continue;
10.14536 + case 19:
10.14537 + this$static.mode = 16;
10.14538 + continue;
10.14539 + case 20:
10.14540 + if (this$static.originalMode == 5) {
10.14541 + $pop(this$static);
10.14542 + }
10.14543 +
10.14544 + $pop(this$static);
10.14545 + this$static.mode = this$static.originalMode;
10.14546 + break endtagloop;
10.14547 + }
10.14548 + }
10.14549 + if (this$static.foreignFlag == 0 && !$hasForeignInScope(this$static)) {
10.14550 + this$static.foreignFlag = 1;
10.14551 + }
10.14552 +}
10.14553 +
10.14554 +function $endTokenization(this$static){
10.14555 + this$static.formPointer = null;
10.14556 + this$static.headPointer = null;
10.14557 + while (this$static.currentPtr > -1) {
10.14558 + --this$static.stack[this$static.currentPtr].refcount;
10.14559 + --this$static.currentPtr;
10.14560 + }
10.14561 + this$static.stack = null;
10.14562 + while (this$static.listPtr > -1) {
10.14563 + if (this$static.listOfActiveFormattingElements[this$static.listPtr]) {
10.14564 + --this$static.listOfActiveFormattingElements[this$static.listPtr].refcount;
10.14565 + }
10.14566 + --this$static.listPtr;
10.14567 + }
10.14568 + this$static.listOfActiveFormattingElements = null;
10.14569 + $clearImpl(this$static.idLocations);
10.14570 + this$static.charBuffer = null;
10.14571 +}
10.14572 +
10.14573 +function $eof_0(this$static){
10.14574 + var group, i;
10.14575 + $flushCharacters(this$static);
10.14576 + switch (this$static.foreignFlag) {
10.14577 + case 0:
10.14578 + while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
10.14579 + $popOnEof(this$static);
10.14580 + }
10.14581 +
10.14582 + this$static.foreignFlag = 1;
10.14583 + }
10.14584 + eofloop: for (;;) {
10.14585 + switch (this$static.mode) {
10.14586 + case 0:
10.14587 + $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
10.14588 + this$static.mode = 1;
10.14589 + continue;
10.14590 + case 1:
10.14591 + $appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
10.14592 + this$static.mode = 2;
10.14593 + continue;
10.14594 + case 2:
10.14595 + $appendToCurrentNodeAndPushHeadElement(this$static, ($clinit_91() , EMPTY_ATTRIBUTES));
10.14596 + this$static.mode = 3;
10.14597 + continue;
10.14598 + case 3:
10.14599 + while (this$static.currentPtr > 0) {
10.14600 + $popOnEof(this$static);
10.14601 + }
10.14602 +
10.14603 + this$static.mode = 5;
10.14604 + continue;
10.14605 + case 4:
10.14606 + while (this$static.currentPtr > 1) {
10.14607 + $popOnEof(this$static);
10.14608 + }
10.14609 +
10.14610 + this$static.mode = 3;
10.14611 + continue;
10.14612 + case 5:
10.14613 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
10.14614 + this$static.mode = 6;
10.14615 + continue;
10.14616 + case 9:
10.14617 + if (this$static.currentPtr == 0) {
10.14618 + break eofloop;
10.14619 + }
10.14620 + else {
10.14621 + $popOnEof(this$static);
10.14622 + this$static.mode = 7;
10.14623 + continue;
10.14624 + }
10.14625 +
10.14626 + case 21:
10.14627 + case 8:
10.14628 + case 12:
10.14629 + case 6:
10.14630 + openelementloop: for (i = this$static.currentPtr; i >= 0; --i) {
10.14631 + group = this$static.stack[i].group;
10.14632 + switch (group) {
10.14633 + case 41:
10.14634 + case 15:
10.14635 + case 29:
10.14636 + case 39:
10.14637 + case 40:
10.14638 + case 3:
10.14639 + case 23:
10.14640 + break;
10.14641 + default:break openelementloop;
10.14642 + }
10.14643 + }
10.14644 +
10.14645 + break eofloop;
10.14646 + case 20:
10.14647 + if (this$static.originalMode == 5) {
10.14648 + $popOnEof(this$static);
10.14649 + }
10.14650 +
10.14651 + $popOnEof(this$static);
10.14652 + this$static.mode = this$static.originalMode;
10.14653 + continue;
10.14654 + case 10:
10.14655 + case 11:
10.14656 + case 7:
10.14657 + case 13:
10.14658 + case 14:
10.14659 + case 16:
10.14660 + break eofloop;
10.14661 + case 15:
10.14662 + case 17:
10.14663 + case 18:
10.14664 + case 19:
10.14665 + default:if (this$static.currentPtr == 0) {
10.14666 + fromDouble((new Date()).getTime());
10.14667 + }
10.14668 +
10.14669 + break eofloop;
10.14670 + }
10.14671 + }
10.14672 + while (this$static.currentPtr > 0) {
10.14673 + $popOnEof(this$static);
10.14674 + }
10.14675 + if (!this$static.fragment) {
10.14676 + $popOnEof(this$static);
10.14677 + }
10.14678 +}
10.14679 +
10.14680 +function $fatal_0(this$static, e){
10.14681 + var spe;
10.14682 + spe = $SAXParseException_0(new SAXParseException(), e.detailMessage, this$static.tokenizer, e);
10.14683 + throw spe;
10.14684 +}
10.14685 +
10.14686 +function $fatal_1(this$static, s){
10.14687 + var spe;
10.14688 + spe = $SAXParseException(new SAXParseException(), s, this$static.tokenizer);
10.14689 + throw spe;
10.14690 +}
10.14691 +
10.14692 +function $findInListOfActiveFormattingElements(this$static, node){
10.14693 + var i;
10.14694 + for (i = this$static.listPtr; i >= 0; --i) {
10.14695 + if (node == this$static.listOfActiveFormattingElements[i]) {
10.14696 + return i;
10.14697 + }
10.14698 + }
10.14699 + return -1;
10.14700 +}
10.14701 +
10.14702 +function $findInListOfActiveFormattingElementsContainsBetweenEndAndLastMarker(this$static, name){
10.14703 + var i, node;
10.14704 + for (i = this$static.listPtr; i >= 0; --i) {
10.14705 + node = this$static.listOfActiveFormattingElements[i];
10.14706 + if (!node) {
10.14707 + return -1;
10.14708 + }
10.14709 + else if (node.name_0 == name) {
10.14710 + return i;
10.14711 + }
10.14712 + }
10.14713 + return -1;
10.14714 +}
10.14715 +
10.14716 +function $findLast(this$static, name){
10.14717 + var i;
10.14718 + for (i = this$static.currentPtr; i > 0; --i) {
10.14719 + if (this$static.stack[i].name_0 == name) {
10.14720 + return i;
10.14721 + }
10.14722 + }
10.14723 + return 2147483647;
10.14724 +}
10.14725 +
10.14726 +function $findLastInScope(this$static, name){
10.14727 + var i;
10.14728 + for (i = this$static.currentPtr; i > 0; --i) {
10.14729 + if (this$static.stack[i].name_0 == name) {
10.14730 + return i;
10.14731 + }
10.14732 + else if (this$static.stack[i].scoping) {
10.14733 + return 2147483647;
10.14734 + }
10.14735 + }
10.14736 + return 2147483647;
10.14737 +}
10.14738 +
10.14739 +function $findLastInScopeHn(this$static){
10.14740 + var i;
10.14741 + for (i = this$static.currentPtr; i > 0; --i) {
10.14742 + if (this$static.stack[i].group == 42) {
10.14743 + return i;
10.14744 + }
10.14745 + else if (this$static.stack[i].scoping) {
10.14746 + return 2147483647;
10.14747 + }
10.14748 + }
10.14749 + return 2147483647;
10.14750 +}
10.14751 +
10.14752 +function $findLastInTableScope(this$static, name){
10.14753 + var i;
10.14754 + for (i = this$static.currentPtr; i > 0; --i) {
10.14755 + if (this$static.stack[i].name_0 == name) {
10.14756 + return i;
10.14757 + }
10.14758 + else if (this$static.stack[i].name_0 == 'table') {
10.14759 + return 2147483647;
10.14760 + }
10.14761 + }
10.14762 + return 2147483647;
10.14763 +}
10.14764 +
10.14765 +function $findLastInTableScopeOrRootTbodyTheadTfoot(this$static){
10.14766 + var i;
10.14767 + for (i = this$static.currentPtr; i > 0; --i) {
10.14768 + if (this$static.stack[i].group == 39) {
10.14769 + return i;
10.14770 + }
10.14771 + }
10.14772 + return 0;
10.14773 +}
10.14774 +
10.14775 +function $findLastInTableScopeTdTh(this$static){
10.14776 + var i, name;
10.14777 + for (i = this$static.currentPtr; i > 0; --i) {
10.14778 + name = this$static.stack[i].name_0;
10.14779 + if ('td' == name || 'th' == name) {
10.14780 + return i;
10.14781 + }
10.14782 + else if (name == 'table') {
10.14783 + return 2147483647;
10.14784 + }
10.14785 + }
10.14786 + return 2147483647;
10.14787 +}
10.14788 +
10.14789 +function $findLastOrRoot_0(this$static, name){
10.14790 + var i;
10.14791 + for (i = this$static.currentPtr; i > 0; --i) {
10.14792 + if (this$static.stack[i].name_0 == name) {
10.14793 + return i;
10.14794 + }
10.14795 + }
10.14796 + return 0;
10.14797 +}
10.14798 +
10.14799 +function $findLastOrRoot(this$static, group){
10.14800 + var i;
10.14801 + for (i = this$static.currentPtr; i > 0; --i) {
10.14802 + if (this$static.stack[i].group == group) {
10.14803 + return i;
10.14804 + }
10.14805 + }
10.14806 + return 0;
10.14807 +}
10.14808 +
10.14809 +function $flushCharacters(this$static){
10.14810 + var current, elt, eltPos, node;
10.14811 + if (this$static.charBufferLen > 0) {
10.14812 + current = this$static.stack[this$static.currentPtr];
10.14813 + if (current.fosterParenting && $charBufferContainsNonWhitespace(this$static)) {
10.14814 + eltPos = $findLastOrRoot(this$static, 34);
10.14815 + node = this$static.stack[eltPos];
10.14816 + elt = node.node;
10.14817 + if (eltPos == 0) {
10.14818 + $appendCharacters(this$static, elt, valueOf_1(this$static.charBuffer, 0, this$static.charBufferLen));
10.14819 + this$static.charBufferLen = 0;
10.14820 + return;
10.14821 + }
10.14822 + $insertFosterParentedCharacters_0(this$static, this$static.charBuffer, 0, this$static.charBufferLen, elt, this$static.stack[eltPos - 1].node);
10.14823 + this$static.charBufferLen = 0;
10.14824 + return;
10.14825 + }
10.14826 + $appendCharacters(this$static, this$static.stack[this$static.currentPtr].node, valueOf_1(this$static.charBuffer, 0, this$static.charBufferLen));
10.14827 + this$static.charBufferLen = 0;
10.14828 + }
10.14829 +}
10.14830 +
10.14831 +function $generateImpliedEndTags(this$static){
10.14832 + for (;;) {
10.14833 + switch (this$static.stack[this$static.currentPtr].group) {
10.14834 + case 29:
10.14835 + case 15:
10.14836 + case 41:
10.14837 + case 28:
10.14838 + case 27:
10.14839 + case 53:
10.14840 + $pop(this$static);
10.14841 + continue;
10.14842 + default:return;
10.14843 + }
10.14844 + }
10.14845 +}
10.14846 +
10.14847 +function $generateImpliedEndTagsExceptFor(this$static, name){
10.14848 + var node;
10.14849 + for (;;) {
10.14850 + node = this$static.stack[this$static.currentPtr];
10.14851 + switch (node.group) {
10.14852 + case 29:
10.14853 + case 15:
10.14854 + case 41:
10.14855 + case 28:
10.14856 + case 27:
10.14857 + case 53:
10.14858 + if (node.name_0 == name) {
10.14859 + return;
10.14860 + }
10.14861 +
10.14862 + $pop(this$static);
10.14863 + continue;
10.14864 + default:return;
10.14865 + }
10.14866 + }
10.14867 +}
10.14868 +
10.14869 +function $hasForeignInScope(this$static){
10.14870 + var i;
10.14871 + for (i = this$static.currentPtr; i > 0; --i) {
10.14872 + if (this$static.stack[i].ns != 'http://www.w3.org/1999/xhtml') {
10.14873 + return true;
10.14874 + }
10.14875 + else if (this$static.stack[i].scoping) {
10.14876 + return false;
10.14877 + }
10.14878 + }
10.14879 + return false;
10.14880 +}
10.14881 +
10.14882 +function $implicitlyCloseP(this$static){
10.14883 + var eltPos;
10.14884 + eltPos = $findLastInScope(this$static, 'p');
10.14885 + if (eltPos == 2147483647) {
10.14886 + return;
10.14887 + }
10.14888 + $generateImpliedEndTagsExceptFor(this$static, 'p');
10.14889 + while (this$static.currentPtr >= eltPos) {
10.14890 + $pop(this$static);
10.14891 + }
10.14892 +}
10.14893 +
10.14894 +function $insertIntoFosterParent(this$static, child){
10.14895 + var elt, eltPos, node;
10.14896 + eltPos = $findLastOrRoot(this$static, 34);
10.14897 + node = this$static.stack[eltPos];
10.14898 + elt = node.node;
10.14899 + if (eltPos == 0) {
10.14900 + $appendElement(this$static, child, elt);
10.14901 + return;
10.14902 + }
10.14903 + $insertFosterParentedChild(this$static, child, elt, this$static.stack[eltPos - 1].node);
10.14904 +}
10.14905 +
10.14906 +function $insertIntoListOfActiveFormattingElements(this$static, formattingClone, bookmark){
10.14907 + ++formattingClone.refcount;
10.14908 + if (bookmark <= this$static.listPtr) {
10.14909 + arraycopy(this$static.listOfActiveFormattingElements, bookmark, this$static.listOfActiveFormattingElements, bookmark + 1, this$static.listPtr - bookmark + 1);
10.14910 + }
10.14911 + ++this$static.listPtr;
10.14912 + this$static.listOfActiveFormattingElements[bookmark] = formattingClone;
10.14913 +}
10.14914 +
10.14915 +function $insertIntoStack(this$static, node, position){
10.14916 + if (position == this$static.currentPtr + 1) {
10.14917 + $flushCharacters(this$static);
10.14918 + $push_0(this$static, node);
10.14919 + }
10.14920 + else {
10.14921 + arraycopy(this$static.stack, position, this$static.stack, position + 1, this$static.currentPtr - position + 1);
10.14922 + ++this$static.currentPtr;
10.14923 + this$static.stack[position] = node;
10.14924 + }
10.14925 +}
10.14926 +
10.14927 +function $isAlmostStandards(publicIdentifier, systemIdentifier){
10.14928 + if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd xhtml 1.0 transitional//en', publicIdentifier)) {
10.14929 + return true;
10.14930 + }
10.14931 + if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd xhtml 1.0 frameset//en', publicIdentifier)) {
10.14932 + return true;
10.14933 + }
10.14934 + if (systemIdentifier != null) {
10.14935 + if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd html 4.01 transitional//en', publicIdentifier)) {
10.14936 + return true;
10.14937 + }
10.14938 + if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd html 4.01 frameset//en', publicIdentifier)) {
10.14939 + return true;
10.14940 + }
10.14941 + }
10.14942 + return false;
10.14943 +}
10.14944 +
10.14945 +function $isHtml4Doctype(publicIdentifier){
10.14946 + if (publicIdentifier != null && binarySearch_0(HTML4_PUBLIC_IDS, publicIdentifier, ($clinit_61() , NATURAL)) > -1) {
10.14947 + return true;
10.14948 + }
10.14949 + return false;
10.14950 +}
10.14951 +
10.14952 +function $isInStack(this$static, node){
10.14953 + var i;
10.14954 + for (i = this$static.currentPtr; i >= 0; --i) {
10.14955 + if (this$static.stack[i] == node) {
10.14956 + return true;
10.14957 + }
10.14958 + }
10.14959 + return false;
10.14960 +}
10.14961 +
10.14962 +function $isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks){
10.14963 + var i;
10.14964 + if (forceQuirks) {
10.14965 + return true;
10.14966 + }
10.14967 + if (name != 'html') {
10.14968 + return true;
10.14969 + }
10.14970 + if (publicIdentifier != null) {
10.14971 + for (i = 0; i < QUIRKY_PUBLIC_IDS.length; ++i) {
10.14972 + if (lowerCaseLiteralIsPrefixOfIgnoreAsciiCaseString(QUIRKY_PUBLIC_IDS[i], publicIdentifier)) {
10.14973 + return true;
10.14974 + }
10.14975 + }
10.14976 + if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3o//dtd w3 html strict 3.0//en//', publicIdentifier) || lowerCaseLiteralEqualsIgnoreAsciiCaseString('-/w3c/dtd html 4.0 transitional/en', publicIdentifier) || lowerCaseLiteralEqualsIgnoreAsciiCaseString('html', publicIdentifier)) {
10.14977 + return true;
10.14978 + }
10.14979 + }
10.14980 + if (systemIdentifier == null) {
10.14981 + if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd html 4.01 transitional//en', publicIdentifier)) {
10.14982 + return true;
10.14983 + }
10.14984 + else if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd html 4.01 frameset//en', publicIdentifier)) {
10.14985 + return true;
10.14986 + }
10.14987 + }
10.14988 + else if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd', systemIdentifier)) {
10.14989 + return true;
10.14990 + }
10.14991 + return false;
10.14992 +}
10.14993 +
10.14994 +function $pop(this$static){
10.14995 + var node;
10.14996 + $flushCharacters(this$static);
10.14997 + node = this$static.stack[this$static.currentPtr];
10.14998 + --this$static.currentPtr;
10.14999 + $elementPopped(this$static, node.ns, node.popName, node.node);
10.15000 + --node.refcount;
10.15001 +}
10.15002 +
10.15003 +function $popOnEof(this$static){
10.15004 + var node;
10.15005 + $flushCharacters(this$static);
10.15006 + node = this$static.stack[this$static.currentPtr];
10.15007 + --this$static.currentPtr;
10.15008 + $elementPopped(this$static, node.ns, node.popName, node.node);
10.15009 + --node.refcount;
10.15010 +}
10.15011 +
10.15012 +function $push_0(this$static, node){
10.15013 + var newStack;
10.15014 + ++this$static.currentPtr;
10.15015 + if (this$static.currentPtr == this$static.stack.length) {
10.15016 + newStack = initDim(_3Lnu_validator_htmlparser_impl_StackNode_2_classLit, 51, 11, this$static.stack.length + 64, 0);
10.15017 + arraycopy(this$static.stack, 0, newStack, 0, this$static.stack.length);
10.15018 + this$static.stack = newStack;
10.15019 + }
10.15020 + this$static.stack[this$static.currentPtr] = node;
10.15021 +}
10.15022 +
10.15023 +function $pushHeadPointerOntoStack(this$static){
10.15024 + $flushCharacters(this$static);
10.15025 + if (!this$static.headPointer) {
10.15026 + $push_0(this$static, this$static.stack[this$static.currentPtr]);
10.15027 + }
10.15028 + else {
10.15029 + $push_0(this$static, $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , HEAD), this$static.headPointer));
10.15030 + }
10.15031 +}
10.15032 +
10.15033 +function $reconstructTheActiveFormattingElements(this$static){
10.15034 + var clone, currentNode, entry, entryClone, entryPos, mostRecent;
10.15035 + if (this$static.listPtr == -1) {
10.15036 + return;
10.15037 + }
10.15038 + mostRecent = this$static.listOfActiveFormattingElements[this$static.listPtr];
10.15039 + if (!mostRecent || $isInStack(this$static, mostRecent)) {
10.15040 + return;
10.15041 + }
10.15042 + entryPos = this$static.listPtr;
10.15043 + for (;;) {
10.15044 + --entryPos;
10.15045 + if (entryPos == -1) {
10.15046 + break;
10.15047 + }
10.15048 + if (!this$static.listOfActiveFormattingElements[entryPos]) {
10.15049 + break;
10.15050 + }
10.15051 + if ($isInStack(this$static, this$static.listOfActiveFormattingElements[entryPos])) {
10.15052 + break;
10.15053 + }
10.15054 + }
10.15055 + if (entryPos < this$static.listPtr) {
10.15056 + $flushCharacters(this$static);
10.15057 + }
10.15058 + while (entryPos < this$static.listPtr) {
10.15059 + ++entryPos;
10.15060 + entry = this$static.listOfActiveFormattingElements[entryPos];
10.15061 + clone = $createElement(this$static, 'http://www.w3.org/1999/xhtml', entry.name_0, $cloneAttributes(entry.attributes));
10.15062 + entryClone = $StackNode(new StackNode(), entry.group, entry.ns, entry.name_0, clone, entry.scoping, entry.special, entry.fosterParenting, entry.popName, entry.attributes);
10.15063 + entry.attributes = null;
10.15064 + currentNode = this$static.stack[this$static.currentPtr];
10.15065 + if (currentNode.fosterParenting) {
10.15066 + $insertIntoFosterParent(this$static, clone);
10.15067 + }
10.15068 + else {
10.15069 + $appendElement(this$static, clone, currentNode.node);
10.15070 + }
10.15071 + $push_0(this$static, entryClone);
10.15072 + this$static.listOfActiveFormattingElements[entryPos] = entryClone;
10.15073 + --entry.refcount;
10.15074 + ++entryClone.refcount;
10.15075 + }
10.15076 +}
10.15077 +
10.15078 +function $removeFromListOfActiveFormattingElements(this$static, pos){
10.15079 + --this$static.listOfActiveFormattingElements[pos].refcount;
10.15080 + if (pos == this$static.listPtr) {
10.15081 + --this$static.listPtr;
10.15082 + return;
10.15083 + }
10.15084 + arraycopy(this$static.listOfActiveFormattingElements, pos + 1, this$static.listOfActiveFormattingElements, pos, this$static.listPtr - pos);
10.15085 + --this$static.listPtr;
10.15086 +}
10.15087 +
10.15088 +function $removeFromStack(this$static, pos){
10.15089 + if (this$static.currentPtr == pos) {
10.15090 + $pop(this$static);
10.15091 + }
10.15092 + else {
10.15093 + --this$static.stack[pos].refcount;
10.15094 + arraycopy(this$static.stack, pos + 1, this$static.stack, pos, this$static.currentPtr - pos);
10.15095 + --this$static.currentPtr;
10.15096 + }
10.15097 +}
10.15098 +
10.15099 +function $removeFromStack_0(this$static, node){
10.15100 + var pos;
10.15101 + if (this$static.stack[this$static.currentPtr] == node) {
10.15102 + $pop(this$static);
10.15103 + }
10.15104 + else {
10.15105 + pos = this$static.currentPtr - 1;
10.15106 + while (pos >= 0 && this$static.stack[pos] != node) {
10.15107 + --pos;
10.15108 + }
10.15109 + if (pos == -1) {
10.15110 + return;
10.15111 + }
10.15112 + --node.refcount;
10.15113 + arraycopy(this$static.stack, pos + 1, this$static.stack, pos, this$static.currentPtr - pos);
10.15114 + --this$static.currentPtr;
10.15115 + }
10.15116 +}
10.15117 +
10.15118 +function $resetTheInsertionMode(this$static){
10.15119 + var i, name, node;
10.15120 + this$static.foreignFlag = 1;
10.15121 + for (i = this$static.currentPtr; i >= 0; --i) {
10.15122 + node = this$static.stack[i];
10.15123 + name = node.name_0;
10.15124 + if (i == 0) {
10.15125 + if (this$static.contextNamespace == 'http://www.w3.org/1999/xhtml' && (this$static.contextName == 'td' || this$static.contextName == 'th')) {
10.15126 + this$static.mode = 6;
10.15127 + return;
10.15128 + }
10.15129 + else {
10.15130 + name = this$static.contextName;
10.15131 + }
10.15132 + }
10.15133 + if ('select' == name) {
10.15134 + this$static.mode = 13;
10.15135 + return;
10.15136 + }
10.15137 + else if ('td' == name || 'th' == name) {
10.15138 + this$static.mode = 12;
10.15139 + return;
10.15140 + }
10.15141 + else if ('tr' == name) {
10.15142 + this$static.mode = 11;
10.15143 + return;
10.15144 + }
10.15145 + else if ('tbody' == name || 'thead' == name || 'tfoot' == name) {
10.15146 + this$static.mode = 10;
10.15147 + return;
10.15148 + }
10.15149 + else if ('caption' == name) {
10.15150 + this$static.mode = 8;
10.15151 + return;
10.15152 + }
10.15153 + else if ('colgroup' == name) {
10.15154 + this$static.mode = 9;
10.15155 + return;
10.15156 + }
10.15157 + else if ('table' == name) {
10.15158 + this$static.mode = 7;
10.15159 + return;
10.15160 + }
10.15161 + else if ('http://www.w3.org/1999/xhtml' != node.ns) {
10.15162 + this$static.foreignFlag = 0;
10.15163 + this$static.mode = 6;
10.15164 + return;
10.15165 + }
10.15166 + else if ('head' == name) {
10.15167 + this$static.mode = 6;
10.15168 + return;
10.15169 + }
10.15170 + else if ('body' == name) {
10.15171 + this$static.mode = 6;
10.15172 + return;
10.15173 + }
10.15174 + else if ('frameset' == name) {
10.15175 + this$static.mode = 16;
10.15176 + return;
10.15177 + }
10.15178 + else if ('html' == name) {
10.15179 + if (!this$static.headPointer) {
10.15180 + this$static.mode = 2;
10.15181 + }
10.15182 + else {
10.15183 + this$static.mode = 5;
10.15184 + }
10.15185 + return;
10.15186 + }
10.15187 + else if (i == 0) {
10.15188 + this$static.mode = 6;
10.15189 + return;
10.15190 + }
10.15191 + }
10.15192 +}
10.15193 +
10.15194 +function $setFragmentContext(this$static, context){
10.15195 + this$static.contextName = context;
10.15196 + this$static.contextNamespace = 'http://www.w3.org/1999/xhtml';
10.15197 + this$static.fragment = false;
10.15198 + this$static.quirks = false;
10.15199 +}
10.15200 +
10.15201 +function $startTag(this$static, elementName, attributes, selfClosing){
10.15202 + var actionIndex, activeA, activeAPos, attributeQName, currGroup, currNs, currentNode, eltPos, formAttrs, group, i, inputAttributes, name, needsPostProcessing, node, prompt, promptIndex, current, elt_53;
10.15203 + this$static.needToDropLF = false;
10.15204 + needsPostProcessing = false;
10.15205 + starttagloop: for (;;) {
10.15206 + group = elementName.group;
10.15207 + name = elementName.name_0;
10.15208 + switch (this$static.foreignFlag) {
10.15209 + case 0:
10.15210 + currentNode = this$static.stack[this$static.currentPtr];
10.15211 + currNs = currentNode.ns;
10.15212 + currGroup = currentNode.group;
10.15213 + if ('http://www.w3.org/1999/xhtml' == currNs || 'http://www.w3.org/1998/Math/MathML' == currNs && (56 != group && 57 == currGroup || 19 == group && 58 == currGroup) || 'http://www.w3.org/2000/svg' == currNs && (36 == currGroup || 59 == currGroup)) {
10.15214 + needsPostProcessing = true;
10.15215 + }
10.15216 + else {
10.15217 + switch (group) {
10.15218 + case 45:
10.15219 + case 50:
10.15220 + case 3:
10.15221 + case 4:
10.15222 + case 52:
10.15223 + case 41:
10.15224 + case 46:
10.15225 + case 48:
10.15226 + case 42:
10.15227 + case 20:
10.15228 + case 22:
10.15229 + case 15:
10.15230 + case 18:
10.15231 + case 24:
10.15232 + case 29:
10.15233 + case 44:
10.15234 + case 34:
10.15235 + while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
10.15236 + $pop(this$static);
10.15237 + }
10.15238 +
10.15239 + this$static.foreignFlag = 1;
10.15240 + continue starttagloop;
10.15241 + case 64:
10.15242 + if ($contains(attributes, ($clinit_87() , COLOR)) || $contains(attributes, FACE) || $contains(attributes, SIZE)) {
10.15243 + while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
10.15244 + $pop(this$static);
10.15245 + }
10.15246 + this$static.foreignFlag = 1;
10.15247 + continue starttagloop;
10.15248 + }
10.15249 +
10.15250 + default:if ('http://www.w3.org/2000/svg' == currNs) {
10.15251 + attributes.mode = 2;
10.15252 + if (selfClosing) {
10.15253 + $appendVoidElementToCurrentMayFosterCamelCase(this$static, currNs, elementName, attributes);
10.15254 + selfClosing = false;
10.15255 + }
10.15256 + else {
10.15257 + $appendToCurrentNodeAndPushElementMayFosterCamelCase(this$static, currNs, elementName, attributes);
10.15258 + }
10.15259 + attributes = null;
10.15260 + break starttagloop;
10.15261 + }
10.15262 + else {
10.15263 + attributes.mode = 1;
10.15264 + if (selfClosing) {
10.15265 + $appendVoidElementToCurrentMayFoster_0(this$static, currNs, elementName, attributes);
10.15266 + selfClosing = false;
10.15267 + }
10.15268 + else {
10.15269 + $appendToCurrentNodeAndPushElementMayFosterNoScoping(this$static, currNs, elementName, attributes);
10.15270 + }
10.15271 + attributes = null;
10.15272 + break starttagloop;
10.15273 + }
10.15274 +
10.15275 + }
10.15276 + }
10.15277 +
10.15278 + default:switch (this$static.mode) {
10.15279 + case 10:
10.15280 + switch (group) {
10.15281 + case 37:
10.15282 + $clearStackBackTo(this$static, $findLastInTableScopeOrRootTbodyTheadTfoot(this$static));
10.15283 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15284 + this$static.mode = 11;
10.15285 + attributes = null;
10.15286 + break starttagloop;
10.15287 + case 40:
10.15288 + $clearStackBackTo(this$static, $findLastInTableScopeOrRootTbodyTheadTfoot(this$static));
10.15289 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , TR), ($clinit_91() , EMPTY_ATTRIBUTES));
10.15290 + this$static.mode = 11;
10.15291 + continue;
10.15292 + case 6:
10.15293 + case 7:
10.15294 + case 8:
10.15295 + case 39:
10.15296 + eltPos = $findLastInTableScopeOrRootTbodyTheadTfoot(this$static);
10.15297 + if (eltPos == 0) {
10.15298 + break starttagloop;
10.15299 + }
10.15300 + else {
10.15301 + $clearStackBackTo(this$static, eltPos);
10.15302 + $pop(this$static);
10.15303 + this$static.mode = 7;
10.15304 + continue;
10.15305 + }
10.15306 +
10.15307 + }
10.15308 +
10.15309 + case 11:
10.15310 + switch (group) {
10.15311 + case 40:
10.15312 + $clearStackBackTo(this$static, $findLastOrRoot(this$static, 37));
10.15313 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15314 + this$static.mode = 12;
10.15315 + $append_1(this$static, null);
10.15316 + attributes = null;
10.15317 + break starttagloop;
10.15318 + case 6:
10.15319 + case 7:
10.15320 + case 8:
10.15321 + case 39:
10.15322 + case 37:
10.15323 + eltPos = $findLastOrRoot(this$static, 37);
10.15324 + if (eltPos == 0) {
10.15325 + break starttagloop;
10.15326 + }
10.15327 +
10.15328 + $clearStackBackTo(this$static, eltPos);
10.15329 + $pop(this$static);
10.15330 + this$static.mode = 10;
10.15331 + continue;
10.15332 + }
10.15333 +
10.15334 + case 7:
10.15335 + intableloop: for (;;) {
10.15336 + switch (group) {
10.15337 + case 6:
10.15338 + $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
10.15339 + $append_1(this$static, null);
10.15340 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15341 + this$static.mode = 8;
10.15342 + attributes = null;
10.15343 + break starttagloop;
10.15344 + case 8:
10.15345 + $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
10.15346 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15347 + this$static.mode = 9;
10.15348 + attributes = null;
10.15349 + break starttagloop;
10.15350 + case 7:
10.15351 + $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
10.15352 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , COLGROUP), ($clinit_91() , EMPTY_ATTRIBUTES));
10.15353 + this$static.mode = 9;
10.15354 + continue starttagloop;
10.15355 + case 39:
10.15356 + $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
10.15357 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15358 + this$static.mode = 10;
10.15359 + attributes = null;
10.15360 + break starttagloop;
10.15361 + case 37:
10.15362 + case 40:
10.15363 + $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
10.15364 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , TBODY), ($clinit_91() , EMPTY_ATTRIBUTES));
10.15365 + this$static.mode = 10;
10.15366 + continue starttagloop;
10.15367 + case 34:
10.15368 + eltPos = $findLastInTableScope(this$static, name);
10.15369 + if (eltPos == 2147483647) {
10.15370 + break starttagloop;
10.15371 + }
10.15372 +
10.15373 + $generateImpliedEndTags(this$static);
10.15374 + while (this$static.currentPtr >= eltPos) {
10.15375 + $pop(this$static);
10.15376 + }
10.15377 +
10.15378 + $resetTheInsertionMode(this$static);
10.15379 + continue starttagloop;
10.15380 + case 31:
10.15381 + case 33:
10.15382 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15383 + this$static.originalMode = this$static.mode;
10.15384 + this$static.mode = 20;
10.15385 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.15386 + attributes = null;
10.15387 + break starttagloop;
10.15388 + case 13:
10.15389 + if (!lowerCaseLiteralEqualsIgnoreAsciiCaseString('hidden', $getValue_0(attributes, ($clinit_87() , TYPE)))) {
10.15390 + break intableloop;
10.15391 + }
10.15392 +
10.15393 + $flushCharacters(this$static);
10.15394 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.15395 + elt_53 = $createElement_0(this$static, 'http://www.w3.org/1999/xhtml', name, attributes);
10.15396 + current = this$static.stack[this$static.currentPtr];
10.15397 + $appendElement(this$static, elt_53, current.node);
10.15398 + $elementPopped(this$static, 'http://www.w3.org/1999/xhtml', name, elt_53);
10.15399 + selfClosing = false;
10.15400 + attributes = null;
10.15401 + break starttagloop;
10.15402 + default:break intableloop;
10.15403 + }
10.15404 + }
10.15405 +
10.15406 + case 8:
10.15407 + switch (group) {
10.15408 + case 6:
10.15409 + case 7:
10.15410 + case 8:
10.15411 + case 39:
10.15412 + case 37:
10.15413 + case 40:
10.15414 + eltPos = $findLastInTableScope(this$static, 'caption');
10.15415 + if (eltPos == 2147483647) {
10.15416 + break starttagloop;
10.15417 + }
10.15418 +
10.15419 + $generateImpliedEndTags(this$static);
10.15420 + while (this$static.currentPtr >= eltPos) {
10.15421 + $pop(this$static);
10.15422 + }
10.15423 +
10.15424 + $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
10.15425 + this$static.mode = 7;
10.15426 + continue;
10.15427 + }
10.15428 +
10.15429 + case 12:
10.15430 + switch (group) {
10.15431 + case 6:
10.15432 + case 7:
10.15433 + case 8:
10.15434 + case 39:
10.15435 + case 37:
10.15436 + case 40:
10.15437 + eltPos = $findLastInTableScopeTdTh(this$static);
10.15438 + if (eltPos == 2147483647) {
10.15439 + break starttagloop;
10.15440 + }
10.15441 + else {
10.15442 + $closeTheCell(this$static, eltPos);
10.15443 + continue;
10.15444 + }
10.15445 +
10.15446 + }
10.15447 +
10.15448 + case 21:
10.15449 + switch (group) {
10.15450 + case 11:
10.15451 + if (this$static.mode == 21) {
10.15452 + if (this$static.currentPtr == 0 || this$static.stack[1].group != 3) {
10.15453 + break starttagloop;
10.15454 + }
10.15455 + else {
10.15456 + $detachFromParent(this$static, this$static.stack[1].node);
10.15457 + while (this$static.currentPtr > 0) {
10.15458 + $pop(this$static);
10.15459 + }
10.15460 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15461 + this$static.mode = 16;
10.15462 + attributes = null;
10.15463 + break starttagloop;
10.15464 + }
10.15465 + }
10.15466 + else {
10.15467 + break starttagloop;
10.15468 + }
10.15469 +
10.15470 + case 44:
10.15471 + case 15:
10.15472 + case 41:
10.15473 + case 5:
10.15474 + case 43:
10.15475 + case 63:
10.15476 + case 34:
10.15477 + case 49:
10.15478 + case 4:
10.15479 + case 48:
10.15480 + case 13:
10.15481 + case 65:
10.15482 + case 22:
10.15483 + case 35:
10.15484 + case 38:
10.15485 + case 47:
10.15486 + case 32:
10.15487 + if (this$static.mode == 21) {
10.15488 + this$static.mode = 6;
10.15489 + }
10.15490 +
10.15491 + }
10.15492 +
10.15493 + case 6:
10.15494 + inbodyloop: for (;;) {
10.15495 + switch (group) {
10.15496 + case 23:
10.15497 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.15498 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.15499 + attributes = null;
10.15500 + break starttagloop;
10.15501 + case 2:
10.15502 + case 16:
10.15503 + case 18:
10.15504 + case 33:
10.15505 + case 31:
10.15506 + case 36:
10.15507 + case 54:
10.15508 + break inbodyloop;
10.15509 + case 3:
10.15510 + $addAttributesToBody(this$static, attributes);
10.15511 + attributes = null;
10.15512 + break starttagloop;
10.15513 + case 29:
10.15514 + case 50:
10.15515 + case 46:
10.15516 + case 51:
10.15517 + $implicitlyCloseP(this$static);
10.15518 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15519 + attributes = null;
10.15520 + break starttagloop;
10.15521 + case 42:
10.15522 + $implicitlyCloseP(this$static);
10.15523 + if (this$static.stack[this$static.currentPtr].group == 42) {
10.15524 + $pop(this$static);
10.15525 + }
10.15526 +
10.15527 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15528 + attributes = null;
10.15529 + break starttagloop;
10.15530 + case 61:
10.15531 + $implicitlyCloseP(this$static);
10.15532 + $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15533 + attributes = null;
10.15534 + break starttagloop;
10.15535 + case 44:
10.15536 + $implicitlyCloseP(this$static);
10.15537 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15538 + this$static.needToDropLF = true;
10.15539 + attributes = null;
10.15540 + break starttagloop;
10.15541 + case 9:
10.15542 + if (this$static.formPointer) {
10.15543 + break starttagloop;
10.15544 + }
10.15545 + else {
10.15546 + $implicitlyCloseP(this$static);
10.15547 + $appendToCurrentNodeAndPushFormElementMayFoster(this$static, attributes);
10.15548 + attributes = null;
10.15549 + break starttagloop;
10.15550 + }
10.15551 +
10.15552 + case 15:
10.15553 + case 41:
10.15554 + eltPos = this$static.currentPtr;
10.15555 + for (;;) {
10.15556 + node = this$static.stack[eltPos];
10.15557 + if (node.group == group) {
10.15558 + $generateImpliedEndTagsExceptFor(this$static, node.name_0);
10.15559 + while (this$static.currentPtr >= eltPos) {
10.15560 + $pop(this$static);
10.15561 + }
10.15562 + break;
10.15563 + }
10.15564 + else if (node.scoping || node.special && node.name_0 != 'p' && node.name_0 != 'address' && node.name_0 != 'div') {
10.15565 + break;
10.15566 + }
10.15567 + --eltPos;
10.15568 + }
10.15569 +
10.15570 + $implicitlyCloseP(this$static);
10.15571 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15572 + attributes = null;
10.15573 + break starttagloop;
10.15574 + case 30:
10.15575 + $implicitlyCloseP(this$static);
10.15576 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15577 + $setContentModelFlag_0(this$static.tokenizer, 3, elementName);
10.15578 + attributes = null;
10.15579 + break starttagloop;
10.15580 + case 1:
10.15581 + activeAPos = $findInListOfActiveFormattingElementsContainsBetweenEndAndLastMarker(this$static, 'a');
10.15582 + if (activeAPos != -1) {
10.15583 + activeA = this$static.listOfActiveFormattingElements[activeAPos];
10.15584 + ++activeA.refcount;
10.15585 + $adoptionAgencyEndTag(this$static, 'a');
10.15586 + $removeFromStack_0(this$static, activeA);
10.15587 + activeAPos = $findInListOfActiveFormattingElements(this$static, activeA);
10.15588 + if (activeAPos != -1) {
10.15589 + $removeFromListOfActiveFormattingElements(this$static, activeAPos);
10.15590 + }
10.15591 + --activeA.refcount;
10.15592 + }
10.15593 +
10.15594 + $reconstructTheActiveFormattingElements(this$static);
10.15595 + $appendToCurrentNodeAndPushFormattingElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15596 + attributes = null;
10.15597 + break starttagloop;
10.15598 + case 45:
10.15599 + case 64:
10.15600 + $reconstructTheActiveFormattingElements(this$static);
10.15601 + $appendToCurrentNodeAndPushFormattingElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15602 + attributes = null;
10.15603 + break starttagloop;
10.15604 + case 24:
10.15605 + $reconstructTheActiveFormattingElements(this$static);
10.15606 + if (2147483647 != $findLastInScope(this$static, 'nobr')) {
10.15607 + $adoptionAgencyEndTag(this$static, 'nobr');
10.15608 + }
10.15609 +
10.15610 + $appendToCurrentNodeAndPushFormattingElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15611 + attributes = null;
10.15612 + break starttagloop;
10.15613 + case 5:
10.15614 + eltPos = $findLastInScope(this$static, name);
10.15615 + if (eltPos != 2147483647) {
10.15616 + $generateImpliedEndTags(this$static);
10.15617 + while (this$static.currentPtr >= eltPos) {
10.15618 + $pop(this$static);
10.15619 + }
10.15620 + $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
10.15621 + continue starttagloop;
10.15622 + }
10.15623 + else {
10.15624 + $reconstructTheActiveFormattingElements(this$static);
10.15625 + $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15626 + $append_1(this$static, null);
10.15627 + attributes = null;
10.15628 + break starttagloop;
10.15629 + }
10.15630 +
10.15631 + case 63:
10.15632 + $reconstructTheActiveFormattingElements(this$static);
10.15633 + $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15634 + $append_1(this$static, null);
10.15635 + attributes = null;
10.15636 + break starttagloop;
10.15637 + case 43:
10.15638 + $reconstructTheActiveFormattingElements(this$static);
10.15639 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15640 + $append_1(this$static, null);
10.15641 + attributes = null;
10.15642 + break starttagloop;
10.15643 + case 38:
10.15644 + $reconstructTheActiveFormattingElements(this$static);
10.15645 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15646 + this$static.originalMode = this$static.mode;
10.15647 + this$static.mode = 20;
10.15648 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.15649 + attributes = null;
10.15650 + break starttagloop;
10.15651 + case 34:
10.15652 + if (!this$static.quirks) {
10.15653 + $implicitlyCloseP(this$static);
10.15654 + }
10.15655 +
10.15656 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15657 + this$static.mode = 7;
10.15658 + attributes = null;
10.15659 + break starttagloop;
10.15660 + case 4:
10.15661 + case 48:
10.15662 + case 49:
10.15663 + $reconstructTheActiveFormattingElements(this$static);
10.15664 + case 55:
10.15665 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15666 + selfClosing = false;
10.15667 + attributes = null;
10.15668 + break starttagloop;
10.15669 + case 22:
10.15670 + $implicitlyCloseP(this$static);
10.15671 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15672 + selfClosing = false;
10.15673 + attributes = null;
10.15674 + break starttagloop;
10.15675 + case 12:
10.15676 + elementName = ($clinit_89() , IMG);
10.15677 + continue starttagloop;
10.15678 + case 65:
10.15679 + case 13:
10.15680 + $reconstructTheActiveFormattingElements(this$static);
10.15681 + $appendVoidElementToCurrentMayFoster(this$static, 'http://www.w3.org/1999/xhtml', name, attributes);
10.15682 + selfClosing = false;
10.15683 + attributes = null;
10.15684 + break starttagloop;
10.15685 + case 14:
10.15686 + if (this$static.formPointer) {
10.15687 + break starttagloop;
10.15688 + }
10.15689 +
10.15690 + $implicitlyCloseP(this$static);
10.15691 + formAttrs = $HtmlAttributes(new HtmlAttributes(), 0);
10.15692 + actionIndex = $getIndex(attributes, ($clinit_87() , ACTION));
10.15693 + if (actionIndex > -1) {
10.15694 + $addAttribute(formAttrs, ACTION, $getValue(attributes, actionIndex), ($clinit_80() , ALLOW));
10.15695 + }
10.15696 +
10.15697 + $appendToCurrentNodeAndPushFormElementMayFoster(this$static, formAttrs);
10.15698 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , HR), ($clinit_91() , EMPTY_ATTRIBUTES));
10.15699 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', P, EMPTY_ATTRIBUTES);
10.15700 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', LABEL_0, EMPTY_ATTRIBUTES);
10.15701 + promptIndex = $getIndex(attributes, PROMPT);
10.15702 + if (promptIndex > -1) {
10.15703 + prompt = $toCharArray($getValue(attributes, promptIndex));
10.15704 + $appendCharacters(this$static, this$static.stack[this$static.currentPtr].node, valueOf_1(prompt, 0, prompt.length));
10.15705 + }
10.15706 + else {
10.15707 + $appendCharacters(this$static, this$static.stack[this$static.currentPtr].node, valueOf_1(ISINDEX_PROMPT, 0, ISINDEX_PROMPT.length));
10.15708 + }
10.15709 +
10.15710 + inputAttributes = $HtmlAttributes(new HtmlAttributes(), 0);
10.15711 + $addAttribute(inputAttributes, NAME, 'isindex', ($clinit_80() , ALLOW));
10.15712 + for (i = 0; i < attributes.length_0; ++i) {
10.15713 + attributeQName = $getAttributeName(attributes, i);
10.15714 + if (NAME == attributeQName || PROMPT == attributeQName) {
10.15715 + }
10.15716 + else if (ACTION != attributeQName) {
10.15717 + $addAttribute(inputAttributes, attributeQName, $getValue(attributes, i), ALLOW);
10.15718 + }
10.15719 + }
10.15720 +
10.15721 + $clearWithoutReleasingContents(attributes);
10.15722 + $appendVoidElementToCurrentMayFoster(this$static, 'http://www.w3.org/1999/xhtml', 'input', inputAttributes);
10.15723 + $pop(this$static);
10.15724 + $pop(this$static);
10.15725 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', HR, EMPTY_ATTRIBUTES);
10.15726 + $pop(this$static);
10.15727 + selfClosing = false;
10.15728 + attributes = null;
10.15729 + break starttagloop;
10.15730 + case 35:
10.15731 + $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15732 + $setContentModelFlag_0(this$static.tokenizer, 1, elementName);
10.15733 + this$static.originalMode = this$static.mode;
10.15734 + this$static.mode = 20;
10.15735 + this$static.needToDropLF = true;
10.15736 + attributes = null;
10.15737 + break starttagloop;
10.15738 + case 26:
10.15739 + {
10.15740 + $reconstructTheActiveFormattingElements(this$static);
10.15741 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15742 + attributes = null;
10.15743 + break starttagloop;
10.15744 + }
10.15745 +
10.15746 + case 25:
10.15747 + case 47:
10.15748 + case 60:
10.15749 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15750 + this$static.originalMode = this$static.mode;
10.15751 + this$static.mode = 20;
10.15752 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.15753 + attributes = null;
10.15754 + break starttagloop;
10.15755 + case 32:
10.15756 + $reconstructTheActiveFormattingElements(this$static);
10.15757 + $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15758 + switch (this$static.mode) {
10.15759 + case 7:
10.15760 + case 8:
10.15761 + case 9:
10.15762 + case 10:
10.15763 + case 11:
10.15764 + case 12:
10.15765 + this$static.mode = 14;
10.15766 + break;
10.15767 + default:this$static.mode = 13;
10.15768 + }
10.15769 +
10.15770 + attributes = null;
10.15771 + break starttagloop;
10.15772 + case 27:
10.15773 + case 28:
10.15774 + if ($findLastInScope(this$static, 'option') != 2147483647) {
10.15775 + optionendtagloop: for (;;) {
10.15776 + if ('option' == this$static.stack[this$static.currentPtr].name_0) {
10.15777 + $pop(this$static);
10.15778 + break optionendtagloop;
10.15779 + }
10.15780 + eltPos = this$static.currentPtr;
10.15781 + for (;;) {
10.15782 + if (this$static.stack[eltPos].name_0 == 'option') {
10.15783 + $generateImpliedEndTags(this$static);
10.15784 + while (this$static.currentPtr >= eltPos) {
10.15785 + $pop(this$static);
10.15786 + }
10.15787 + break optionendtagloop;
10.15788 + }
10.15789 + --eltPos;
10.15790 + }
10.15791 + }
10.15792 + }
10.15793 +
10.15794 + $reconstructTheActiveFormattingElements(this$static);
10.15795 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15796 + attributes = null;
10.15797 + break starttagloop;
10.15798 + case 53:
10.15799 + eltPos = $findLastInScope(this$static, 'ruby');
10.15800 + if (eltPos != 2147483647) {
10.15801 + $generateImpliedEndTags(this$static);
10.15802 + }
10.15803 +
10.15804 + if (eltPos != this$static.currentPtr) {
10.15805 + while (this$static.currentPtr > eltPos) {
10.15806 + $pop(this$static);
10.15807 + }
10.15808 + }
10.15809 +
10.15810 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15811 + attributes = null;
10.15812 + break starttagloop;
10.15813 + case 17:
10.15814 + $reconstructTheActiveFormattingElements(this$static);
10.15815 + attributes.mode = 1;
10.15816 + if (selfClosing) {
10.15817 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1998/Math/MathML', elementName, attributes);
10.15818 + selfClosing = false;
10.15819 + }
10.15820 + else {
10.15821 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1998/Math/MathML', elementName, attributes);
10.15822 + this$static.foreignFlag = 0;
10.15823 + }
10.15824 +
10.15825 + attributes = null;
10.15826 + break starttagloop;
10.15827 + case 19:
10.15828 + $reconstructTheActiveFormattingElements(this$static);
10.15829 + attributes.mode = 2;
10.15830 + if (selfClosing) {
10.15831 + $appendVoidElementToCurrentMayFosterCamelCase(this$static, 'http://www.w3.org/2000/svg', elementName, attributes);
10.15832 + selfClosing = false;
10.15833 + }
10.15834 + else {
10.15835 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/2000/svg', elementName, attributes);
10.15836 + this$static.foreignFlag = 0;
10.15837 + }
10.15838 +
10.15839 + attributes = null;
10.15840 + break starttagloop;
10.15841 + case 6:
10.15842 + case 7:
10.15843 + case 8:
10.15844 + case 39:
10.15845 + case 37:
10.15846 + case 40:
10.15847 + case 10:
10.15848 + case 11:
10.15849 + case 20:
10.15850 + break starttagloop;
10.15851 + case 62:
10.15852 + $reconstructTheActiveFormattingElements(this$static);
10.15853 + $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15854 + attributes = null;
10.15855 + break starttagloop;
10.15856 + default:$reconstructTheActiveFormattingElements(this$static);
10.15857 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15858 + attributes = null;
10.15859 + break starttagloop;
10.15860 + }
10.15861 + }
10.15862 +
10.15863 + case 3:
10.15864 + inheadloop: for (;;) {
10.15865 + switch (group) {
10.15866 + case 23:
10.15867 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.15868 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.15869 + attributes = null;
10.15870 + break starttagloop;
10.15871 + case 2:
10.15872 + case 54:
10.15873 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15874 + selfClosing = false;
10.15875 + attributes = null;
10.15876 + break starttagloop;
10.15877 + case 18:
10.15878 + case 16:
10.15879 + break inheadloop;
10.15880 + case 36:
10.15881 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15882 + this$static.originalMode = this$static.mode;
10.15883 + this$static.mode = 20;
10.15884 + $setContentModelFlag_0(this$static.tokenizer, 1, elementName);
10.15885 + attributes = null;
10.15886 + break starttagloop;
10.15887 + case 26:
10.15888 + {
10.15889 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15890 + this$static.mode = 4;
10.15891 + }
10.15892 +
10.15893 + attributes = null;
10.15894 + break starttagloop;
10.15895 + case 31:
10.15896 + case 33:
10.15897 + case 25:
10.15898 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15899 + this$static.originalMode = this$static.mode;
10.15900 + this$static.mode = 20;
10.15901 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.15902 + attributes = null;
10.15903 + break starttagloop;
10.15904 + case 20:
10.15905 + break starttagloop;
10.15906 + default:$pop(this$static);
10.15907 + this$static.mode = 5;
10.15908 + continue starttagloop;
10.15909 + }
10.15910 + }
10.15911 +
10.15912 + case 4:
10.15913 + switch (group) {
10.15914 + case 23:
10.15915 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.15916 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.15917 + attributes = null;
10.15918 + break starttagloop;
10.15919 + case 16:
10.15920 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15921 + selfClosing = false;
10.15922 + attributes = null;
10.15923 + break starttagloop;
10.15924 + case 18:
10.15925 + $checkMetaCharset(this$static, attributes);
10.15926 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15927 + selfClosing = false;
10.15928 + attributes = null;
10.15929 + break starttagloop;
10.15930 + case 33:
10.15931 + case 25:
10.15932 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15933 + this$static.originalMode = this$static.mode;
10.15934 + this$static.mode = 20;
10.15935 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.15936 + attributes = null;
10.15937 + break starttagloop;
10.15938 + case 20:
10.15939 + break starttagloop;
10.15940 + case 26:
10.15941 + break starttagloop;
10.15942 + default:$pop(this$static);
10.15943 + this$static.mode = 3;
10.15944 + continue;
10.15945 + }
10.15946 +
10.15947 + case 9:
10.15948 + switch (group) {
10.15949 + case 23:
10.15950 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.15951 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.15952 + attributes = null;
10.15953 + break starttagloop;
10.15954 + case 7:
10.15955 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15956 + selfClosing = false;
10.15957 + attributes = null;
10.15958 + break starttagloop;
10.15959 + default:if (this$static.currentPtr == 0) {
10.15960 + break starttagloop;
10.15961 + }
10.15962 +
10.15963 + $pop(this$static);
10.15964 + this$static.mode = 7;
10.15965 + continue;
10.15966 + }
10.15967 +
10.15968 + case 14:
10.15969 + switch (group) {
10.15970 + case 6:
10.15971 + case 39:
10.15972 + case 37:
10.15973 + case 40:
10.15974 + case 34:
10.15975 + $endSelect(this$static);
10.15976 + continue;
10.15977 + }
10.15978 +
10.15979 + case 13:
10.15980 + switch (group) {
10.15981 + case 23:
10.15982 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.15983 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.15984 + attributes = null;
10.15985 + break starttagloop;
10.15986 + case 28:
10.15987 + if ('option' == this$static.stack[this$static.currentPtr].name_0) {
10.15988 + $pop(this$static);
10.15989 + }
10.15990 +
10.15991 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.15992 + attributes = null;
10.15993 + break starttagloop;
10.15994 + case 27:
10.15995 + if ('option' == this$static.stack[this$static.currentPtr].name_0) {
10.15996 + $pop(this$static);
10.15997 + }
10.15998 +
10.15999 + if ('optgroup' == this$static.stack[this$static.currentPtr].name_0) {
10.16000 + $pop(this$static);
10.16001 + }
10.16002 +
10.16003 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16004 + attributes = null;
10.16005 + break starttagloop;
10.16006 + case 32:
10.16007 + eltPos = $findLastInTableScope(this$static, name);
10.16008 + if (eltPos == 2147483647) {
10.16009 + break starttagloop;
10.16010 + }
10.16011 + else {
10.16012 + while (this$static.currentPtr >= eltPos) {
10.16013 + $pop(this$static);
10.16014 + }
10.16015 + $resetTheInsertionMode(this$static);
10.16016 + break starttagloop;
10.16017 + }
10.16018 +
10.16019 + case 13:
10.16020 + case 35:
10.16021 + $endSelect(this$static);
10.16022 + continue;
10.16023 + case 31:
10.16024 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16025 + this$static.originalMode = this$static.mode;
10.16026 + this$static.mode = 20;
10.16027 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.16028 + attributes = null;
10.16029 + break starttagloop;
10.16030 + default:break starttagloop;
10.16031 + }
10.16032 +
10.16033 + case 15:
10.16034 + switch (group) {
10.16035 + case 23:
10.16036 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.16037 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.16038 + attributes = null;
10.16039 + break starttagloop;
10.16040 + default:this$static.mode = 6;
10.16041 + continue;
10.16042 + }
10.16043 +
10.16044 + case 16:
10.16045 + switch (group) {
10.16046 + case 11:
10.16047 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16048 + attributes = null;
10.16049 + break starttagloop;
10.16050 + case 10:
10.16051 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16052 + selfClosing = false;
10.16053 + attributes = null;
10.16054 + break starttagloop;
10.16055 + }
10.16056 +
10.16057 + case 17:
10.16058 + switch (group) {
10.16059 + case 23:
10.16060 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.16061 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.16062 + attributes = null;
10.16063 + break starttagloop;
10.16064 + case 25:
10.16065 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16066 + this$static.originalMode = this$static.mode;
10.16067 + this$static.mode = 20;
10.16068 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.16069 + attributes = null;
10.16070 + break starttagloop;
10.16071 + default:break starttagloop;
10.16072 + }
10.16073 +
10.16074 + case 0:
10.16075 + $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
10.16076 + this$static.mode = 1;
10.16077 + continue;
10.16078 + case 1:
10.16079 + switch (group) {
10.16080 + case 23:
10.16081 + if (attributes == ($clinit_91() , EMPTY_ATTRIBUTES)) {
10.16082 + $appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
10.16083 + }
10.16084 + else {
10.16085 + $appendHtmlElementToDocumentAndPush(this$static, attributes);
10.16086 + }
10.16087 +
10.16088 + this$static.mode = 2;
10.16089 + attributes = null;
10.16090 + break starttagloop;
10.16091 + default:$appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
10.16092 + this$static.mode = 2;
10.16093 + continue;
10.16094 + }
10.16095 +
10.16096 + case 2:
10.16097 + switch (group) {
10.16098 + case 23:
10.16099 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.16100 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.16101 + attributes = null;
10.16102 + break starttagloop;
10.16103 + case 20:
10.16104 + $appendToCurrentNodeAndPushHeadElement(this$static, attributes);
10.16105 + this$static.mode = 3;
10.16106 + attributes = null;
10.16107 + break starttagloop;
10.16108 + default:$appendToCurrentNodeAndPushHeadElement(this$static, ($clinit_91() , EMPTY_ATTRIBUTES));
10.16109 + this$static.mode = 3;
10.16110 + continue;
10.16111 + }
10.16112 +
10.16113 + case 5:
10.16114 + switch (group) {
10.16115 + case 23:
10.16116 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.16117 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.16118 + attributes = null;
10.16119 + break starttagloop;
10.16120 + case 3:
10.16121 + if (attributes.length_0 == 0) {
10.16122 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
10.16123 + }
10.16124 + else {
10.16125 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), attributes);
10.16126 + }
10.16127 +
10.16128 + this$static.mode = 21;
10.16129 + attributes = null;
10.16130 + break starttagloop;
10.16131 + case 11:
10.16132 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16133 + this$static.mode = 16;
10.16134 + attributes = null;
10.16135 + break starttagloop;
10.16136 + case 2:
10.16137 + $pushHeadPointerOntoStack(this$static);
10.16138 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16139 + selfClosing = false;
10.16140 + $pop(this$static);
10.16141 + attributes = null;
10.16142 + break starttagloop;
10.16143 + case 16:
10.16144 + $pushHeadPointerOntoStack(this$static);
10.16145 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16146 + selfClosing = false;
10.16147 + $pop(this$static);
10.16148 + attributes = null;
10.16149 + break starttagloop;
10.16150 + case 18:
10.16151 + $checkMetaCharset(this$static, attributes);
10.16152 + $pushHeadPointerOntoStack(this$static);
10.16153 + $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16154 + selfClosing = false;
10.16155 + $pop(this$static);
10.16156 + attributes = null;
10.16157 + break starttagloop;
10.16158 + case 31:
10.16159 + $pushHeadPointerOntoStack(this$static);
10.16160 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16161 + this$static.originalMode = this$static.mode;
10.16162 + this$static.mode = 20;
10.16163 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.16164 + attributes = null;
10.16165 + break starttagloop;
10.16166 + case 33:
10.16167 + case 25:
10.16168 + $pushHeadPointerOntoStack(this$static);
10.16169 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16170 + this$static.originalMode = this$static.mode;
10.16171 + this$static.mode = 20;
10.16172 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.16173 + attributes = null;
10.16174 + break starttagloop;
10.16175 + case 36:
10.16176 + $pushHeadPointerOntoStack(this$static);
10.16177 + $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16178 + this$static.originalMode = this$static.mode;
10.16179 + this$static.mode = 20;
10.16180 + $setContentModelFlag_0(this$static.tokenizer, 1, elementName);
10.16181 + attributes = null;
10.16182 + break starttagloop;
10.16183 + case 20:
10.16184 + break starttagloop;
10.16185 + default:$appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
10.16186 + this$static.mode = 21;
10.16187 + continue;
10.16188 + }
10.16189 +
10.16190 + case 18:
10.16191 + switch (group) {
10.16192 + case 23:
10.16193 + $processNonNcNames(attributes, this$static, this$static.namePolicy);
10.16194 + $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
10.16195 + attributes = null;
10.16196 + break starttagloop;
10.16197 + default:this$static.mode = 6;
10.16198 + continue;
10.16199 + }
10.16200 +
10.16201 + case 19:
10.16202 + switch (group) {
10.16203 + case 25:
10.16204 + $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
10.16205 + this$static.originalMode = this$static.mode;
10.16206 + this$static.mode = 20;
10.16207 + $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
10.16208 + attributes = null;
10.16209 + break starttagloop;
10.16210 + default:break starttagloop;
10.16211 + }
10.16212 +
10.16213 + }
10.16214 +
10.16215 + }
10.16216 + }
10.16217 + if (needsPostProcessing && this$static.foreignFlag == 0 && !$hasForeignInScope(this$static)) {
10.16218 + this$static.foreignFlag = 1;
10.16219 + }
10.16220 + attributes != ($clinit_91() , EMPTY_ATTRIBUTES);
10.16221 +}
10.16222 +
10.16223 +function $startTokenization(this$static, self){
10.16224 + var elt, node;
10.16225 + this$static.tokenizer = self;
10.16226 + this$static.stack = initDim(_3Lnu_validator_htmlparser_impl_StackNode_2_classLit, 51, 11, 64, 0);
10.16227 + this$static.listOfActiveFormattingElements = initDim(_3Lnu_validator_htmlparser_impl_StackNode_2_classLit, 51, 11, 64, 0);
10.16228 + this$static.needToDropLF = false;
10.16229 + this$static.originalMode = 0;
10.16230 + this$static.currentPtr = -1;
10.16231 + this$static.listPtr = -1;
10.16232 + this$static.formPointer = null;
10.16233 + this$static.headPointer = null;
10.16234 + this$static.html4 = false;
10.16235 + $clearImpl(this$static.idLocations);
10.16236 + this$static.wantingComments = this$static.wantingComments;
10.16237 + this$static.script = null;
10.16238 + this$static.placeholder = null;
10.16239 + this$static.readyToRun = false;
10.16240 + this$static.charBufferLen = 0;
10.16241 + this$static.charBuffer = initDim(_3C_classLit, 42, -1, 1024, 1);
10.16242 + if (this$static.fragment) {
10.16243 + elt = $createHtmlElementSetAsRoot(this$static, $emptyAttributes(this$static.tokenizer));
10.16244 + node = $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , HTML_0), elt);
10.16245 + ++this$static.currentPtr;
10.16246 + this$static.stack[this$static.currentPtr] = node;
10.16247 + $resetTheInsertionMode(this$static);
10.16248 + if ('title' == this$static.contextName || 'textarea' == this$static.contextName) {
10.16249 + $setContentModelFlag(this$static.tokenizer, 1);
10.16250 + }
10.16251 + else if ('style' == this$static.contextName || 'script' == this$static.contextName || 'xmp' == this$static.contextName || 'iframe' == this$static.contextName || 'noembed' == this$static.contextName || 'noframes' == this$static.contextName) {
10.16252 + $setContentModelFlag(this$static.tokenizer, 2);
10.16253 + }
10.16254 + else if ('plaintext' == this$static.contextName) {
10.16255 + $setContentModelFlag(this$static.tokenizer, 3);
10.16256 + }
10.16257 + else {
10.16258 + $setContentModelFlag(this$static.tokenizer, 0);
10.16259 + }
10.16260 + this$static.contextName = null;
10.16261 + }
10.16262 + else {
10.16263 + this$static.mode = 0;
10.16264 + this$static.foreignFlag = 1;
10.16265 + }
10.16266 +}
10.16267 +
10.16268 +function extractCharsetFromContent(attributeValue){
10.16269 + var buffer, c, charset, charsetState, end, i, start;
10.16270 + charsetState = 0;
10.16271 + start = -1;
10.16272 + end = -1;
10.16273 + buffer = $toCharArray(attributeValue);
10.16274 + charsetloop: for (i = 0; i < buffer.length; ++i) {
10.16275 + c = buffer[i];
10.16276 + switch (charsetState) {
10.16277 + case 0:
10.16278 + switch (c) {
10.16279 + case 99:
10.16280 + case 67:
10.16281 + charsetState = 1;
10.16282 + continue;
10.16283 + default:continue;
10.16284 + }
10.16285 +
10.16286 + case 1:
10.16287 + switch (c) {
10.16288 + case 104:
10.16289 + case 72:
10.16290 + charsetState = 2;
10.16291 + continue;
10.16292 + default:charsetState = 0;
10.16293 + continue;
10.16294 + }
10.16295 +
10.16296 + case 2:
10.16297 + switch (c) {
10.16298 + case 97:
10.16299 + case 65:
10.16300 + charsetState = 3;
10.16301 + continue;
10.16302 + default:charsetState = 0;
10.16303 + continue;
10.16304 + }
10.16305 +
10.16306 + case 3:
10.16307 + switch (c) {
10.16308 + case 114:
10.16309 + case 82:
10.16310 + charsetState = 4;
10.16311 + continue;
10.16312 + default:charsetState = 0;
10.16313 + continue;
10.16314 + }
10.16315 +
10.16316 + case 4:
10.16317 + switch (c) {
10.16318 + case 115:
10.16319 + case 83:
10.16320 + charsetState = 5;
10.16321 + continue;
10.16322 + default:charsetState = 0;
10.16323 + continue;
10.16324 + }
10.16325 +
10.16326 + case 5:
10.16327 + switch (c) {
10.16328 + case 101:
10.16329 + case 69:
10.16330 + charsetState = 6;
10.16331 + continue;
10.16332 + default:charsetState = 0;
10.16333 + continue;
10.16334 + }
10.16335 +
10.16336 + case 6:
10.16337 + switch (c) {
10.16338 + case 116:
10.16339 + case 84:
10.16340 + charsetState = 7;
10.16341 + continue;
10.16342 + default:charsetState = 0;
10.16343 + continue;
10.16344 + }
10.16345 +
10.16346 + case 7:
10.16347 + switch (c) {
10.16348 + case 9:
10.16349 + case 10:
10.16350 + case 12:
10.16351 + case 13:
10.16352 + case 32:
10.16353 + continue;
10.16354 + case 61:
10.16355 + charsetState = 8;
10.16356 + continue;
10.16357 + default:return null;
10.16358 + }
10.16359 +
10.16360 + case 8:
10.16361 + switch (c) {
10.16362 + case 9:
10.16363 + case 10:
10.16364 + case 12:
10.16365 + case 13:
10.16366 + case 32:
10.16367 + continue;
10.16368 + case 39:
10.16369 + start = i + 1;
10.16370 + charsetState = 9;
10.16371 + continue;
10.16372 + case 34:
10.16373 + start = i + 1;
10.16374 + charsetState = 10;
10.16375 + continue;
10.16376 + default:start = i;
10.16377 + charsetState = 11;
10.16378 + continue;
10.16379 + }
10.16380 +
10.16381 + case 9:
10.16382 + switch (c) {
10.16383 + case 39:
10.16384 + end = i;
10.16385 + break charsetloop;
10.16386 + default:continue;
10.16387 + }
10.16388 +
10.16389 + case 10:
10.16390 + switch (c) {
10.16391 + case 34:
10.16392 + end = i;
10.16393 + break charsetloop;
10.16394 + default:continue;
10.16395 + }
10.16396 +
10.16397 + case 11:
10.16398 + switch (c) {
10.16399 + case 9:
10.16400 + case 10:
10.16401 + case 12:
10.16402 + case 13:
10.16403 + case 32:
10.16404 + case 59:
10.16405 + end = i;
10.16406 + break charsetloop;
10.16407 + default:continue;
10.16408 + }
10.16409 +
10.16410 + }
10.16411 + }
10.16412 + charset = null;
10.16413 + if (start != -1) {
10.16414 + if (end == -1) {
10.16415 + end = buffer.length;
10.16416 + }
10.16417 + charset = valueOf_1(buffer, start, end - start);
10.16418 + }
10.16419 + return charset;
10.16420 +}
10.16421 +
10.16422 +function getClass_57(){
10.16423 + return Lnu_validator_htmlparser_impl_TreeBuilder_2_classLit;
10.16424 +}
10.16425 +
10.16426 +function TreeBuilder(){
10.16427 +}
10.16428 +
10.16429 +_ = TreeBuilder.prototype = new Object_0();
10.16430 +_.getClass$ = getClass_57;
10.16431 +_.typeId$ = 0;
10.16432 +_.charBuffer = null;
10.16433 +_.charBufferLen = 0;
10.16434 +_.contextName = null;
10.16435 +_.contextNamespace = null;
10.16436 +_.currentPtr = -1;
10.16437 +_.foreignFlag = 1;
10.16438 +_.formPointer = null;
10.16439 +_.fragment = false;
10.16440 +_.headPointer = null;
10.16441 +_.html4 = false;
10.16442 +_.listOfActiveFormattingElements = null;
10.16443 +_.listPtr = -1;
10.16444 +_.mode = 0;
10.16445 +_.needToDropLF = false;
10.16446 +_.originalMode = 0;
10.16447 +_.quirks = false;
10.16448 +_.stack = null;
10.16449 +_.tokenizer = null;
10.16450 +_.wantingComments = false;
10.16451 +var HTML4_PUBLIC_IDS, ISINDEX_PROMPT, QUIRKY_PUBLIC_IDS;
10.16452 +function $clinit_88(){
10.16453 + $clinit_88 = nullMethod;
10.16454 + $clinit_98();
10.16455 +}
10.16456 +
10.16457 +function $accumulateCharacters(this$static, buf, start, length){
10.16458 + var newBuf, newLen;
10.16459 + newLen = this$static.charBufferLen + length;
10.16460 + if (newLen > this$static.charBuffer.length) {
10.16461 + newBuf = initDim(_3C_classLit, 42, -1, newLen, 1);
10.16462 + arraycopy(this$static.charBuffer, 0, newBuf, 0, this$static.charBufferLen);
10.16463 + this$static.charBuffer = newBuf;
10.16464 + }
10.16465 + arraycopy(buf, start, this$static.charBuffer, this$static.charBufferLen, length);
10.16466 + this$static.charBufferLen = newLen;
10.16467 +}
10.16468 +
10.16469 +function $insertFosterParentedCharacters_0(this$static, buf, start, length, table, stackParent){
10.16470 + var end;
10.16471 + $insertFosterParentedCharacters(this$static, (end = start + length , __checkBounds(buf.length, start, end) , __valueOf(buf, start, end)), table, stackParent);
10.16472 +}
10.16473 +
10.16474 +function getClass_50(){
10.16475 + return Lnu_validator_htmlparser_impl_CoalescingTreeBuilder_2_classLit;
10.16476 +}
10.16477 +
10.16478 +function CoalescingTreeBuilder(){
10.16479 +}
10.16480 +
10.16481 +_ = CoalescingTreeBuilder.prototype = new TreeBuilder();
10.16482 +_.getClass$ = getClass_50;
10.16483 +_.typeId$ = 0;
10.16484 +function $clinit_82(){
10.16485 + $clinit_82 = nullMethod;
10.16486 + $clinit_88();
10.16487 +}
10.16488 +
10.16489 +function $BrowserTreeBuilder(this$static, document_0){
10.16490 + $clinit_82();
10.16491 + this$static.doctypeExpectation = ($clinit_77() , HTML);
10.16492 + this$static.namePolicy = ($clinit_80() , ALTER_INFOSET);
10.16493 + this$static.idLocations = $HashMap(new HashMap());
10.16494 + this$static.fragment = false;
10.16495 + this$static.scriptStack = $LinkedList(new LinkedList());
10.16496 + this$static.document_0 = document_0;
10.16497 + installExplorerCreateElementNS(document_0);
10.16498 + return this$static;
10.16499 +}
10.16500 +
10.16501 +function $addAttributesToElement(this$static, element, attributes){
10.16502 + var $e0, e, i, localName, uri;
10.16503 + try {
10.16504 + for (i = 0; i < attributes.length_0; ++i) {
10.16505 + localName = $getLocalName(attributes, i);
10.16506 + uri = $getURI(attributes, i);
10.16507 + if (!element.hasAttributeNS(uri, localName)) {
10.16508 + element.setAttributeNS(uri, localName, $getValue(attributes, i));
10.16509 + }
10.16510 + }
10.16511 + }
10.16512 + catch ($e0) {
10.16513 + $e0 = caught($e0);
10.16514 + if (instanceOf($e0, 19)) {
10.16515 + e = $e0;
10.16516 + $fatal_0(this$static, e);
10.16517 + }
10.16518 + else
10.16519 + throw $e0;
10.16520 + }
10.16521 +}
10.16522 +
10.16523 +function $appendCharacters(this$static, parent, text){
10.16524 + var $e0, e;
10.16525 + try {
10.16526 + if (parent == this$static.placeholder) {
10.16527 + this$static.script.appendChild(this$static.document_0.createTextNode(text));
10.16528 + }
10.16529 + parent.appendChild(this$static.document_0.createTextNode(text));
10.16530 + }
10.16531 + catch ($e0) {
10.16532 + $e0 = caught($e0);
10.16533 + if (instanceOf($e0, 19)) {
10.16534 + e = $e0;
10.16535 + $fatal_0(this$static, e);
10.16536 + }
10.16537 + else
10.16538 + throw $e0;
10.16539 + }
10.16540 +}
10.16541 +
10.16542 +function $appendChildrenToNewParent(this$static, oldParent, newParent){
10.16543 + var $e0, e;
10.16544 + try {
10.16545 + while (oldParent.hasChildNodes()) {
10.16546 + newParent.appendChild(oldParent.firstChild);
10.16547 + }
10.16548 + }
10.16549 + catch ($e0) {
10.16550 + $e0 = caught($e0);
10.16551 + if (instanceOf($e0, 19)) {
10.16552 + e = $e0;
10.16553 + $fatal_0(this$static, e);
10.16554 + }
10.16555 + else
10.16556 + throw $e0;
10.16557 + }
10.16558 +}
10.16559 +
10.16560 +function $appendComment(this$static, parent, comment){
10.16561 + var $e0, e;
10.16562 + try {
10.16563 + if (parent == this$static.placeholder) {
10.16564 + this$static.script.appendChild(this$static.document_0.createComment(comment));
10.16565 + }
10.16566 + parent.appendChild(this$static.document_0.createComment(comment));
10.16567 + }
10.16568 + catch ($e0) {
10.16569 + $e0 = caught($e0);
10.16570 + if (instanceOf($e0, 19)) {
10.16571 + e = $e0;
10.16572 + $fatal_0(this$static, e);
10.16573 + }
10.16574 + else
10.16575 + throw $e0;
10.16576 + }
10.16577 +}
10.16578 +
10.16579 +function $appendCommentToDocument(this$static, comment){
10.16580 + var $e0, e;
10.16581 + try {
10.16582 + this$static.document_0.appendChild(this$static.document_0.createComment(comment));
10.16583 + }
10.16584 + catch ($e0) {
10.16585 + $e0 = caught($e0);
10.16586 + if (instanceOf($e0, 19)) {
10.16587 + e = $e0;
10.16588 + $fatal_0(this$static, e);
10.16589 + }
10.16590 + else
10.16591 + throw $e0;
10.16592 + }
10.16593 +}
10.16594 +
10.16595 +function $appendElement(this$static, child, newParent){
10.16596 + var $e0, e;
10.16597 + try {
10.16598 + if (newParent == this$static.placeholder) {
10.16599 + this$static.script.appendChild(child.cloneNode(true));
10.16600 + }
10.16601 + newParent.appendChild(child);
10.16602 + }
10.16603 + catch ($e0) {
10.16604 + $e0 = caught($e0);
10.16605 + if (instanceOf($e0, 19)) {
10.16606 + e = $e0;
10.16607 + $fatal_0(this$static, e);
10.16608 + }
10.16609 + else
10.16610 + throw $e0;
10.16611 + }
10.16612 +}
10.16613 +
10.16614 +function $createElement(this$static, ns, name, attributes){
10.16615 + var $e0, e, i, rv;
10.16616 + try {
10.16617 + rv = this$static.document_0.createElementNS(ns, name);
10.16618 + for (i = 0; i < attributes.length_0; ++i) {
10.16619 + rv.setAttributeNS($getURI(attributes, i), $getLocalName(attributes, i), $getValue(attributes, i));
10.16620 + }
10.16621 + if ('script' == name) {
10.16622 + if (this$static.placeholder) {
10.16623 + $addLast(this$static.scriptStack, $BrowserTreeBuilder$ScriptHolder(new BrowserTreeBuilder$ScriptHolder(), this$static.script, this$static.placeholder));
10.16624 + }
10.16625 + this$static.script = rv;
10.16626 + this$static.placeholder = this$static.document_0.createElementNS('http://n.validator.nu/placeholder/', 'script');
10.16627 + rv = this$static.placeholder;
10.16628 + for (i = 0; i < attributes.length_0; ++i) {
10.16629 + rv.setAttributeNS($getURI(attributes, i), $getLocalName(attributes, i), $getValue(attributes, i));
10.16630 + }
10.16631 + }
10.16632 + return rv;
10.16633 + }
10.16634 + catch ($e0) {
10.16635 + $e0 = caught($e0);
10.16636 + if (instanceOf($e0, 19)) {
10.16637 + e = $e0;
10.16638 + $fatal_0(this$static, e);
10.16639 + throw $RuntimeException(new RuntimeException(), 'Unreachable');
10.16640 + }
10.16641 + else
10.16642 + throw $e0;
10.16643 + }
10.16644 +}
10.16645 +
10.16646 +function $createElement_0(this$static, ns, name, attributes){
10.16647 + var $e0, e, rv;
10.16648 + try {
10.16649 + rv = $createElement(this$static, ns, name, attributes);
10.16650 + return rv;
10.16651 + }
10.16652 + catch ($e0) {
10.16653 + $e0 = caught($e0);
10.16654 + if (instanceOf($e0, 19)) {
10.16655 + e = $e0;
10.16656 + $fatal_0(this$static, e);
10.16657 + return null;
10.16658 + }
10.16659 + else
10.16660 + throw $e0;
10.16661 + }
10.16662 +}
10.16663 +
10.16664 +function $createHtmlElementSetAsRoot(this$static, attributes){
10.16665 + var $e0, e, i, rv;
10.16666 + try {
10.16667 + rv = this$static.document_0.createElementNS('http://www.w3.org/1999/xhtml', 'html');
10.16668 + for (i = 0; i < attributes.length_0; ++i) {
10.16669 + rv.setAttributeNS($getURI(attributes, i), $getLocalName(attributes, i), $getValue(attributes, i));
10.16670 + }
10.16671 + this$static.document_0.appendChild(rv);
10.16672 + return rv;
10.16673 + }
10.16674 + catch ($e0) {
10.16675 + $e0 = caught($e0);
10.16676 + if (instanceOf($e0, 19)) {
10.16677 + e = $e0;
10.16678 + $fatal_0(this$static, e);
10.16679 + throw $RuntimeException(new RuntimeException(), 'Unreachable');
10.16680 + }
10.16681 + else
10.16682 + throw $e0;
10.16683 + }
10.16684 +}
10.16685 +
10.16686 +function $detachFromParent(this$static, element){
10.16687 + var $e0, e, parent;
10.16688 + try {
10.16689 + parent = element.parentNode;
10.16690 + if (parent) {
10.16691 + parent.removeChild(element);
10.16692 + }
10.16693 + }
10.16694 + catch ($e0) {
10.16695 + $e0 = caught($e0);
10.16696 + if (instanceOf($e0, 19)) {
10.16697 + e = $e0;
10.16698 + $fatal_0(this$static, e);
10.16699 + }
10.16700 + else
10.16701 + throw $e0;
10.16702 + }
10.16703 +}
10.16704 +
10.16705 +function $elementPopped(this$static, ns, name, node){
10.16706 + if (node == this$static.placeholder) {
10.16707 + this$static.readyToRun = true;
10.16708 + this$static.tokenizer.shouldSuspend = true;
10.16709 + }
10.16710 + __elementPopped__(ns, name, node);
10.16711 +}
10.16712 +
10.16713 +function $getDocument(this$static){
10.16714 + var rv;
10.16715 + rv = this$static.document_0;
10.16716 + this$static.document_0 = null;
10.16717 + return rv;
10.16718 +}
10.16719 +
10.16720 +function $insertFosterParentedCharacters(this$static, text, table, stackParent){
10.16721 + var $e0, child, e, parent;
10.16722 + try {
10.16723 + child = this$static.document_0.createTextNode(text);
10.16724 + parent = table.parentNode;
10.16725 + if (!!parent && parent.nodeType == 1) {
10.16726 + parent.insertBefore(child, table);
10.16727 + }
10.16728 + else {
10.16729 + stackParent.appendChild(child);
10.16730 + }
10.16731 + }
10.16732 + catch ($e0) {
10.16733 + $e0 = caught($e0);
10.16734 + if (instanceOf($e0, 19)) {
10.16735 + e = $e0;
10.16736 + $fatal_0(this$static, e);
10.16737 + }
10.16738 + else
10.16739 + throw $e0;
10.16740 + }
10.16741 +}
10.16742 +
10.16743 +function $insertFosterParentedChild(this$static, child, table, stackParent){
10.16744 + var $e0, e, parent;
10.16745 + parent = table.parentNode;
10.16746 + try {
10.16747 + if (!!parent && parent.nodeType == 1) {
10.16748 + parent.insertBefore(child, table);
10.16749 + }
10.16750 + else {
10.16751 + stackParent.appendChild(child);
10.16752 + }
10.16753 + }
10.16754 + catch ($e0) {
10.16755 + $e0 = caught($e0);
10.16756 + if (instanceOf($e0, 19)) {
10.16757 + e = $e0;
10.16758 + $fatal_0(this$static, e);
10.16759 + }
10.16760 + else
10.16761 + throw $e0;
10.16762 + }
10.16763 +}
10.16764 +
10.16765 +function $maybeRunScript(this$static){
10.16766 + var scriptHolder;
10.16767 + if (this$static.readyToRun) {
10.16768 + this$static.readyToRun = false;
10.16769 + replace_0(this$static.placeholder, this$static.script);
10.16770 + if (this$static.scriptStack.size == 0) {
10.16771 + this$static.script = null;
10.16772 + this$static.placeholder = null;
10.16773 + }
10.16774 + else {
10.16775 + scriptHolder = dynamicCast($removeLast(this$static.scriptStack), 20);
10.16776 + this$static.script = scriptHolder.script;
10.16777 + this$static.placeholder = scriptHolder.placeholder;
10.16778 + }
10.16779 + }
10.16780 +}
10.16781 +
10.16782 +function getClass_45(){
10.16783 + return Lnu_validator_htmlparser_gwt_BrowserTreeBuilder_2_classLit;
10.16784 +}
10.16785 +
10.16786 +function installExplorerCreateElementNS(doc){
10.16787 + if (!doc.createElementNS) {
10.16788 + doc.createElementNS = function(uri, local){
10.16789 + if ('http://www.w3.org/1999/xhtml' == uri) {
10.16790 + return doc.createElement(local);
10.16791 + }
10.16792 + else if ('http://www.w3.org/1998/Math/MathML' == uri) {
10.16793 + if (!doc.mathplayerinitialized) {
10.16794 + var obj = document.createElement('object');
10.16795 + obj.setAttribute('id', 'mathplayer');
10.16796 + obj.setAttribute('classid', 'clsid:32F66A20-7614-11D4-BD11-00104BD3F987');
10.16797 + document.getElementsByTagName('head')[0].appendChild(obj);
10.16798 + document.namespaces.add('m', 'http://www.w3.org/1998/Math/MathML', '#mathplayer');
10.16799 + doc.mathplayerinitialized = true;
10.16800 + }
10.16801 + return doc.createElement('m:' + local);
10.16802 + }
10.16803 + else if ('http://www.w3.org/2000/svg' == uri) {
10.16804 + if (!doc.renesisinitialized) {
10.16805 + var obj = document.createElement('object');
10.16806 + obj.setAttribute('id', 'renesis');
10.16807 + obj.setAttribute('classid', 'clsid:AC159093-1683-4BA2-9DCF-0C350141D7F2');
10.16808 + document.getElementsByTagName('head')[0].appendChild(obj);
10.16809 + document.namespaces.add('s', 'http://www.w3.org/2000/svg', '#renesis');
10.16810 + doc.renesisinitialized = true;
10.16811 + }
10.16812 + return doc.createElement('s:' + local);
10.16813 + }
10.16814 + else {
10.16815 + }
10.16816 + }
10.16817 + ;
10.16818 + }
10.16819 +}
10.16820 +
10.16821 +function replace_0(oldNode, newNode){
10.16822 + oldNode.parentNode.replaceChild(newNode, oldNode);
10.16823 + __elementPopped__('', newNode.nodeName, newNode);
10.16824 +}
10.16825 +
10.16826 +function BrowserTreeBuilder(){
10.16827 +}
10.16828 +
10.16829 +_ = BrowserTreeBuilder.prototype = new CoalescingTreeBuilder();
10.16830 +_.getClass$ = getClass_45;
10.16831 +_.typeId$ = 0;
10.16832 +_.document_0 = null;
10.16833 +_.placeholder = null;
10.16834 +_.readyToRun = false;
10.16835 +_.script = null;
10.16836 +function $BrowserTreeBuilder$ScriptHolder(this$static, script, placeholder){
10.16837 + this$static.script = script;
10.16838 + this$static.placeholder = placeholder;
10.16839 + return this$static;
10.16840 +}
10.16841 +
10.16842 +function getClass_44(){
10.16843 + return Lnu_validator_htmlparser_gwt_BrowserTreeBuilder$ScriptHolder_2_classLit;
10.16844 +}
10.16845 +
10.16846 +function BrowserTreeBuilder$ScriptHolder(){
10.16847 +}
10.16848 +
10.16849 +_ = BrowserTreeBuilder$ScriptHolder.prototype = new Object_0();
10.16850 +_.getClass$ = getClass_44;
10.16851 +_.typeId$ = 34;
10.16852 +_.placeholder = null;
10.16853 +_.script = null;
10.16854 +function $HtmlParser(this$static, document_0){
10.16855 + this$static.documentWriteBuffer = $StringBuilder(new StringBuilder());
10.16856 + this$static.bufferStack = $LinkedList(new LinkedList());
10.16857 + this$static.domTreeBuilder = $BrowserTreeBuilder(new BrowserTreeBuilder(), document_0);
10.16858 + this$static.tokenizer = $ErrorReportingTokenizer(new ErrorReportingTokenizer(), this$static.domTreeBuilder);
10.16859 + this$static.domTreeBuilder.namePolicy = ($clinit_80() , ALTER_INFOSET);
10.16860 + this$static.tokenizer.commentPolicy = ALTER_INFOSET;
10.16861 + this$static.tokenizer.contentNonXmlCharPolicy = ALTER_INFOSET;
10.16862 + this$static.tokenizer.contentSpacePolicy = ALTER_INFOSET;
10.16863 + this$static.tokenizer.namePolicy = ALTER_INFOSET;
10.16864 + $setXmlnsPolicy(this$static.tokenizer, ALTER_INFOSET);
10.16865 + return this$static;
10.16866 +}
10.16867 +
10.16868 +function $parse(this$static, source, useSetTimeouts, callback){
10.16869 + this$static.parseEndListener = callback;
10.16870 + $setFragmentContext(this$static.domTreeBuilder, null);
10.16871 + this$static.lastWasCR = false;
10.16872 + this$static.ending = false;
10.16873 + $setLength(this$static.documentWriteBuffer, 0);
10.16874 + this$static.streamLength = source.length;
10.16875 + this$static.stream = $UTF16Buffer(new UTF16Buffer(), $toCharArray(source), 0, this$static.streamLength < 512?this$static.streamLength:512);
10.16876 + $clear(this$static.bufferStack);
10.16877 + $addLast(this$static.bufferStack, this$static.stream);
10.16878 + $setFragmentContext(this$static.domTreeBuilder, null);
10.16879 + $start_0(this$static.tokenizer);
10.16880 + $pump(this$static, useSetTimeouts);
10.16881 +}
10.16882 +
10.16883 +function $pump(this$static, useSetTimeouts){
10.16884 + var $e0, buffer, docWriteLen, newBuf, newEnd, timer;
10.16885 + if (this$static.ending) {
10.16886 + $end(this$static.tokenizer);
10.16887 + $getDocument(this$static.domTreeBuilder);
10.16888 + this$static.parseEndListener.callback();
10.16889 + return;
10.16890 + }
10.16891 + docWriteLen = this$static.documentWriteBuffer.stringLength;
10.16892 + if (docWriteLen > 0) {
10.16893 + newBuf = initDim(_3C_classLit, 42, -1, docWriteLen, 1);
10.16894 + $getChars(this$static.documentWriteBuffer, 0, docWriteLen, newBuf, 0);
10.16895 + $addLast(this$static.bufferStack, $UTF16Buffer(new UTF16Buffer(), newBuf, 0, docWriteLen));
10.16896 + $setLength(this$static.documentWriteBuffer, 0);
10.16897 + }
10.16898 + for (;;) {
10.16899 + buffer = dynamicCast($getLast(this$static.bufferStack), 21);
10.16900 + if (buffer.start >= buffer.end) {
10.16901 + if (buffer == this$static.stream) {
10.16902 + if (buffer.end == this$static.streamLength) {
10.16903 + $eof(this$static.tokenizer);
10.16904 + this$static.ending = true;
10.16905 + break;
10.16906 + }
10.16907 + else {
10.16908 + newEnd = buffer.start + 512;
10.16909 + buffer.end = newEnd < this$static.streamLength?newEnd:this$static.streamLength;
10.16910 + continue;
10.16911 + }
10.16912 + }
10.16913 + else {
10.16914 + dynamicCast($removeLast(this$static.bufferStack), 21);
10.16915 + continue;
10.16916 + }
10.16917 + }
10.16918 + $adjust(buffer, this$static.lastWasCR);
10.16919 + this$static.lastWasCR = false;
10.16920 + if (buffer.start < buffer.end) {
10.16921 + this$static.lastWasCR = $tokenizeBuffer(this$static.tokenizer, buffer);
10.16922 + $maybeRunScript(this$static.domTreeBuilder);
10.16923 + break;
10.16924 + }
10.16925 + else {
10.16926 + continue;
10.16927 + }
10.16928 + }
10.16929 + if (useSetTimeouts) {
10.16930 + timer = $HtmlParser$1(new HtmlParser$1(), this$static);
10.16931 + $schedule(timer, 1);
10.16932 + }
10.16933 + else {
10.16934 + try {
10.16935 + $pump(this$static, false);
10.16936 + }
10.16937 + catch ($e0) {
10.16938 + $e0 = caught($e0);
10.16939 + if (instanceOf($e0, 22)) {
10.16940 + this$static.ending = true;
10.16941 + }
10.16942 + else
10.16943 + throw $e0;
10.16944 + }
10.16945 + }
10.16946 +}
10.16947 +
10.16948 +function documentWrite(text){
10.16949 + var buffer;
10.16950 + buffer = $UTF16Buffer(new UTF16Buffer(), $toCharArray(text), 0, text.length);
10.16951 + while (buffer.start < buffer.end) {
10.16952 + $adjust(buffer, this.lastWasCR);
10.16953 + this.lastWasCR = false;
10.16954 + if (buffer.start < buffer.end) {
10.16955 + this.lastWasCR = $tokenizeBuffer(this.tokenizer, buffer);
10.16956 + $maybeRunScript(this.domTreeBuilder);
10.16957 + }
10.16958 + }
10.16959 +}
10.16960 +
10.16961 +function getClass_47(){
10.16962 + return Lnu_validator_htmlparser_gwt_HtmlParser_2_classLit;
10.16963 +}
10.16964 +
10.16965 +function HtmlParser(){
10.16966 +}
10.16967 +
10.16968 +_ = HtmlParser.prototype = new Object_0();
10.16969 +_.documentWrite = documentWrite;
10.16970 +_.getClass$ = getClass_47;
10.16971 +_.typeId$ = 0;
10.16972 +_.domTreeBuilder = null;
10.16973 +_.ending = false;
10.16974 +_.lastWasCR = false;
10.16975 +_.parseEndListener = null;
10.16976 +_.stream = null;
10.16977 +_.streamLength = 0;
10.16978 +_.tokenizer = null;
10.16979 +function $clinit_83(){
10.16980 + $clinit_83 = nullMethod;
10.16981 + $clinit_12();
10.16982 +}
10.16983 +
10.16984 +function $HtmlParser$1(this$static, this$0){
10.16985 + $clinit_83();
10.16986 + this$static.this$0 = this$0;
10.16987 + return this$static;
10.16988 +}
10.16989 +
10.16990 +function $run(this$static){
10.16991 + var $e0;
10.16992 + // try {
10.16993 + $pump(this$static.this$0, true);
10.16994 + /*}
10.16995 + catch ($e0) {
10.16996 + $e0 = caught($e0);
10.16997 + if (instanceOf($e0, 22)) {
10.16998 + this$static.this$0.ending = true;
10.16999 + }
10.17000 + else
10.17001 + throw $e0;
10.17002 + } */
10.17003 +}
10.17004 +
10.17005 +function getClass_46(){
10.17006 + return Lnu_validator_htmlparser_gwt_HtmlParser$1_2_classLit;
10.17007 +}
10.17008 +
10.17009 +function HtmlParser$1(){
10.17010 +}
10.17011 +
10.17012 +_ = HtmlParser$1.prototype = new Timer();
10.17013 +_.getClass$ = getClass_46;
10.17014 +_.typeId$ = 35;
10.17015 +_.this$0 = null;
10.17016 +function installDocWrite(doc, parser){
10.17017 + doc.write = function(){
10.17018 + if (arguments.length == 0) {
10.17019 + return;
10.17020 + }
10.17021 + var text = arguments[0];
10.17022 + for (var i = 1; i < arguments.length; i++) {
10.17023 + text += arguments[i];
10.17024 + }
10.17025 + parser.documentWrite(text);
10.17026 + }
10.17027 + ;
10.17028 + doc.writeln = function(){
10.17029 + if (arguments.length == 0) {
10.17030 + parser.documentWrite('\n');
10.17031 + return;
10.17032 + }
10.17033 + var text = arguments[0];
10.17034 + for (var i = 1; i < arguments.length; i++) {
10.17035 + text += arguments[i];
10.17036 + }
10.17037 + text += '\n';
10.17038 + parser.documentWrite(text);
10.17039 + }
10.17040 + ;
10.17041 +}
10.17042 +
10.17043 +function parseHtmlDocument(source, document_0, useSetTimeouts, readyCallback, errorHandler){
10.17044 + var parser;
10.17045 + if (!readyCallback) {
10.17046 + readyCallback = createFunction();
10.17047 + }
10.17048 + zapChildren(document_0);
10.17049 + parser = $HtmlParser(new HtmlParser(), document_0);
10.17050 + installDocWrite(document_0, parser);
10.17051 + $parse(parser, source, useSetTimeouts, $ParseEndListener(new ParseEndListener(), readyCallback));
10.17052 +}
10.17053 +
10.17054 +function zapChildren(node){
10.17055 + while (node.hasChildNodes()) {
10.17056 + node.removeChild(node.lastChild);
10.17057 + }
10.17058 +}
10.17059 +
10.17060 +function $ParseEndListener(this$static, callback){
10.17061 + this$static.callback = callback;
10.17062 + return this$static;
10.17063 +}
10.17064 +
10.17065 +function getClass_48(){
10.17066 + return Lnu_validator_htmlparser_gwt_ParseEndListener_2_classLit;
10.17067 +}
10.17068 +
10.17069 +function ParseEndListener(){
10.17070 +}
10.17071 +
10.17072 +_ = ParseEndListener.prototype = new Object_0();
10.17073 +_.getClass$ = getClass_48;
10.17074 +_.typeId$ = 0;
10.17075 +_.callback = null;
10.17076 +function $clinit_87(){
10.17077 + var arr_32;
10.17078 + $clinit_87 = nullMethod;
10.17079 + ALL_NO_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', '', '', '']);
10.17080 + XMLNS_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', 'http://www.w3.org/2000/xmlns/', 'http://www.w3.org/2000/xmlns/', '']);
10.17081 + XML_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', 'http://www.w3.org/XML/1998/namespace', 'http://www.w3.org/XML/1998/namespace', '']);
10.17082 + XLINK_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', 'http://www.w3.org/1999/xlink', 'http://www.w3.org/1999/xlink', '']);
10.17083 + LANG_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', '', '', 'http://www.w3.org/XML/1998/namespace']);
10.17084 + ALL_NO_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, null, null, null]);
10.17085 + XMLNS_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, 'xmlns', 'xmlns', null]);
10.17086 + XLINK_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, 'xlink', 'xlink', null]);
10.17087 + XML_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, 'xml', 'xml', null]);
10.17088 + LANG_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, null, null, 'xml']);
10.17089 + ALL_NCNAME = initValues(_3Z_classLit, 0, -1, [true, true, true, true]);
10.17090 + ALL_NO_NCNAME = initValues(_3Z_classLit, 0, -1, [false, false, false, false]);
10.17091 + D = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('d'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17092 + K = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17093 + R = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('r'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17094 + X = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('x'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17095 + Y = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('y'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17096 + Z = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('z'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17097 + BY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('by'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17098 + CX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cx'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17099 + CY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cy'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17100 + DX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dx'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17101 + DY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dy'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17102 + G2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('g2'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17103 + G1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('g1'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17104 + FX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fx'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17105 + FY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fy'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17106 + K4 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k4'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17107 + K2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k2'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17108 + K3 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k3'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17109 + K1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k1'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17110 + ID = $AttributeName_0(new AttributeName(), ALL_NO_NS, SAME_LOCAL('id'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17111 + IN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('in'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17112 + U2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('u2'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17113 + U1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('u1'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17114 + RT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rt'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17115 + RX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rx'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17116 + RY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ry'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17117 + TO = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('to'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17118 + Y2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('y2'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17119 + Y1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('y1'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17120 + X1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('x1'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17121 + X2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('x2'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17122 + ALT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alt'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17123 + DIR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dir'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17124 + DUR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dur'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17125 + END = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('end'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17126 + FOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('for'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17127 + IN2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('in2'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17128 + MAX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('max'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17129 + MIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('min'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17130 + LOW = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('low'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17131 + REL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rel'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17132 + REV = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rev'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17133 + SRC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('src'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17134 + AXIS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('axis'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17135 + ABBR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('abbr'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17136 + BBOX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('bbox'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17137 + CITE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cite'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17138 + CODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('code'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17139 + BIAS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('bias'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17140 + COLS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cols'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17141 + CLIP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('clip'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17142 + CHAR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('char'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17143 + BASE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('base'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17144 + EDGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('edge'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17145 + DATA = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('data'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17146 + FILL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fill'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17147 + FROM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('from'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17148 + FORM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('form'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17149 + FACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('face'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17150 + HIGH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('high'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17151 + HREF = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('href'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17152 + OPEN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('open'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17153 + ICON = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('icon'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17154 + NAME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('name'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17155 + MODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mode'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17156 + MASK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mask'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17157 + LINK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('link'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17158 + LANG = $AttributeName(new AttributeName(), LANG_NS, SAME_LOCAL('lang'), LANG_PREFIX, ALL_NCNAME, false);
10.17159 + LIST = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('list'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17160 + TYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('type'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17161 + WHEN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('when'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17162 + WRAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('wrap'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17163 + TEXT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('text'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17164 + PATH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('path'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17165 + PING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ping'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17166 + REFX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('refx', 'refX'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17167 + REFY = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('refy', 'refY'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17168 + SIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('size'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17169 + SEED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('seed'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17170 + ROWS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rows'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17171 + SPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('span'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17172 + STEP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('step'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17173 + ROLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('role'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17174 + XREF = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('xref'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17175 + ASYNC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('async'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17176 + ALINK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alink'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17177 + ALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('align'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17178 + CLOSE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('close'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17179 + COLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17180 + CLASS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('class'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17181 + CLEAR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('clear'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17182 + BEGIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('begin'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17183 + DEPTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('depth'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17184 + DEFER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('defer'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17185 + FENCE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fence'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17186 + FRAME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('frame'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17187 + ISMAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ismap'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17188 + ONEND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onend'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17189 + INDEX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('index'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17190 + ORDER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('order'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17191 + OTHER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('other'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17192 + ONCUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncut'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17193 + NARGS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('nargs'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17194 + MEDIA = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('media'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17195 + LABEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('label'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17196 + LOCAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('local'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17197 + WIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('width'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17198 + TITLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('title'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17199 + VLINK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vlink'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17200 + VALUE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('value'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17201 + SLOPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('slope'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17202 + SHAPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('shape'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17203 + SCOPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scope'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17204 + SCALE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scale'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17205 + SPEED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('speed'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17206 + STYLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('style'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17207 + RULES = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rules'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17208 + STEMH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stemh'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17209 + STEMV = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stemv'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17210 + START = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('start'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17211 + XMLNS = $AttributeName(new AttributeName(), XMLNS_NS, SAME_LOCAL('xmlns'), ALL_NO_PREFIX, initValues(_3Z_classLit, 0, -1, [false, false, false, false]), true);
10.17212 + ACCEPT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accept'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17213 + ACCENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accent'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17214 + ASCENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ascent'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17215 + ACTIVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('active'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17216 + ALTIMG = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('altimg'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17217 + ACTION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('action'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17218 + BORDER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('border'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17219 + CURSOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cursor'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17220 + COORDS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('coords'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17221 + FILTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('filter'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17222 + FORMAT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('format'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17223 + HIDDEN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hidden'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17224 + HSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17225 + HEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('height'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17226 + ONMOVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmove'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17227 + ONLOAD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onload'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17228 + ONDRAG = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondrag'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17229 + ORIGIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('origin'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17230 + ONZOOM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onzoom'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17231 + ONHELP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onhelp'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17232 + ONSTOP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onstop'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17233 + ONDROP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondrop'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17234 + ONBLUR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onblur'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17235 + OBJECT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('object'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17236 + OFFSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('offset'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17237 + ORIENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('orient'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17238 + ONCOPY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncopy'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17239 + NOWRAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('nowrap'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17240 + NOHREF = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('nohref'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17241 + MACROS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('macros'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17242 + METHOD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('method'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17243 + LOWSRC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('lowsrc'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17244 + LSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('lspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17245 + LQUOTE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('lquote'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17246 + USEMAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('usemap'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17247 + WIDTHS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('widths'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17248 + TARGET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('target'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17249 + VALUES = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('values'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17250 + VALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('valign'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17251 + VSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17252 + POSTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('poster'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17253 + POINTS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('points'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17254 + PROMPT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('prompt'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17255 + SCOPED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scoped'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17256 + STRING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('string'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17257 + SCHEME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scheme'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17258 + STROKE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17259 + RADIUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('radius'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17260 + RESULT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('result'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17261 + REPEAT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17262 + RSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17263 + ROTATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rotate'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17264 + RQUOTE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rquote'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17265 + ALTTEXT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alttext'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17266 + ARCHIVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('archive'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17267 + AZIMUTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('azimuth'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17268 + CLOSURE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('closure'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17269 + CHECKED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('checked'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17270 + CLASSID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('classid'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17271 + CHAROFF = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('charoff'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17272 + BGCOLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('bgcolor'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17273 + COLSPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('colspan'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17274 + CHARSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('charset'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17275 + COMPACT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('compact'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17276 + CONTENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('content'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17277 + ENCTYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('enctype'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17278 + DATASRC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('datasrc'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17279 + DATAFLD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('datafld'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17280 + DECLARE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('declare'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17281 + DISPLAY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('display'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17282 + DIVISOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('divisor'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17283 + DEFAULT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('default'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17284 + DESCENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('descent'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17285 + KERNING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('kerning'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17286 + HANGING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hanging'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17287 + HEADERS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('headers'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17288 + ONPASTE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onpaste'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17289 + ONCLICK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onclick'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17290 + OPTIMUM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('optimum'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17291 + ONBEGIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbegin'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17292 + ONKEYUP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onkeyup'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17293 + ONFOCUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfocus'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17294 + ONERROR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onerror'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17295 + ONINPUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oninput'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17296 + ONABORT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onabort'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17297 + ONSTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onstart'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17298 + ONRESET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onreset'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17299 + OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17300 + NOSHADE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('noshade'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17301 + MINSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('minsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17302 + MAXSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('maxsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17303 + LOOPEND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('loopend'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17304 + LARGEOP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('largeop'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17305 + UNICODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('unicode'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17306 + TARGETX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('targetx', 'targetX'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17307 + TARGETY = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('targety', 'targetY'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17308 + VIEWBOX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('viewbox', 'viewBox'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17309 + VERSION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('version'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17310 + PATTERN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('pattern'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17311 + PROFILE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('profile'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17312 + SPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('spacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17313 + RESTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('restart'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17314 + ROWSPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rowspan'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17315 + SANDBOX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('sandbox'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17316 + SUMMARY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('summary'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17317 + STANDBY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('standby'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17318 + REPLACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('replace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17319 + AUTOPLAY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('autoplay'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17320 + ADDITIVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('additive'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17321 + CALCMODE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('calcmode', 'calcMode'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17322 + CODETYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('codetype'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17323 + CODEBASE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('codebase'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17324 + CONTROLS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('controls'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17325 + BEVELLED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('bevelled'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17326 + BASELINE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('baseline'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17327 + EXPONENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('exponent'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17328 + EDGEMODE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('edgemode', 'edgeMode'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17329 + ENCODING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('encoding'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17330 + GLYPHREF = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('glyphref', 'glyphRef'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17331 + DATETIME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('datetime'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17332 + DISABLED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('disabled'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17333 + FONTSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fontsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17334 + KEYTIMES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('keytimes', 'keyTimes'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17335 + PANOSE_1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('panose-1'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17336 + HREFLANG = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hreflang'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17337 + ONRESIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onresize'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17338 + ONCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onchange'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17339 + ONBOUNCE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbounce'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17340 + ONUNLOAD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onunload'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17341 + ONFINISH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfinish'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17342 + ONSCROLL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onscroll'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17343 + OPERATOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('operator'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17344 + OVERFLOW = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('overflow'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17345 + ONSUBMIT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onsubmit'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17346 + ONREPEAT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrepeat'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17347 + ONSELECT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onselect'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17348 + NOTATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('notation'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17349 + NORESIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('noresize'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17350 + MANIFEST = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('manifest'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17351 + MATHSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17352 + MULTIPLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('multiple'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17353 + LONGDESC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('longdesc'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17354 + LANGUAGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('language'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17355 + TEMPLATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('template'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17356 + TABINDEX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('tabindex'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17357 + READONLY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('readonly'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17358 + SELECTED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('selected'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17359 + ROWLINES = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rowlines'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17360 + SEAMLESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('seamless'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17361 + ROWALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rowalign'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17362 + STRETCHY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stretchy'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17363 + REQUIRED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('required'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17364 + XML_BASE = $AttributeName(new AttributeName(), XML_NS, COLONIFIED_LOCAL('xml:base', 'base'), XML_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17365 + XML_LANG = $AttributeName(new AttributeName(), XML_NS, COLONIFIED_LOCAL('xml:lang', 'lang'), XML_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17366 + X_HEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('x-height'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17367 + ARIA_OWNS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-owns'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17368 + AUTOFOCUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('autofocus'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17369 + ARIA_SORT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-sort'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17370 + ACCESSKEY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accesskey'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17371 + ARIA_BUSY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-busy'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17372 + ARIA_GRAB = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-grab'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17373 + AMPLITUDE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('amplitude'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17374 + ARIA_LIVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-live'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17375 + CLIP_RULE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('clip-rule'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17376 + CLIP_PATH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('clip-path'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17377 + EQUALROWS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('equalrows'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17378 + ELEVATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('elevation'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17379 + DIRECTION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('direction'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17380 + DRAGGABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('draggable'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17381 + FILTERRES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('filterres', 'filterRes'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17382 + FILL_RULE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fill-rule'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17383 + FONTSTYLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fontstyle'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17384 + FONT_SIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-size'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17385 + KEYPOINTS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('keypoints', 'keyPoints'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17386 + HIDEFOCUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hidefocus'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17387 + ONMESSAGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmessage'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17388 + INTERCEPT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('intercept'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17389 + ONDRAGEND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragend'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17390 + ONMOVEEND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmoveend'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17391 + ONINVALID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oninvalid'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17392 + ONKEYDOWN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onkeydown'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17393 + ONFOCUSIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfocusin'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17394 + ONMOUSEUP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseup'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17395 + INPUTMODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('inputmode'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17396 + ONROWEXIT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrowexit'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17397 + MATHCOLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathcolor'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17398 + MASKUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('maskunits', 'maskUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17399 + MAXLENGTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('maxlength'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17400 + LINEBREAK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('linebreak'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17401 + LOOPSTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('loopstart'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17402 + TRANSFORM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('transform'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17403 + V_HANGING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('v-hanging'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17404 + VALUETYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('valuetype'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17405 + POINTSATZ = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('pointsatz', 'pointsAtZ'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17406 + POINTSATX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('pointsatx', 'pointsAtX'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17407 + POINTSATY = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('pointsaty', 'pointsAtY'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17408 + PLAYCOUNT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('playcount'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17409 + SYMMETRIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('symmetric'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17410 + SCROLLING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scrolling'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17411 + REPEATDUR = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('repeatdur', 'repeatDur'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17412 + SELECTION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('selection'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17413 + SEPARATOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('separator'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17414 + XML_SPACE = $AttributeName(new AttributeName(), XML_NS, COLONIFIED_LOCAL('xml:space', 'space'), XML_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17415 + AUTOSUBMIT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('autosubmit'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17416 + ALPHABETIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alphabetic'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17417 + ACTIONTYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('actiontype'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17418 + ACCUMULATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accumulate'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17419 + ARIA_LEVEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-level'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17420 + COLUMNSPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnspan'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17421 + CAP_HEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cap-height'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17422 + BACKGROUND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('background'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17423 + GLYPH_NAME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('glyph-name'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17424 + GROUPALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('groupalign'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17425 + FONTFAMILY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fontfamily'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17426 + FONTWEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fontweight'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17427 + FONT_STYLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-style'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17428 + KEYSPLINES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('keysplines', 'keySplines'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17429 + HTTP_EQUIV = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('http-equiv'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17430 + ONACTIVATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onactivate'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17431 + OCCURRENCE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('occurrence'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17432 + IRRELEVANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('irrelevant'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17433 + ONDBLCLICK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondblclick'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17434 + ONDRAGDROP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragdrop'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17435 + ONKEYPRESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onkeypress'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17436 + ONROWENTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrowenter'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17437 + ONDRAGOVER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragover'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17438 + ONFOCUSOUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfocusout'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17439 + ONMOUSEOUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseout'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17440 + NUMOCTAVES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('numoctaves', 'numOctaves'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17441 + MARKER_MID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marker-mid'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17442 + MARKER_END = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marker-end'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17443 + TEXTLENGTH = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('textlength', 'textLength'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17444 + VISIBILITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('visibility'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17445 + VIEWTARGET = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('viewtarget', 'viewTarget'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17446 + VERT_ADV_Y = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vert-adv-y'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17447 + PATHLENGTH = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('pathlength', 'pathLength'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17448 + REPEAT_MAX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat-max'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17449 + RADIOGROUP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('radiogroup'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17450 + STOP_COLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stop-color'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17451 + SEPARATORS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('separators'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17452 + REPEAT_MIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat-min'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17453 + ROWSPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rowspacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17454 + ZOOMANDPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('zoomandpan', 'zoomAndPan'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17455 + XLINK_TYPE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:type', 'type'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17456 + XLINK_ROLE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:role', 'role'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17457 + XLINK_HREF = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:href', 'href'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17458 + XLINK_SHOW = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:show', 'show'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17459 + ACCENTUNDER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accentunder'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17460 + ARIA_SECRET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-secret'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17461 + ARIA_ATOMIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-atomic'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17462 + ARIA_HIDDEN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-hidden'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17463 + ARIA_FLOWTO = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-flowto'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17464 + ARABIC_FORM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('arabic-form'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17465 + CELLPADDING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cellpadding'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17466 + CELLSPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cellspacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17467 + COLUMNWIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnwidth'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17468 + COLUMNALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnalign'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17469 + COLUMNLINES = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnlines'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17470 + CONTEXTMENU = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('contextmenu'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17471 + BASEPROFILE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('baseprofile', 'baseProfile'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17472 + FONT_FAMILY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-family'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17473 + FRAMEBORDER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('frameborder'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17474 + FILTERUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('filterunits', 'filterUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17475 + FLOOD_COLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('flood-color'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17476 + FONT_WEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-weight'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17477 + HORIZ_ADV_X = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('horiz-adv-x'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17478 + ONDRAGLEAVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragleave'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17479 + ONMOUSEMOVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmousemove'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17480 + ORIENTATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('orientation'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17481 + ONMOUSEDOWN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmousedown'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17482 + ONMOUSEOVER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseover'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17483 + ONDRAGENTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragenter'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17484 + IDEOGRAPHIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ideographic'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17485 + ONBEFORECUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforecut'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17486 + ONFORMINPUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onforminput'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17487 + ONDRAGSTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragstart'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17488 + ONMOVESTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmovestart'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17489 + MARKERUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('markerunits', 'markerUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17490 + MATHVARIANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathvariant'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17491 + MARGINWIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marginwidth'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17492 + MARKERWIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('markerwidth', 'markerWidth'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17493 + TEXT_ANCHOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('text-anchor'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17494 + TABLEVALUES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('tablevalues', 'tableValues'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17495 + SCRIPTLEVEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scriptlevel'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17496 + REPEATCOUNT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('repeatcount', 'repeatCount'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17497 + STITCHTILES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('stitchtiles', 'stitchTiles'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17498 + STARTOFFSET = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('startoffset', 'startOffset'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17499 + SCROLLDELAY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scrolldelay'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17500 + XMLNS_XLINK = $AttributeName(new AttributeName(), XMLNS_NS, COLONIFIED_LOCAL('xmlns:xlink', 'xlink'), XMLNS_PREFIX, initValues(_3Z_classLit, 0, -1, [false, false, false, false]), true);
10.17501 + XLINK_TITLE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:title', 'title'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17502 + ARIA_INVALID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-invalid'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17503 + ARIA_PRESSED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-pressed'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17504 + ARIA_CHECKED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-checked'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17505 + AUTOCOMPLETE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('autocomplete'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17506 + ARIA_SETSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-setsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17507 + ARIA_CHANNEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-channel'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17508 + EQUALCOLUMNS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('equalcolumns'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17509 + DISPLAYSTYLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('displaystyle'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17510 + DATAFORMATAS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dataformatas'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17511 + FILL_OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fill-opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17512 + FONT_VARIANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-variant'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17513 + FONT_STRETCH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-stretch'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17514 + FRAMESPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('framespacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17515 + KERNELMATRIX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('kernelmatrix', 'kernelMatrix'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17516 + ONDEACTIVATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondeactivate'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17517 + ONROWSDELETE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrowsdelete'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17518 + ONMOUSELEAVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseleave'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17519 + ONFORMCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onformchange'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17520 + ONCELLCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncellchange'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17521 + ONMOUSEWHEEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmousewheel'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17522 + ONMOUSEENTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseenter'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17523 + ONAFTERPRINT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onafterprint'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17524 + ONBEFORECOPY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforecopy'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17525 + MARGINHEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marginheight'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17526 + MARKERHEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('markerheight', 'markerHeight'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17527 + MARKER_START = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marker-start'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17528 + MATHEMATICAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathematical'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17529 + LENGTHADJUST = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('lengthadjust', 'lengthAdjust'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17530 + UNSELECTABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('unselectable'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17531 + UNICODE_BIDI = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('unicode-bidi'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17532 + UNITS_PER_EM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('units-per-em'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17533 + WORD_SPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('word-spacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17534 + WRITING_MODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('writing-mode'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17535 + V_ALPHABETIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('v-alphabetic'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17536 + PATTERNUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('patternunits', 'patternUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17537 + SPREADMETHOD = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('spreadmethod', 'spreadMethod'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17538 + SURFACESCALE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('surfacescale', 'surfaceScale'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17539 + STROKE_WIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-width'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17540 + REPEAT_START = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat-start'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17541 + STDDEVIATION = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('stddeviation', 'stdDeviation'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17542 + STOP_OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stop-opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17543 + ARIA_CONTROLS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-controls'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17544 + ARIA_HASPOPUP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-haspopup'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17545 + ACCENT_HEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accent-height'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17546 + ARIA_VALUENOW = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-valuenow'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17547 + ARIA_RELEVANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-relevant'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17548 + ARIA_POSINSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-posinset'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17549 + ARIA_VALUEMAX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-valuemax'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17550 + ARIA_READONLY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-readonly'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17551 + ARIA_SELECTED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-selected'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17552 + ARIA_REQUIRED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-required'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17553 + ARIA_EXPANDED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-expanded'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17554 + ARIA_DISABLED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-disabled'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17555 + ATTRIBUTETYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('attributetype', 'attributeType'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17556 + ATTRIBUTENAME = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('attributename', 'attributeName'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17557 + ARIA_DATATYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-datatype'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17558 + ARIA_VALUEMIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-valuemin'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17559 + BASEFREQUENCY = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('basefrequency', 'baseFrequency'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17560 + COLUMNSPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnspacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17561 + COLOR_PROFILE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color-profile'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17562 + CLIPPATHUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('clippathunits', 'clipPathUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17563 + DEFINITIONURL = $AttributeName(new AttributeName(), ALL_NO_NS, (arr_32 = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0) , arr_32[0] = 'definitionurl' , arr_32[1] = 'definitionURL' , arr_32[2] = 'definitionurl' , arr_32[3] = 'definitionurl' , arr_32), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17564 + GRADIENTUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('gradientunits', 'gradientUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17565 + FLOOD_OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('flood-opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17566 + ONAFTERUPDATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onafterupdate'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17567 + ONERRORUPDATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onerrorupdate'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17568 + ONBEFOREPASTE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforepaste'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17569 + ONLOSECAPTURE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onlosecapture'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17570 + ONCONTEXTMENU = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncontextmenu'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17571 + ONSELECTSTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onselectstart'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17572 + ONBEFOREPRINT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeprint'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17573 + MOVABLELIMITS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('movablelimits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17574 + LINETHICKNESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('linethickness'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17575 + UNICODE_RANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('unicode-range'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17576 + THINMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('thinmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17577 + VERT_ORIGIN_X = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vert-origin-x'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17578 + VERT_ORIGIN_Y = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vert-origin-y'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17579 + V_IDEOGRAPHIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('v-ideographic'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17580 + PRESERVEALPHA = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('preservealpha', 'preserveAlpha'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17581 + SCRIPTMINSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scriptminsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17582 + SPECIFICATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('specification'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17583 + XLINK_ACTUATE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:actuate', 'actuate'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17584 + XLINK_ARCROLE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:arcrole', 'arcrole'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
10.17585 + ACCEPT_CHARSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accept-charset'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17586 + ALIGNMENTSCOPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alignmentscope'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17587 + ARIA_MULTILINE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-multiline'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17588 + BASELINE_SHIFT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('baseline-shift'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17589 + HORIZ_ORIGIN_X = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('horiz-origin-x'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17590 + HORIZ_ORIGIN_Y = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('horiz-origin-y'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17591 + ONBEFOREUPDATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeupdate'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17592 + ONFILTERCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfilterchange'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17593 + ONROWSINSERTED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrowsinserted'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17594 + ONBEFOREUNLOAD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeunload'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17595 + MATHBACKGROUND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathbackground'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17596 + LETTER_SPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('letter-spacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17597 + LIGHTING_COLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('lighting-color'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17598 + THICKMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('thickmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17599 + TEXT_RENDERING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('text-rendering'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17600 + V_MATHEMATICAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('v-mathematical'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17601 + POINTER_EVENTS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('pointer-events'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17602 + PRIMITIVEUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('primitiveunits', 'primitiveUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17603 + SYSTEMLANGUAGE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('systemlanguage', 'systemLanguage'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17604 + STROKE_LINECAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-linecap'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17605 + SUBSCRIPTSHIFT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('subscriptshift'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17606 + STROKE_OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17607 + ARIA_DROPEFFECT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-dropeffect'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17608 + ARIA_LABELLEDBY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-labelledby'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17609 + ARIA_TEMPLATEID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-templateid'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17610 + COLOR_RENDERING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color-rendering'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17611 + CONTENTEDITABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('contenteditable'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17612 + DIFFUSECONSTANT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('diffuseconstant', 'diffuseConstant'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17613 + ONDATAAVAILABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondataavailable'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17614 + ONCONTROLSELECT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncontrolselect'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17615 + IMAGE_RENDERING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('image-rendering'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17616 + MEDIUMMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mediummathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17617 + TEXT_DECORATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('text-decoration'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17618 + SHAPE_RENDERING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('shape-rendering'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17619 + STROKE_LINEJOIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-linejoin'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17620 + REPEAT_TEMPLATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat-template'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17621 + ARIA_DESCRIBEDBY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-describedby'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17622 + CONTENTSTYLETYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('contentstyletype', 'contentStyleType'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17623 + FONT_SIZE_ADJUST = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-size-adjust'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17624 + KERNELUNITLENGTH = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('kernelunitlength', 'kernelUnitLength'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17625 + ONBEFOREACTIVATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeactivate'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17626 + ONPROPERTYCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onpropertychange'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17627 + ONDATASETCHANGED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondatasetchanged'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17628 + MASKCONTENTUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('maskcontentunits', 'maskContentUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17629 + PATTERNTRANSFORM = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('patterntransform', 'patternTransform'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17630 + REQUIREDFEATURES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('requiredfeatures', 'requiredFeatures'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17631 + RENDERING_INTENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rendering-intent'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17632 + SPECULAREXPONENT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('specularexponent', 'specularExponent'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17633 + SPECULARCONSTANT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('specularconstant', 'specularConstant'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17634 + SUPERSCRIPTSHIFT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('superscriptshift'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17635 + STROKE_DASHARRAY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-dasharray'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17636 + XCHANNELSELECTOR = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('xchannelselector', 'xChannelSelector'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17637 + YCHANNELSELECTOR = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('ychannelselector', 'yChannelSelector'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17638 + ARIA_AUTOCOMPLETE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-autocomplete'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17639 + CONTENTSCRIPTTYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('contentscripttype', 'contentScriptType'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17640 + ENABLE_BACKGROUND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('enable-background'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17641 + DOMINANT_BASELINE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dominant-baseline'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17642 + GRADIENTTRANSFORM = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('gradienttransform', 'gradientTransform'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17643 + ONBEFORDEACTIVATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbefordeactivate'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17644 + ONDATASETCOMPLETE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondatasetcomplete'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17645 + OVERLINE_POSITION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('overline-position'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17646 + ONBEFOREEDITFOCUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeeditfocus'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17647 + LIMITINGCONEANGLE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('limitingconeangle', 'limitingConeAngle'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17648 + VERYTHINMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('verythinmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17649 + STROKE_DASHOFFSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-dashoffset'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17650 + STROKE_MITERLIMIT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-miterlimit'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17651 + ALIGNMENT_BASELINE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alignment-baseline'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17652 + ONREADYSTATECHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onreadystatechange'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17653 + OVERLINE_THICKNESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('overline-thickness'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17654 + UNDERLINE_POSITION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('underline-position'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17655 + VERYTHICKMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('verythickmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17656 + REQUIREDEXTENSIONS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('requiredextensions', 'requiredExtensions'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17657 + COLOR_INTERPOLATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color-interpolation'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17658 + UNDERLINE_THICKNESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('underline-thickness'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17659 + PRESERVEASPECTRATIO = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('preserveaspectratio', 'preserveAspectRatio'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17660 + PATTERNCONTENTUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('patterncontentunits', 'patternContentUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17661 + ARIA_MULTISELECTABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-multiselectable'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17662 + SCRIPTSIZEMULTIPLIER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scriptsizemultiplier'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17663 + ARIA_ACTIVEDESCENDANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-activedescendant'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17664 + VERYVERYTHINMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('veryverythinmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17665 + VERYVERYTHICKMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('veryverythickmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17666 + STRIKETHROUGH_POSITION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('strikethrough-position'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17667 + STRIKETHROUGH_THICKNESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('strikethrough-thickness'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17668 + EXTERNALRESOURCESREQUIRED = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('externalresourcesrequired', 'externalResourcesRequired'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17669 + GLYPH_ORIENTATION_VERTICAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('glyph-orientation-vertical'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17670 + COLOR_INTERPOLATION_FILTERS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color-interpolation-filters'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17671 + GLYPH_ORIENTATION_HORIZONTAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('glyph-orientation-horizontal'), ALL_NO_PREFIX, ALL_NCNAME, false);
10.17672 + ATTRIBUTE_NAMES = initValues(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, [D, K, R, X, Y, Z, BY, CX, CY, DX, DY, G2, G1, FX, FY, K4, K2, K3, K1, ID, IN, U2, U1, RT, RX, RY, TO, Y2, Y1, X1, X2, ALT, DIR, DUR, END, FOR, IN2, MAX, MIN, LOW, REL, REV, SRC, AXIS, ABBR, BBOX, CITE, CODE, BIAS, COLS, CLIP, CHAR, BASE, EDGE, DATA, FILL, FROM, FORM, FACE, HIGH, HREF, OPEN, ICON, NAME, MODE, MASK, LINK, LANG, LIST, TYPE, WHEN, WRAP, TEXT, PATH, PING, REFX, REFY, SIZE, SEED, ROWS, SPAN, STEP, ROLE, XREF, ASYNC, ALINK, ALIGN, CLOSE, COLOR, CLASS, CLEAR, BEGIN, DEPTH, DEFER, FENCE, FRAME, ISMAP, ONEND, INDEX, ORDER, OTHER, ONCUT, NARGS, MEDIA, LABEL, LOCAL, WIDTH, TITLE, VLINK, VALUE, SLOPE, SHAPE, SCOPE, SCALE, SPEED, STYLE, RULES, STEMH, STEMV, START, XMLNS, ACCEPT, ACCENT, ASCENT, ACTIVE, ALTIMG, ACTION, BORDER, CURSOR, COORDS, FILTER, FORMAT, HIDDEN, HSPACE, HEIGHT, ONMOVE, ONLOAD, ONDRAG, ORIGIN, ONZOOM, ONHELP, ONSTOP, ONDROP, ONBLUR, OBJECT, OFFSET, ORIENT, ONCOPY, NOWRAP, NOHREF, MACROS, METHOD, LOWSRC, LSPACE, LQUOTE, USEMAP, WIDTHS, TARGET, VALUES, VALIGN, VSPACE, POSTER, POINTS, PROMPT, SCOPED, STRING, SCHEME, STROKE, RADIUS, RESULT, REPEAT, RSPACE, ROTATE, RQUOTE, ALTTEXT, ARCHIVE, AZIMUTH, CLOSURE, CHECKED, CLASSID, CHAROFF, BGCOLOR, COLSPAN, CHARSET, COMPACT, CONTENT, ENCTYPE, DATASRC, DATAFLD, DECLARE, DISPLAY, DIVISOR, DEFAULT, DESCENT, KERNING, HANGING, HEADERS, ONPASTE, ONCLICK, OPTIMUM, ONBEGIN, ONKEYUP, ONFOCUS, ONERROR, ONINPUT, ONABORT, ONSTART, ONRESET, OPACITY, NOSHADE, MINSIZE, MAXSIZE, LOOPEND, LARGEOP, UNICODE, TARGETX, TARGETY, VIEWBOX, VERSION, PATTERN, PROFILE, SPACING, RESTART, ROWSPAN, SANDBOX, SUMMARY, STANDBY, REPLACE, AUTOPLAY, ADDITIVE, CALCMODE, CODETYPE, CODEBASE, CONTROLS, BEVELLED, BASELINE, EXPONENT, EDGEMODE, ENCODING, GLYPHREF, DATETIME, DISABLED, FONTSIZE, KEYTIMES, PANOSE_1, HREFLANG, ONRESIZE, ONCHANGE, ONBOUNCE, ONUNLOAD, ONFINISH, ONSCROLL, OPERATOR, OVERFLOW, ONSUBMIT, ONREPEAT, ONSELECT, NOTATION, NORESIZE, MANIFEST, MATHSIZE, MULTIPLE, LONGDESC, LANGUAGE, TEMPLATE, TABINDEX, READONLY, SELECTED, ROWLINES, SEAMLESS, ROWALIGN, STRETCHY, REQUIRED, XML_BASE, XML_LANG, X_HEIGHT, ARIA_OWNS, AUTOFOCUS, ARIA_SORT, ACCESSKEY, ARIA_BUSY, ARIA_GRAB, AMPLITUDE, ARIA_LIVE, CLIP_RULE, CLIP_PATH, EQUALROWS, ELEVATION, DIRECTION, DRAGGABLE, FILTERRES, FILL_RULE, FONTSTYLE, FONT_SIZE, KEYPOINTS, HIDEFOCUS, ONMESSAGE, INTERCEPT, ONDRAGEND, ONMOVEEND, ONINVALID, ONKEYDOWN, ONFOCUSIN, ONMOUSEUP, INPUTMODE, ONROWEXIT, MATHCOLOR, MASKUNITS, MAXLENGTH, LINEBREAK, LOOPSTART, TRANSFORM, V_HANGING, VALUETYPE, POINTSATZ, POINTSATX, POINTSATY, PLAYCOUNT, SYMMETRIC, SCROLLING, REPEATDUR, SELECTION, SEPARATOR, XML_SPACE, AUTOSUBMIT, ALPHABETIC, ACTIONTYPE, ACCUMULATE, ARIA_LEVEL, COLUMNSPAN, CAP_HEIGHT, BACKGROUND, GLYPH_NAME, GROUPALIGN, FONTFAMILY, FONTWEIGHT, FONT_STYLE, KEYSPLINES, HTTP_EQUIV, ONACTIVATE, OCCURRENCE, IRRELEVANT, ONDBLCLICK, ONDRAGDROP, ONKEYPRESS, ONROWENTER, ONDRAGOVER, ONFOCUSOUT, ONMOUSEOUT, NUMOCTAVES, MARKER_MID, MARKER_END, TEXTLENGTH, VISIBILITY, VIEWTARGET, VERT_ADV_Y, PATHLENGTH, REPEAT_MAX, RADIOGROUP, STOP_COLOR, SEPARATORS, REPEAT_MIN, ROWSPACING, ZOOMANDPAN, XLINK_TYPE, XLINK_ROLE, XLINK_HREF, XLINK_SHOW, ACCENTUNDER, ARIA_SECRET, ARIA_ATOMIC, ARIA_HIDDEN, ARIA_FLOWTO, ARABIC_FORM, CELLPADDING, CELLSPACING, COLUMNWIDTH, COLUMNALIGN, COLUMNLINES, CONTEXTMENU, BASEPROFILE, FONT_FAMILY, FRAMEBORDER, FILTERUNITS, FLOOD_COLOR, FONT_WEIGHT, HORIZ_ADV_X, ONDRAGLEAVE, ONMOUSEMOVE, ORIENTATION, ONMOUSEDOWN, ONMOUSEOVER, ONDRAGENTER, IDEOGRAPHIC, ONBEFORECUT, ONFORMINPUT, ONDRAGSTART, ONMOVESTART, MARKERUNITS, MATHVARIANT, MARGINWIDTH, MARKERWIDTH, TEXT_ANCHOR, TABLEVALUES, SCRIPTLEVEL, REPEATCOUNT, STITCHTILES, STARTOFFSET, SCROLLDELAY, XMLNS_XLINK, XLINK_TITLE, ARIA_INVALID, ARIA_PRESSED, ARIA_CHECKED, AUTOCOMPLETE, ARIA_SETSIZE, ARIA_CHANNEL, EQUALCOLUMNS, DISPLAYSTYLE, DATAFORMATAS, FILL_OPACITY, FONT_VARIANT, FONT_STRETCH, FRAMESPACING, KERNELMATRIX, ONDEACTIVATE, ONROWSDELETE, ONMOUSELEAVE, ONFORMCHANGE, ONCELLCHANGE, ONMOUSEWHEEL, ONMOUSEENTER, ONAFTERPRINT, ONBEFORECOPY, MARGINHEIGHT, MARKERHEIGHT, MARKER_START, MATHEMATICAL, LENGTHADJUST, UNSELECTABLE, UNICODE_BIDI, UNITS_PER_EM, WORD_SPACING, WRITING_MODE, V_ALPHABETIC, PATTERNUNITS, SPREADMETHOD, SURFACESCALE, STROKE_WIDTH, REPEAT_START, STDDEVIATION, STOP_OPACITY, ARIA_CONTROLS, ARIA_HASPOPUP, ACCENT_HEIGHT, ARIA_VALUENOW, ARIA_RELEVANT, ARIA_POSINSET, ARIA_VALUEMAX, ARIA_READONLY, ARIA_SELECTED, ARIA_REQUIRED, ARIA_EXPANDED, ARIA_DISABLED, ATTRIBUTETYPE, ATTRIBUTENAME, ARIA_DATATYPE, ARIA_VALUEMIN, BASEFREQUENCY, COLUMNSPACING, COLOR_PROFILE, CLIPPATHUNITS, DEFINITIONURL, GRADIENTUNITS, FLOOD_OPACITY, ONAFTERUPDATE, ONERRORUPDATE, ONBEFOREPASTE, ONLOSECAPTURE, ONCONTEXTMENU, ONSELECTSTART, ONBEFOREPRINT, MOVABLELIMITS, LINETHICKNESS, UNICODE_RANGE, THINMATHSPACE, VERT_ORIGIN_X, VERT_ORIGIN_Y, V_IDEOGRAPHIC, PRESERVEALPHA, SCRIPTMINSIZE, SPECIFICATION, XLINK_ACTUATE, XLINK_ARCROLE, ACCEPT_CHARSET, ALIGNMENTSCOPE, ARIA_MULTILINE, BASELINE_SHIFT, HORIZ_ORIGIN_X, HORIZ_ORIGIN_Y, ONBEFOREUPDATE, ONFILTERCHANGE, ONROWSINSERTED, ONBEFOREUNLOAD, MATHBACKGROUND, LETTER_SPACING, LIGHTING_COLOR, THICKMATHSPACE, TEXT_RENDERING, V_MATHEMATICAL, POINTER_EVENTS, PRIMITIVEUNITS, SYSTEMLANGUAGE, STROKE_LINECAP, SUBSCRIPTSHIFT, STROKE_OPACITY, ARIA_DROPEFFECT, ARIA_LABELLEDBY, ARIA_TEMPLATEID, COLOR_RENDERING, CONTENTEDITABLE, DIFFUSECONSTANT, ONDATAAVAILABLE, ONCONTROLSELECT, IMAGE_RENDERING, MEDIUMMATHSPACE, TEXT_DECORATION, SHAPE_RENDERING, STROKE_LINEJOIN, REPEAT_TEMPLATE, ARIA_DESCRIBEDBY, CONTENTSTYLETYPE, FONT_SIZE_ADJUST, KERNELUNITLENGTH, ONBEFOREACTIVATE, ONPROPERTYCHANGE, ONDATASETCHANGED, MASKCONTENTUNITS, PATTERNTRANSFORM, REQUIREDFEATURES, RENDERING_INTENT, SPECULAREXPONENT, SPECULARCONSTANT, SUPERSCRIPTSHIFT, STROKE_DASHARRAY, XCHANNELSELECTOR, YCHANNELSELECTOR, ARIA_AUTOCOMPLETE, CONTENTSCRIPTTYPE, ENABLE_BACKGROUND, DOMINANT_BASELINE, GRADIENTTRANSFORM, ONBEFORDEACTIVATE, ONDATASETCOMPLETE, OVERLINE_POSITION, ONBEFOREEDITFOCUS, LIMITINGCONEANGLE, VERYTHINMATHSPACE, STROKE_DASHOFFSET, STROKE_MITERLIMIT, ALIGNMENT_BASELINE, ONREADYSTATECHANGE, OVERLINE_THICKNESS, UNDERLINE_POSITION, VERYTHICKMATHSPACE, REQUIREDEXTENSIONS, COLOR_INTERPOLATION, UNDERLINE_THICKNESS, PRESERVEASPECTRATIO, PATTERNCONTENTUNITS, ARIA_MULTISELECTABLE, SCRIPTSIZEMULTIPLIER, ARIA_ACTIVEDESCENDANT, VERYVERYTHINMATHSPACE, VERYVERYTHICKMATHSPACE, STRIKETHROUGH_POSITION, STRIKETHROUGH_THICKNESS, EXTERNALRESOURCESREQUIRED, GLYPH_ORIENTATION_VERTICAL, COLOR_INTERPOLATION_FILTERS, GLYPH_ORIENTATION_HORIZONTAL]);
10.17673 + ATTRIBUTE_HASHES = initValues(_3I_classLit, 0, -1, [1153, 1383, 1601, 1793, 1827, 1857, 68600, 69146, 69177, 70237, 70270, 71572, 71669, 72415, 72444, 74846, 74904, 74943, 75001, 75276, 75590, 84742, 84839, 85575, 85963, 85992, 87204, 88074, 88171, 89130, 89163, 3207892, 3283895, 3284791, 3338752, 3358197, 3369562, 3539124, 3562402, 3574260, 3670335, 3696933, 3721879, 135280021, 135346322, 136317019, 136475749, 136548517, 136652214, 136884919, 136902418, 136942992, 137292068, 139120259, 139785574, 142250603, 142314056, 142331176, 142519584, 144752417, 145106895, 146147200, 146765926, 148805544, 149655723, 149809441, 150018784, 150445028, 150923321, 152528754, 152536216, 152647366, 152962785, 155219321, 155654904, 157317483, 157350248, 157437941, 157447478, 157604838, 157685404, 157894402, 158315188, 166078431, 169409980, 169700259, 169856932, 170007032, 170409695, 170466488, 170513710, 170608367, 173028944, 173896963, 176090625, 176129212, 179390001, 179489057, 179627464, 179840468, 179849042, 180004216, 181779081, 183027151, 183645319, 183698797, 185922012, 185997252, 188312483, 188675799, 190977533, 190992569, 191006194, 191033518, 191038774, 191096249, 191166163, 191194426, 191522106, 191568039, 200104642, 202506661, 202537381, 202602917, 203070590, 203120766, 203389054, 203690071, 203971238, 203986524, 209040857, 209125756, 212055489, 212322418, 212746849, 213002877, 213055164, 213088023, 213259873, 213273386, 213435118, 213437318, 213438231, 213493071, 213532268, 213542834, 213584431, 213659891, 215285828, 215880731, 216112976, 216684637, 217369699, 217565298, 217576549, 218186795, 219743185, 220082234, 221623802, 221986406, 222283890, 223089542, 223138630, 223311265, 224547358, 224587256, 224589550, 224655650, 224785518, 224810917, 224813302, 225429618, 225432950, 225440869, 236107233, 236709921, 236838947, 237117095, 237143271, 237172455, 237209953, 237354143, 237372743, 237668065, 237703073, 237714273, 239743521, 240512803, 240522627, 240560417, 240656513, 241015715, 241062755, 241065383, 243523041, 245865199, 246261793, 246556195, 246774817, 246923491, 246928419, 246981667, 247014847, 247058369, 247112833, 247118177, 247119137, 247128739, 247316903, 249533729, 250235623, 250269543, 251083937, 251402351, 252339047, 253260911, 253293679, 254844367, 255547879, 256077281, 256345377, 258124199, 258354465, 258605063, 258744193, 258845603, 258856961, 258926689, 269869248, 270174334, 270709417, 270778994, 270781796, 271102503, 271478858, 271490090, 272870654, 273335275, 273369140, 273924313, 274108530, 274116736, 276818662, 277476156, 279156579, 279349675, 280108533, 280128712, 280132869, 280162403, 280280292, 280413430, 280506130, 280677397, 280678580, 280686710, 280689066, 282736758, 283110901, 283275116, 283823226, 283890012, 284479340, 284606461, 286700477, 286798916, 291557706, 291665349, 291804100, 292138018, 292166446, 292418738, 292451039, 300298041, 300374839, 300597935, 303073389, 303083839, 303266673, 303354997, 303430688, 303576261, 303724281, 303819694, 304242723, 304382625, 306247792, 307227811, 307468786, 307724489, 309671175, 310252031, 310358241, 310373094, 311015256, 313357609, 313683893, 313701861, 313706996, 313707317, 313710350, 314027746, 314038181, 314091299, 314205627, 314233813, 316741830, 316797986, 317486755, 317794164, 318721061, 320076137, 322657125, 322887778, 323506876, 323572412, 323605180, 323938869, 325060058, 325320188, 325398738, 325541490, 325671619, 333868843, 336806130, 337212108, 337282686, 337285434, 337585223, 338036037, 338298087, 338566051, 340943551, 341190970, 342995704, 343352124, 343912673, 344585053, 346977248, 347218098, 347262163, 347278576, 347438191, 347655959, 347684788, 347726430, 347727772, 347776035, 347776629, 349500753, 350880161, 350887073, 353384123, 355496998, 355906922, 355979793, 356545959, 358637867, 358905016, 359164318, 359247286, 359350571, 359579447, 365560330, 367399355, 367420285, 367510727, 368013212, 370234760, 370353345, 370710317, 371074566, 371122285, 371194213, 371448425, 371448430, 371545055, 371596922, 371758751, 371964792, 372151328, 376550136, 376710172, 376795771, 376826271, 376906556, 380514830, 380774774, 380775037, 381030322, 381136500, 381281631, 381282269, 381285504, 381330595, 381331422, 381335911, 381336484, 383907298, 383917408, 384595009, 384595013, 387799894, 387823201, 392581647, 392584937, 392742684, 392906485, 393003349, 400644707, 400973830, 404428547, 404432113, 404432865, 404469244, 404478897, 404694860, 406887479, 408294949, 408789955, 410022510, 410467324, 410586448, 410945965, 411845275, 414327152, 414327932, 414329781, 414346257, 414346439, 414639928, 414835998, 414894517, 414986533, 417465377, 417465381, 417492216, 418259232, 419310946, 420103495, 420242342, 420380455, 420658662, 420717432, 423183880, 424539259, 425929170, 425972964, 426050649, 426126450, 426142833, 426607922, 437289840, 437347469, 437412335, 437423943, 437455540, 437462252, 437597991, 437617485, 437986305, 437986507, 437986828, 437987072, 438015591, 438034813, 438038966, 438179623, 438347971, 438483573, 438547062, 438895551, 441592676, 442032555, 443548979, 447881379, 447881655, 447881895, 447887844, 448416189, 448445746, 448449012, 450942191, 452816744, 453668677, 454434495, 456610076, 456642844, 456738709, 457544600, 459451897, 459680944, 468058810, 468083581, 470964084, 471470955, 471567278, 472267822, 481177859, 481210627, 481435874, 481455115, 481485378, 481490218, 485105638, 486005878, 486383494, 487988916, 488103783, 490661867, 491574090, 491578272, 493041952, 493441205, 493582844, 493716979, 504577572, 504740359, 505091638, 505592418, 505656212, 509516275, 514998531, 515571132, 515594682, 518712698, 521362273, 526592419, 526807354, 527348842, 538294791, 539214049, 544689535, 545535009, 548544752, 548563346, 548595116, 551679010, 558034099, 560329411, 560356209, 560671018, 560671152, 560692590, 560845442, 569212097, 569474241, 572252718, 572768481, 575326764, 576174758, 576190819, 582099184, 582099438, 582372519, 582558889, 586552164, 591325418, 594231990, 594243961, 605711268, 615672071, 616086845, 621792370, 624879850, 627432831, 640040548, 654392808, 658675477, 659420283, 672891587, 694768102, 705890982, 725543146, 759097578, 761686526, 795383908, 843809551, 878105336, 908643300, 945213471]);
10.17674 +}
10.17675 +
10.17676 +function $AttributeName_0(this$static, uri, local, prefix, ncname, xmlns){
10.17677 + $clinit_87();
10.17678 + this$static.uri = uri;
10.17679 + this$static.local = local;
10.17680 + COMPUTE_QNAME(local, prefix);
10.17681 + this$static.ncname = ncname;
10.17682 + this$static.xmlns = xmlns;
10.17683 + return this$static;
10.17684 +}
10.17685 +
10.17686 +function $AttributeName(this$static, uri, local, prefix, ncname, xmlns){
10.17687 + $clinit_87();
10.17688 + this$static.uri = uri;
10.17689 + this$static.local = local;
10.17690 + COMPUTE_QNAME(local, prefix);
10.17691 + this$static.ncname = ncname;
10.17692 + this$static.xmlns = xmlns;
10.17693 + return this$static;
10.17694 +}
10.17695 +
10.17696 +function $isBoolean(this$static){
10.17697 + return this$static == ACTIVE || this$static == ASYNC || this$static == AUTOFOCUS || this$static == AUTOSUBMIT || this$static == CHECKED || this$static == COMPACT || this$static == DECLARE || this$static == DEFAULT || this$static == DEFER || this$static == DISABLED || this$static == ISMAP || this$static == MULTIPLE || this$static == NOHREF || this$static == NORESIZE || this$static == NOSHADE || this$static == NOWRAP || this$static == READONLY || this$static == REQUIRED || this$static == SELECTED;
10.17698 +}
10.17699 +
10.17700 +function $isCaseFolded(this$static){
10.17701 + return this$static == ACTIVE || this$static == ALIGN || this$static == ASYNC || this$static == AUTOCOMPLETE || this$static == AUTOFOCUS || this$static == AUTOSUBMIT || this$static == CHECKED || this$static == CLEAR || this$static == COMPACT || this$static == DATAFORMATAS || this$static == DECLARE || this$static == DEFAULT || this$static == DEFER || this$static == DIR || this$static == DISABLED || this$static == ENCTYPE || this$static == FRAME || this$static == ISMAP || this$static == METHOD || this$static == MULTIPLE || this$static == NOHREF || this$static == NORESIZE || this$static == NOSHADE || this$static == NOWRAP || this$static == READONLY || this$static == REPLACE || this$static == REQUIRED || this$static == RULES || this$static == SCOPE || this$static == SCROLLING || this$static == SELECTED || this$static == SHAPE || this$static == STEP || this$static == TYPE || this$static == VALIGN || this$static == VALUETYPE;
10.17702 +}
10.17703 +
10.17704 +function COLONIFIED_LOCAL(name, suffix){
10.17705 + var arr;
10.17706 + arr = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0);
10.17707 + arr[0] = name;
10.17708 + arr[1] = suffix;
10.17709 + arr[2] = suffix;
10.17710 + arr[3] = name;
10.17711 + return arr;
10.17712 +}
10.17713 +
10.17714 +function COMPUTE_QNAME(local, prefix){
10.17715 + var arr, i;
10.17716 + arr = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0);
10.17717 + for (i = 0; i < arr.length; ++i) {
10.17718 + if (prefix[i] == null) {
10.17719 + arr[i] = local[i];
10.17720 + }
10.17721 + else {
10.17722 + arr[i] = String(prefix[i] + ':' + local[i]);
10.17723 + }
10.17724 + }
10.17725 + return arr;
10.17726 +}
10.17727 +
10.17728 +function SAME_LOCAL(name){
10.17729 + var arr;
10.17730 + arr = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0);
10.17731 + arr[0] = name;
10.17732 + arr[1] = name;
10.17733 + arr[2] = name;
10.17734 + arr[3] = name;
10.17735 + return arr;
10.17736 +}
10.17737 +
10.17738 +function SVG_DIFFERENT(name, camel){
10.17739 + var arr;
10.17740 + arr = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0);
10.17741 + arr[0] = name;
10.17742 + arr[1] = name;
10.17743 + arr[2] = camel;
10.17744 + arr[3] = name;
10.17745 + return arr;
10.17746 +}
10.17747 +
10.17748 +function bufToHash(buf, len){
10.17749 + var hash, hash2, i, j;
10.17750 + hash2 = 0;
10.17751 + hash = len;
10.17752 + hash <<= 5;
10.17753 + hash += buf[0] - 96;
10.17754 + j = len;
10.17755 + for (i = 0; i < 4 && j > 0; ++i) {
10.17756 + --j;
10.17757 + hash <<= 5;
10.17758 + hash += buf[j] - 96;
10.17759 + hash2 <<= 6;
10.17760 + hash2 += buf[i] - 95;
10.17761 + }
10.17762 + return hash ^ hash2;
10.17763 +}
10.17764 +
10.17765 +function createAttributeName(name, checkNcName){
10.17766 + var ncName, xmlns;
10.17767 + ncName = true;
10.17768 + xmlns = name.indexOf('xmlns:') == 0;
10.17769 + if (checkNcName) {
10.17770 + if (xmlns) {
10.17771 + ncName = false;
10.17772 + }
10.17773 + else {
10.17774 + ncName = isNCName(name);
10.17775 + }
10.17776 + }
10.17777 + return $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL(name), ALL_NO_PREFIX, ncName?ALL_NCNAME:ALL_NO_NCNAME, xmlns);
10.17778 +}
10.17779 +
10.17780 +function getClass_49(){
10.17781 + return Lnu_validator_htmlparser_impl_AttributeName_2_classLit;
10.17782 +}
10.17783 +
10.17784 +function nameByBuffer(buf, offset, length, checkNcName){
10.17785 + var end, end_0;
10.17786 + $clinit_87();
10.17787 + var attributeName, hash, index, name;
10.17788 + hash = bufToHash(buf, length);
10.17789 + index = binarySearch(ATTRIBUTE_HASHES, hash);
10.17790 + if (index < 0) {
10.17791 + return createAttributeName(String((end = offset + length , __checkBounds(buf.length, offset, end) , __valueOf(buf, offset, end))), checkNcName);
10.17792 + }
10.17793 + else {
10.17794 + attributeName = ATTRIBUTE_NAMES[index];
10.17795 + name = attributeName.local[0];
10.17796 + if (!localEqualsBuffer(name, buf, offset, length)) {
10.17797 + return createAttributeName(String((end_0 = offset + length , __checkBounds(buf.length, offset, end_0) , __valueOf(buf, offset, end_0))), checkNcName);
10.17798 + }
10.17799 + return attributeName;
10.17800 + }
10.17801 +}
10.17802 +
10.17803 +function AttributeName(){
10.17804 +}
10.17805 +
10.17806 +_ = AttributeName.prototype = new Object_0();
10.17807 +_.getClass$ = getClass_49;
10.17808 +_.typeId$ = 36;
10.17809 +_.local = null;
10.17810 +_.ncname = null;
10.17811 +_.uri = null;
10.17812 +_.xmlns = false;
10.17813 +var ABBR, ACCENT, ACCENTUNDER, ACCENT_HEIGHT, ACCEPT, ACCEPT_CHARSET, ACCESSKEY, ACCUMULATE, ACTION, ACTIONTYPE, ACTIVE, ADDITIVE, ALIGN, ALIGNMENTSCOPE, ALIGNMENT_BASELINE, ALINK, ALL_NCNAME, ALL_NO_NCNAME, ALL_NO_NS, ALL_NO_PREFIX, ALPHABETIC, ALT, ALTIMG, ALTTEXT, AMPLITUDE, ARABIC_FORM, ARCHIVE, ARIA_ACTIVEDESCENDANT, ARIA_ATOMIC, ARIA_AUTOCOMPLETE, ARIA_BUSY, ARIA_CHANNEL, ARIA_CHECKED, ARIA_CONTROLS, ARIA_DATATYPE, ARIA_DESCRIBEDBY, ARIA_DISABLED, ARIA_DROPEFFECT, ARIA_EXPANDED, ARIA_FLOWTO, ARIA_GRAB, ARIA_HASPOPUP, ARIA_HIDDEN, ARIA_INVALID, ARIA_LABELLEDBY, ARIA_LEVEL, ARIA_LIVE, ARIA_MULTILINE, ARIA_MULTISELECTABLE, ARIA_OWNS, ARIA_POSINSET, ARIA_PRESSED, ARIA_READONLY, ARIA_RELEVANT, ARIA_REQUIRED, ARIA_SECRET, ARIA_SELECTED, ARIA_SETSIZE, ARIA_SORT, ARIA_TEMPLATEID, ARIA_VALUEMAX, ARIA_VALUEMIN, ARIA_VALUENOW, ASCENT, ASYNC, ATTRIBUTENAME, ATTRIBUTETYPE, ATTRIBUTE_HASHES, ATTRIBUTE_NAMES, AUTOCOMPLETE, AUTOFOCUS, AUTOPLAY, AUTOSUBMIT, AXIS, AZIMUTH, BACKGROUND, BASE, BASEFREQUENCY, BASELINE, BASELINE_SHIFT, BASEPROFILE, BBOX, BEGIN, BEVELLED, BGCOLOR, BIAS, BORDER, BY, CALCMODE, CAP_HEIGHT, CELLPADDING, CELLSPACING, CHAR, CHAROFF, CHARSET, CHECKED, CITE, CLASS, CLASSID, CLEAR, CLIP, CLIPPATHUNITS, CLIP_PATH, CLIP_RULE, CLOSE, CLOSURE, CODE, CODEBASE, CODETYPE, COLOR, COLOR_INTERPOLATION, COLOR_INTERPOLATION_FILTERS, COLOR_PROFILE, COLOR_RENDERING, COLS, COLSPAN, COLUMNALIGN, COLUMNLINES, COLUMNSPACING, COLUMNSPAN, COLUMNWIDTH, COMPACT, CONTENT, CONTENTEDITABLE, CONTENTSCRIPTTYPE, CONTENTSTYLETYPE, CONTEXTMENU, CONTROLS, COORDS, CURSOR, CX, CY, D, DATA, DATAFLD, DATAFORMATAS, DATASRC, DATETIME, DECLARE, DEFAULT, DEFER, DEFINITIONURL, DEPTH, DESCENT, DIFFUSECONSTANT, DIR, DIRECTION, DISABLED, DISPLAY, DISPLAYSTYLE, DIVISOR, DOMINANT_BASELINE, DRAGGABLE, DUR, DX, DY, EDGE, EDGEMODE, ELEVATION, ENABLE_BACKGROUND, ENCODING, ENCTYPE, END, EQUALCOLUMNS, EQUALROWS, EXPONENT, EXTERNALRESOURCESREQUIRED, FACE, FENCE, FILL, FILL_OPACITY, FILL_RULE, FILTER, FILTERRES, FILTERUNITS, FLOOD_COLOR, FLOOD_OPACITY, FONTFAMILY, FONTSIZE, FONTSTYLE, FONTWEIGHT, FONT_FAMILY, FONT_SIZE, FONT_SIZE_ADJUST, FONT_STRETCH, FONT_STYLE, FONT_VARIANT, FONT_WEIGHT, FOR, FORM, FORMAT, FRAME, FRAMEBORDER, FRAMESPACING, FROM, FX, FY, G1, G2, GLYPHREF, GLYPH_NAME, GLYPH_ORIENTATION_HORIZONTAL, GLYPH_ORIENTATION_VERTICAL, GRADIENTTRANSFORM, GRADIENTUNITS, GROUPALIGN, HANGING, HEADERS, HEIGHT, HIDDEN, HIDEFOCUS, HIGH, HORIZ_ADV_X, HORIZ_ORIGIN_X, HORIZ_ORIGIN_Y, HREF, HREFLANG, HSPACE, HTTP_EQUIV, ICON, ID, IDEOGRAPHIC, IMAGE_RENDERING, IN, IN2, INDEX, INPUTMODE, INTERCEPT, IRRELEVANT, ISMAP, K, K1, K2, K3, K4, KERNELMATRIX, KERNELUNITLENGTH, KERNING, KEYPOINTS, KEYSPLINES, KEYTIMES, LABEL, LANG, LANGUAGE, LANG_NS, LANG_PREFIX, LARGEOP, LENGTHADJUST, LETTER_SPACING, LIGHTING_COLOR, LIMITINGCONEANGLE, LINEBREAK, LINETHICKNESS, LINK, LIST, LOCAL, LONGDESC, LOOPEND, LOOPSTART, LOW, LOWSRC, LQUOTE, LSPACE, MACROS, MANIFEST, MARGINHEIGHT, MARGINWIDTH, MARKERHEIGHT, MARKERUNITS, MARKERWIDTH, MARKER_END, MARKER_MID, MARKER_START, MASK, MASKCONTENTUNITS, MASKUNITS, MATHBACKGROUND, MATHCOLOR, MATHEMATICAL, MATHSIZE, MATHVARIANT, MAX, MAXLENGTH, MAXSIZE, MEDIA, MEDIUMMATHSPACE, METHOD, MIN, MINSIZE, MODE, MOVABLELIMITS, MULTIPLE, NAME, NARGS, NOHREF, NORESIZE, NOSHADE, NOTATION, NOWRAP, NUMOCTAVES, OBJECT, OCCURRENCE, OFFSET, ONABORT, ONACTIVATE, ONAFTERPRINT, ONAFTERUPDATE, ONBEFORDEACTIVATE, ONBEFOREACTIVATE, ONBEFORECOPY, ONBEFORECUT, ONBEFOREEDITFOCUS, ONBEFOREPASTE, ONBEFOREPRINT, ONBEFOREUNLOAD, ONBEFOREUPDATE, ONBEGIN, ONBLUR, ONBOUNCE, ONCELLCHANGE, ONCHANGE, ONCLICK, ONCONTEXTMENU, ONCONTROLSELECT, ONCOPY, ONCUT, ONDATAAVAILABLE, ONDATASETCHANGED, ONDATASETCOMPLETE, ONDBLCLICK, ONDEACTIVATE, ONDRAG, ONDRAGDROP, ONDRAGEND, ONDRAGENTER, ONDRAGLEAVE, ONDRAGOVER, ONDRAGSTART, ONDROP, ONEND, ONERROR, ONERRORUPDATE, ONFILTERCHANGE, ONFINISH, ONFOCUS, ONFOCUSIN, ONFOCUSOUT, ONFORMCHANGE, ONFORMINPUT, ONHELP, ONINPUT, ONINVALID, ONKEYDOWN, ONKEYPRESS, ONKEYUP, ONLOAD, ONLOSECAPTURE, ONMESSAGE, ONMOUSEDOWN, ONMOUSEENTER, ONMOUSELEAVE, ONMOUSEMOVE, ONMOUSEOUT, ONMOUSEOVER, ONMOUSEUP, ONMOUSEWHEEL, ONMOVE, ONMOVEEND, ONMOVESTART, ONPASTE, ONPROPERTYCHANGE, ONREADYSTATECHANGE, ONREPEAT, ONRESET, ONRESIZE, ONROWENTER, ONROWEXIT, ONROWSDELETE, ONROWSINSERTED, ONSCROLL, ONSELECT, ONSELECTSTART, ONSTART, ONSTOP, ONSUBMIT, ONUNLOAD, ONZOOM, OPACITY, OPEN, OPERATOR, OPTIMUM, ORDER, ORIENT, ORIENTATION, ORIGIN, OTHER, OVERFLOW, OVERLINE_POSITION, OVERLINE_THICKNESS, PANOSE_1, PATH, PATHLENGTH, PATTERN, PATTERNCONTENTUNITS, PATTERNTRANSFORM, PATTERNUNITS, PING, PLAYCOUNT, POINTER_EVENTS, POINTS, POINTSATX, POINTSATY, POINTSATZ, POSTER, PRESERVEALPHA, PRESERVEASPECTRATIO, PRIMITIVEUNITS, PROFILE, PROMPT, R, RADIOGROUP, RADIUS, READONLY, REFX, REFY, REL, RENDERING_INTENT, REPEAT, REPEATCOUNT, REPEATDUR, REPEAT_MAX, REPEAT_MIN, REPEAT_START, REPEAT_TEMPLATE, REPLACE, REQUIRED, REQUIREDEXTENSIONS, REQUIREDFEATURES, RESTART, RESULT, REV, ROLE, ROTATE, ROWALIGN, ROWLINES, ROWS, ROWSPACING, ROWSPAN, RQUOTE, RSPACE, RT, RULES, RX, RY, SANDBOX, SCALE, SCHEME, SCOPE, SCOPED, SCRIPTLEVEL, SCRIPTMINSIZE, SCRIPTSIZEMULTIPLIER, SCROLLDELAY, SCROLLING, SEAMLESS, SEED, SELECTED, SELECTION, SEPARATOR, SEPARATORS, SHAPE, SHAPE_RENDERING, SIZE, SLOPE, SPACING, SPAN, SPECIFICATION, SPECULARCONSTANT, SPECULAREXPONENT, SPEED, SPREADMETHOD, SRC, STANDBY, START, STARTOFFSET, STDDEVIATION, STEMH, STEMV, STEP, STITCHTILES, STOP_COLOR, STOP_OPACITY, STRETCHY, STRIKETHROUGH_POSITION, STRIKETHROUGH_THICKNESS, STRING, STROKE, STROKE_DASHARRAY, STROKE_DASHOFFSET, STROKE_LINECAP, STROKE_LINEJOIN, STROKE_MITERLIMIT, STROKE_OPACITY, STROKE_WIDTH, STYLE, SUBSCRIPTSHIFT, SUMMARY, SUPERSCRIPTSHIFT, SURFACESCALE, SYMMETRIC, SYSTEMLANGUAGE, TABINDEX, TABLEVALUES, TARGET, TARGETX, TARGETY, TEMPLATE, TEXT, TEXTLENGTH, TEXT_ANCHOR, TEXT_DECORATION, TEXT_RENDERING, THICKMATHSPACE, THINMATHSPACE, TITLE, TO, TRANSFORM, TYPE, U1, U2, UNDERLINE_POSITION, UNDERLINE_THICKNESS, UNICODE, UNICODE_BIDI, UNICODE_RANGE, UNITS_PER_EM, UNSELECTABLE, USEMAP, VALIGN, VALUE, VALUES, VALUETYPE, VERSION, VERT_ADV_Y, VERT_ORIGIN_X, VERT_ORIGIN_Y, VERYTHICKMATHSPACE, VERYTHINMATHSPACE, VERYVERYTHICKMATHSPACE, VERYVERYTHINMATHSPACE, VIEWBOX, VIEWTARGET, VISIBILITY, VLINK, VSPACE, V_ALPHABETIC, V_HANGING, V_IDEOGRAPHIC, V_MATHEMATICAL, WHEN, WIDTH, WIDTHS, WORD_SPACING, WRAP, WRITING_MODE, X, X1, X2, XCHANNELSELECTOR, XLINK_ACTUATE, XLINK_ARCROLE, XLINK_HREF, XLINK_NS, XLINK_PREFIX, XLINK_ROLE, XLINK_SHOW, XLINK_TITLE, XLINK_TYPE, XMLNS, XMLNS_NS, XMLNS_PREFIX, XMLNS_XLINK, XML_BASE, XML_LANG, XML_NS, XML_PREFIX, XML_SPACE, XREF, X_HEIGHT, Y, Y1, Y2, YCHANNELSELECTOR, Z, ZOOMANDPAN;
10.17814 +function $clinit_89(){
10.17815 + $clinit_89 = nullMethod;
10.17816 + $ElementName(new ElementName(), null);
10.17817 + A = $ElementName_0(new ElementName(), 'a', 'a', 1, false, false, false);
10.17818 + B = $ElementName_0(new ElementName(), 'b', 'b', 45, false, false, false);
10.17819 + G = $ElementName_0(new ElementName(), 'g', 'g', 0, false, false, false);
10.17820 + I = $ElementName_0(new ElementName(), 'i', 'i', 45, false, false, false);
10.17821 + P = $ElementName_0(new ElementName(), 'p', 'p', 29, true, false, false);
10.17822 + Q = $ElementName_0(new ElementName(), 'q', 'q', 0, false, false, false);
10.17823 + S = $ElementName_0(new ElementName(), 's', 's', 45, false, false, false);
10.17824 + U = $ElementName_0(new ElementName(), 'u', 'u', 45, false, false, false);
10.17825 + BR = $ElementName_0(new ElementName(), 'br', 'br', 4, true, false, false);
10.17826 + CI = $ElementName_0(new ElementName(), 'ci', 'ci', 0, false, false, false);
10.17827 + CN = $ElementName_0(new ElementName(), 'cn', 'cn', 0, false, false, false);
10.17828 + DD = $ElementName_0(new ElementName(), 'dd', 'dd', 41, true, false, false);
10.17829 + DL = $ElementName_0(new ElementName(), 'dl', 'dl', 46, true, false, false);
10.17830 + DT = $ElementName_0(new ElementName(), 'dt', 'dt', 41, true, false, false);
10.17831 + EM = $ElementName_0(new ElementName(), 'em', 'em', 45, false, false, false);
10.17832 + EQ = $ElementName_0(new ElementName(), 'eq', 'eq', 0, false, false, false);
10.17833 + FN = $ElementName_0(new ElementName(), 'fn', 'fn', 0, false, false, false);
10.17834 + H1 = $ElementName_0(new ElementName(), 'h1', 'h1', 42, true, false, false);
10.17835 + H2 = $ElementName_0(new ElementName(), 'h2', 'h2', 42, true, false, false);
10.17836 + H3 = $ElementName_0(new ElementName(), 'h3', 'h3', 42, true, false, false);
10.17837 + H4 = $ElementName_0(new ElementName(), 'h4', 'h4', 42, true, false, false);
10.17838 + H5 = $ElementName_0(new ElementName(), 'h5', 'h5', 42, true, false, false);
10.17839 + H6 = $ElementName_0(new ElementName(), 'h6', 'h6', 42, true, false, false);
10.17840 + GT = $ElementName_0(new ElementName(), 'gt', 'gt', 0, false, false, false);
10.17841 + HR = $ElementName_0(new ElementName(), 'hr', 'hr', 22, true, false, false);
10.17842 + IN_0 = $ElementName_0(new ElementName(), 'in', 'in', 0, false, false, false);
10.17843 + LI = $ElementName_0(new ElementName(), 'li', 'li', 15, true, false, false);
10.17844 + LN = $ElementName_0(new ElementName(), 'ln', 'ln', 0, false, false, false);
10.17845 + LT = $ElementName_0(new ElementName(), 'lt', 'lt', 0, false, false, false);
10.17846 + MI = $ElementName_0(new ElementName(), 'mi', 'mi', 57, false, false, false);
10.17847 + MN = $ElementName_0(new ElementName(), 'mn', 'mn', 57, false, false, false);
10.17848 + MO = $ElementName_0(new ElementName(), 'mo', 'mo', 57, false, false, false);
10.17849 + MS = $ElementName_0(new ElementName(), 'ms', 'ms', 57, false, false, false);
10.17850 + OL = $ElementName_0(new ElementName(), 'ol', 'ol', 46, true, false, false);
10.17851 + OR = $ElementName_0(new ElementName(), 'or', 'or', 0, false, false, false);
10.17852 + PI = $ElementName_0(new ElementName(), 'pi', 'pi', 0, false, false, false);
10.17853 + RP = $ElementName_0(new ElementName(), 'rp', 'rp', 53, false, false, false);
10.17854 + RT_0 = $ElementName_0(new ElementName(), 'rt', 'rt', 53, false, false, false);
10.17855 + TD = $ElementName_0(new ElementName(), 'td', 'td', 40, false, true, false);
10.17856 + TH = $ElementName_0(new ElementName(), 'th', 'th', 40, false, true, false);
10.17857 + TR = $ElementName_0(new ElementName(), 'tr', 'tr', 37, true, false, true);
10.17858 + TT = $ElementName_0(new ElementName(), 'tt', 'tt', 45, false, false, false);
10.17859 + UL = $ElementName_0(new ElementName(), 'ul', 'ul', 46, true, false, false);
10.17860 + AND = $ElementName_0(new ElementName(), 'and', 'and', 0, false, false, false);
10.17861 + ARG = $ElementName_0(new ElementName(), 'arg', 'arg', 0, false, false, false);
10.17862 + ABS = $ElementName_0(new ElementName(), 'abs', 'abs', 0, false, false, false);
10.17863 + BIG = $ElementName_0(new ElementName(), 'big', 'big', 45, false, false, false);
10.17864 + BDO = $ElementName_0(new ElementName(), 'bdo', 'bdo', 0, false, false, false);
10.17865 + CSC = $ElementName_0(new ElementName(), 'csc', 'csc', 0, false, false, false);
10.17866 + COL = $ElementName_0(new ElementName(), 'col', 'col', 7, true, false, false);
10.17867 + COS = $ElementName_0(new ElementName(), 'cos', 'cos', 0, false, false, false);
10.17868 + COT = $ElementName_0(new ElementName(), 'cot', 'cot', 0, false, false, false);
10.17869 + DEL = $ElementName_0(new ElementName(), 'del', 'del', 0, false, false, false);
10.17870 + DFN = $ElementName_0(new ElementName(), 'dfn', 'dfn', 0, false, false, false);
10.17871 + DIR_0 = $ElementName_0(new ElementName(), 'dir', 'dir', 51, true, false, false);
10.17872 + DIV = $ElementName_0(new ElementName(), 'div', 'div', 50, true, false, false);
10.17873 + EXP = $ElementName_0(new ElementName(), 'exp', 'exp', 0, false, false, false);
10.17874 + GCD = $ElementName_0(new ElementName(), 'gcd', 'gcd', 0, false, false, false);
10.17875 + GEQ = $ElementName_0(new ElementName(), 'geq', 'geq', 0, false, false, false);
10.17876 + IMG = $ElementName_0(new ElementName(), 'img', 'img', 48, true, false, false);
10.17877 + INS = $ElementName_0(new ElementName(), 'ins', 'ins', 0, false, false, false);
10.17878 + INT = $ElementName_0(new ElementName(), 'int', 'int', 0, false, false, false);
10.17879 + KBD = $ElementName_0(new ElementName(), 'kbd', 'kbd', 0, false, false, false);
10.17880 + LOG = $ElementName_0(new ElementName(), 'log', 'log', 0, false, false, false);
10.17881 + LCM = $ElementName_0(new ElementName(), 'lcm', 'lcm', 0, false, false, false);
10.17882 + LEQ = $ElementName_0(new ElementName(), 'leq', 'leq', 0, false, false, false);
10.17883 + MTD = $ElementName_0(new ElementName(), 'mtd', 'mtd', 0, false, false, false);
10.17884 + MIN_0 = $ElementName_0(new ElementName(), 'min', 'min', 0, false, false, false);
10.17885 + MAP = $ElementName_0(new ElementName(), 'map', 'map', 0, false, false, false);
10.17886 + MTR = $ElementName_0(new ElementName(), 'mtr', 'mtr', 0, false, false, false);
10.17887 + MAX_0 = $ElementName_0(new ElementName(), 'max', 'max', 0, false, false, false);
10.17888 + NEQ = $ElementName_0(new ElementName(), 'neq', 'neq', 0, false, false, false);
10.17889 + NOT = $ElementName_0(new ElementName(), 'not', 'not', 0, false, false, false);
10.17890 + NAV = $ElementName_0(new ElementName(), 'nav', 'nav', 51, true, false, false);
10.17891 + PRE = $ElementName_0(new ElementName(), 'pre', 'pre', 44, true, false, false);
10.17892 + REM = $ElementName_0(new ElementName(), 'rem', 'rem', 0, false, false, false);
10.17893 + SUB = $ElementName_0(new ElementName(), 'sub', 'sub', 52, false, false, false);
10.17894 + SEC = $ElementName_0(new ElementName(), 'sec', 'sec', 0, false, false, false);
10.17895 + SVG = $ElementName_0(new ElementName(), 'svg', 'svg', 19, false, false, false);
10.17896 + SUM = $ElementName_0(new ElementName(), 'sum', 'sum', 0, false, false, false);
10.17897 + SIN = $ElementName_0(new ElementName(), 'sin', 'sin', 0, false, false, false);
10.17898 + SEP = $ElementName_0(new ElementName(), 'sep', 'sep', 0, false, false, false);
10.17899 + SUP = $ElementName_0(new ElementName(), 'sup', 'sup', 52, false, false, false);
10.17900 + SET = $ElementName_0(new ElementName(), 'set', 'set', 0, false, false, false);
10.17901 + TAN = $ElementName_0(new ElementName(), 'tan', 'tan', 0, false, false, false);
10.17902 + USE = $ElementName_0(new ElementName(), 'use', 'use', 0, false, false, false);
10.17903 + VAR = $ElementName_0(new ElementName(), 'var', 'var', 52, false, false, false);
10.17904 + WBR = $ElementName_0(new ElementName(), 'wbr', 'wbr', 49, true, false, false);
10.17905 + XMP = $ElementName_0(new ElementName(), 'xmp', 'xmp', 38, false, false, false);
10.17906 + XOR = $ElementName_0(new ElementName(), 'xor', 'xor', 0, false, false, false);
10.17907 + AREA = $ElementName_0(new ElementName(), 'area', 'area', 49, true, false, false);
10.17908 + ABBR_0 = $ElementName_0(new ElementName(), 'abbr', 'abbr', 0, false, false, false);
10.17909 + BASE_0 = $ElementName_0(new ElementName(), 'base', 'base', 2, true, false, false);
10.17910 + BVAR = $ElementName_0(new ElementName(), 'bvar', 'bvar', 0, false, false, false);
10.17911 + BODY = $ElementName_0(new ElementName(), 'body', 'body', 3, true, false, false);
10.17912 + CARD = $ElementName_0(new ElementName(), 'card', 'card', 0, false, false, false);
10.17913 + CODE_0 = $ElementName_0(new ElementName(), 'code', 'code', 45, false, false, false);
10.17914 + CITE_0 = $ElementName_0(new ElementName(), 'cite', 'cite', 0, false, false, false);
10.17915 + CSCH = $ElementName_0(new ElementName(), 'csch', 'csch', 0, false, false, false);
10.17916 + COSH = $ElementName_0(new ElementName(), 'cosh', 'cosh', 0, false, false, false);
10.17917 + COTH = $ElementName_0(new ElementName(), 'coth', 'coth', 0, false, false, false);
10.17918 + CURL = $ElementName_0(new ElementName(), 'curl', 'curl', 0, false, false, false);
10.17919 + DESC = $ElementName_0(new ElementName(), 'desc', 'desc', 59, false, false, false);
10.17920 + DIFF = $ElementName_0(new ElementName(), 'diff', 'diff', 0, false, false, false);
10.17921 + DEFS = $ElementName_0(new ElementName(), 'defs', 'defs', 0, false, false, false);
10.17922 + FORM_0 = $ElementName_0(new ElementName(), 'form', 'form', 9, true, false, false);
10.17923 + FONT = $ElementName_0(new ElementName(), 'font', 'font', 64, false, false, false);
10.17924 + GRAD = $ElementName_0(new ElementName(), 'grad', 'grad', 0, false, false, false);
10.17925 + HEAD = $ElementName_0(new ElementName(), 'head', 'head', 20, true, false, false);
10.17926 + HTML_0 = $ElementName_0(new ElementName(), 'html', 'html', 23, false, true, false);
10.17927 + LINE = $ElementName_0(new ElementName(), 'line', 'line', 0, false, false, false);
10.17928 + LINK_0 = $ElementName_0(new ElementName(), 'link', 'link', 16, true, false, false);
10.17929 + LIST_0 = $ElementName_0(new ElementName(), 'list', 'list', 0, false, false, false);
10.17930 + META = $ElementName_0(new ElementName(), 'meta', 'meta', 18, true, false, false);
10.17931 + MSUB = $ElementName_0(new ElementName(), 'msub', 'msub', 0, false, false, false);
10.17932 + MODE_0 = $ElementName_0(new ElementName(), 'mode', 'mode', 0, false, false, false);
10.17933 + MATH = $ElementName_0(new ElementName(), 'math', 'math', 17, false, false, false);
10.17934 + MARK = $ElementName_0(new ElementName(), 'mark', 'mark', 0, false, false, false);
10.17935 + MASK_0 = $ElementName_0(new ElementName(), 'mask', 'mask', 0, false, false, false);
10.17936 + MEAN = $ElementName_0(new ElementName(), 'mean', 'mean', 0, false, false, false);
10.17937 + MSUP = $ElementName_0(new ElementName(), 'msup', 'msup', 0, false, false, false);
10.17938 + MENU = $ElementName_0(new ElementName(), 'menu', 'menu', 50, true, false, false);
10.17939 + MROW = $ElementName_0(new ElementName(), 'mrow', 'mrow', 0, false, false, false);
10.17940 + NONE = $ElementName_0(new ElementName(), 'none', 'none', 0, false, false, false);
10.17941 + NOBR = $ElementName_0(new ElementName(), 'nobr', 'nobr', 24, false, false, false);
10.17942 + NEST = $ElementName_0(new ElementName(), 'nest', 'nest', 0, false, false, false);
10.17943 + PATH_0 = $ElementName_0(new ElementName(), 'path', 'path', 0, false, false, false);
10.17944 + PLUS = $ElementName_0(new ElementName(), 'plus', 'plus', 0, false, false, false);
10.17945 + RULE = $ElementName_0(new ElementName(), 'rule', 'rule', 0, false, false, false);
10.17946 + REAL = $ElementName_0(new ElementName(), 'real', 'real', 0, false, false, false);
10.17947 + RELN = $ElementName_0(new ElementName(), 'reln', 'reln', 0, false, false, false);
10.17948 + RECT = $ElementName_0(new ElementName(), 'rect', 'rect', 0, false, false, false);
10.17949 + ROOT = $ElementName_0(new ElementName(), 'root', 'root', 0, false, false, false);
10.17950 + RUBY = $ElementName_0(new ElementName(), 'ruby', 'ruby', 52, false, false, false);
10.17951 + SECH = $ElementName_0(new ElementName(), 'sech', 'sech', 0, false, false, false);
10.17952 + SINH = $ElementName_0(new ElementName(), 'sinh', 'sinh', 0, false, false, false);
10.17953 + SPAN_0 = $ElementName_0(new ElementName(), 'span', 'span', 52, false, false, false);
10.17954 + SAMP = $ElementName_0(new ElementName(), 'samp', 'samp', 0, false, false, false);
10.17955 + STOP = $ElementName_0(new ElementName(), 'stop', 'stop', 0, false, false, false);
10.17956 + SDEV = $ElementName_0(new ElementName(), 'sdev', 'sdev', 0, false, false, false);
10.17957 + TIME = $ElementName_0(new ElementName(), 'time', 'time', 0, false, false, false);
10.17958 + TRUE = $ElementName_0(new ElementName(), 'true', 'true', 0, false, false, false);
10.17959 + TREF = $ElementName_0(new ElementName(), 'tref', 'tref', 0, false, false, false);
10.17960 + TANH = $ElementName_0(new ElementName(), 'tanh', 'tanh', 0, false, false, false);
10.17961 + TEXT_0 = $ElementName_0(new ElementName(), 'text', 'text', 0, false, false, false);
10.17962 + VIEW = $ElementName_0(new ElementName(), 'view', 'view', 0, false, false, false);
10.17963 + ASIDE = $ElementName_0(new ElementName(), 'aside', 'aside', 51, true, false, false);
10.17964 + AUDIO = $ElementName_0(new ElementName(), 'audio', 'audio', 0, false, false, false);
10.17965 + APPLY = $ElementName_0(new ElementName(), 'apply', 'apply', 0, false, false, false);
10.17966 + EMBED = $ElementName_0(new ElementName(), 'embed', 'embed', 48, true, false, false);
10.17967 + FRAME_0 = $ElementName_0(new ElementName(), 'frame', 'frame', 10, true, false, false);
10.17968 + FALSE = $ElementName_0(new ElementName(), 'false', 'false', 0, false, false, false);
10.17969 + FLOOR = $ElementName_0(new ElementName(), 'floor', 'floor', 0, false, false, false);
10.17970 + GLYPH = $ElementName_0(new ElementName(), 'glyph', 'glyph', 0, false, false, false);
10.17971 + HKERN = $ElementName_0(new ElementName(), 'hkern', 'hkern', 0, false, false, false);
10.17972 + IMAGE = $ElementName_0(new ElementName(), 'image', 'image', 12, true, false, false);
10.17973 + IDENT = $ElementName_0(new ElementName(), 'ident', 'ident', 0, false, false, false);
10.17974 + INPUT = $ElementName_0(new ElementName(), 'input', 'input', 13, true, false, false);
10.17975 + LABEL_0 = $ElementName_0(new ElementName(), 'label', 'label', 62, false, false, false);
10.17976 + LIMIT = $ElementName_0(new ElementName(), 'limit', 'limit', 0, false, false, false);
10.17977 + MFRAC = $ElementName_0(new ElementName(), 'mfrac', 'mfrac', 0, false, false, false);
10.17978 + MPATH = $ElementName_0(new ElementName(), 'mpath', 'mpath', 0, false, false, false);
10.17979 + METER = $ElementName_0(new ElementName(), 'meter', 'meter', 0, false, false, false);
10.17980 + MOVER = $ElementName_0(new ElementName(), 'mover', 'mover', 0, false, false, false);
10.17981 + MINUS = $ElementName_0(new ElementName(), 'minus', 'minus', 0, false, false, false);
10.17982 + MROOT = $ElementName_0(new ElementName(), 'mroot', 'mroot', 0, false, false, false);
10.17983 + MSQRT = $ElementName_0(new ElementName(), 'msqrt', 'msqrt', 0, false, false, false);
10.17984 + MTEXT = $ElementName_0(new ElementName(), 'mtext', 'mtext', 57, false, false, false);
10.17985 + NOTIN = $ElementName_0(new ElementName(), 'notin', 'notin', 0, false, false, false);
10.17986 + PIECE = $ElementName_0(new ElementName(), 'piece', 'piece', 0, false, false, false);
10.17987 + PARAM = $ElementName_0(new ElementName(), 'param', 'param', 55, true, false, false);
10.17988 + POWER = $ElementName_0(new ElementName(), 'power', 'power', 0, false, false, false);
10.17989 + REALS = $ElementName_0(new ElementName(), 'reals', 'reals', 0, false, false, false);
10.17990 + STYLE_0 = $ElementName_0(new ElementName(), 'style', 'style', 33, true, false, false);
10.17991 + SMALL = $ElementName_0(new ElementName(), 'small', 'small', 45, false, false, false);
10.17992 + THEAD = $ElementName_0(new ElementName(), 'thead', 'thead', 39, true, false, true);
10.17993 + TABLE = $ElementName_0(new ElementName(), 'table', 'table', 34, false, true, true);
10.17994 + TITLE_0 = $ElementName_0(new ElementName(), 'title', 'title', 36, true, false, false);
10.17995 + TSPAN = $ElementName_0(new ElementName(), 'tspan', 'tspan', 0, false, false, false);
10.17996 + TIMES = $ElementName_0(new ElementName(), 'times', 'times', 0, false, false, false);
10.17997 + TFOOT = $ElementName_0(new ElementName(), 'tfoot', 'tfoot', 39, true, false, true);
10.17998 + TBODY = $ElementName_0(new ElementName(), 'tbody', 'tbody', 39, true, false, true);
10.17999 + UNION = $ElementName_0(new ElementName(), 'union', 'union', 0, false, false, false);
10.18000 + VKERN = $ElementName_0(new ElementName(), 'vkern', 'vkern', 0, false, false, false);
10.18001 + VIDEO = $ElementName_0(new ElementName(), 'video', 'video', 0, false, false, false);
10.18002 + ARCSEC = $ElementName_0(new ElementName(), 'arcsec', 'arcsec', 0, false, false, false);
10.18003 + ARCCSC = $ElementName_0(new ElementName(), 'arccsc', 'arccsc', 0, false, false, false);
10.18004 + ARCTAN = $ElementName_0(new ElementName(), 'arctan', 'arctan', 0, false, false, false);
10.18005 + ARCSIN = $ElementName_0(new ElementName(), 'arcsin', 'arcsin', 0, false, false, false);
10.18006 + ARCCOS = $ElementName_0(new ElementName(), 'arccos', 'arccos', 0, false, false, false);
10.18007 + APPLET = $ElementName_0(new ElementName(), 'applet', 'applet', 43, false, true, false);
10.18008 + ARCCOT = $ElementName_0(new ElementName(), 'arccot', 'arccot', 0, false, false, false);
10.18009 + APPROX = $ElementName_0(new ElementName(), 'approx', 'approx', 0, false, false, false);
10.18010 + BUTTON = $ElementName_0(new ElementName(), 'button', 'button', 5, false, true, false);
10.18011 + CIRCLE = $ElementName_0(new ElementName(), 'circle', 'circle', 0, false, false, false);
10.18012 + CENTER = $ElementName_0(new ElementName(), 'center', 'center', 50, true, false, false);
10.18013 + CURSOR_0 = $ElementName_0(new ElementName(), 'cursor', 'cursor', 0, false, false, false);
10.18014 + CANVAS = $ElementName_0(new ElementName(), 'canvas', 'canvas', 0, false, false, false);
10.18015 + DIVIDE = $ElementName_0(new ElementName(), 'divide', 'divide', 0, false, false, false);
10.18016 + DEGREE = $ElementName_0(new ElementName(), 'degree', 'degree', 0, false, false, false);
10.18017 + DIALOG = $ElementName_0(new ElementName(), 'dialog', 'dialog', 51, true, false, false);
10.18018 + DOMAIN = $ElementName_0(new ElementName(), 'domain', 'domain', 0, false, false, false);
10.18019 + EXISTS = $ElementName_0(new ElementName(), 'exists', 'exists', 0, false, false, false);
10.18020 + FETILE = $ElementName_0(new ElementName(), 'fetile', 'feTile', 0, false, false, false);
10.18021 + FIGURE = $ElementName_0(new ElementName(), 'figure', 'figure', 51, true, false, false);
10.18022 + FORALL = $ElementName_0(new ElementName(), 'forall', 'forall', 0, false, false, false);
10.18023 + FILTER_0 = $ElementName_0(new ElementName(), 'filter', 'filter', 0, false, false, false);
10.18024 + FOOTER = $ElementName_0(new ElementName(), 'footer', 'footer', 51, true, false, false);
10.18025 + HEADER = $ElementName_0(new ElementName(), 'header', 'header', 51, true, false, false);
10.18026 + IFRAME = $ElementName_0(new ElementName(), 'iframe', 'iframe', 47, true, false, false);
10.18027 + KEYGEN = $ElementName_0(new ElementName(), 'keygen', 'keygen', 65, true, false, false);
10.18028 + LAMBDA = $ElementName_0(new ElementName(), 'lambda', 'lambda', 0, false, false, false);
10.18029 + LEGEND = $ElementName_0(new ElementName(), 'legend', 'legend', 0, false, false, false);
10.18030 + MSPACE = $ElementName_0(new ElementName(), 'mspace', 'mspace', 0, false, false, false);
10.18031 + MTABLE = $ElementName_0(new ElementName(), 'mtable', 'mtable', 0, false, false, false);
10.18032 + MSTYLE = $ElementName_0(new ElementName(), 'mstyle', 'mstyle', 0, false, false, false);
10.18033 + MGLYPH = $ElementName_0(new ElementName(), 'mglyph', 'mglyph', 56, false, false, false);
10.18034 + MEDIAN = $ElementName_0(new ElementName(), 'median', 'median', 0, false, false, false);
10.18035 + MUNDER = $ElementName_0(new ElementName(), 'munder', 'munder', 0, false, false, false);
10.18036 + MARKER = $ElementName_0(new ElementName(), 'marker', 'marker', 0, false, false, false);
10.18037 + MERROR = $ElementName_0(new ElementName(), 'merror', 'merror', 0, false, false, false);
10.18038 + MOMENT = $ElementName_0(new ElementName(), 'moment', 'moment', 0, false, false, false);
10.18039 + MATRIX = $ElementName_0(new ElementName(), 'matrix', 'matrix', 0, false, false, false);
10.18040 + OPTION = $ElementName_0(new ElementName(), 'option', 'option', 28, true, false, false);
10.18041 + OBJECT_0 = $ElementName_0(new ElementName(), 'object', 'object', 63, false, true, false);
10.18042 + OUTPUT = $ElementName_0(new ElementName(), 'output', 'output', 62, false, false, false);
10.18043 + PRIMES = $ElementName_0(new ElementName(), 'primes', 'primes', 0, false, false, false);
10.18044 + SOURCE = $ElementName_0(new ElementName(), 'source', 'source', 55, false, false, false);
10.18045 + STRIKE = $ElementName_0(new ElementName(), 'strike', 'strike', 45, false, false, false);
10.18046 + STRONG = $ElementName_0(new ElementName(), 'strong', 'strong', 45, false, false, false);
10.18047 + SWITCH = $ElementName_0(new ElementName(), 'switch', 'switch', 0, false, false, false);
10.18048 + SYMBOL = $ElementName_0(new ElementName(), 'symbol', 'symbol', 0, false, false, false);
10.18049 + SPACER = $ElementName_0(new ElementName(), 'spacer', 'spacer', 49, true, false, false);
10.18050 + SELECT = $ElementName_0(new ElementName(), 'select', 'select', 32, true, false, false);
10.18051 + SUBSET = $ElementName_0(new ElementName(), 'subset', 'subset', 0, false, false, false);
10.18052 + SCRIPT = $ElementName_0(new ElementName(), 'script', 'script', 31, true, false, false);
10.18053 + TBREAK = $ElementName_0(new ElementName(), 'tbreak', 'tbreak', 0, false, false, false);
10.18054 + VECTOR = $ElementName_0(new ElementName(), 'vector', 'vector', 0, false, false, false);
10.18055 + ARTICLE = $ElementName_0(new ElementName(), 'article', 'article', 51, true, false, false);
10.18056 + ANIMATE = $ElementName_0(new ElementName(), 'animate', 'animate', 0, false, false, false);
10.18057 + ARCSECH = $ElementName_0(new ElementName(), 'arcsech', 'arcsech', 0, false, false, false);
10.18058 + ARCCSCH = $ElementName_0(new ElementName(), 'arccsch', 'arccsch', 0, false, false, false);
10.18059 + ARCTANH = $ElementName_0(new ElementName(), 'arctanh', 'arctanh', 0, false, false, false);
10.18060 + ARCSINH = $ElementName_0(new ElementName(), 'arcsinh', 'arcsinh', 0, false, false, false);
10.18061 + ARCCOSH = $ElementName_0(new ElementName(), 'arccosh', 'arccosh', 0, false, false, false);
10.18062 + ARCCOTH = $ElementName_0(new ElementName(), 'arccoth', 'arccoth', 0, false, false, false);
10.18063 + ACRONYM = $ElementName_0(new ElementName(), 'acronym', 'acronym', 0, false, false, false);
10.18064 + ADDRESS = $ElementName_0(new ElementName(), 'address', 'address', 51, true, false, false);
10.18065 + BGSOUND = $ElementName_0(new ElementName(), 'bgsound', 'bgsound', 49, true, false, false);
10.18066 + COMMAND = $ElementName_0(new ElementName(), 'command', 'command', 54, true, false, false);
10.18067 + COMPOSE = $ElementName_0(new ElementName(), 'compose', 'compose', 0, false, false, false);
10.18068 + CEILING = $ElementName_0(new ElementName(), 'ceiling', 'ceiling', 0, false, false, false);
10.18069 + CSYMBOL = $ElementName_0(new ElementName(), 'csymbol', 'csymbol', 0, false, false, false);
10.18070 + CAPTION = $ElementName_0(new ElementName(), 'caption', 'caption', 6, false, true, false);
10.18071 + DISCARD = $ElementName_0(new ElementName(), 'discard', 'discard', 0, false, false, false);
10.18072 + DECLARE_0 = $ElementName_0(new ElementName(), 'declare', 'declare', 0, false, false, false);
10.18073 + DETAILS = $ElementName_0(new ElementName(), 'details', 'details', 51, true, false, false);
10.18074 + ELLIPSE = $ElementName_0(new ElementName(), 'ellipse', 'ellipse', 0, false, false, false);
10.18075 + FEFUNCA = $ElementName_0(new ElementName(), 'fefunca', 'feFuncA', 0, false, false, false);
10.18076 + FEFUNCB = $ElementName_0(new ElementName(), 'fefuncb', 'feFuncB', 0, false, false, false);
10.18077 + FEBLEND = $ElementName_0(new ElementName(), 'feblend', 'feBlend', 0, false, false, false);
10.18078 + FEFLOOD = $ElementName_0(new ElementName(), 'feflood', 'feFlood', 0, false, false, false);
10.18079 + FEIMAGE = $ElementName_0(new ElementName(), 'feimage', 'feImage', 0, false, false, false);
10.18080 + FEMERGE = $ElementName_0(new ElementName(), 'femerge', 'feMerge', 0, false, false, false);
10.18081 + FEFUNCG = $ElementName_0(new ElementName(), 'fefuncg', 'feFuncG', 0, false, false, false);
10.18082 + FEFUNCR = $ElementName_0(new ElementName(), 'fefuncr', 'feFuncR', 0, false, false, false);
10.18083 + HANDLER = $ElementName_0(new ElementName(), 'handler', 'handler', 0, false, false, false);
10.18084 + INVERSE = $ElementName_0(new ElementName(), 'inverse', 'inverse', 0, false, false, false);
10.18085 + IMPLIES = $ElementName_0(new ElementName(), 'implies', 'implies', 0, false, false, false);
10.18086 + ISINDEX = $ElementName_0(new ElementName(), 'isindex', 'isindex', 14, true, false, false);
10.18087 + LOGBASE = $ElementName_0(new ElementName(), 'logbase', 'logbase', 0, false, false, false);
10.18088 + LISTING = $ElementName_0(new ElementName(), 'listing', 'listing', 44, true, false, false);
10.18089 + MFENCED = $ElementName_0(new ElementName(), 'mfenced', 'mfenced', 0, false, false, false);
10.18090 + MPADDED = $ElementName_0(new ElementName(), 'mpadded', 'mpadded', 0, false, false, false);
10.18091 + MARQUEE = $ElementName_0(new ElementName(), 'marquee', 'marquee', 43, false, true, false);
10.18092 + MACTION = $ElementName_0(new ElementName(), 'maction', 'maction', 0, false, false, false);
10.18093 + MSUBSUP = $ElementName_0(new ElementName(), 'msubsup', 'msubsup', 0, false, false, false);
10.18094 + NOEMBED = $ElementName_0(new ElementName(), 'noembed', 'noembed', 60, true, false, false);
10.18095 + POLYGON = $ElementName_0(new ElementName(), 'polygon', 'polygon', 0, false, false, false);
10.18096 + PATTERN_0 = $ElementName_0(new ElementName(), 'pattern', 'pattern', 0, false, false, false);
10.18097 + PRODUCT = $ElementName_0(new ElementName(), 'product', 'product', 0, false, false, false);
10.18098 + SETDIFF = $ElementName_0(new ElementName(), 'setdiff', 'setdiff', 0, false, false, false);
10.18099 + SECTION = $ElementName_0(new ElementName(), 'section', 'section', 51, true, false, false);
10.18100 + TENDSTO = $ElementName_0(new ElementName(), 'tendsto', 'tendsto', 0, false, false, false);
10.18101 + UPLIMIT = $ElementName_0(new ElementName(), 'uplimit', 'uplimit', 0, false, false, false);
10.18102 + ALTGLYPH = $ElementName_0(new ElementName(), 'altglyph', 'altGlyph', 0, false, false, false);
10.18103 + BASEFONT = $ElementName_0(new ElementName(), 'basefont', 'basefont', 49, true, false, false);
10.18104 + CLIPPATH = $ElementName_0(new ElementName(), 'clippath', 'clipPath', 0, false, false, false);
10.18105 + CODOMAIN = $ElementName_0(new ElementName(), 'codomain', 'codomain', 0, false, false, false);
10.18106 + COLGROUP = $ElementName_0(new ElementName(), 'colgroup', 'colgroup', 8, true, false, false);
10.18107 + DATAGRID = $ElementName_0(new ElementName(), 'datagrid', 'datagrid', 51, true, false, false);
10.18108 + EMPTYSET = $ElementName_0(new ElementName(), 'emptyset', 'emptyset', 0, false, false, false);
10.18109 + FACTOROF = $ElementName_0(new ElementName(), 'factorof', 'factorof', 0, false, false, false);
10.18110 + FIELDSET = $ElementName_0(new ElementName(), 'fieldset', 'fieldset', 61, true, false, false);
10.18111 + FRAMESET = $ElementName_0(new ElementName(), 'frameset', 'frameset', 11, true, false, false);
10.18112 + FEOFFSET = $ElementName_0(new ElementName(), 'feoffset', 'feOffset', 0, false, false, false);
10.18113 + GLYPHREF_0 = $ElementName_0(new ElementName(), 'glyphref', 'glyphRef', 0, false, false, false);
10.18114 + INTERVAL = $ElementName_0(new ElementName(), 'interval', 'interval', 0, false, false, false);
10.18115 + INTEGERS = $ElementName_0(new ElementName(), 'integers', 'integers', 0, false, false, false);
10.18116 + INFINITY = $ElementName_0(new ElementName(), 'infinity', 'infinity', 0, false, false, false);
10.18117 + LISTENER = $ElementName_0(new ElementName(), 'listener', 'listener', 0, false, false, false);
10.18118 + LOWLIMIT = $ElementName_0(new ElementName(), 'lowlimit', 'lowlimit', 0, false, false, false);
10.18119 + METADATA = $ElementName_0(new ElementName(), 'metadata', 'metadata', 0, false, false, false);
10.18120 + MENCLOSE = $ElementName_0(new ElementName(), 'menclose', 'menclose', 0, false, false, false);
10.18121 + MPHANTOM = $ElementName_0(new ElementName(), 'mphantom', 'mphantom', 0, false, false, false);
10.18122 + NOFRAMES = $ElementName_0(new ElementName(), 'noframes', 'noframes', 25, true, false, false);
10.18123 + NOSCRIPT = $ElementName_0(new ElementName(), 'noscript', 'noscript', 26, true, false, false);
10.18124 + OPTGROUP = $ElementName_0(new ElementName(), 'optgroup', 'optgroup', 27, true, false, false);
10.18125 + POLYLINE = $ElementName_0(new ElementName(), 'polyline', 'polyline', 0, false, false, false);
10.18126 + PREFETCH = $ElementName_0(new ElementName(), 'prefetch', 'prefetch', 0, false, false, false);
10.18127 + PROGRESS = $ElementName_0(new ElementName(), 'progress', 'progress', 0, false, false, false);
10.18128 + PRSUBSET = $ElementName_0(new ElementName(), 'prsubset', 'prsubset', 0, false, false, false);
10.18129 + QUOTIENT = $ElementName_0(new ElementName(), 'quotient', 'quotient', 0, false, false, false);
10.18130 + SELECTOR = $ElementName_0(new ElementName(), 'selector', 'selector', 0, false, false, false);
10.18131 + TEXTAREA = $ElementName_0(new ElementName(), 'textarea', 'textarea', 35, true, false, false);
10.18132 + TEXTPATH = $ElementName_0(new ElementName(), 'textpath', 'textPath', 0, false, false, false);
10.18133 + VARIANCE = $ElementName_0(new ElementName(), 'variance', 'variance', 0, false, false, false);
10.18134 + ANIMATION = $ElementName_0(new ElementName(), 'animation', 'animation', 0, false, false, false);
10.18135 + CONJUGATE = $ElementName_0(new ElementName(), 'conjugate', 'conjugate', 0, false, false, false);
10.18136 + CONDITION = $ElementName_0(new ElementName(), 'condition', 'condition', 0, false, false, false);
10.18137 + COMPLEXES = $ElementName_0(new ElementName(), 'complexes', 'complexes', 0, false, false, false);
10.18138 + FONT_FACE = $ElementName_0(new ElementName(), 'font-face', 'font-face', 0, false, false, false);
10.18139 + FACTORIAL = $ElementName_0(new ElementName(), 'factorial', 'factorial', 0, false, false, false);
10.18140 + INTERSECT = $ElementName_0(new ElementName(), 'intersect', 'intersect', 0, false, false, false);
10.18141 + IMAGINARY = $ElementName_0(new ElementName(), 'imaginary', 'imaginary', 0, false, false, false);
10.18142 + LAPLACIAN = $ElementName_0(new ElementName(), 'laplacian', 'laplacian', 0, false, false, false);
10.18143 + MATRIXROW = $ElementName_0(new ElementName(), 'matrixrow', 'matrixrow', 0, false, false, false);
10.18144 + NOTSUBSET = $ElementName_0(new ElementName(), 'notsubset', 'notsubset', 0, false, false, false);
10.18145 + OTHERWISE = $ElementName_0(new ElementName(), 'otherwise', 'otherwise', 0, false, false, false);
10.18146 + PIECEWISE = $ElementName_0(new ElementName(), 'piecewise', 'piecewise', 0, false, false, false);
10.18147 + PLAINTEXT = $ElementName_0(new ElementName(), 'plaintext', 'plaintext', 30, true, false, false);
10.18148 + RATIONALS = $ElementName_0(new ElementName(), 'rationals', 'rationals', 0, false, false, false);
10.18149 + SEMANTICS = $ElementName_0(new ElementName(), 'semantics', 'semantics', 0, false, false, false);
10.18150 + TRANSPOSE = $ElementName_0(new ElementName(), 'transpose', 'transpose', 0, false, false, false);
10.18151 + ANNOTATION = $ElementName_0(new ElementName(), 'annotation', 'annotation', 0, false, false, false);
10.18152 + BLOCKQUOTE = $ElementName_0(new ElementName(), 'blockquote', 'blockquote', 50, true, false, false);
10.18153 + DIVERGENCE = $ElementName_0(new ElementName(), 'divergence', 'divergence', 0, false, false, false);
10.18154 + EULERGAMMA = $ElementName_0(new ElementName(), 'eulergamma', 'eulergamma', 0, false, false, false);
10.18155 + EQUIVALENT = $ElementName_0(new ElementName(), 'equivalent', 'equivalent', 0, false, false, false);
10.18156 + IMAGINARYI = $ElementName_0(new ElementName(), 'imaginaryi', 'imaginaryi', 0, false, false, false);
10.18157 + MALIGNMARK = $ElementName_0(new ElementName(), 'malignmark', 'malignmark', 56, false, false, false);
10.18158 + MUNDEROVER = $ElementName_0(new ElementName(), 'munderover', 'munderover', 0, false, false, false);
10.18159 + MLABELEDTR = $ElementName_0(new ElementName(), 'mlabeledtr', 'mlabeledtr', 0, false, false, false);
10.18160 + NOTANUMBER = $ElementName_0(new ElementName(), 'notanumber', 'notanumber', 0, false, false, false);
10.18161 + SOLIDCOLOR = $ElementName_0(new ElementName(), 'solidcolor', 'solidcolor', 0, false, false, false);
10.18162 + ALTGLYPHDEF = $ElementName_0(new ElementName(), 'altglyphdef', 'altGlyphDef', 0, false, false, false);
10.18163 + DETERMINANT = $ElementName_0(new ElementName(), 'determinant', 'determinant', 0, false, false, false);
10.18164 + EVENTSOURCE = $ElementName_0(new ElementName(), 'eventsource', 'eventsource', 54, true, false, false);
10.18165 + FEMERGENODE = $ElementName_0(new ElementName(), 'femergenode', 'feMergeNode', 0, false, false, false);
10.18166 + FECOMPOSITE = $ElementName_0(new ElementName(), 'fecomposite', 'feComposite', 0, false, false, false);
10.18167 + FESPOTLIGHT = $ElementName_0(new ElementName(), 'fespotlight', 'feSpotLight', 0, false, false, false);
10.18168 + MALIGNGROUP = $ElementName_0(new ElementName(), 'maligngroup', 'maligngroup', 0, false, false, false);
10.18169 + MPRESCRIPTS = $ElementName_0(new ElementName(), 'mprescripts', 'mprescripts', 0, false, false, false);
10.18170 + MOMENTABOUT = $ElementName_0(new ElementName(), 'momentabout', 'momentabout', 0, false, false, false);
10.18171 + NOTPRSUBSET = $ElementName_0(new ElementName(), 'notprsubset', 'notprsubset', 0, false, false, false);
10.18172 + PARTIALDIFF = $ElementName_0(new ElementName(), 'partialdiff', 'partialdiff', 0, false, false, false);
10.18173 + ALTGLYPHITEM = $ElementName_0(new ElementName(), 'altglyphitem', 'altGlyphItem', 0, false, false, false);
10.18174 + ANIMATECOLOR = $ElementName_0(new ElementName(), 'animatecolor', 'animateColor', 0, false, false, false);
10.18175 + DATATEMPLATE = $ElementName_0(new ElementName(), 'datatemplate', 'datatemplate', 0, false, false, false);
10.18176 + EXPONENTIALE = $ElementName_0(new ElementName(), 'exponentiale', 'exponentiale', 0, false, false, false);
10.18177 + FETURBULENCE = $ElementName_0(new ElementName(), 'feturbulence', 'feTurbulence', 0, false, false, false);
10.18178 + FEPOINTLIGHT = $ElementName_0(new ElementName(), 'fepointlight', 'fePointLight', 0, false, false, false);
10.18179 + FEMORPHOLOGY = $ElementName_0(new ElementName(), 'femorphology', 'feMorphology', 0, false, false, false);
10.18180 + OUTERPRODUCT = $ElementName_0(new ElementName(), 'outerproduct', 'outerproduct', 0, false, false, false);
10.18181 + ANIMATEMOTION = $ElementName_0(new ElementName(), 'animatemotion', 'animateMotion', 0, false, false, false);
10.18182 + COLOR_PROFILE_0 = $ElementName_0(new ElementName(), 'color-profile', 'color-profile', 0, false, false, false);
10.18183 + FONT_FACE_SRC = $ElementName_0(new ElementName(), 'font-face-src', 'font-face-src', 0, false, false, false);
10.18184 + FONT_FACE_URI = $ElementName_0(new ElementName(), 'font-face-uri', 'font-face-uri', 0, false, false, false);
10.18185 + FOREIGNOBJECT = $ElementName_0(new ElementName(), 'foreignobject', 'foreignObject', 59, false, false, false);
10.18186 + FECOLORMATRIX = $ElementName_0(new ElementName(), 'fecolormatrix', 'feColorMatrix', 0, false, false, false);
10.18187 + MISSING_GLYPH = $ElementName_0(new ElementName(), 'missing-glyph', 'missing-glyph', 0, false, false, false);
10.18188 + MMULTISCRIPTS = $ElementName_0(new ElementName(), 'mmultiscripts', 'mmultiscripts', 0, false, false, false);
10.18189 + SCALARPRODUCT = $ElementName_0(new ElementName(), 'scalarproduct', 'scalarproduct', 0, false, false, false);
10.18190 + VECTORPRODUCT = $ElementName_0(new ElementName(), 'vectorproduct', 'vectorproduct', 0, false, false, false);
10.18191 + ANNOTATION_XML = $ElementName_0(new ElementName(), 'annotation-xml', 'annotation-xml', 58, false, false, false);
10.18192 + DEFINITION_SRC = $ElementName_0(new ElementName(), 'definition-src', 'definition-src', 0, false, false, false);
10.18193 + FONT_FACE_NAME = $ElementName_0(new ElementName(), 'font-face-name', 'font-face-name', 0, false, false, false);
10.18194 + FEGAUSSIANBLUR = $ElementName_0(new ElementName(), 'fegaussianblur', 'feGaussianBlur', 0, false, false, false);
10.18195 + FEDISTANTLIGHT = $ElementName_0(new ElementName(), 'fedistantlight', 'feDistantLight', 0, false, false, false);
10.18196 + LINEARGRADIENT = $ElementName_0(new ElementName(), 'lineargradient', 'linearGradient', 0, false, false, false);
10.18197 + NATURALNUMBERS = $ElementName_0(new ElementName(), 'naturalnumbers', 'naturalnumbers', 0, false, false, false);
10.18198 + RADIALGRADIENT = $ElementName_0(new ElementName(), 'radialgradient', 'radialGradient', 0, false, false, false);
10.18199 + ANIMATETRANSFORM = $ElementName_0(new ElementName(), 'animatetransform', 'animateTransform', 0, false, false, false);
10.18200 + CARTESIANPRODUCT = $ElementName_0(new ElementName(), 'cartesianproduct', 'cartesianproduct', 0, false, false, false);
10.18201 + FONT_FACE_FORMAT = $ElementName_0(new ElementName(), 'font-face-format', 'font-face-format', 0, false, false, false);
10.18202 + FECONVOLVEMATRIX = $ElementName_0(new ElementName(), 'feconvolvematrix', 'feConvolveMatrix', 0, false, false, false);
10.18203 + FEDIFFUSELIGHTING = $ElementName_0(new ElementName(), 'fediffuselighting', 'feDiffuseLighting', 0, false, false, false);
10.18204 + FEDISPLACEMENTMAP = $ElementName_0(new ElementName(), 'fedisplacementmap', 'feDisplacementMap', 0, false, false, false);
10.18205 + FESPECULARLIGHTING = $ElementName_0(new ElementName(), 'fespecularlighting', 'feSpecularLighting', 0, false, false, false);
10.18206 + DOMAINOFAPPLICATION = $ElementName_0(new ElementName(), 'domainofapplication', 'domainofapplication', 0, false, false, false);
10.18207 + FECOMPONENTTRANSFER = $ElementName_0(new ElementName(), 'fecomponenttransfer', 'feComponentTransfer', 0, false, false, false);
10.18208 + ELEMENT_NAMES = initValues(_3Lnu_validator_htmlparser_impl_ElementName_2_classLit, 50, 10, [A, B, G, I, P, Q, S, U, BR, CI, CN, DD, DL, DT, EM, EQ, FN, H1, H2, H3, H4, H5, H6, GT, HR, IN_0, LI, LN, LT, MI, MN, MO, MS, OL, OR, PI, RP, RT_0, TD, TH, TR, TT, UL, AND, ARG, ABS, BIG, BDO, CSC, COL, COS, COT, DEL, DFN, DIR_0, DIV, EXP, GCD, GEQ, IMG, INS, INT, KBD, LOG, LCM, LEQ, MTD, MIN_0, MAP, MTR, MAX_0, NEQ, NOT, NAV, PRE, REM, SUB, SEC, SVG, SUM, SIN, SEP, SUP, SET, TAN, USE, VAR, WBR, XMP, XOR, AREA, ABBR_0, BASE_0, BVAR, BODY, CARD, CODE_0, CITE_0, CSCH, COSH, COTH, CURL, DESC, DIFF, DEFS, FORM_0, FONT, GRAD, HEAD, HTML_0, LINE, LINK_0, LIST_0, META, MSUB, MODE_0, MATH, MARK, MASK_0, MEAN, MSUP, MENU, MROW, NONE, NOBR, NEST, PATH_0, PLUS, RULE, REAL, RELN, RECT, ROOT, RUBY, SECH, SINH, SPAN_0, SAMP, STOP, SDEV, TIME, TRUE, TREF, TANH, TEXT_0, VIEW, ASIDE, AUDIO, APPLY, EMBED, FRAME_0, FALSE, FLOOR, GLYPH, HKERN, IMAGE, IDENT, INPUT, LABEL_0, LIMIT, MFRAC, MPATH, METER, MOVER, MINUS, MROOT, MSQRT, MTEXT, NOTIN, PIECE, PARAM, POWER, REALS, STYLE_0, SMALL, THEAD, TABLE, TITLE_0, TSPAN, TIMES, TFOOT, TBODY, UNION, VKERN, VIDEO, ARCSEC, ARCCSC, ARCTAN, ARCSIN, ARCCOS, APPLET, ARCCOT, APPROX, BUTTON, CIRCLE, CENTER, CURSOR_0, CANVAS, DIVIDE, DEGREE, DIALOG, DOMAIN, EXISTS, FETILE, FIGURE, FORALL, FILTER_0, FOOTER, HEADER, IFRAME, KEYGEN, LAMBDA, LEGEND, MSPACE, MTABLE, MSTYLE, MGLYPH, MEDIAN, MUNDER, MARKER, MERROR, MOMENT, MATRIX, OPTION, OBJECT_0, OUTPUT, PRIMES, SOURCE, STRIKE, STRONG, SWITCH, SYMBOL, SPACER, SELECT, SUBSET, SCRIPT, TBREAK, VECTOR, ARTICLE, ANIMATE, ARCSECH, ARCCSCH, ARCTANH, ARCSINH, ARCCOSH, ARCCOTH, ACRONYM, ADDRESS, BGSOUND, COMMAND, COMPOSE, CEILING, CSYMBOL, CAPTION, DISCARD, DECLARE_0, DETAILS, ELLIPSE, FEFUNCA, FEFUNCB, FEBLEND, FEFLOOD, FEIMAGE, FEMERGE, FEFUNCG, FEFUNCR, HANDLER, INVERSE, IMPLIES, ISINDEX, LOGBASE, LISTING, MFENCED, MPADDED, MARQUEE, MACTION, MSUBSUP, NOEMBED, POLYGON, PATTERN_0, PRODUCT, SETDIFF, SECTION, TENDSTO, UPLIMIT, ALTGLYPH, BASEFONT, CLIPPATH, CODOMAIN, COLGROUP, DATAGRID, EMPTYSET, FACTOROF, FIELDSET, FRAMESET, FEOFFSET, GLYPHREF_0, INTERVAL, INTEGERS, INFINITY, LISTENER, LOWLIMIT, METADATA, MENCLOSE, MPHANTOM, NOFRAMES, NOSCRIPT, OPTGROUP, POLYLINE, PREFETCH, PROGRESS, PRSUBSET, QUOTIENT, SELECTOR, TEXTAREA, TEXTPATH, VARIANCE, ANIMATION, CONJUGATE, CONDITION, COMPLEXES, FONT_FACE, FACTORIAL, INTERSECT, IMAGINARY, LAPLACIAN, MATRIXROW, NOTSUBSET, OTHERWISE, PIECEWISE, PLAINTEXT, RATIONALS, SEMANTICS, TRANSPOSE, ANNOTATION, BLOCKQUOTE, DIVERGENCE, EULERGAMMA, EQUIVALENT, IMAGINARYI, MALIGNMARK, MUNDEROVER, MLABELEDTR, NOTANUMBER, SOLIDCOLOR, ALTGLYPHDEF, DETERMINANT, EVENTSOURCE, FEMERGENODE, FECOMPOSITE, FESPOTLIGHT, MALIGNGROUP, MPRESCRIPTS, MOMENTABOUT, NOTPRSUBSET, PARTIALDIFF, ALTGLYPHITEM, ANIMATECOLOR, DATATEMPLATE, EXPONENTIALE, FETURBULENCE, FEPOINTLIGHT, FEMORPHOLOGY, OUTERPRODUCT, ANIMATEMOTION, COLOR_PROFILE_0, FONT_FACE_SRC, FONT_FACE_URI, FOREIGNOBJECT, FECOLORMATRIX, MISSING_GLYPH, MMULTISCRIPTS, SCALARPRODUCT, VECTORPRODUCT, ANNOTATION_XML, DEFINITION_SRC, FONT_FACE_NAME, FEGAUSSIANBLUR, FEDISTANTLIGHT, LINEARGRADIENT, NATURALNUMBERS, RADIALGRADIENT, ANIMATETRANSFORM, CARTESIANPRODUCT, FONT_FACE_FORMAT, FECONVOLVEMATRIX, FEDIFFUSELIGHTING, FEDISPLACEMENTMAP, FESPECULARLIGHTING, DOMAINOFAPPLICATION, FECOMPONENTTRANSFER]);
10.18209 + ELEMENT_HASHES = initValues(_3I_classLit, 0, -1, [1057, 1090, 1255, 1321, 1552, 1585, 1651, 1717, 68162, 68899, 69059, 69764, 70020, 70276, 71077, 71205, 72134, 72232, 72264, 72296, 72328, 72360, 72392, 73351, 74312, 75209, 78124, 78284, 78476, 79149, 79309, 79341, 79469, 81295, 81487, 82224, 84498, 84626, 86164, 86292, 86612, 86676, 87445, 3183041, 3186241, 3198017, 3218722, 3226754, 3247715, 3256803, 3263971, 3264995, 3289252, 3291332, 3295524, 3299620, 3326725, 3379303, 3392679, 3448233, 3460553, 3461577, 3510347, 3546604, 3552364, 3556524, 3576461, 3586349, 3588141, 3590797, 3596333, 3622062, 3625454, 3627054, 3675728, 3749042, 3771059, 3771571, 3776211, 3782323, 3782963, 3784883, 3785395, 3788979, 3815476, 3839605, 3885110, 3917911, 3948984, 3951096, 135304769, 135858241, 136498210, 136906434, 137138658, 137512995, 137531875, 137548067, 137629283, 137645539, 137646563, 137775779, 138529956, 138615076, 139040932, 140954086, 141179366, 141690439, 142738600, 143013512, 146979116, 147175724, 147475756, 147902637, 147936877, 148017645, 148131885, 148228141, 148229165, 148309165, 148395629, 148551853, 148618829, 149076462, 149490158, 149572782, 151277616, 151639440, 153268914, 153486514, 153563314, 153750706, 153763314, 153914034, 154406067, 154417459, 154600979, 154678323, 154680979, 154866835, 155366708, 155375188, 155391572, 155465780, 155869364, 158045494, 168988979, 169321621, 169652752, 173151309, 174240818, 174247297, 174669292, 175391532, 176638123, 177380397, 177879204, 177886734, 180753473, 181020073, 181503558, 181686320, 181999237, 181999311, 182048201, 182074866, 182078003, 182083764, 182920847, 184716457, 184976961, 185145071, 187281445, 187872052, 188100653, 188875944, 188919873, 188920457, 189203987, 189371817, 189414886, 189567458, 190266670, 191318187, 191337609, 202479203, 202493027, 202835587, 202843747, 203013219, 203036048, 203045987, 203177552, 203898516, 204648562, 205067918, 205078130, 205096654, 205689142, 205690439, 205766017, 205988909, 207213161, 207794484, 207800999, 208023602, 208213644, 208213647, 210310273, 210940978, 213325049, 213946445, 214055079, 215125040, 215134273, 215135028, 215237420, 215418148, 215553166, 215553394, 215563858, 215627949, 215754324, 217529652, 217713834, 217732628, 218731945, 221417045, 221424946, 221493746, 221515401, 221658189, 221844577, 221908140, 221910626, 221921586, 222659762, 225001091, 236105833, 236113965, 236194995, 236195427, 236206132, 236206387, 236211683, 236212707, 236381647, 236571826, 237124271, 238172205, 238210544, 238270764, 238435405, 238501172, 239224867, 239257644, 239710497, 240307721, 241208789, 241241557, 241318060, 241319404, 241343533, 241344069, 241405397, 241765845, 243864964, 244502085, 244946220, 245109902, 247647266, 247707956, 248648814, 248648836, 248682161, 248986932, 249058914, 249697357, 252132601, 252135604, 252317348, 255007012, 255278388, 256365156, 257566121, 269763372, 271202790, 271863856, 272049197, 272127474, 272770631, 274339449, 274939471, 275388004, 275388005, 275388006, 275977800, 278267602, 278513831, 278712622, 281613765, 281683369, 282120228, 282250732, 282508942, 283743649, 283787570, 284710386, 285391148, 285478533, 285854898, 285873762, 286931113, 288964227, 289445441, 289689648, 291671489, 303512884, 305319975, 305610036, 305764101, 308448294, 308675890, 312085683, 312264750, 315032867, 316391000, 317331042, 317902135, 318950711, 319447220, 321499182, 322538804, 323145200, 337067316, 337826293, 339905989, 340833697, 341457068, 345302593, 349554733, 349771471, 349786245, 350819405, 356072847, 370349192, 373962798, 374509141, 375558638, 375574835, 376053993, 383276530, 383373833, 383407586, 384439906, 386079012, 404133513, 404307343, 407031852, 408072233, 409112005, 409608425, 409771500, 419040932, 437730612, 439529766, 442616365, 442813037, 443157674, 443295316, 450118444, 450482697, 456789668, 459935396, 471217869, 474073645, 476230702, 476665218, 476717289, 483014825, 485083298, 489306281, 538364390, 540675748, 543819186, 543958612, 576960820, 577242548, 610515252, 642202932, 644420819]);
10.18210 +}
10.18211 +
10.18212 +function $ElementName_0(this$static, name, camelCaseName, group, special, scoping, fosterParenting){
10.18213 + $clinit_89();
10.18214 + this$static.name_0 = name;
10.18215 + this$static.camelCaseName = camelCaseName;
10.18216 + this$static.group = group;
10.18217 + this$static.special = special;
10.18218 + this$static.scoping = scoping;
10.18219 + this$static.fosterParenting = fosterParenting;
10.18220 + this$static.custom = false;
10.18221 + return this$static;
10.18222 +}
10.18223 +
10.18224 +function $ElementName(this$static, name){
10.18225 + $clinit_89();
10.18226 + this$static.name_0 = name;
10.18227 + this$static.camelCaseName = name;
10.18228 + this$static.group = 0;
10.18229 + this$static.special = false;
10.18230 + this$static.scoping = false;
10.18231 + this$static.fosterParenting = false;
10.18232 + this$static.custom = true;
10.18233 + return this$static;
10.18234 +}
10.18235 +
10.18236 +function bufToHash_0(buf, len){
10.18237 + var hash, i, j;
10.18238 + hash = len;
10.18239 + hash <<= 5;
10.18240 + hash += buf[0] - 96;
10.18241 + j = len;
10.18242 + for (i = 0; i < 4 && j > 0; ++i) {
10.18243 + --j;
10.18244 + hash <<= 5;
10.18245 + hash += buf[j] - 96;
10.18246 + }
10.18247 + return hash;
10.18248 +}
10.18249 +
10.18250 +function elementNameByBuffer(buf, offset, length){
10.18251 + var end, end_0;
10.18252 + $clinit_89();
10.18253 + var elementName, hash, index, name;
10.18254 + hash = bufToHash_0(buf, length);
10.18255 + index = binarySearch(ELEMENT_HASHES, hash);
10.18256 + if (index < 0) {
10.18257 + return $ElementName(new ElementName(), String((end = offset + length , __checkBounds(buf.length, offset, end) , __valueOf(buf, offset, end))));
10.18258 + }
10.18259 + else {
10.18260 + elementName = ELEMENT_NAMES[index];
10.18261 + name = elementName.name_0;
10.18262 + if (!localEqualsBuffer(name, buf, offset, length)) {
10.18263 + return $ElementName(new ElementName(), String((end_0 = offset + length , __checkBounds(buf.length, offset, end_0) , __valueOf(buf, offset, end_0))));
10.18264 + }
10.18265 + return elementName;
10.18266 + }
10.18267 +}
10.18268 +
10.18269 +function getClass_51(){
10.18270 + return Lnu_validator_htmlparser_impl_ElementName_2_classLit;
10.18271 +}
10.18272 +
10.18273 +function ElementName(){
10.18274 +}
10.18275 +
10.18276 +_ = ElementName.prototype = new Object_0();
10.18277 +_.getClass$ = getClass_51;
10.18278 +_.typeId$ = 37;
10.18279 +_.camelCaseName = null;
10.18280 +_.custom = false;
10.18281 +_.fosterParenting = false;
10.18282 +_.group = 0;
10.18283 +_.name_0 = null;
10.18284 +_.scoping = false;
10.18285 +_.special = false;
10.18286 +var A, ABBR_0, ABS, ACRONYM, ADDRESS, ALTGLYPH, ALTGLYPHDEF, ALTGLYPHITEM, AND, ANIMATE, ANIMATECOLOR, ANIMATEMOTION, ANIMATETRANSFORM, ANIMATION, ANNOTATION, ANNOTATION_XML, APPLET, APPLY, APPROX, ARCCOS, ARCCOSH, ARCCOT, ARCCOTH, ARCCSC, ARCCSCH, ARCSEC, ARCSECH, ARCSIN, ARCSINH, ARCTAN, ARCTANH, AREA, ARG, ARTICLE, ASIDE, AUDIO, B, BASE_0, BASEFONT, BDO, BGSOUND, BIG, BLOCKQUOTE, BODY, BR, BUTTON, BVAR, CANVAS, CAPTION, CARD, CARTESIANPRODUCT, CEILING, CENTER, CI, CIRCLE, CITE_0, CLIPPATH, CN, CODE_0, CODOMAIN, COL, COLGROUP, COLOR_PROFILE_0, COMMAND, COMPLEXES, COMPOSE, CONDITION, CONJUGATE, COS, COSH, COT, COTH, CSC, CSCH, CSYMBOL, CURL, CURSOR_0, DATAGRID, DATATEMPLATE, DD, DECLARE_0, DEFINITION_SRC, DEFS, DEGREE, DEL, DESC, DETAILS, DETERMINANT, DFN, DIALOG, DIFF, DIR_0, DISCARD, DIV, DIVERGENCE, DIVIDE, DL, DOMAIN, DOMAINOFAPPLICATION, DT, ELEMENT_HASHES, ELEMENT_NAMES, ELLIPSE, EM, EMBED, EMPTYSET, EQ, EQUIVALENT, EULERGAMMA, EVENTSOURCE, EXISTS, EXP, EXPONENTIALE, FACTORIAL, FACTOROF, FALSE, FEBLEND, FECOLORMATRIX, FECOMPONENTTRANSFER, FECOMPOSITE, FECONVOLVEMATRIX, FEDIFFUSELIGHTING, FEDISPLACEMENTMAP, FEDISTANTLIGHT, FEFLOOD, FEFUNCA, FEFUNCB, FEFUNCG, FEFUNCR, FEGAUSSIANBLUR, FEIMAGE, FEMERGE, FEMERGENODE, FEMORPHOLOGY, FEOFFSET, FEPOINTLIGHT, FESPECULARLIGHTING, FESPOTLIGHT, FETILE, FETURBULENCE, FIELDSET, FIGURE, FILTER_0, FLOOR, FN, FONT, FONT_FACE, FONT_FACE_FORMAT, FONT_FACE_NAME, FONT_FACE_SRC, FONT_FACE_URI, FOOTER, FORALL, FOREIGNOBJECT, FORM_0, FRAME_0, FRAMESET, G, GCD, GEQ, GLYPH, GLYPHREF_0, GRAD, GT, H1, H2, H3, H4, H5, H6, HANDLER, HEAD, HEADER, HKERN, HR, HTML_0, I, IDENT, IFRAME, IMAGE, IMAGINARY, IMAGINARYI, IMG, IMPLIES, IN_0, INFINITY, INPUT, INS, INT, INTEGERS, INTERSECT, INTERVAL, INVERSE, ISINDEX, KBD, KEYGEN, LABEL_0, LAMBDA, LAPLACIAN, LCM, LEGEND, LEQ, LI, LIMIT, LINE, LINEARGRADIENT, LINK_0, LIST_0, LISTENER, LISTING, LN, LOG, LOGBASE, LOWLIMIT, LT, MACTION, MALIGNGROUP, MALIGNMARK, MAP, MARK, MARKER, MARQUEE, MASK_0, MATH, MATRIX, MATRIXROW, MAX_0, MEAN, MEDIAN, MENCLOSE, MENU, MERROR, META, METADATA, METER, MFENCED, MFRAC, MGLYPH, MI, MIN_0, MINUS, MISSING_GLYPH, MLABELEDTR, MMULTISCRIPTS, MN, MO, MODE_0, MOMENT, MOMENTABOUT, MOVER, MPADDED, MPATH, MPHANTOM, MPRESCRIPTS, MROOT, MROW, MS, MSPACE, MSQRT, MSTYLE, MSUB, MSUBSUP, MSUP, MTABLE, MTD, MTEXT, MTR, MUNDER, MUNDEROVER, NATURALNUMBERS, NAV, NEQ, NEST, NOBR, NOEMBED, NOFRAMES, NONE, NOSCRIPT, NOT, NOTANUMBER, NOTIN, NOTPRSUBSET, NOTSUBSET, OBJECT_0, OL, OPTGROUP, OPTION, OR, OTHERWISE, OUTERPRODUCT, OUTPUT, P, PARAM, PARTIALDIFF, PATH_0, PATTERN_0, PI, PIECE, PIECEWISE, PLAINTEXT, PLUS, POLYGON, POLYLINE, POWER, PRE, PREFETCH, PRIMES, PRODUCT, PROGRESS, PRSUBSET, Q, QUOTIENT, RADIALGRADIENT, RATIONALS, REAL, REALS, RECT, RELN, REM, ROOT, RP, RT_0, RUBY, RULE, S, SAMP, SCALARPRODUCT, SCRIPT, SDEV, SEC, SECH, SECTION, SELECT, SELECTOR, SEMANTICS, SEP, SET, SETDIFF, SIN, SINH, SMALL, SOLIDCOLOR, SOURCE, SPACER, SPAN_0, STOP, STRIKE, STRONG, STYLE_0, SUB, SUBSET, SUM, SUP, SVG, SWITCH, SYMBOL, TABLE, TAN, TANH, TBODY, TBREAK, TD, TENDSTO, TEXT_0, TEXTAREA, TEXTPATH, TFOOT, TH, THEAD, TIME, TIMES, TITLE_0, TR, TRANSPOSE, TREF, TRUE, TSPAN, TT, U, UL, UNION, UPLIMIT, USE, VAR, VARIANCE, VECTOR, VECTORPRODUCT, VIDEO, VIEW, VKERN, WBR, XMP, XOR;
10.18287 +function $clinit_97(){
10.18288 + $clinit_97 = nullMethod;
10.18289 + LT_GT = initValues(_3C_classLit, 42, -1, [60, 62]);
10.18290 + LT_SOLIDUS = initValues(_3C_classLit, 42, -1, [60, 47]);
10.18291 + RSQB_RSQB = initValues(_3C_classLit, 42, -1, [93, 93]);
10.18292 + REPLACEMENT_CHARACTER = initValues(_3C_classLit, 42, -1, [65533]);
10.18293 + SPACE = initValues(_3C_classLit, 42, -1, [32]);
10.18294 + LF = initValues(_3C_classLit, 42, -1, [10]);
10.18295 + CDATA_LSQB = $toCharArray('CDATA[');
10.18296 + OCTYPE = $toCharArray('octype');
10.18297 + UBLIC = $toCharArray('ublic');
10.18298 + YSTEM = $toCharArray('ystem');
10.18299 + TITLE_ARR = initValues(_3C_classLit, 42, -1, [116, 105, 116, 108, 101]);
10.18300 + SCRIPT_ARR = initValues(_3C_classLit, 42, -1, [115, 99, 114, 105, 112, 116]);
10.18301 + STYLE_ARR = initValues(_3C_classLit, 42, -1, [115, 116, 121, 108, 101]);
10.18302 + PLAINTEXT_ARR = initValues(_3C_classLit, 42, -1, [112, 108, 97, 105, 110, 116, 101, 120, 116]);
10.18303 + XMP_ARR = initValues(_3C_classLit, 42, -1, [120, 109, 112]);
10.18304 + TEXTAREA_ARR = initValues(_3C_classLit, 42, -1, [116, 101, 120, 116, 97, 114, 101, 97]);
10.18305 + IFRAME_ARR = initValues(_3C_classLit, 42, -1, [105, 102, 114, 97, 109, 101]);
10.18306 + NOEMBED_ARR = initValues(_3C_classLit, 42, -1, [110, 111, 101, 109, 98, 101, 100]);
10.18307 + NOSCRIPT_ARR = initValues(_3C_classLit, 42, -1, [110, 111, 115, 99, 114, 105, 112, 116]);
10.18308 + NOFRAMES_ARR = initValues(_3C_classLit, 42, -1, [110, 111, 102, 114, 97, 109, 101, 115]);
10.18309 +}
10.18310 +
10.18311 +function $addAttributeWithValue(this$static){
10.18312 + var value;
10.18313 + this$static.metaBoundaryPassed && ($clinit_89() , META) == this$static.tagName && ($clinit_87() , CHARSET) == this$static.attributeName;
10.18314 + if (this$static.attributeName) {
10.18315 + value = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.18316 + if (!this$static.endTag && this$static.html4 && this$static.html4ModeCompatibleWithXhtml1Schemata && $isCaseFolded(this$static.attributeName)) {
10.18317 + value = newAsciiLowerCaseStringFromString(value);
10.18318 + }
10.18319 + $addAttribute(this$static.attributes, this$static.attributeName, value, this$static.xmlnsPolicy);
10.18320 + }
10.18321 +}
10.18322 +
10.18323 +function $addAttributeWithoutValue(this$static){
10.18324 + this$static.metaBoundaryPassed && ($clinit_87() , CHARSET) == this$static.attributeName && ($clinit_89() , META) == this$static.tagName;
10.18325 + if (this$static.attributeName) {
10.18326 + if (this$static.html4) {
10.18327 + if ($isBoolean(this$static.attributeName)) {
10.18328 + if (this$static.html4ModeCompatibleWithXhtml1Schemata) {
10.18329 + $addAttribute(this$static.attributes, this$static.attributeName, this$static.attributeName.local[0], this$static.xmlnsPolicy);
10.18330 + }
10.18331 + else {
10.18332 + $addAttribute(this$static.attributes, this$static.attributeName, '', this$static.xmlnsPolicy);
10.18333 + }
10.18334 + }
10.18335 + else {
10.18336 + $addAttribute(this$static.attributes, this$static.attributeName, '', this$static.xmlnsPolicy);
10.18337 + }
10.18338 + }
10.18339 + else {
10.18340 + if (($clinit_87() , SRC) == this$static.attributeName || HREF == this$static.attributeName) {
10.18341 + 'Attribute \u201C' + this$static.attributeName.local[0] + '\u201D without an explicit value seen. The attribute may be dropped by IE7.';
10.18342 + }
10.18343 + $addAttribute(this$static.attributes, this$static.attributeName, '', this$static.xmlnsPolicy);
10.18344 + }
10.18345 + }
10.18346 +}
10.18347 +
10.18348 +function $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, c){
10.18349 + switch (this$static.commentPolicy.ordinal) {
10.18350 + case 2:
10.18351 + --this$static.longStrBufLen;
10.18352 + $appendLongStrBuf(this$static, 32);
10.18353 + $appendLongStrBuf(this$static, 45);
10.18354 + case 0:
10.18355 + $appendLongStrBuf(this$static, c);
10.18356 + break;
10.18357 + case 1:
10.18358 + $fatal(this$static, 'The document is not mappable to XML 1.0 due to two consecutive hyphens in a comment.');
10.18359 + }
10.18360 +}
10.18361 +
10.18362 +function $appendLongStrBuf(this$static, c){
10.18363 + var newBuf;
10.18364 + if (this$static.longStrBufLen == this$static.longStrBuf.length) {
10.18365 + newBuf = initDim(_3C_classLit, 42, -1, this$static.longStrBufLen + (this$static.longStrBufLen >> 1), 1);
10.18366 + arraycopy(this$static.longStrBuf, 0, newBuf, 0, this$static.longStrBuf.length);
10.18367 + this$static.longStrBuf = newBuf;
10.18368 + }
10.18369 + this$static.longStrBuf[this$static.longStrBufLen++] = c;
10.18370 +}
10.18371 +
10.18372 +function $appendLongStrBuf_0(this$static, buffer, offset, length){
10.18373 + var newBuf, reqLen;
10.18374 + reqLen = this$static.longStrBufLen + length;
10.18375 + if (this$static.longStrBuf.length < reqLen) {
10.18376 + newBuf = initDim(_3C_classLit, 42, -1, reqLen + (reqLen >> 1), 1);
10.18377 + arraycopy(this$static.longStrBuf, 0, newBuf, 0, this$static.longStrBuf.length);
10.18378 + this$static.longStrBuf = newBuf;
10.18379 + }
10.18380 + arraycopy(buffer, offset, this$static.longStrBuf, this$static.longStrBufLen, length);
10.18381 + this$static.longStrBufLen = reqLen;
10.18382 +}
10.18383 +
10.18384 +function $appendSecondHyphenToBogusComment(this$static){
10.18385 + switch (this$static.commentPolicy.ordinal) {
10.18386 + case 2:
10.18387 + $appendLongStrBuf(this$static, 32);
10.18388 + case 0:
10.18389 + $appendLongStrBuf(this$static, 45);
10.18390 + break;
10.18391 + case 1:
10.18392 + $fatal(this$static, 'The document is not mappable to XML 1.0 due to two consecutive hyphens in a comment.');
10.18393 + }
10.18394 +}
10.18395 +
10.18396 +function $appendStrBuf(this$static, c){
10.18397 + var newBuf;
10.18398 + if (this$static.strBufLen == this$static.strBuf.length) {
10.18399 + newBuf = initDim(_3C_classLit, 42, -1, this$static.strBuf.length + 1024, 1);
10.18400 + arraycopy(this$static.strBuf, 0, newBuf, 0, this$static.strBuf.length);
10.18401 + this$static.strBuf = newBuf;
10.18402 + }
10.18403 + this$static.strBuf[this$static.strBufLen++] = c;
10.18404 +}
10.18405 +
10.18406 +function $attributeNameComplete(this$static){
10.18407 + this$static.attributeName = nameByBuffer(this$static.strBuf, 0, this$static.strBufLen, this$static.namePolicy != ($clinit_80() , ALLOW));
10.18408 + if (!this$static.attributes) {
10.18409 + this$static.attributes = $HtmlAttributes(new HtmlAttributes(), this$static.mappingLangToXmlLang);
10.18410 + }
10.18411 + if ($contains(this$static.attributes, this$static.attributeName)) {
10.18412 + 'Duplicate attribute \u201C' + this$static.attributeName.local[0] + '\u201D.';
10.18413 + this$static.attributeName = null;
10.18414 + }
10.18415 +}
10.18416 +
10.18417 +function $contentModelElementToArray(this$static){
10.18418 + switch (this$static.contentModelElement.group) {
10.18419 + case 36:
10.18420 + this$static.contentModelElementNameAsArray = TITLE_ARR;
10.18421 + return;
10.18422 + case 31:
10.18423 + this$static.contentModelElementNameAsArray = SCRIPT_ARR;
10.18424 + return;
10.18425 + case 33:
10.18426 + this$static.contentModelElementNameAsArray = STYLE_ARR;
10.18427 + return;
10.18428 + case 30:
10.18429 + this$static.contentModelElementNameAsArray = PLAINTEXT_ARR;
10.18430 + return;
10.18431 + case 38:
10.18432 + this$static.contentModelElementNameAsArray = XMP_ARR;
10.18433 + return;
10.18434 + case 35:
10.18435 + this$static.contentModelElementNameAsArray = TEXTAREA_ARR;
10.18436 + return;
10.18437 + case 47:
10.18438 + this$static.contentModelElementNameAsArray = IFRAME_ARR;
10.18439 + return;
10.18440 + case 60:
10.18441 + this$static.contentModelElementNameAsArray = NOEMBED_ARR;
10.18442 + return;
10.18443 + case 26:
10.18444 + this$static.contentModelElementNameAsArray = NOSCRIPT_ARR;
10.18445 + return;
10.18446 + case 25:
10.18447 + this$static.contentModelElementNameAsArray = NOFRAMES_ARR;
10.18448 + return;
10.18449 + default:return;
10.18450 + }
10.18451 +}
10.18452 +
10.18453 +function $emitCarriageReturn(this$static, buf, pos){
10.18454 + this$static.nextCharOnNewLine = true;
10.18455 + this$static.lastCR = true;
10.18456 + $flushChars(this$static, buf, pos);
10.18457 + $characters(this$static.tokenHandler, LF, 0, 1);
10.18458 + this$static.cstart = 2147483647;
10.18459 +}
10.18460 +
10.18461 +function $emitComment(this$static, provisionalHyphens, pos){
10.18462 + if (this$static.wantsComments) {
10.18463 + $comment(this$static.tokenHandler, this$static.longStrBuf, 0, this$static.longStrBufLen - provisionalHyphens);
10.18464 + }
10.18465 + this$static.cstart = pos + 1;
10.18466 +}
10.18467 +
10.18468 +function $emitCurrentTagToken(this$static, selfClosing, pos){
10.18469 + var attrs;
10.18470 + this$static.cstart = pos + 1;
10.18471 + this$static.stateSave = 0;
10.18472 + attrs = !this$static.attributes?($clinit_91() , EMPTY_ATTRIBUTES):this$static.attributes;
10.18473 + if (this$static.endTag) {
10.18474 + $endTag(this$static.tokenHandler, this$static.tagName);
10.18475 + }
10.18476 + else {
10.18477 + $startTag(this$static.tokenHandler, this$static.tagName, attrs, selfClosing);
10.18478 + }
10.18479 + $resetAttributes(this$static);
10.18480 + return this$static.stateSave;
10.18481 +}
10.18482 +
10.18483 +function $emitOrAppend(this$static, val, returnState){
10.18484 + if ((returnState & -2) != 0) {
10.18485 + $appendLongStrBuf_0(this$static, val, 0, val.length);
10.18486 + }
10.18487 + else {
10.18488 + $characters(this$static.tokenHandler, val, 0, val.length);
10.18489 + }
10.18490 +}
10.18491 +
10.18492 +function $emitOrAppendOne(this$static, val, returnState){
10.18493 + if ((returnState & -2) != 0) {
10.18494 + $appendLongStrBuf(this$static, val[0]);
10.18495 + }
10.18496 + else {
10.18497 + $characters(this$static.tokenHandler, val, 0, 1);
10.18498 + }
10.18499 +}
10.18500 +
10.18501 +function $emitOrAppendStrBuf(this$static, returnState){
10.18502 + if ((returnState & -2) != 0) {
10.18503 + $appendLongStrBuf_0(this$static, this$static.strBuf, 0, this$static.strBufLen);
10.18504 + }
10.18505 + else {
10.18506 + $emitStrBuf(this$static);
10.18507 + }
10.18508 +}
10.18509 +
10.18510 +function $emitReplacementCharacter(this$static, buf, pos){
10.18511 + this$static.nextCharOnNewLine = true;
10.18512 + this$static.lastCR = true;
10.18513 + $flushChars(this$static, buf, pos);
10.18514 + $characters(this$static.tokenHandler, REPLACEMENT_CHARACTER, 0, 1);
10.18515 + this$static.cstart = 2147483647;
10.18516 +}
10.18517 +
10.18518 +function $emitStrBuf(this$static){
10.18519 + if (this$static.strBufLen > 0) {
10.18520 + $characters(this$static.tokenHandler, this$static.strBuf, 0, this$static.strBufLen);
10.18521 + }
10.18522 +}
10.18523 +
10.18524 +function $emptyAttributes(this$static){
10.18525 + if (this$static.newAttributesEachTime) {
10.18526 + return $HtmlAttributes(new HtmlAttributes(), this$static.mappingLangToXmlLang);
10.18527 + }
10.18528 + else {
10.18529 + return $clinit_91() , EMPTY_ATTRIBUTES;
10.18530 + }
10.18531 +}
10.18532 +
10.18533 +function $end(this$static){
10.18534 + this$static.strBuf = null;
10.18535 + this$static.longStrBuf = null;
10.18536 + this$static.systemIdentifier = null;
10.18537 + this$static.publicIdentifier = null;
10.18538 + this$static.doctypeName = null;
10.18539 + this$static.tagName = null;
10.18540 + this$static.attributeName = null;
10.18541 + $endTokenization(this$static.tokenHandler);
10.18542 + if (this$static.attributes) {
10.18543 + $clear_0(this$static.attributes, this$static.mappingLangToXmlLang);
10.18544 + this$static.attributes = null;
10.18545 + }
10.18546 +}
10.18547 +
10.18548 +function $eof(this$static){
10.18549 + var candidateArr, ch, i, returnState, state, val;
10.18550 + state = this$static.stateSave;
10.18551 + returnState = this$static.returnStateSave;
10.18552 + eofloop: for (;;) {
10.18553 + switch (state) {
10.18554 + case 53:
10.18555 + $characters(this$static.tokenHandler, LT_GT, 0, 1);
10.18556 + break eofloop;
10.18557 + case 4:
10.18558 + $characters(this$static.tokenHandler, LT_GT, 0, 1);
10.18559 + break eofloop;
10.18560 + case 37:
10.18561 + if (this$static.index < this$static.contentModelElementNameAsArray.length) {
10.18562 + break eofloop;
10.18563 + }
10.18564 + else {
10.18565 + break eofloop;
10.18566 + }
10.18567 +
10.18568 + case 5:
10.18569 + $characters(this$static.tokenHandler, LT_SOLIDUS, 0, 2);
10.18570 + break eofloop;
10.18571 + case 6:
10.18572 + break eofloop;
10.18573 + case 7:
10.18574 + case 14:
10.18575 + case 48:
10.18576 + break eofloop;
10.18577 + case 8:
10.18578 + break eofloop;
10.18579 + case 9:
10.18580 + case 10:
10.18581 + break eofloop;
10.18582 + case 11:
10.18583 + case 12:
10.18584 + case 13:
10.18585 + break eofloop;
10.18586 + case 15:
10.18587 + $emitComment(this$static, 0, 0);
10.18588 + break eofloop;
10.18589 + case 59:
10.18590 + $maybeAppendSpaceToBogusComment(this$static);
10.18591 + $emitComment(this$static, 0, 0);
10.18592 + break eofloop;
10.18593 + case 16:
10.18594 + this$static.longStrBufLen = 0;
10.18595 + $emitComment(this$static, 0, 0);
10.18596 + break eofloop;
10.18597 + case 38:
10.18598 + $emitComment(this$static, 0, 0);
10.18599 + break eofloop;
10.18600 + case 39:
10.18601 + if (this$static.index < 6) {
10.18602 + $emitComment(this$static, 0, 0);
10.18603 + }
10.18604 + else {
10.18605 + this$static.doctypeName = '';
10.18606 + this$static.publicIdentifier = null;
10.18607 + this$static.systemIdentifier = null;
10.18608 + this$static.forceQuirks = true;
10.18609 + this$static.cstart = 1;
10.18610 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.18611 + break eofloop;
10.18612 + }
10.18613 +
10.18614 + break eofloop;
10.18615 + case 30:
10.18616 + case 32:
10.18617 + case 35:
10.18618 + $emitComment(this$static, 0, 0);
10.18619 + break eofloop;
10.18620 + case 34:
10.18621 + $emitComment(this$static, 2, 0);
10.18622 + break eofloop;
10.18623 + case 33:
10.18624 + case 31:
10.18625 + $emitComment(this$static, 1, 0);
10.18626 + break eofloop;
10.18627 + case 36:
10.18628 + $emitComment(this$static, 3, 0);
10.18629 + break eofloop;
10.18630 + case 17:
10.18631 + case 18:
10.18632 + this$static.forceQuirks = true;
10.18633 + this$static.cstart = 1;
10.18634 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.18635 + break eofloop;
10.18636 + case 19:
10.18637 + this$static.doctypeName = String(valueOf_1(this$static.strBuf, 0, this$static.strBufLen));
10.18638 + this$static.forceQuirks = true;
10.18639 + this$static.cstart = 1;
10.18640 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.18641 + break eofloop;
10.18642 + case 40:
10.18643 + case 41:
10.18644 + case 20:
10.18645 + case 21:
10.18646 + this$static.forceQuirks = true;
10.18647 + this$static.cstart = 1;
10.18648 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.18649 + break eofloop;
10.18650 + case 22:
10.18651 + case 23:
10.18652 + this$static.forceQuirks = true;
10.18653 + this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.18654 + this$static.cstart = 1;
10.18655 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.18656 + break eofloop;
10.18657 + case 24:
10.18658 + case 25:
10.18659 + this$static.forceQuirks = true;
10.18660 + this$static.cstart = 1;
10.18661 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.18662 + break eofloop;
10.18663 + case 26:
10.18664 + case 27:
10.18665 + this$static.forceQuirks = true;
10.18666 + this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.18667 + this$static.cstart = 1;
10.18668 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.18669 + break eofloop;
10.18670 + case 28:
10.18671 + this$static.forceQuirks = true;
10.18672 + this$static.cstart = 1;
10.18673 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.18674 + break eofloop;
10.18675 + case 29:
10.18676 + this$static.cstart = 1;
10.18677 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.18678 + break eofloop;
10.18679 + case 42:
10.18680 + $emitOrAppendStrBuf(this$static, returnState);
10.18681 + state = returnState;
10.18682 + continue;
10.18683 + case 44:
10.18684 + outer: for (;;) {
10.18685 + ++this$static.entCol;
10.18686 + hiloop: for (;;) {
10.18687 + if (this$static.hi == -1) {
10.18688 + break hiloop;
10.18689 + }
10.18690 + if (this$static.entCol == ($clinit_94() , NAMES)[this$static.hi].length) {
10.18691 + break hiloop;
10.18692 + }
10.18693 + if (this$static.entCol > NAMES[this$static.hi].length) {
10.18694 + break outer;
10.18695 + }
10.18696 + else if (0 < NAMES[this$static.hi][this$static.entCol]) {
10.18697 + --this$static.hi;
10.18698 + }
10.18699 + else {
10.18700 + break hiloop;
10.18701 + }
10.18702 + }
10.18703 + loloop: for (;;) {
10.18704 + if (this$static.hi < this$static.lo) {
10.18705 + break outer;
10.18706 + }
10.18707 + if (this$static.entCol == ($clinit_94() , NAMES)[this$static.lo].length) {
10.18708 + this$static.candidate = this$static.lo;
10.18709 + this$static.strBufMark = this$static.strBufLen;
10.18710 + ++this$static.lo;
10.18711 + }
10.18712 + else if (this$static.entCol > NAMES[this$static.lo].length) {
10.18713 + break outer;
10.18714 + }
10.18715 + else if (0 > NAMES[this$static.lo][this$static.entCol]) {
10.18716 + ++this$static.lo;
10.18717 + }
10.18718 + else {
10.18719 + break loloop;
10.18720 + }
10.18721 + }
10.18722 + if (this$static.hi < this$static.lo) {
10.18723 + break outer;
10.18724 + }
10.18725 + continue;
10.18726 + }
10.18727 +
10.18728 + if (this$static.candidate == -1) {
10.18729 + $emitOrAppendStrBuf(this$static, returnState);
10.18730 + state = returnState;
10.18731 + continue eofloop;
10.18732 + }
10.18733 + else {
10.18734 + candidateArr = ($clinit_94() , NAMES)[this$static.candidate];
10.18735 + if (candidateArr[candidateArr.length - 1] != 59) {
10.18736 + if ((returnState & -2) != 0) {
10.18737 + if (this$static.strBufMark == this$static.strBufLen) {
10.18738 + ch = 0;
10.18739 + }
10.18740 + else {
10.18741 + ch = this$static.strBuf[this$static.strBufMark];
10.18742 + }
10.18743 + if (ch >= 48 && ch <= 57 || ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122) {
10.18744 + $appendLongStrBuf_0(this$static, this$static.strBuf, 0, this$static.strBufLen);
10.18745 + state = returnState;
10.18746 + continue eofloop;
10.18747 + }
10.18748 + }
10.18749 + }
10.18750 + val = VALUES_0[this$static.candidate];
10.18751 + $emitOrAppend(this$static, val, returnState);
10.18752 + if (this$static.strBufMark < this$static.strBufLen) {
10.18753 + if ((returnState & -2) != 0) {
10.18754 + for (i = this$static.strBufMark; i < this$static.strBufLen; ++i) {
10.18755 + $appendLongStrBuf(this$static, this$static.strBuf[i]);
10.18756 + }
10.18757 + }
10.18758 + else {
10.18759 + $characters(this$static.tokenHandler, this$static.strBuf, this$static.strBufMark, this$static.strBufLen - this$static.strBufMark);
10.18760 + }
10.18761 + }
10.18762 + state = returnState;
10.18763 + continue eofloop;
10.18764 + }
10.18765 +
10.18766 + case 43:
10.18767 + case 46:
10.18768 + case 45:
10.18769 + if (this$static.seenDigits) {
10.18770 + }
10.18771 + else {
10.18772 + 'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
10.18773 + $emitOrAppendStrBuf(this$static, returnState);
10.18774 + state = returnState;
10.18775 + continue;
10.18776 + }
10.18777 +
10.18778 + $handleNcrValue(this$static, returnState);
10.18779 + state = returnState;
10.18780 + continue;
10.18781 + case 0:
10.18782 + default:break eofloop;
10.18783 + }
10.18784 + }
10.18785 + $eof_0(this$static.tokenHandler);
10.18786 + return;
10.18787 +}
10.18788 +
10.18789 +function $fatal(this$static, message){
10.18790 + var spe;
10.18791 + spe = $SAXParseException(new SAXParseException(), message, this$static);
10.18792 + throw spe;
10.18793 +}
10.18794 +
10.18795 +function $handleNcrValue(this$static, returnState){
10.18796 + var ch, val;
10.18797 + if (this$static.value >= 128 && this$static.value <= 159) {
10.18798 + val = ($clinit_94() , WINDOWS_1252)[this$static.value - 128];
10.18799 + $emitOrAppendOne(this$static, val, returnState);
10.18800 + }
10.18801 + else if (this$static.value == 13) {
10.18802 + $emitOrAppendOne(this$static, LF, returnState);
10.18803 + }
10.18804 + else if (this$static.value == 12 && this$static.contentSpacePolicy != ($clinit_80() , ALLOW)) {
10.18805 + if (this$static.contentSpacePolicy == ($clinit_80() , ALTER_INFOSET)) {
10.18806 + $emitOrAppendOne(this$static, SPACE, returnState);
10.18807 + }
10.18808 + else if (this$static.contentSpacePolicy == FATAL) {
10.18809 + $fatal(this$static, 'A character reference expanded to a form feed which is not legal XML 1.0 white space.');
10.18810 + }
10.18811 + }
10.18812 + else if (this$static.value >= 0 && this$static.value <= 8 || this$static.value == 11 || this$static.value >= 14 && this$static.value <= 31 || this$static.value == 127) {
10.18813 + 'Character reference expands to a control character (' + $toUPlusString(this$static.value & 65535) + ').';
10.18814 + $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
10.18815 + }
10.18816 + else if ((this$static.value & 63488) == 55296) {
10.18817 + $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
10.18818 + }
10.18819 + else if ((this$static.value & 65534) == 65534) {
10.18820 + $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
10.18821 + }
10.18822 + else if (this$static.value >= 64976 && this$static.value <= 65007) {
10.18823 + $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
10.18824 + }
10.18825 + else if (this$static.value <= 65535) {
10.18826 + ch = this$static.value & 65535;
10.18827 + this$static.bmpChar[0] = ch;
10.18828 + $emitOrAppendOne(this$static, this$static.bmpChar, returnState);
10.18829 + }
10.18830 + else if (this$static.value <= 1114111) {
10.18831 + this$static.astralChar[0] = 55232 + (this$static.value >> 10) & 65535;
10.18832 + this$static.astralChar[1] = 56320 + (this$static.value & 1023) & 65535;
10.18833 + $emitOrAppend(this$static, this$static.astralChar, returnState);
10.18834 + }
10.18835 + else {
10.18836 + $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
10.18837 + }
10.18838 +}
10.18839 +
10.18840 +function $maybeAppendSpaceToBogusComment(this$static){
10.18841 + switch (this$static.commentPolicy.ordinal) {
10.18842 + case 2:
10.18843 + $appendLongStrBuf(this$static, 32);
10.18844 + break;
10.18845 + case 1:
10.18846 + $fatal(this$static, 'The document is not mappable to XML 1.0 due to a trailing hyphen in a comment.');
10.18847 + }
10.18848 +}
10.18849 +
10.18850 +function $resetAttributes(this$static){
10.18851 + if (this$static.newAttributesEachTime) {
10.18852 + this$static.attributes = null;
10.18853 + }
10.18854 + else {
10.18855 + $clear_0(this$static.attributes, this$static.mappingLangToXmlLang);
10.18856 + }
10.18857 +}
10.18858 +
10.18859 +function $setContentModelFlag(this$static, contentModelFlag){
10.18860 + var asArray;
10.18861 + this$static.stateSave = contentModelFlag;
10.18862 + if (contentModelFlag == 0) {
10.18863 + return;
10.18864 + }
10.18865 + asArray = null.nullMethod();
10.18866 + this$static.contentModelElement = elementNameByBuffer(asArray, 0, null.nullField);
10.18867 + $contentModelElementToArray(this$static);
10.18868 +}
10.18869 +
10.18870 +function $setContentModelFlag_0(this$static, contentModelFlag, contentModelElement){
10.18871 + this$static.stateSave = contentModelFlag;
10.18872 + this$static.contentModelElement = contentModelElement;
10.18873 + $contentModelElementToArray(this$static);
10.18874 +}
10.18875 +
10.18876 +function $setXmlnsPolicy(this$static, xmlnsPolicy){
10.18877 + if (xmlnsPolicy == ($clinit_80() , FATAL)) {
10.18878 + throw $IllegalArgumentException(new IllegalArgumentException(), "Can't use FATAL here.");
10.18879 + }
10.18880 + this$static.xmlnsPolicy = xmlnsPolicy;
10.18881 +}
10.18882 +
10.18883 +function $start_0(this$static){
10.18884 + this$static.confident = false;
10.18885 + this$static.strBuf = initDim(_3C_classLit, 42, -1, 64, 1);
10.18886 + this$static.strBufLen = 0;
10.18887 + this$static.longStrBuf = initDim(_3C_classLit, 42, -1, 1024, 1);
10.18888 + this$static.longStrBufLen = 0;
10.18889 + this$static.stateSave = 0;
10.18890 + this$static.lastCR = false;
10.18891 + this$static.html4 = false;
10.18892 + this$static.metaBoundaryPassed = false;
10.18893 + $startTokenization(this$static.tokenHandler, this$static);
10.18894 + this$static.wantsComments = this$static.tokenHandler.wantingComments;
10.18895 + this$static.index = 0;
10.18896 + this$static.forceQuirks = false;
10.18897 + this$static.additional = 0;
10.18898 + this$static.entCol = -1;
10.18899 + this$static.lo = 0;
10.18900 + this$static.hi = ($clinit_94() , NAMES).length - 1;
10.18901 + this$static.candidate = -1;
10.18902 + this$static.strBufMark = 0;
10.18903 + this$static.prevValue = -1;
10.18904 + this$static.value = 0;
10.18905 + this$static.seenDigits = false;
10.18906 + this$static.shouldSuspend = false;
10.18907 + if (this$static.newAttributesEachTime) {
10.18908 + this$static.attributes = null;
10.18909 + }
10.18910 + else {
10.18911 + this$static.attributes = $HtmlAttributes(new HtmlAttributes(), this$static.mappingLangToXmlLang);
10.18912 + }
10.18913 + this$static.alreadyComplainedAboutNonAscii = false;
10.18914 + this$static.line = this$static.linePrev = 0;
10.18915 + this$static.col = this$static.colPrev = 1;
10.18916 + this$static.nextCharOnNewLine = true;
10.18917 + this$static.prev = 0;
10.18918 + this$static.alreadyWarnedAboutPrivateUseCharacters = false;
10.18919 +}
10.18920 +
10.18921 +function $stateLoop(this$static, state, c, pos, buf, reconsume, returnState, endPos){
10.18922 + var candidateArr, ch, e, folded, i, val;
10.18923 + stateloop: for (;;) {
10.18924 + switch (state) {
10.18925 + case 0:
10.18926 + dataloop: for (;;) {
10.18927 + if (reconsume) {
10.18928 + reconsume = false;
10.18929 + }
10.18930 + else {
10.18931 + if (++pos == endPos) {
10.18932 + break stateloop;
10.18933 + }
10.18934 + c = $checkChar(this$static, buf, pos);
10.18935 + }
10.18936 + switch (c) {
10.18937 + case 38:
10.18938 + $flushChars(this$static, buf, pos);
10.18939 + this$static.strBuf[0] = c;
10.18940 + this$static.strBufLen = 1;
10.18941 + this$static.additional = 0;
10.18942 + $LocatorImpl(new LocatorImpl(), this$static);
10.18943 + returnState = state;
10.18944 + state = 42;
10.18945 + continue stateloop;
10.18946 + case 60:
10.18947 + $flushChars(this$static, buf, pos);
10.18948 + state = 4;
10.18949 + break dataloop;
10.18950 + case 0:
10.18951 + $emitReplacementCharacter(this$static, buf, pos);
10.18952 + continue;
10.18953 + case 13:
10.18954 + $emitCarriageReturn(this$static, buf, pos);
10.18955 + break stateloop;
10.18956 + case 10:
10.18957 + this$static.nextCharOnNewLine = true;
10.18958 + default:continue;
10.18959 + }
10.18960 + }
10.18961 +
10.18962 + case 4:
10.18963 + tagopenloop: for (;;) {
10.18964 + if (++pos == endPos) {
10.18965 + break stateloop;
10.18966 + }
10.18967 + c = $checkChar(this$static, buf, pos);
10.18968 + if (c >= 65 && c <= 90) {
10.18969 + this$static.endTag = false;
10.18970 + this$static.strBuf[0] = c + 32 & 65535;
10.18971 + this$static.strBufLen = 1;
10.18972 + state = 6;
10.18973 + break tagopenloop;
10.18974 + }
10.18975 + else if (c >= 97 && c <= 122) {
10.18976 + this$static.endTag = false;
10.18977 + this$static.strBuf[0] = c;
10.18978 + this$static.strBufLen = 1;
10.18979 + state = 6;
10.18980 + break tagopenloop;
10.18981 + }
10.18982 + switch (c) {
10.18983 + case 33:
10.18984 + state = 16;
10.18985 + continue stateloop;
10.18986 + case 47:
10.18987 + state = 5;
10.18988 + continue stateloop;
10.18989 + case 63:
10.18990 + this$static.longStrBuf[0] = c;
10.18991 + this$static.longStrBufLen = 1;
10.18992 + state = 15;
10.18993 + continue stateloop;
10.18994 + case 62:
10.18995 + $characters(this$static.tokenHandler, LT_GT, 0, 2);
10.18996 + this$static.cstart = pos + 1;
10.18997 + state = 0;
10.18998 + continue stateloop;
10.18999 + default:$characters(this$static.tokenHandler, LT_GT, 0, 1);
10.19000 + this$static.cstart = pos;
10.19001 + state = 0;
10.19002 + reconsume = true;
10.19003 + continue stateloop;
10.19004 + }
10.19005 + }
10.19006 +
10.19007 + case 6:
10.19008 + tagnameloop: for (;;) {
10.19009 + if (++pos == endPos) {
10.19010 + break stateloop;
10.19011 + }
10.19012 + c = $checkChar(this$static, buf, pos);
10.19013 + switch (c) {
10.19014 + case 13:
10.19015 + this$static.nextCharOnNewLine = true;
10.19016 + this$static.lastCR = true;
10.19017 + this$static.tagName = elementNameByBuffer(this$static.strBuf, 0, this$static.strBufLen);
10.19018 + state = 7;
10.19019 + break stateloop;
10.19020 + case 10:
10.19021 + this$static.nextCharOnNewLine = true;
10.19022 + case 32:
10.19023 + case 9:
10.19024 + case 12:
10.19025 + this$static.tagName = elementNameByBuffer(this$static.strBuf, 0, this$static.strBufLen);
10.19026 + state = 7;
10.19027 + break tagnameloop;
10.19028 + case 47:
10.19029 + this$static.tagName = elementNameByBuffer(this$static.strBuf, 0, this$static.strBufLen);
10.19030 + state = 48;
10.19031 + continue stateloop;
10.19032 + case 62:
10.19033 + this$static.tagName = elementNameByBuffer(this$static.strBuf, 0, this$static.strBufLen);
10.19034 + state = $emitCurrentTagToken(this$static, false, pos);
10.19035 + if (this$static.shouldSuspend) {
10.19036 + break stateloop;
10.19037 + }
10.19038 +
10.19039 + continue stateloop;
10.19040 + case 0:
10.19041 + c = 65533;
10.19042 + default:if (c >= 65 && c <= 90) {
10.19043 + c += 32;
10.19044 + }
10.19045 +
10.19046 + $appendStrBuf(this$static, c);
10.19047 + continue;
10.19048 + }
10.19049 + }
10.19050 +
10.19051 + case 7:
10.19052 + beforeattributenameloop: for (;;) {
10.19053 + if (reconsume) {
10.19054 + reconsume = false;
10.19055 + }
10.19056 + else {
10.19057 + if (++pos == endPos) {
10.19058 + break stateloop;
10.19059 + }
10.19060 + c = $checkChar(this$static, buf, pos);
10.19061 + }
10.19062 + switch (c) {
10.19063 + case 13:
10.19064 + this$static.nextCharOnNewLine = true;
10.19065 + this$static.lastCR = true;
10.19066 + break stateloop;
10.19067 + case 10:
10.19068 + this$static.nextCharOnNewLine = true;
10.19069 + case 32:
10.19070 + case 9:
10.19071 + case 12:
10.19072 + continue;
10.19073 + case 47:
10.19074 + state = 48;
10.19075 + continue stateloop;
10.19076 + case 62:
10.19077 + state = $emitCurrentTagToken(this$static, false, pos);
10.19078 + if (this$static.shouldSuspend) {
10.19079 + break stateloop;
10.19080 + }
10.19081 +
10.19082 + continue stateloop;
10.19083 + case 0:
10.19084 + c = 65533;
10.19085 + case 34:
10.19086 + case 39:
10.19087 + case 60:
10.19088 + case 61:
10.19089 + default:if (c >= 65 && c <= 90) {
10.19090 + c += 32;
10.19091 + }
10.19092 +
10.19093 + this$static.strBuf[0] = c;
10.19094 + this$static.strBufLen = 1;
10.19095 + state = 8;
10.19096 + break beforeattributenameloop;
10.19097 + }
10.19098 + }
10.19099 +
10.19100 + case 8:
10.19101 + attributenameloop: for (;;) {
10.19102 + if (++pos == endPos) {
10.19103 + break stateloop;
10.19104 + }
10.19105 + c = $checkChar(this$static, buf, pos);
10.19106 + switch (c) {
10.19107 + case 13:
10.19108 + this$static.nextCharOnNewLine = true;
10.19109 + this$static.lastCR = true;
10.19110 + $attributeNameComplete(this$static);
10.19111 + state = 9;
10.19112 + break stateloop;
10.19113 + case 10:
10.19114 + this$static.nextCharOnNewLine = true;
10.19115 + case 32:
10.19116 + case 9:
10.19117 + case 12:
10.19118 + $attributeNameComplete(this$static);
10.19119 + state = 9;
10.19120 + continue stateloop;
10.19121 + case 47:
10.19122 + $attributeNameComplete(this$static);
10.19123 + $addAttributeWithoutValue(this$static);
10.19124 + state = 48;
10.19125 + continue stateloop;
10.19126 + case 61:
10.19127 + $attributeNameComplete(this$static);
10.19128 + state = 10;
10.19129 + break attributenameloop;
10.19130 + case 62:
10.19131 + $attributeNameComplete(this$static);
10.19132 + $addAttributeWithoutValue(this$static);
10.19133 + state = $emitCurrentTagToken(this$static, false, pos);
10.19134 + if (this$static.shouldSuspend) {
10.19135 + break stateloop;
10.19136 + }
10.19137 +
10.19138 + continue stateloop;
10.19139 + case 0:
10.19140 + c = 65533;
10.19141 + case 34:
10.19142 + case 39:
10.19143 + case 60:
10.19144 + default:if (c >= 65 && c <= 90) {
10.19145 + c += 32;
10.19146 + }
10.19147 +
10.19148 + $appendStrBuf(this$static, c);
10.19149 + continue;
10.19150 + }
10.19151 + }
10.19152 +
10.19153 + case 10:
10.19154 + beforeattributevalueloop: for (;;) {
10.19155 + if (++pos == endPos) {
10.19156 + break stateloop;
10.19157 + }
10.19158 + c = $checkChar(this$static, buf, pos);
10.19159 + switch (c) {
10.19160 + case 13:
10.19161 + this$static.nextCharOnNewLine = true;
10.19162 + this$static.lastCR = true;
10.19163 + break stateloop;
10.19164 + case 10:
10.19165 + this$static.nextCharOnNewLine = true;
10.19166 + case 32:
10.19167 + case 9:
10.19168 + case 12:
10.19169 + continue;
10.19170 + case 34:
10.19171 + this$static.longStrBufLen = 0;
10.19172 + state = 11;
10.19173 + break beforeattributevalueloop;
10.19174 + case 38:
10.19175 + this$static.longStrBufLen = 0;
10.19176 + state = 13;
10.19177 + reconsume = true;
10.19178 + continue stateloop;
10.19179 + case 39:
10.19180 + this$static.longStrBufLen = 0;
10.19181 + state = 12;
10.19182 + continue stateloop;
10.19183 + case 62:
10.19184 + $addAttributeWithoutValue(this$static);
10.19185 + state = $emitCurrentTagToken(this$static, false, pos);
10.19186 + if (this$static.shouldSuspend) {
10.19187 + break stateloop;
10.19188 + }
10.19189 +
10.19190 + continue stateloop;
10.19191 + case 0:
10.19192 + c = 65533;
10.19193 + case 60:
10.19194 + case 61:
10.19195 + $errLtOrEqualsInUnquotedAttributeOrNull(c);
10.19196 + default:this$static.longStrBuf[0] = c;
10.19197 + this$static.longStrBufLen = 1;
10.19198 + state = 13;
10.19199 + continue stateloop;
10.19200 + }
10.19201 + }
10.19202 +
10.19203 + case 11:
10.19204 + attributevaluedoublequotedloop: for (;;) {
10.19205 + if (reconsume) {
10.19206 + reconsume = false;
10.19207 + }
10.19208 + else {
10.19209 + if (++pos == endPos) {
10.19210 + break stateloop;
10.19211 + }
10.19212 + c = $checkChar(this$static, buf, pos);
10.19213 + }
10.19214 + switch (c) {
10.19215 + case 34:
10.19216 + $addAttributeWithValue(this$static);
10.19217 + state = 14;
10.19218 + break attributevaluedoublequotedloop;
10.19219 + case 38:
10.19220 + this$static.strBuf[0] = c;
10.19221 + this$static.strBufLen = 1;
10.19222 + this$static.additional = 34;
10.19223 + $LocatorImpl(new LocatorImpl(), this$static);
10.19224 + returnState = state;
10.19225 + state = 42;
10.19226 + continue stateloop;
10.19227 + case 13:
10.19228 + this$static.nextCharOnNewLine = true;
10.19229 + this$static.lastCR = true;
10.19230 + $appendLongStrBuf(this$static, 10);
10.19231 + break stateloop;
10.19232 + case 10:
10.19233 + this$static.nextCharOnNewLine = true;
10.19234 + $appendLongStrBuf(this$static, 10);
10.19235 + continue;
10.19236 + case 0:
10.19237 + c = 65533;
10.19238 + default:$appendLongStrBuf(this$static, c);
10.19239 + continue;
10.19240 + }
10.19241 + }
10.19242 +
10.19243 + case 14:
10.19244 + afterattributevaluequotedloop: for (;;) {
10.19245 + if (++pos == endPos) {
10.19246 + break stateloop;
10.19247 + }
10.19248 + c = $checkChar(this$static, buf, pos);
10.19249 + switch (c) {
10.19250 + case 13:
10.19251 + this$static.nextCharOnNewLine = true;
10.19252 + this$static.lastCR = true;
10.19253 + state = 7;
10.19254 + break stateloop;
10.19255 + case 10:
10.19256 + this$static.nextCharOnNewLine = true;
10.19257 + case 32:
10.19258 + case 9:
10.19259 + case 12:
10.19260 + state = 7;
10.19261 + continue stateloop;
10.19262 + case 47:
10.19263 + state = 48;
10.19264 + break afterattributevaluequotedloop;
10.19265 + case 62:
10.19266 + state = $emitCurrentTagToken(this$static, false, pos);
10.19267 + if (this$static.shouldSuspend) {
10.19268 + break stateloop;
10.19269 + }
10.19270 +
10.19271 + continue stateloop;
10.19272 + default:state = 7;
10.19273 + reconsume = true;
10.19274 + continue stateloop;
10.19275 + }
10.19276 + }
10.19277 +
10.19278 + case 48:
10.19279 + if (++pos == endPos) {
10.19280 + break stateloop;
10.19281 + }
10.19282 +
10.19283 + c = $checkChar(this$static, buf, pos);
10.19284 + switch (c) {
10.19285 + case 62:
10.19286 + state = $emitCurrentTagToken(this$static, true, pos);
10.19287 + if (this$static.shouldSuspend) {
10.19288 + break stateloop;
10.19289 + }
10.19290 +
10.19291 + continue stateloop;
10.19292 + default:state = 7;
10.19293 + reconsume = true;
10.19294 + continue stateloop;
10.19295 + }
10.19296 +
10.19297 + case 13:
10.19298 + for (;;) {
10.19299 + if (reconsume) {
10.19300 + reconsume = false;
10.19301 + }
10.19302 + else {
10.19303 + if (++pos == endPos) {
10.19304 + break stateloop;
10.19305 + }
10.19306 + c = $checkChar(this$static, buf, pos);
10.19307 + }
10.19308 + switch (c) {
10.19309 + case 13:
10.19310 + this$static.nextCharOnNewLine = true;
10.19311 + this$static.lastCR = true;
10.19312 + $addAttributeWithValue(this$static);
10.19313 + state = 7;
10.19314 + break stateloop;
10.19315 + case 10:
10.19316 + this$static.nextCharOnNewLine = true;
10.19317 + case 32:
10.19318 + case 9:
10.19319 + case 12:
10.19320 + $addAttributeWithValue(this$static);
10.19321 + state = 7;
10.19322 + continue stateloop;
10.19323 + case 38:
10.19324 + this$static.strBuf[0] = c;
10.19325 + this$static.strBufLen = 1;
10.19326 + this$static.additional = 62;
10.19327 + $LocatorImpl(new LocatorImpl(), this$static);
10.19328 + returnState = state;
10.19329 + state = 42;
10.19330 + continue stateloop;
10.19331 + case 62:
10.19332 + $addAttributeWithValue(this$static);
10.19333 + state = $emitCurrentTagToken(this$static, false, pos);
10.19334 + if (this$static.shouldSuspend) {
10.19335 + break stateloop;
10.19336 + }
10.19337 +
10.19338 + continue stateloop;
10.19339 + case 0:
10.19340 + c = 65533;
10.19341 + case 60:
10.19342 + case 34:
10.19343 + case 39:
10.19344 + case 61:
10.19345 + default:$appendLongStrBuf(this$static, c);
10.19346 + continue;
10.19347 + }
10.19348 + }
10.19349 +
10.19350 + case 9:
10.19351 + for (;;) {
10.19352 + if (++pos == endPos) {
10.19353 + break stateloop;
10.19354 + }
10.19355 + c = $checkChar(this$static, buf, pos);
10.19356 + switch (c) {
10.19357 + case 13:
10.19358 + this$static.nextCharOnNewLine = true;
10.19359 + this$static.lastCR = true;
10.19360 + break stateloop;
10.19361 + case 10:
10.19362 + this$static.nextCharOnNewLine = true;
10.19363 + case 32:
10.19364 + case 9:
10.19365 + case 12:
10.19366 + continue;
10.19367 + case 47:
10.19368 + $addAttributeWithoutValue(this$static);
10.19369 + state = 48;
10.19370 + continue stateloop;
10.19371 + case 61:
10.19372 + state = 10;
10.19373 + continue stateloop;
10.19374 + case 62:
10.19375 + $addAttributeWithoutValue(this$static);
10.19376 + state = $emitCurrentTagToken(this$static, false, pos);
10.19377 + if (this$static.shouldSuspend) {
10.19378 + break stateloop;
10.19379 + }
10.19380 +
10.19381 + continue stateloop;
10.19382 + case 0:
10.19383 + c = 65533;
10.19384 + case 34:
10.19385 + case 39:
10.19386 + case 60:
10.19387 + default:$addAttributeWithoutValue(this$static);
10.19388 + if (c >= 65 && c <= 90) {
10.19389 + c += 32;
10.19390 + }
10.19391 +
10.19392 + this$static.strBuf[0] = c;
10.19393 + this$static.strBufLen = 1;
10.19394 + state = 8;
10.19395 + continue stateloop;
10.19396 + }
10.19397 + }
10.19398 +
10.19399 + case 15:
10.19400 + boguscommentloop: for (;;) {
10.19401 + if (reconsume) {
10.19402 + reconsume = false;
10.19403 + }
10.19404 + else {
10.19405 + if (++pos == endPos) {
10.19406 + break stateloop;
10.19407 + }
10.19408 + c = $checkChar(this$static, buf, pos);
10.19409 + }
10.19410 + switch (c) {
10.19411 + case 62:
10.19412 + $emitComment(this$static, 0, pos);
10.19413 + state = 0;
10.19414 + continue stateloop;
10.19415 + case 45:
10.19416 + $appendLongStrBuf(this$static, c);
10.19417 + state = 59;
10.19418 + break boguscommentloop;
10.19419 + case 13:
10.19420 + this$static.nextCharOnNewLine = true;
10.19421 + this$static.lastCR = true;
10.19422 + $appendLongStrBuf(this$static, 10);
10.19423 + break stateloop;
10.19424 + case 10:
10.19425 + this$static.nextCharOnNewLine = true;
10.19426 + $appendLongStrBuf(this$static, 10);
10.19427 + continue;
10.19428 + case 0:
10.19429 + c = 65533;
10.19430 + default:$appendLongStrBuf(this$static, c);
10.19431 + continue;
10.19432 + }
10.19433 + }
10.19434 +
10.19435 + case 59:
10.19436 + boguscommenthyphenloop: for (;;) {
10.19437 + if (++pos == endPos) {
10.19438 + break stateloop;
10.19439 + }
10.19440 + c = $checkChar(this$static, buf, pos);
10.19441 + switch (c) {
10.19442 + case 62:
10.19443 + $maybeAppendSpaceToBogusComment(this$static);
10.19444 + $emitComment(this$static, 0, pos);
10.19445 + state = 0;
10.19446 + continue stateloop;
10.19447 + case 45:
10.19448 + $appendSecondHyphenToBogusComment(this$static);
10.19449 + continue boguscommenthyphenloop;
10.19450 + case 13:
10.19451 + this$static.nextCharOnNewLine = true;
10.19452 + this$static.lastCR = true;
10.19453 + $appendLongStrBuf(this$static, 10);
10.19454 + state = 15;
10.19455 + break stateloop;
10.19456 + case 10:
10.19457 + this$static.nextCharOnNewLine = true;
10.19458 + $appendLongStrBuf(this$static, 10);
10.19459 + state = 15;
10.19460 + continue stateloop;
10.19461 + case 0:
10.19462 + c = 65533;
10.19463 + default:$appendLongStrBuf(this$static, c);
10.19464 + state = 15;
10.19465 + continue stateloop;
10.19466 + }
10.19467 + }
10.19468 +
10.19469 + case 16:
10.19470 + markupdeclarationopenloop: for (;;) {
10.19471 + if (++pos == endPos) {
10.19472 + break stateloop;
10.19473 + }
10.19474 + c = $checkChar(this$static, buf, pos);
10.19475 + switch (c) {
10.19476 + case 45:
10.19477 + this$static.longStrBuf[0] = c;
10.19478 + this$static.longStrBufLen = 1;
10.19479 + state = 38;
10.19480 + break markupdeclarationopenloop;
10.19481 + case 100:
10.19482 + case 68:
10.19483 + this$static.longStrBuf[0] = c;
10.19484 + this$static.longStrBufLen = 1;
10.19485 + this$static.index = 0;
10.19486 + state = 39;
10.19487 + continue stateloop;
10.19488 + case 91:
10.19489 + if (this$static.tokenHandler.foreignFlag == 0) {
10.19490 + this$static.longStrBuf[0] = c;
10.19491 + this$static.longStrBufLen = 1;
10.19492 + this$static.index = 0;
10.19493 + state = 49;
10.19494 + continue stateloop;
10.19495 + }
10.19496 + else {
10.19497 + }
10.19498 +
10.19499 + default:this$static.longStrBufLen = 0;
10.19500 + state = 15;
10.19501 + reconsume = true;
10.19502 + continue stateloop;
10.19503 + }
10.19504 + }
10.19505 +
10.19506 + case 38:
10.19507 + markupdeclarationhyphenloop: for (;;) {
10.19508 + if (++pos == endPos) {
10.19509 + break stateloop;
10.19510 + }
10.19511 + c = $checkChar(this$static, buf, pos);
10.19512 + switch (c) {
10.19513 + case 0:
10.19514 + break stateloop;
10.19515 + case 45:
10.19516 + this$static.longStrBufLen = 0;
10.19517 + state = 30;
10.19518 + break markupdeclarationhyphenloop;
10.19519 + default:state = 15;
10.19520 + reconsume = true;
10.19521 + continue stateloop;
10.19522 + }
10.19523 + }
10.19524 +
10.19525 + case 30:
10.19526 + commentstartloop: for (;;) {
10.19527 + if (++pos == endPos) {
10.19528 + break stateloop;
10.19529 + }
10.19530 + c = $checkChar(this$static, buf, pos);
10.19531 + switch (c) {
10.19532 + case 45:
10.19533 + $appendLongStrBuf(this$static, c);
10.19534 + state = 31;
10.19535 + continue stateloop;
10.19536 + case 62:
10.19537 + $emitComment(this$static, 0, pos);
10.19538 + state = 0;
10.19539 + continue stateloop;
10.19540 + case 13:
10.19541 + this$static.nextCharOnNewLine = true;
10.19542 + this$static.lastCR = true;
10.19543 + $appendLongStrBuf(this$static, 10);
10.19544 + state = 32;
10.19545 + break stateloop;
10.19546 + case 10:
10.19547 + this$static.nextCharOnNewLine = true;
10.19548 + $appendLongStrBuf(this$static, 10);
10.19549 + state = 32;
10.19550 + break commentstartloop;
10.19551 + case 0:
10.19552 + c = 65533;
10.19553 + default:$appendLongStrBuf(this$static, c);
10.19554 + state = 32;
10.19555 + break commentstartloop;
10.19556 + }
10.19557 + }
10.19558 +
10.19559 + case 32:
10.19560 + commentloop: for (;;) {
10.19561 + if (++pos == endPos) {
10.19562 + break stateloop;
10.19563 + }
10.19564 + c = $checkChar(this$static, buf, pos);
10.19565 + switch (c) {
10.19566 + case 45:
10.19567 + $appendLongStrBuf(this$static, c);
10.19568 + state = 33;
10.19569 + break commentloop;
10.19570 + case 13:
10.19571 + this$static.nextCharOnNewLine = true;
10.19572 + this$static.lastCR = true;
10.19573 + $appendLongStrBuf(this$static, 10);
10.19574 + break stateloop;
10.19575 + case 10:
10.19576 + this$static.nextCharOnNewLine = true;
10.19577 + $appendLongStrBuf(this$static, 10);
10.19578 + continue;
10.19579 + case 0:
10.19580 + c = 65533;
10.19581 + default:$appendLongStrBuf(this$static, c);
10.19582 + continue;
10.19583 + }
10.19584 + }
10.19585 +
10.19586 + case 33:
10.19587 + commentenddashloop: for (;;) {
10.19588 + if (++pos == endPos) {
10.19589 + break stateloop;
10.19590 + }
10.19591 + c = $checkChar(this$static, buf, pos);
10.19592 + switch (c) {
10.19593 + case 45:
10.19594 + $appendLongStrBuf(this$static, c);
10.19595 + state = 34;
10.19596 + break commentenddashloop;
10.19597 + case 13:
10.19598 + this$static.nextCharOnNewLine = true;
10.19599 + this$static.lastCR = true;
10.19600 + $appendLongStrBuf(this$static, 10);
10.19601 + state = 32;
10.19602 + break stateloop;
10.19603 + case 10:
10.19604 + this$static.nextCharOnNewLine = true;
10.19605 + $appendLongStrBuf(this$static, 10);
10.19606 + state = 32;
10.19607 + continue stateloop;
10.19608 + case 0:
10.19609 + c = 65533;
10.19610 + default:$appendLongStrBuf(this$static, c);
10.19611 + state = 32;
10.19612 + continue stateloop;
10.19613 + }
10.19614 + }
10.19615 +
10.19616 + case 34:
10.19617 + commentendloop: for (;;) {
10.19618 + if (++pos == endPos) {
10.19619 + break stateloop;
10.19620 + }
10.19621 + c = $checkChar(this$static, buf, pos);
10.19622 + switch (c) {
10.19623 + case 62:
10.19624 + $emitComment(this$static, 2, pos);
10.19625 + state = 0;
10.19626 + continue stateloop;
10.19627 + case 45:
10.19628 + $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, c);
10.19629 + continue;
10.19630 + case 32:
10.19631 + case 9:
10.19632 + case 12:
10.19633 + $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, c);
10.19634 + state = 35;
10.19635 + break commentendloop;
10.19636 + case 13:
10.19637 + this$static.nextCharOnNewLine = true;
10.19638 + this$static.lastCR = true;
10.19639 + $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, 10);
10.19640 + state = 35;
10.19641 + break stateloop;
10.19642 + case 10:
10.19643 + this$static.nextCharOnNewLine = true;
10.19644 + $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, 10);
10.19645 + state = 35;
10.19646 + break commentendloop;
10.19647 + case 33:
10.19648 + $appendLongStrBuf(this$static, c);
10.19649 + state = 36;
10.19650 + continue stateloop;
10.19651 + case 0:
10.19652 + c = 65533;
10.19653 + default:$adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, c);
10.19654 + state = 32;
10.19655 + continue stateloop;
10.19656 + }
10.19657 + }
10.19658 +
10.19659 + case 35:
10.19660 + for (;;) {
10.19661 + if (++pos == endPos) {
10.19662 + break stateloop;
10.19663 + }
10.19664 + c = $checkChar(this$static, buf, pos);
10.19665 + switch (c) {
10.19666 + case 62:
10.19667 + $emitComment(this$static, 0, pos);
10.19668 + state = 0;
10.19669 + continue stateloop;
10.19670 + case 45:
10.19671 + $appendLongStrBuf(this$static, c);
10.19672 + state = 33;
10.19673 + continue stateloop;
10.19674 + case 32:
10.19675 + case 9:
10.19676 + case 12:
10.19677 + $appendLongStrBuf(this$static, c);
10.19678 + continue;
10.19679 + case 13:
10.19680 + this$static.nextCharOnNewLine = true;
10.19681 + this$static.lastCR = true;
10.19682 + $appendLongStrBuf(this$static, 10);
10.19683 + break stateloop;
10.19684 + case 10:
10.19685 + this$static.nextCharOnNewLine = true;
10.19686 + $appendLongStrBuf(this$static, 10);
10.19687 + continue;
10.19688 + case 0:
10.19689 + c = 65533;
10.19690 + default:$appendLongStrBuf(this$static, c);
10.19691 + state = 32;
10.19692 + continue stateloop;
10.19693 + }
10.19694 + }
10.19695 +
10.19696 + case 36:
10.19697 + for (;;) {
10.19698 + if (++pos == endPos) {
10.19699 + break stateloop;
10.19700 + }
10.19701 + c = $checkChar(this$static, buf, pos);
10.19702 + switch (c) {
10.19703 + case 62:
10.19704 + $emitComment(this$static, 3, pos);
10.19705 + state = 0;
10.19706 + continue stateloop;
10.19707 + case 45:
10.19708 + $appendLongStrBuf(this$static, c);
10.19709 + state = 33;
10.19710 + continue stateloop;
10.19711 + case 13:
10.19712 + this$static.nextCharOnNewLine = true;
10.19713 + this$static.lastCR = true;
10.19714 + $appendLongStrBuf(this$static, 10);
10.19715 + break stateloop;
10.19716 + case 10:
10.19717 + this$static.nextCharOnNewLine = true;
10.19718 + $appendLongStrBuf(this$static, 10);
10.19719 + continue;
10.19720 + case 0:
10.19721 + c = 65533;
10.19722 + default:$appendLongStrBuf(this$static, c);
10.19723 + state = 32;
10.19724 + continue stateloop;
10.19725 + }
10.19726 + }
10.19727 +
10.19728 + case 31:
10.19729 + if (++pos == endPos) {
10.19730 + break stateloop;
10.19731 + }
10.19732 +
10.19733 + c = $checkChar(this$static, buf, pos);
10.19734 + switch (c) {
10.19735 + case 45:
10.19736 + $appendLongStrBuf(this$static, c);
10.19737 + state = 34;
10.19738 + continue stateloop;
10.19739 + case 62:
10.19740 + $emitComment(this$static, 1, pos);
10.19741 + state = 0;
10.19742 + continue stateloop;
10.19743 + case 13:
10.19744 + this$static.nextCharOnNewLine = true;
10.19745 + this$static.lastCR = true;
10.19746 + $appendLongStrBuf(this$static, 10);
10.19747 + state = 32;
10.19748 + break stateloop;
10.19749 + case 10:
10.19750 + this$static.nextCharOnNewLine = true;
10.19751 + $appendLongStrBuf(this$static, 10);
10.19752 + state = 32;
10.19753 + continue stateloop;
10.19754 + case 0:
10.19755 + c = 65533;
10.19756 + default:$appendLongStrBuf(this$static, c);
10.19757 + state = 32;
10.19758 + continue stateloop;
10.19759 + }
10.19760 +
10.19761 + case 39:
10.19762 + markupdeclarationdoctypeloop: for (;;) {
10.19763 + if (++pos == endPos) {
10.19764 + break stateloop;
10.19765 + }
10.19766 + c = $checkChar(this$static, buf, pos);
10.19767 + if (this$static.index < 6) {
10.19768 + folded = c;
10.19769 + if (c >= 65 && c <= 90) {
10.19770 + folded += 32;
10.19771 + }
10.19772 + if (folded == OCTYPE[this$static.index]) {
10.19773 + $appendLongStrBuf(this$static, c);
10.19774 + }
10.19775 + else {
10.19776 + state = 15;
10.19777 + reconsume = true;
10.19778 + continue stateloop;
10.19779 + }
10.19780 + ++this$static.index;
10.19781 + continue;
10.19782 + }
10.19783 + else {
10.19784 + state = 17;
10.19785 + reconsume = true;
10.19786 + break markupdeclarationdoctypeloop;
10.19787 + }
10.19788 + }
10.19789 +
10.19790 + case 17:
10.19791 + doctypeloop: for (;;) {
10.19792 + if (reconsume) {
10.19793 + reconsume = false;
10.19794 + }
10.19795 + else {
10.19796 + if (++pos == endPos) {
10.19797 + break stateloop;
10.19798 + }
10.19799 + c = $checkChar(this$static, buf, pos);
10.19800 + }
10.19801 + this$static.doctypeName = '';
10.19802 + this$static.systemIdentifier = null;
10.19803 + this$static.publicIdentifier = null;
10.19804 + this$static.forceQuirks = false;
10.19805 + switch (c) {
10.19806 + case 13:
10.19807 + this$static.nextCharOnNewLine = true;
10.19808 + this$static.lastCR = true;
10.19809 + state = 18;
10.19810 + break stateloop;
10.19811 + case 10:
10.19812 + this$static.nextCharOnNewLine = true;
10.19813 + case 32:
10.19814 + case 9:
10.19815 + case 12:
10.19816 + state = 18;
10.19817 + break doctypeloop;
10.19818 + default:state = 18;
10.19819 + reconsume = true;
10.19820 + break doctypeloop;
10.19821 + }
10.19822 + }
10.19823 +
10.19824 + case 18:
10.19825 + beforedoctypenameloop: for (;;) {
10.19826 + if (reconsume) {
10.19827 + reconsume = false;
10.19828 + }
10.19829 + else {
10.19830 + if (++pos == endPos) {
10.19831 + break stateloop;
10.19832 + }
10.19833 + c = $checkChar(this$static, buf, pos);
10.19834 + }
10.19835 + switch (c) {
10.19836 + case 13:
10.19837 + this$static.nextCharOnNewLine = true;
10.19838 + this$static.lastCR = true;
10.19839 + break stateloop;
10.19840 + case 10:
10.19841 + this$static.nextCharOnNewLine = true;
10.19842 + case 32:
10.19843 + case 9:
10.19844 + case 12:
10.19845 + continue;
10.19846 + case 62:
10.19847 + this$static.forceQuirks = true;
10.19848 + this$static.cstart = pos + 1;
10.19849 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.19850 + state = 0;
10.19851 + continue stateloop;
10.19852 + case 0:
10.19853 + c = 65533;
10.19854 + default:if (c >= 65 && c <= 90) {
10.19855 + c += 32;
10.19856 + }
10.19857 +
10.19858 + this$static.strBuf[0] = c;
10.19859 + this$static.strBufLen = 1;
10.19860 + state = 19;
10.19861 + break beforedoctypenameloop;
10.19862 + }
10.19863 + }
10.19864 +
10.19865 + case 19:
10.19866 + doctypenameloop: for (;;) {
10.19867 + if (++pos == endPos) {
10.19868 + break stateloop;
10.19869 + }
10.19870 + c = $checkChar(this$static, buf, pos);
10.19871 + switch (c) {
10.19872 + case 13:
10.19873 + this$static.nextCharOnNewLine = true;
10.19874 + this$static.lastCR = true;
10.19875 + this$static.doctypeName = String(valueOf_1(this$static.strBuf, 0, this$static.strBufLen));
10.19876 + state = 20;
10.19877 + break stateloop;
10.19878 + case 10:
10.19879 + this$static.nextCharOnNewLine = true;
10.19880 + case 32:
10.19881 + case 9:
10.19882 + case 12:
10.19883 + this$static.doctypeName = String(valueOf_1(this$static.strBuf, 0, this$static.strBufLen));
10.19884 + state = 20;
10.19885 + break doctypenameloop;
10.19886 + case 62:
10.19887 + this$static.doctypeName = String(valueOf_1(this$static.strBuf, 0, this$static.strBufLen));
10.19888 + this$static.cstart = pos + 1;
10.19889 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.19890 + state = 0;
10.19891 + continue stateloop;
10.19892 + case 0:
10.19893 + c = 65533;
10.19894 + default:if (c >= 65 && c <= 90) {
10.19895 + c += 32;
10.19896 + }
10.19897 +
10.19898 + $appendStrBuf(this$static, c);
10.19899 + continue;
10.19900 + }
10.19901 + }
10.19902 +
10.19903 + case 20:
10.19904 + afterdoctypenameloop: for (;;) {
10.19905 + if (++pos == endPos) {
10.19906 + break stateloop;
10.19907 + }
10.19908 + c = $checkChar(this$static, buf, pos);
10.19909 + switch (c) {
10.19910 + case 13:
10.19911 + this$static.nextCharOnNewLine = true;
10.19912 + this$static.lastCR = true;
10.19913 + break stateloop;
10.19914 + case 10:
10.19915 + this$static.nextCharOnNewLine = true;
10.19916 + case 32:
10.19917 + case 9:
10.19918 + case 12:
10.19919 + continue;
10.19920 + case 62:
10.19921 + this$static.cstart = pos + 1;
10.19922 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.19923 + state = 0;
10.19924 + continue stateloop;
10.19925 + case 112:
10.19926 + case 80:
10.19927 + this$static.index = 0;
10.19928 + state = 40;
10.19929 + break afterdoctypenameloop;
10.19930 + case 115:
10.19931 + case 83:
10.19932 + this$static.index = 0;
10.19933 + state = 41;
10.19934 + continue stateloop;
10.19935 + default:this$static.forceQuirks = true;
10.19936 + state = 29;
10.19937 + continue stateloop;
10.19938 + }
10.19939 + }
10.19940 +
10.19941 + case 40:
10.19942 + doctypeublicloop: for (;;) {
10.19943 + if (++pos == endPos) {
10.19944 + break stateloop;
10.19945 + }
10.19946 + c = $checkChar(this$static, buf, pos);
10.19947 + if (this$static.index < 5) {
10.19948 + folded = c;
10.19949 + if (c >= 65 && c <= 90) {
10.19950 + folded += 32;
10.19951 + }
10.19952 + if (folded != UBLIC[this$static.index]) {
10.19953 + this$static.forceQuirks = true;
10.19954 + state = 29;
10.19955 + reconsume = true;
10.19956 + continue stateloop;
10.19957 + }
10.19958 + ++this$static.index;
10.19959 + continue;
10.19960 + }
10.19961 + else {
10.19962 + state = 21;
10.19963 + reconsume = true;
10.19964 + break doctypeublicloop;
10.19965 + }
10.19966 + }
10.19967 +
10.19968 + case 21:
10.19969 + beforedoctypepublicidentifierloop: for (;;) {
10.19970 + if (reconsume) {
10.19971 + reconsume = false;
10.19972 + }
10.19973 + else {
10.19974 + if (++pos == endPos) {
10.19975 + break stateloop;
10.19976 + }
10.19977 + c = $checkChar(this$static, buf, pos);
10.19978 + }
10.19979 + switch (c) {
10.19980 + case 13:
10.19981 + this$static.nextCharOnNewLine = true;
10.19982 + this$static.lastCR = true;
10.19983 + break stateloop;
10.19984 + case 10:
10.19985 + this$static.nextCharOnNewLine = true;
10.19986 + case 32:
10.19987 + case 9:
10.19988 + case 12:
10.19989 + continue;
10.19990 + case 34:
10.19991 + this$static.longStrBufLen = 0;
10.19992 + state = 22;
10.19993 + break beforedoctypepublicidentifierloop;
10.19994 + case 39:
10.19995 + this$static.longStrBufLen = 0;
10.19996 + state = 23;
10.19997 + continue stateloop;
10.19998 + case 62:
10.19999 + this$static.forceQuirks = true;
10.20000 + this$static.cstart = pos + 1;
10.20001 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.20002 + state = 0;
10.20003 + continue stateloop;
10.20004 + default:this$static.forceQuirks = true;
10.20005 + state = 29;
10.20006 + continue stateloop;
10.20007 + }
10.20008 + }
10.20009 +
10.20010 + case 22:
10.20011 + doctypepublicidentifierdoublequotedloop: for (;;) {
10.20012 + if (++pos == endPos) {
10.20013 + break stateloop;
10.20014 + }
10.20015 + c = $checkChar(this$static, buf, pos);
10.20016 + switch (c) {
10.20017 + case 34:
10.20018 + this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.20019 + state = 24;
10.20020 + break doctypepublicidentifierdoublequotedloop;
10.20021 + case 62:
10.20022 + this$static.forceQuirks = true;
10.20023 + this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.20024 + this$static.cstart = pos + 1;
10.20025 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.20026 + state = 0;
10.20027 + continue stateloop;
10.20028 + case 13:
10.20029 + this$static.nextCharOnNewLine = true;
10.20030 + this$static.lastCR = true;
10.20031 + $appendLongStrBuf(this$static, 10);
10.20032 + break stateloop;
10.20033 + case 10:
10.20034 + this$static.nextCharOnNewLine = true;
10.20035 + $appendLongStrBuf(this$static, 10);
10.20036 + continue;
10.20037 + case 0:
10.20038 + c = 65533;
10.20039 + default:$appendLongStrBuf(this$static, c);
10.20040 + continue;
10.20041 + }
10.20042 + }
10.20043 +
10.20044 + case 24:
10.20045 + afterdoctypepublicidentifierloop: for (;;) {
10.20046 + if (++pos == endPos) {
10.20047 + break stateloop;
10.20048 + }
10.20049 + c = $checkChar(this$static, buf, pos);
10.20050 + switch (c) {
10.20051 + case 13:
10.20052 + this$static.nextCharOnNewLine = true;
10.20053 + this$static.lastCR = true;
10.20054 + break stateloop;
10.20055 + case 10:
10.20056 + this$static.nextCharOnNewLine = true;
10.20057 + case 32:
10.20058 + case 9:
10.20059 + case 12:
10.20060 + continue;
10.20061 + case 34:
10.20062 + this$static.longStrBufLen = 0;
10.20063 + state = 26;
10.20064 + break afterdoctypepublicidentifierloop;
10.20065 + case 39:
10.20066 + this$static.longStrBufLen = 0;
10.20067 + state = 27;
10.20068 + continue stateloop;
10.20069 + case 62:
10.20070 + this$static.cstart = pos + 1;
10.20071 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.20072 + state = 0;
10.20073 + continue stateloop;
10.20074 + default:this$static.forceQuirks = true;
10.20075 + state = 29;
10.20076 + continue stateloop;
10.20077 + }
10.20078 + }
10.20079 +
10.20080 + case 26:
10.20081 + doctypesystemidentifierdoublequotedloop: for (;;) {
10.20082 + if (++pos == endPos) {
10.20083 + break stateloop;
10.20084 + }
10.20085 + c = $checkChar(this$static, buf, pos);
10.20086 + switch (c) {
10.20087 + case 34:
10.20088 + this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.20089 + state = 28;
10.20090 + continue stateloop;
10.20091 + case 62:
10.20092 + this$static.forceQuirks = true;
10.20093 + this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.20094 + this$static.cstart = pos + 1;
10.20095 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.20096 + state = 0;
10.20097 + continue stateloop;
10.20098 + case 13:
10.20099 + this$static.nextCharOnNewLine = true;
10.20100 + this$static.lastCR = true;
10.20101 + $appendLongStrBuf(this$static, 10);
10.20102 + break stateloop;
10.20103 + case 10:
10.20104 + this$static.nextCharOnNewLine = true;
10.20105 + $appendLongStrBuf(this$static, 10);
10.20106 + continue;
10.20107 + case 0:
10.20108 + c = 65533;
10.20109 + default:$appendLongStrBuf(this$static, c);
10.20110 + continue;
10.20111 + }
10.20112 + }
10.20113 +
10.20114 + case 28:
10.20115 + afterdoctypesystemidentifierloop: for (;;) {
10.20116 + if (++pos == endPos) {
10.20117 + break stateloop;
10.20118 + }
10.20119 + c = $checkChar(this$static, buf, pos);
10.20120 + switch (c) {
10.20121 + case 13:
10.20122 + this$static.nextCharOnNewLine = true;
10.20123 + this$static.lastCR = true;
10.20124 + break stateloop;
10.20125 + case 10:
10.20126 + this$static.nextCharOnNewLine = true;
10.20127 + case 32:
10.20128 + case 9:
10.20129 + case 12:
10.20130 + continue;
10.20131 + case 62:
10.20132 + this$static.cstart = pos + 1;
10.20133 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.20134 + state = 0;
10.20135 + continue stateloop;
10.20136 + default:this$static.forceQuirks = false;
10.20137 + state = 29;
10.20138 + break afterdoctypesystemidentifierloop;
10.20139 + }
10.20140 + }
10.20141 +
10.20142 + case 29:
10.20143 + for (;;) {
10.20144 + if (reconsume) {
10.20145 + reconsume = false;
10.20146 + }
10.20147 + else {
10.20148 + if (++pos == endPos) {
10.20149 + break stateloop;
10.20150 + }
10.20151 + c = $checkChar(this$static, buf, pos);
10.20152 + }
10.20153 + switch (c) {
10.20154 + case 62:
10.20155 + this$static.cstart = pos + 1;
10.20156 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.20157 + state = 0;
10.20158 + continue stateloop;
10.20159 + case 13:
10.20160 + this$static.nextCharOnNewLine = true;
10.20161 + this$static.lastCR = true;
10.20162 + break stateloop;
10.20163 + case 10:
10.20164 + this$static.nextCharOnNewLine = true;
10.20165 + default:continue;
10.20166 + }
10.20167 + }
10.20168 +
10.20169 + case 41:
10.20170 + doctypeystemloop: for (;;) {
10.20171 + if (++pos == endPos) {
10.20172 + break stateloop;
10.20173 + }
10.20174 + c = $checkChar(this$static, buf, pos);
10.20175 + if (this$static.index < 5) {
10.20176 + folded = c;
10.20177 + if (c >= 65 && c <= 90) {
10.20178 + folded += 32;
10.20179 + }
10.20180 + if (folded != YSTEM[this$static.index]) {
10.20181 + this$static.forceQuirks = true;
10.20182 + state = 29;
10.20183 + reconsume = true;
10.20184 + continue stateloop;
10.20185 + }
10.20186 + ++this$static.index;
10.20187 + continue stateloop;
10.20188 + }
10.20189 + else {
10.20190 + state = 25;
10.20191 + reconsume = true;
10.20192 + break doctypeystemloop;
10.20193 + }
10.20194 + }
10.20195 +
10.20196 + case 25:
10.20197 + beforedoctypesystemidentifierloop: for (;;) {
10.20198 + if (reconsume) {
10.20199 + reconsume = false;
10.20200 + }
10.20201 + else {
10.20202 + if (++pos == endPos) {
10.20203 + break stateloop;
10.20204 + }
10.20205 + c = $checkChar(this$static, buf, pos);
10.20206 + }
10.20207 + switch (c) {
10.20208 + case 13:
10.20209 + this$static.nextCharOnNewLine = true;
10.20210 + this$static.lastCR = true;
10.20211 + break stateloop;
10.20212 + case 10:
10.20213 + this$static.nextCharOnNewLine = true;
10.20214 + case 32:
10.20215 + case 9:
10.20216 + case 12:
10.20217 + continue;
10.20218 + case 34:
10.20219 + this$static.longStrBufLen = 0;
10.20220 + state = 26;
10.20221 + continue stateloop;
10.20222 + case 39:
10.20223 + this$static.longStrBufLen = 0;
10.20224 + state = 27;
10.20225 + break beforedoctypesystemidentifierloop;
10.20226 + case 62:
10.20227 + this$static.forceQuirks = true;
10.20228 + this$static.cstart = pos + 1;
10.20229 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.20230 + state = 0;
10.20231 + continue stateloop;
10.20232 + default:this$static.forceQuirks = true;
10.20233 + state = 29;
10.20234 + continue stateloop;
10.20235 + }
10.20236 + }
10.20237 +
10.20238 + case 27:
10.20239 + for (;;) {
10.20240 + if (++pos == endPos) {
10.20241 + break stateloop;
10.20242 + }
10.20243 + c = $checkChar(this$static, buf, pos);
10.20244 + switch (c) {
10.20245 + case 39:
10.20246 + this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.20247 + state = 28;
10.20248 + continue stateloop;
10.20249 + case 62:
10.20250 + this$static.forceQuirks = true;
10.20251 + this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.20252 + this$static.cstart = pos + 1;
10.20253 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.20254 + state = 0;
10.20255 + continue stateloop;
10.20256 + case 13:
10.20257 + this$static.nextCharOnNewLine = true;
10.20258 + this$static.lastCR = true;
10.20259 + $appendLongStrBuf(this$static, 10);
10.20260 + break stateloop;
10.20261 + case 10:
10.20262 + this$static.nextCharOnNewLine = true;
10.20263 + $appendLongStrBuf(this$static, 10);
10.20264 + continue;
10.20265 + case 0:
10.20266 + c = 65533;
10.20267 + default:$appendLongStrBuf(this$static, c);
10.20268 + continue;
10.20269 + }
10.20270 + }
10.20271 +
10.20272 + case 23:
10.20273 + for (;;) {
10.20274 + if (++pos == endPos) {
10.20275 + break stateloop;
10.20276 + }
10.20277 + c = $checkChar(this$static, buf, pos);
10.20278 + switch (c) {
10.20279 + case 39:
10.20280 + this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.20281 + state = 24;
10.20282 + continue stateloop;
10.20283 + case 62:
10.20284 + this$static.forceQuirks = true;
10.20285 + this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
10.20286 + this$static.cstart = pos + 1;
10.20287 + $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
10.20288 + state = 0;
10.20289 + continue stateloop;
10.20290 + case 13:
10.20291 + this$static.nextCharOnNewLine = true;
10.20292 + this$static.lastCR = true;
10.20293 + $appendLongStrBuf(this$static, 10);
10.20294 + break stateloop;
10.20295 + case 10:
10.20296 + this$static.nextCharOnNewLine = true;
10.20297 + $appendLongStrBuf(this$static, 10);
10.20298 + continue;
10.20299 + case 0:
10.20300 + c = 65533;
10.20301 + default:$appendLongStrBuf(this$static, c);
10.20302 + continue;
10.20303 + }
10.20304 + }
10.20305 +
10.20306 + case 49:
10.20307 + for (;;) {
10.20308 + if (++pos == endPos) {
10.20309 + break stateloop;
10.20310 + }
10.20311 + c = $checkChar(this$static, buf, pos);
10.20312 + if (this$static.index < 6) {
10.20313 + if (c == CDATA_LSQB[this$static.index]) {
10.20314 + $appendLongStrBuf(this$static, c);
10.20315 + }
10.20316 + else {
10.20317 + state = 15;
10.20318 + reconsume = true;
10.20319 + continue stateloop;
10.20320 + }
10.20321 + ++this$static.index;
10.20322 + continue;
10.20323 + }
10.20324 + else {
10.20325 + this$static.cstart = pos;
10.20326 + state = 50;
10.20327 + reconsume = true;
10.20328 + break;
10.20329 + }
10.20330 + }
10.20331 +
10.20332 + case 50:
10.20333 + cdatasectionloop: for (;;) {
10.20334 + if (reconsume) {
10.20335 + reconsume = false;
10.20336 + }
10.20337 + else {
10.20338 + if (++pos == endPos) {
10.20339 + break stateloop;
10.20340 + }
10.20341 + c = $checkChar(this$static, buf, pos);
10.20342 + }
10.20343 + switch (c) {
10.20344 + case 93:
10.20345 + $flushChars(this$static, buf, pos);
10.20346 + state = 51;
10.20347 + break cdatasectionloop;
10.20348 + case 0:
10.20349 + $emitReplacementCharacter(this$static, buf, pos);
10.20350 + continue;
10.20351 + case 13:
10.20352 + $emitCarriageReturn(this$static, buf, pos);
10.20353 + break stateloop;
10.20354 + case 10:
10.20355 + this$static.nextCharOnNewLine = true;
10.20356 + default:continue;
10.20357 + }
10.20358 + }
10.20359 +
10.20360 + case 51:
10.20361 + cdatarsqb: for (;;) {
10.20362 + if (++pos == endPos) {
10.20363 + break stateloop;
10.20364 + }
10.20365 + c = $checkChar(this$static, buf, pos);
10.20366 + switch (c) {
10.20367 + case 93:
10.20368 + state = 52;
10.20369 + break cdatarsqb;
10.20370 + default:$characters(this$static.tokenHandler, RSQB_RSQB, 0, 1);
10.20371 + this$static.cstart = pos;
10.20372 + state = 50;
10.20373 + reconsume = true;
10.20374 + continue stateloop;
10.20375 + }
10.20376 + }
10.20377 +
10.20378 + case 52:
10.20379 + if (++pos == endPos) {
10.20380 + break stateloop;
10.20381 + }
10.20382 +
10.20383 + c = $checkChar(this$static, buf, pos);
10.20384 + switch (c) {
10.20385 + case 62:
10.20386 + this$static.cstart = pos + 1;
10.20387 + state = 0;
10.20388 + continue stateloop;
10.20389 + default:$characters(this$static.tokenHandler, RSQB_RSQB, 0, 2);
10.20390 + this$static.cstart = pos;
10.20391 + state = 50;
10.20392 + reconsume = true;
10.20393 + continue stateloop;
10.20394 + }
10.20395 +
10.20396 + case 12:
10.20397 + attributevaluesinglequotedloop: for (;;) {
10.20398 + if (reconsume) {
10.20399 + reconsume = false;
10.20400 + }
10.20401 + else {
10.20402 + if (++pos == endPos) {
10.20403 + break stateloop;
10.20404 + }
10.20405 + c = $checkChar(this$static, buf, pos);
10.20406 + }
10.20407 + switch (c) {
10.20408 + case 39:
10.20409 + $addAttributeWithValue(this$static);
10.20410 + state = 14;
10.20411 + continue stateloop;
10.20412 + case 38:
10.20413 + this$static.strBuf[0] = c;
10.20414 + this$static.strBufLen = 1;
10.20415 + this$static.additional = 39;
10.20416 + $LocatorImpl(new LocatorImpl(), this$static);
10.20417 + returnState = state;
10.20418 + state = 42;
10.20419 + break attributevaluesinglequotedloop;
10.20420 + case 13:
10.20421 + this$static.nextCharOnNewLine = true;
10.20422 + this$static.lastCR = true;
10.20423 + $appendLongStrBuf(this$static, 10);
10.20424 + break stateloop;
10.20425 + case 10:
10.20426 + this$static.nextCharOnNewLine = true;
10.20427 + $appendLongStrBuf(this$static, 10);
10.20428 + continue;
10.20429 + case 0:
10.20430 + c = 65533;
10.20431 + default:$appendLongStrBuf(this$static, c);
10.20432 + continue;
10.20433 + }
10.20434 + }
10.20435 +
10.20436 + case 42:
10.20437 + if (++pos == endPos) {
10.20438 + break stateloop;
10.20439 + }
10.20440 +
10.20441 + c = $checkChar(this$static, buf, pos);
10.20442 + if (c == 0) {
10.20443 + break stateloop;
10.20444 + }
10.20445 +
10.20446 + switch (c) {
10.20447 + case 32:
10.20448 + case 9:
10.20449 + case 10:
10.20450 + case 13:
10.20451 + case 12:
10.20452 + case 60:
10.20453 + case 38:
10.20454 + $emitOrAppendStrBuf(this$static, returnState);
10.20455 + if ((returnState & -2) == 0) {
10.20456 + this$static.cstart = pos;
10.20457 + }
10.20458 +
10.20459 + state = returnState;
10.20460 + reconsume = true;
10.20461 + continue stateloop;
10.20462 + case 35:
10.20463 + $appendStrBuf(this$static, 35);
10.20464 + state = 43;
10.20465 + continue stateloop;
10.20466 + default:if (c == this$static.additional) {
10.20467 + $emitOrAppendStrBuf(this$static, returnState);
10.20468 + state = returnState;
10.20469 + reconsume = true;
10.20470 + continue stateloop;
10.20471 + }
10.20472 +
10.20473 + this$static.entCol = -1;
10.20474 + this$static.lo = 0;
10.20475 + this$static.hi = ($clinit_94() , NAMES).length - 1;
10.20476 + this$static.candidate = -1;
10.20477 + this$static.strBufMark = 0;
10.20478 + state = 44;
10.20479 + reconsume = true;
10.20480 + }
10.20481 +
10.20482 + case 44:
10.20483 + outer: for (;;) {
10.20484 + if (reconsume) {
10.20485 + reconsume = false;
10.20486 + }
10.20487 + else {
10.20488 + if (++pos == endPos) {
10.20489 + break stateloop;
10.20490 + }
10.20491 + c = $checkChar(this$static, buf, pos);
10.20492 + }
10.20493 + if (c == 0) {
10.20494 + break stateloop;
10.20495 + }
10.20496 + ++this$static.entCol;
10.20497 + hiloop: for (;;) {
10.20498 + if (this$static.hi == -1) {
10.20499 + break hiloop;
10.20500 + }
10.20501 + if (this$static.entCol == ($clinit_94() , NAMES)[this$static.hi].length) {
10.20502 + break hiloop;
10.20503 + }
10.20504 + if (this$static.entCol > NAMES[this$static.hi].length) {
10.20505 + break outer;
10.20506 + }
10.20507 + else if (c < NAMES[this$static.hi][this$static.entCol]) {
10.20508 + --this$static.hi;
10.20509 + }
10.20510 + else {
10.20511 + break hiloop;
10.20512 + }
10.20513 + }
10.20514 + loloop: for (;;) {
10.20515 + if (this$static.hi < this$static.lo) {
10.20516 + break outer;
10.20517 + }
10.20518 + if (this$static.entCol == ($clinit_94() , NAMES)[this$static.lo].length) {
10.20519 + this$static.candidate = this$static.lo;
10.20520 + this$static.strBufMark = this$static.strBufLen;
10.20521 + ++this$static.lo;
10.20522 + }
10.20523 + else if (this$static.entCol > NAMES[this$static.lo].length) {
10.20524 + break outer;
10.20525 + }
10.20526 + else if (c > NAMES[this$static.lo][this$static.entCol]) {
10.20527 + ++this$static.lo;
10.20528 + }
10.20529 + else {
10.20530 + break loloop;
10.20531 + }
10.20532 + }
10.20533 + if (this$static.hi < this$static.lo) {
10.20534 + break outer;
10.20535 + }
10.20536 + $appendStrBuf(this$static, c);
10.20537 + continue;
10.20538 + }
10.20539 +
10.20540 + if (this$static.candidate == -1) {
10.20541 + $emitOrAppendStrBuf(this$static, returnState);
10.20542 + if ((returnState & -2) == 0) {
10.20543 + this$static.cstart = pos;
10.20544 + }
10.20545 + state = returnState;
10.20546 + reconsume = true;
10.20547 + continue stateloop;
10.20548 + }
10.20549 + else {
10.20550 + candidateArr = ($clinit_94() , NAMES)[this$static.candidate];
10.20551 + if (candidateArr[candidateArr.length - 1] != 59) {
10.20552 + if ((returnState & -2) != 0) {
10.20553 + if (this$static.strBufMark == this$static.strBufLen) {
10.20554 + ch = c;
10.20555 + }
10.20556 + else {
10.20557 + ch = this$static.strBuf[this$static.strBufMark];
10.20558 + }
10.20559 + if (ch >= 48 && ch <= 57 || ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122) {
10.20560 + $appendLongStrBuf_0(this$static, this$static.strBuf, 0, this$static.strBufLen);
10.20561 + state = returnState;
10.20562 + reconsume = true;
10.20563 + continue stateloop;
10.20564 + }
10.20565 + }
10.20566 + }
10.20567 + val = VALUES_0[this$static.candidate];
10.20568 + $emitOrAppend(this$static, val, returnState);
10.20569 + if (this$static.strBufMark < this$static.strBufLen) {
10.20570 + if ((returnState & -2) != 0) {
10.20571 + for (i = this$static.strBufMark; i < this$static.strBufLen; ++i) {
10.20572 + $appendLongStrBuf(this$static, this$static.strBuf[i]);
10.20573 + }
10.20574 + }
10.20575 + else {
10.20576 + $characters(this$static.tokenHandler, this$static.strBuf, this$static.strBufMark, this$static.strBufLen - this$static.strBufMark);
10.20577 + }
10.20578 + }
10.20579 + if ((returnState & -2) == 0) {
10.20580 + this$static.cstart = pos;
10.20581 + }
10.20582 + state = returnState;
10.20583 + reconsume = true;
10.20584 + continue stateloop;
10.20585 + }
10.20586 +
10.20587 + case 43:
10.20588 + if (++pos == endPos) {
10.20589 + break stateloop;
10.20590 + }
10.20591 +
10.20592 + c = $checkChar(this$static, buf, pos);
10.20593 + this$static.prevValue = -1;
10.20594 + this$static.value = 0;
10.20595 + this$static.seenDigits = false;
10.20596 + switch (c) {
10.20597 + case 120:
10.20598 + case 88:
10.20599 + $appendStrBuf(this$static, c);
10.20600 + state = 45;
10.20601 + continue stateloop;
10.20602 + default:state = 46;
10.20603 + reconsume = true;
10.20604 + }
10.20605 +
10.20606 + case 46:
10.20607 + decimalloop: for (;;) {
10.20608 + if (reconsume) {
10.20609 + reconsume = false;
10.20610 + }
10.20611 + else {
10.20612 + if (++pos == endPos) {
10.20613 + break stateloop;
10.20614 + }
10.20615 + c = $checkChar(this$static, buf, pos);
10.20616 + }
10.20617 + if (this$static.value < this$static.prevValue) {
10.20618 + this$static.value = 1114112;
10.20619 + }
10.20620 + this$static.prevValue = this$static.value;
10.20621 + if (c >= 48 && c <= 57) {
10.20622 + this$static.seenDigits = true;
10.20623 + this$static.value *= 10;
10.20624 + this$static.value += c - 48;
10.20625 + continue;
10.20626 + }
10.20627 + else if (c == 59) {
10.20628 + if (this$static.seenDigits) {
10.20629 + if ((returnState & -2) == 0) {
10.20630 + this$static.cstart = pos + 1;
10.20631 + }
10.20632 + state = 47;
10.20633 + break decimalloop;
10.20634 + }
10.20635 + else {
10.20636 + 'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
10.20637 + $appendStrBuf(this$static, 59);
10.20638 + $emitOrAppendStrBuf(this$static, returnState);
10.20639 + if ((returnState & -2) == 0) {
10.20640 + this$static.cstart = pos + 1;
10.20641 + }
10.20642 + state = returnState;
10.20643 + continue stateloop;
10.20644 + }
10.20645 + }
10.20646 + else {
10.20647 + if (this$static.seenDigits) {
10.20648 + if ((returnState & -2) == 0) {
10.20649 + this$static.cstart = pos;
10.20650 + }
10.20651 + state = 47;
10.20652 + reconsume = true;
10.20653 + break decimalloop;
10.20654 + }
10.20655 + else {
10.20656 + 'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
10.20657 + $emitOrAppendStrBuf(this$static, returnState);
10.20658 + if ((returnState & -2) == 0) {
10.20659 + this$static.cstart = pos;
10.20660 + }
10.20661 + state = returnState;
10.20662 + reconsume = true;
10.20663 + continue stateloop;
10.20664 + }
10.20665 + }
10.20666 + }
10.20667 +
10.20668 + case 47:
10.20669 + $handleNcrValue(this$static, returnState);
10.20670 + state = returnState;
10.20671 + continue stateloop;
10.20672 + case 45:
10.20673 + for (;;) {
10.20674 + if (++pos == endPos) {
10.20675 + break stateloop;
10.20676 + }
10.20677 + c = $checkChar(this$static, buf, pos);
10.20678 + if (this$static.value < this$static.prevValue) {
10.20679 + this$static.value = 1114112;
10.20680 + }
10.20681 + this$static.prevValue = this$static.value;
10.20682 + if (c >= 48 && c <= 57) {
10.20683 + this$static.seenDigits = true;
10.20684 + this$static.value *= 16;
10.20685 + this$static.value += c - 48;
10.20686 + continue;
10.20687 + }
10.20688 + else if (c >= 65 && c <= 70) {
10.20689 + this$static.seenDigits = true;
10.20690 + this$static.value *= 16;
10.20691 + this$static.value += c - 65 + 10;
10.20692 + continue;
10.20693 + }
10.20694 + else if (c >= 97 && c <= 102) {
10.20695 + this$static.seenDigits = true;
10.20696 + this$static.value *= 16;
10.20697 + this$static.value += c - 97 + 10;
10.20698 + continue;
10.20699 + }
10.20700 + else if (c == 59) {
10.20701 + if (this$static.seenDigits) {
10.20702 + if ((returnState & -2) == 0) {
10.20703 + this$static.cstart = pos + 1;
10.20704 + }
10.20705 + state = 47;
10.20706 + continue stateloop;
10.20707 + }
10.20708 + else {
10.20709 + 'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
10.20710 + $appendStrBuf(this$static, 59);
10.20711 + $emitOrAppendStrBuf(this$static, returnState);
10.20712 + if ((returnState & -2) == 0) {
10.20713 + this$static.cstart = pos + 1;
10.20714 + }
10.20715 + state = returnState;
10.20716 + continue stateloop;
10.20717 + }
10.20718 + }
10.20719 + else {
10.20720 + if (this$static.seenDigits) {
10.20721 + if ((returnState & -2) == 0) {
10.20722 + this$static.cstart = pos;
10.20723 + }
10.20724 + state = 47;
10.20725 + reconsume = true;
10.20726 + continue stateloop;
10.20727 + }
10.20728 + else {
10.20729 + 'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
10.20730 + $emitOrAppendStrBuf(this$static, returnState);
10.20731 + if ((returnState & -2) == 0) {
10.20732 + this$static.cstart = pos;
10.20733 + }
10.20734 + state = returnState;
10.20735 + reconsume = true;
10.20736 + continue stateloop;
10.20737 + }
10.20738 + }
10.20739 + }
10.20740 +
10.20741 + case 3:
10.20742 + plaintextloop: for (;;) {
10.20743 + if (reconsume) {
10.20744 + reconsume = false;
10.20745 + }
10.20746 + else {
10.20747 + if (++pos == endPos) {
10.20748 + break stateloop;
10.20749 + }
10.20750 + c = $checkChar(this$static, buf, pos);
10.20751 + }
10.20752 + switch (c) {
10.20753 + case 0:
10.20754 + $emitReplacementCharacter(this$static, buf, pos);
10.20755 + continue;
10.20756 + case 13:
10.20757 + $emitCarriageReturn(this$static, buf, pos);
10.20758 + break stateloop;
10.20759 + case 10:
10.20760 + this$static.nextCharOnNewLine = true;
10.20761 + default:continue;
10.20762 + }
10.20763 + }
10.20764 +
10.20765 + case 2:
10.20766 + cdataloop: for (;;) {
10.20767 + if (reconsume) {
10.20768 + reconsume = false;
10.20769 + }
10.20770 + else {
10.20771 + if (++pos == endPos) {
10.20772 + break stateloop;
10.20773 + }
10.20774 + c = $checkChar(this$static, buf, pos);
10.20775 + }
10.20776 + switch (c) {
10.20777 + case 60:
10.20778 + $flushChars(this$static, buf, pos);
10.20779 + returnState = state;
10.20780 + state = 53;
10.20781 + break cdataloop;
10.20782 + case 0:
10.20783 + $emitReplacementCharacter(this$static, buf, pos);
10.20784 + continue;
10.20785 + case 13:
10.20786 + $emitCarriageReturn(this$static, buf, pos);
10.20787 + break stateloop;
10.20788 + case 10:
10.20789 + this$static.nextCharOnNewLine = true;
10.20790 + default:continue;
10.20791 + }
10.20792 + }
10.20793 +
10.20794 + case 53:
10.20795 + tagopennonpcdataloop: for (;;) {
10.20796 + if (++pos == endPos) {
10.20797 + break stateloop;
10.20798 + }
10.20799 + c = $checkChar(this$static, buf, pos);
10.20800 + switch (c) {
10.20801 + case 33:
10.20802 + $characters(this$static.tokenHandler, LT_GT, 0, 1);
10.20803 + this$static.cstart = pos;
10.20804 + state = 54;
10.20805 + break tagopennonpcdataloop;
10.20806 + case 47:
10.20807 + if (this$static.contentModelElement) {
10.20808 + this$static.index = 0;
10.20809 + this$static.strBufLen = 0;
10.20810 + state = 37;
10.20811 + continue stateloop;
10.20812 + }
10.20813 +
10.20814 + default:$characters(this$static.tokenHandler, LT_GT, 0, 1);
10.20815 + this$static.cstart = pos;
10.20816 + state = returnState;
10.20817 + reconsume = true;
10.20818 + continue stateloop;
10.20819 + }
10.20820 + }
10.20821 +
10.20822 + case 54:
10.20823 + escapeexclamationloop: for (;;) {
10.20824 + if (++pos == endPos) {
10.20825 + break stateloop;
10.20826 + }
10.20827 + c = $checkChar(this$static, buf, pos);
10.20828 + switch (c) {
10.20829 + case 45:
10.20830 + state = 55;
10.20831 + break escapeexclamationloop;
10.20832 + default:state = returnState;
10.20833 + reconsume = true;
10.20834 + continue stateloop;
10.20835 + }
10.20836 + }
10.20837 +
10.20838 + case 55:
10.20839 + escapeexclamationhyphenloop: for (;;) {
10.20840 + if (++pos == endPos) {
10.20841 + break stateloop;
10.20842 + }
10.20843 + c = $checkChar(this$static, buf, pos);
10.20844 + switch (c) {
10.20845 + case 45:
10.20846 + state = 58;
10.20847 + break escapeexclamationhyphenloop;
10.20848 + default:state = returnState;
10.20849 + reconsume = true;
10.20850 + continue stateloop;
10.20851 + }
10.20852 + }
10.20853 +
10.20854 + case 58:
10.20855 + escapehyphenhyphenloop: for (;;) {
10.20856 + if (++pos == endPos) {
10.20857 + break stateloop;
10.20858 + }
10.20859 + c = $checkChar(this$static, buf, pos);
10.20860 + switch (c) {
10.20861 + case 45:
10.20862 + continue;
10.20863 + case 62:
10.20864 + state = returnState;
10.20865 + continue stateloop;
10.20866 + case 0:
10.20867 + $emitReplacementCharacter(this$static, buf, pos);
10.20868 + state = 56;
10.20869 + break escapehyphenhyphenloop;
10.20870 + case 13:
10.20871 + $emitCarriageReturn(this$static, buf, pos);
10.20872 + state = 56;
10.20873 + break stateloop;
10.20874 + case 10:
10.20875 + this$static.nextCharOnNewLine = true;
10.20876 + default:state = 56;
10.20877 + break escapehyphenhyphenloop;
10.20878 + }
10.20879 + }
10.20880 +
10.20881 + case 56:
10.20882 + escapeloop: for (;;) {
10.20883 + if (++pos == endPos) {
10.20884 + break stateloop;
10.20885 + }
10.20886 + c = $checkChar(this$static, buf, pos);
10.20887 + switch (c) {
10.20888 + case 45:
10.20889 + state = 57;
10.20890 + break escapeloop;
10.20891 + case 0:
10.20892 + $emitReplacementCharacter(this$static, buf, pos);
10.20893 + continue;
10.20894 + case 13:
10.20895 + $emitCarriageReturn(this$static, buf, pos);
10.20896 + break stateloop;
10.20897 + case 10:
10.20898 + this$static.nextCharOnNewLine = true;
10.20899 + default:continue;
10.20900 + }
10.20901 + }
10.20902 +
10.20903 + case 57:
10.20904 + escapehyphenloop: for (;;) {
10.20905 + if (++pos == endPos) {
10.20906 + break stateloop;
10.20907 + }
10.20908 + c = $checkChar(this$static, buf, pos);
10.20909 + switch (c) {
10.20910 + case 45:
10.20911 + state = 58;
10.20912 + continue stateloop;
10.20913 + case 0:
10.20914 + $emitReplacementCharacter(this$static, buf, pos);
10.20915 + state = 56;
10.20916 + continue stateloop;
10.20917 + case 13:
10.20918 + $emitCarriageReturn(this$static, buf, pos);
10.20919 + state = 56;
10.20920 + continue stateloop;
10.20921 + case 10:
10.20922 + this$static.nextCharOnNewLine = true;
10.20923 + default:state = 56;
10.20924 + continue stateloop;
10.20925 + }
10.20926 + }
10.20927 +
10.20928 + case 37:
10.20929 + for (;;) {
10.20930 + if (++pos == endPos) {
10.20931 + break stateloop;
10.20932 + }
10.20933 + c = $checkChar(this$static, buf, pos);
10.20934 + if (this$static.index < this$static.contentModelElementNameAsArray.length) {
10.20935 + e = this$static.contentModelElementNameAsArray[this$static.index];
10.20936 + folded = c;
10.20937 + if (c >= 65 && c <= 90) {
10.20938 + folded += 32;
10.20939 + }
10.20940 + if (folded != e) {
10.20941 + this$static.html4 && (this$static.index > 0 || folded >= 97 && folded <= 122) && ($clinit_89() , IFRAME) != this$static.contentModelElement;
10.20942 + $characters(this$static.tokenHandler, LT_SOLIDUS, 0, 2);
10.20943 + $emitStrBuf(this$static);
10.20944 + this$static.cstart = pos;
10.20945 + state = returnState;
10.20946 + reconsume = true;
10.20947 + continue stateloop;
10.20948 + }
10.20949 + $appendStrBuf(this$static, c);
10.20950 + ++this$static.index;
10.20951 + continue;
10.20952 + }
10.20953 + else {
10.20954 + this$static.endTag = true;
10.20955 + this$static.tagName = this$static.contentModelElement;
10.20956 + switch (c) {
10.20957 + case 13:
10.20958 + this$static.nextCharOnNewLine = true;
10.20959 + this$static.lastCR = true;
10.20960 + state = 7;
10.20961 + break stateloop;
10.20962 + case 10:
10.20963 + this$static.nextCharOnNewLine = true;
10.20964 + case 32:
10.20965 + case 9:
10.20966 + case 12:
10.20967 + state = 7;
10.20968 + continue stateloop;
10.20969 + case 62:
10.20970 + state = $emitCurrentTagToken(this$static, false, pos);
10.20971 + if (this$static.shouldSuspend) {
10.20972 + break stateloop;
10.20973 + }
10.20974 +
10.20975 + continue stateloop;
10.20976 + case 47:
10.20977 + state = 48;
10.20978 + continue stateloop;
10.20979 + default:$characters(this$static.tokenHandler, LT_SOLIDUS, 0, 2);
10.20980 + $emitStrBuf(this$static);
10.20981 + if (c == 0) {
10.20982 + $emitReplacementCharacter(this$static, buf, pos);
10.20983 + }
10.20984 + else {
10.20985 + this$static.cstart = pos;
10.20986 + }
10.20987 +
10.20988 + state = returnState;
10.20989 + continue stateloop;
10.20990 + }
10.20991 + }
10.20992 + }
10.20993 +
10.20994 + case 5:
10.20995 + if (++pos == endPos) {
10.20996 + break stateloop;
10.20997 + }
10.20998 +
10.20999 + c = $checkChar(this$static, buf, pos);
10.21000 + switch (c) {
10.21001 + case 62:
10.21002 + this$static.cstart = pos + 1;
10.21003 + state = 0;
10.21004 + continue stateloop;
10.21005 + case 13:
10.21006 + this$static.nextCharOnNewLine = true;
10.21007 + this$static.lastCR = true;
10.21008 + this$static.longStrBuf[0] = 10;
10.21009 + this$static.longStrBufLen = 1;
10.21010 + state = 15;
10.21011 + break stateloop;
10.21012 + case 10:
10.21013 + this$static.nextCharOnNewLine = true;
10.21014 + this$static.longStrBuf[0] = 10;
10.21015 + this$static.longStrBufLen = 1;
10.21016 + state = 15;
10.21017 + continue stateloop;
10.21018 + case 0:
10.21019 + c = 65533;
10.21020 + default:if (c >= 65 && c <= 90) {
10.21021 + c += 32;
10.21022 + }
10.21023 +
10.21024 + if (c >= 97 && c <= 122) {
10.21025 + this$static.endTag = true;
10.21026 + this$static.strBuf[0] = c;
10.21027 + this$static.strBufLen = 1;
10.21028 + state = 6;
10.21029 + continue stateloop;
10.21030 + }
10.21031 + else {
10.21032 + this$static.longStrBuf[0] = c;
10.21033 + this$static.longStrBufLen = 1;
10.21034 + state = 15;
10.21035 + continue stateloop;
10.21036 + }
10.21037 +
10.21038 + }
10.21039 +
10.21040 + case 1:
10.21041 + rcdataloop: for (;;) {
10.21042 + if (reconsume) {
10.21043 + reconsume = false;
10.21044 + }
10.21045 + else {
10.21046 + if (++pos == endPos) {
10.21047 + break stateloop;
10.21048 + }
10.21049 + c = $checkChar(this$static, buf, pos);
10.21050 + }
10.21051 + switch (c) {
10.21052 + case 38:
10.21053 + $flushChars(this$static, buf, pos);
10.21054 + this$static.strBuf[0] = c;
10.21055 + this$static.strBufLen = 1;
10.21056 + this$static.additional = 0;
10.21057 + returnState = state;
10.21058 + state = 42;
10.21059 + continue stateloop;
10.21060 + case 60:
10.21061 + $flushChars(this$static, buf, pos);
10.21062 + returnState = state;
10.21063 + state = 53;
10.21064 + continue stateloop;
10.21065 + case 0:
10.21066 + $emitReplacementCharacter(this$static, buf, pos);
10.21067 + continue;
10.21068 + case 13:
10.21069 + $emitCarriageReturn(this$static, buf, pos);
10.21070 + break stateloop;
10.21071 + case 10:
10.21072 + this$static.nextCharOnNewLine = true;
10.21073 + default:continue;
10.21074 + }
10.21075 + }
10.21076 +
10.21077 + }
10.21078 + }
10.21079 + $flushChars(this$static, buf, pos);
10.21080 + this$static.stateSave = state;
10.21081 + this$static.returnStateSave = returnState;
10.21082 + return pos;
10.21083 +}
10.21084 +
10.21085 +function $tokenizeBuffer(this$static, buffer){
10.21086 + var pos, returnState, start, state;
10.21087 + state = this$static.stateSave;
10.21088 + returnState = this$static.returnStateSave;
10.21089 + this$static.shouldSuspend = false;
10.21090 + this$static.lastCR = false;
10.21091 + start = buffer.start;
10.21092 + pos = start - 1;
10.21093 + switch (state) {
10.21094 + case 0:
10.21095 + case 1:
10.21096 + case 2:
10.21097 + case 3:
10.21098 + case 50:
10.21099 + case 56:
10.21100 + case 54:
10.21101 + case 55:
10.21102 + case 57:
10.21103 + case 58:
10.21104 + this$static.cstart = start;
10.21105 + break;
10.21106 + default:this$static.cstart = 2147483647;
10.21107 + }
10.21108 + pos = $stateLoop(this$static, state, 0, pos, buffer.buffer, false, returnState, buffer.end);
10.21109 + if (pos == buffer.end) {
10.21110 + buffer.start = pos;
10.21111 + }
10.21112 + else {
10.21113 + buffer.start = pos + 1;
10.21114 + }
10.21115 + return this$static.lastCR;
10.21116 +}
10.21117 +
10.21118 +function getClass_56(){
10.21119 + return Lnu_validator_htmlparser_impl_Tokenizer_2_classLit;
10.21120 +}
10.21121 +
10.21122 +function newAsciiLowerCaseStringFromString(str){
10.21123 + var buf, c, i;
10.21124 + if (str == null) {
10.21125 + return null;
10.21126 + }
10.21127 + buf = initDim(_3C_classLit, 42, -1, str.length, 1);
10.21128 + for (i = 0; i < str.length; ++i) {
10.21129 + c = str.charCodeAt(i);
10.21130 + if (c >= 65 && c <= 90) {
10.21131 + c += 32;
10.21132 + }
10.21133 + buf[i] = c;
10.21134 + }
10.21135 + return String.fromCharCode.apply(null, buf);
10.21136 +}
10.21137 +
10.21138 +function Tokenizer(){
10.21139 +}
10.21140 +
10.21141 +_ = Tokenizer.prototype = new Object_0();
10.21142 +_.getClass$ = getClass_56;
10.21143 +_.typeId$ = 0;
10.21144 +_.additional = 0;
10.21145 +_.astralChar = null;
10.21146 +_.attributeName = null;
10.21147 +_.attributes = null;
10.21148 +_.bmpChar = null;
10.21149 +_.candidate = 0;
10.21150 +_.confident = false;
10.21151 +_.contentModelElement = null;
10.21152 +_.contentModelElementNameAsArray = null;
10.21153 +_.cstart = 0;
10.21154 +_.doctypeName = null;
10.21155 +_.endTag = false;
10.21156 +_.entCol = 0;
10.21157 +_.forceQuirks = false;
10.21158 +_.hi = 0;
10.21159 +_.html4 = false;
10.21160 +_.html4ModeCompatibleWithXhtml1Schemata = false;
10.21161 +_.index = 0;
10.21162 +_.lastCR = false;
10.21163 +_.lo = 0;
10.21164 +_.longStrBuf = null;
10.21165 +_.longStrBufLen = 0;
10.21166 +_.mappingLangToXmlLang = 0;
10.21167 +_.metaBoundaryPassed = false;
10.21168 +_.newAttributesEachTime = false;
10.21169 +_.prevValue = 0;
10.21170 +_.publicIdentifier = null;
10.21171 +_.returnStateSave = 0;
10.21172 +_.seenDigits = false;
10.21173 +_.shouldSuspend = false;
10.21174 +_.stateSave = 0;
10.21175 +_.strBuf = null;
10.21176 +_.strBufLen = 0;
10.21177 +_.strBufMark = 0;
10.21178 +_.systemIdentifier = null;
10.21179 +_.tagName = null;
10.21180 +_.tokenHandler = null;
10.21181 +_.value = 0;
10.21182 +_.wantsComments = false;
10.21183 +var CDATA_LSQB, IFRAME_ARR, LF, LT_GT, LT_SOLIDUS, NOEMBED_ARR, NOFRAMES_ARR, NOSCRIPT_ARR, OCTYPE, PLAINTEXT_ARR, REPLACEMENT_CHARACTER, RSQB_RSQB, SCRIPT_ARR, SPACE, STYLE_ARR, TEXTAREA_ARR, TITLE_ARR, UBLIC, XMP_ARR, YSTEM;
10.21184 +function $clinit_90(){
10.21185 + $clinit_90 = nullMethod;
10.21186 + $clinit_97();
10.21187 +}
10.21188 +
10.21189 +function $ErrorReportingTokenizer(this$static, tokenHandler){
10.21190 + $clinit_90();
10.21191 + this$static.contentSpacePolicy = ($clinit_80() , ALTER_INFOSET);
10.21192 + this$static.commentPolicy = ALTER_INFOSET;
10.21193 + this$static.xmlnsPolicy = ALTER_INFOSET;
10.21194 + this$static.namePolicy = ALTER_INFOSET;
10.21195 + this$static.tokenHandler = tokenHandler;
10.21196 + this$static.newAttributesEachTime = false;
10.21197 + this$static.bmpChar = initDim(_3C_classLit, 42, -1, 1, 1);
10.21198 + this$static.astralChar = initDim(_3C_classLit, 42, -1, 2, 1);
10.21199 + this$static.contentNonXmlCharPolicy = ALTER_INFOSET;
10.21200 + return this$static;
10.21201 +}
10.21202 +
10.21203 +function $checkChar(this$static, buf, pos){
10.21204 + var c, intVal;
10.21205 + this$static.linePrev = this$static.line;
10.21206 + this$static.colPrev = this$static.col;
10.21207 + if (this$static.nextCharOnNewLine) {
10.21208 + ++this$static.line;
10.21209 + this$static.col = 1;
10.21210 + this$static.nextCharOnNewLine = false;
10.21211 + }
10.21212 + else {
10.21213 + ++this$static.col;
10.21214 + }
10.21215 + c = buf[pos];
10.21216 + if (!this$static.confident && !this$static.alreadyComplainedAboutNonAscii && c > 127) {
10.21217 + this$static.alreadyComplainedAboutNonAscii = true;
10.21218 + }
10.21219 + switch (c) {
10.21220 + case 0:
10.21221 + case 9:
10.21222 + case 13:
10.21223 + case 10:
10.21224 + break;
10.21225 + case 12:
10.21226 + if (this$static.contentNonXmlCharPolicy == ($clinit_80() , FATAL)) {
10.21227 + $fatal(this$static, 'This document is not mappable to XML 1.0 without data loss due to ' + $toUPlusString(c) + ' which is not a legal XML 1.0 character.');
10.21228 + }
10.21229 + else {
10.21230 + if (this$static.contentNonXmlCharPolicy == ALTER_INFOSET) {
10.21231 + c = buf[pos] = 32;
10.21232 + }
10.21233 + 'This document is not mappable to XML 1.0 without data loss due to ' + $toUPlusString(c) + ' which is not a legal XML 1.0 character.';
10.21234 + }
10.21235 +
10.21236 + break;
10.21237 + default:if ((c & 64512) == 56320) {
10.21238 + if ((this$static.prev & 64512) == 55296) {
10.21239 + intVal = (this$static.prev << 10) + c + -56613888;
10.21240 + if (intVal >= 983040 && intVal <= 1048573 || intVal >= 1048576 && intVal <= 1114109) {
10.21241 + $warnAboutPrivateUseChar(this$static);
10.21242 + }
10.21243 + }
10.21244 + }
10.21245 + else if (c < 32 || (c & 65534) == 65534) {
10.21246 + switch (this$static.contentNonXmlCharPolicy.ordinal) {
10.21247 + case 1:
10.21248 + $fatal(this$static, 'Forbidden code point ' + $toUPlusString(c) + '.');
10.21249 + break;
10.21250 + case 2:
10.21251 + c = buf[pos] = 65533;
10.21252 + case 0:
10.21253 + 'Forbidden code point ' + $toUPlusString(c) + '.';
10.21254 + }
10.21255 + }
10.21256 + else if (c >= 127 && c <= 159 || c >= 64976 && c <= 64991) {
10.21257 + 'Forbidden code point ' + $toUPlusString(c) + '.';
10.21258 + }
10.21259 + else if (c >= 57344 && c <= 63743) {
10.21260 + $warnAboutPrivateUseChar(this$static);
10.21261 + }
10.21262 +
10.21263 + }
10.21264 + this$static.prev = c;
10.21265 + return c;
10.21266 +}
10.21267 +
10.21268 +function $errLtOrEqualsInUnquotedAttributeOrNull(c){
10.21269 + switch (c) {
10.21270 + case 61:
10.21271 + return;
10.21272 + case 60:
10.21273 + return;
10.21274 + }
10.21275 +}
10.21276 +
10.21277 +function $flushChars(this$static, buf, pos){
10.21278 + var currCol, currLine;
10.21279 + if (pos > this$static.cstart) {
10.21280 + currLine = this$static.line;
10.21281 + currCol = this$static.col;
10.21282 + this$static.line = this$static.linePrev;
10.21283 + this$static.col = this$static.colPrev;
10.21284 + $characters(this$static.tokenHandler, buf, this$static.cstart, pos - this$static.cstart);
10.21285 + this$static.line = currLine;
10.21286 + this$static.col = currCol;
10.21287 + }
10.21288 + this$static.cstart = 2147483647;
10.21289 +}
10.21290 +
10.21291 +function $getColumnNumber(this$static){
10.21292 + if (this$static.col > 0) {
10.21293 + return this$static.col;
10.21294 + }
10.21295 + else {
10.21296 + return -1;
10.21297 + }
10.21298 +}
10.21299 +
10.21300 +function $getLineNumber(this$static){
10.21301 + if (this$static.line > 0) {
10.21302 + return this$static.line;
10.21303 + }
10.21304 + else {
10.21305 + return -1;
10.21306 + }
10.21307 +}
10.21308 +
10.21309 +function $toUPlusString(c){
10.21310 + var hexString;
10.21311 + hexString = toPowerOfTwoString(c, 4);
10.21312 + switch (hexString.length) {
10.21313 + case 1:
10.21314 + return 'U+000' + hexString;
10.21315 + case 2:
10.21316 + return 'U+00' + hexString;
10.21317 + case 3:
10.21318 + return 'U+0' + hexString;
10.21319 + case 4:
10.21320 + return 'U+' + hexString;
10.21321 + default:throw $RuntimeException(new RuntimeException(), 'Unreachable.');
10.21322 + }
10.21323 +}
10.21324 +
10.21325 +function $warnAboutPrivateUseChar(this$static){
10.21326 + if (!this$static.alreadyWarnedAboutPrivateUseCharacters) {
10.21327 + this$static.alreadyWarnedAboutPrivateUseCharacters = true;
10.21328 + }
10.21329 +}
10.21330 +
10.21331 +function getClass_52(){
10.21332 + return Lnu_validator_htmlparser_impl_ErrorReportingTokenizer_2_classLit;
10.21333 +}
10.21334 +
10.21335 +function ErrorReportingTokenizer(){
10.21336 +}
10.21337 +
10.21338 +_ = ErrorReportingTokenizer.prototype = new Tokenizer();
10.21339 +_.getClass$ = getClass_52;
10.21340 +_.typeId$ = 0;
10.21341 +_.alreadyComplainedAboutNonAscii = false;
10.21342 +_.alreadyWarnedAboutPrivateUseCharacters = false;
10.21343 +_.col = 0;
10.21344 +_.colPrev = 0;
10.21345 +_.line = 0;
10.21346 +_.linePrev = 0;
10.21347 +_.nextCharOnNewLine = false;
10.21348 +_.prev = 0;
10.21349 +function $clinit_91(){
10.21350 + $clinit_91 = nullMethod;
10.21351 + EMPTY_ATTRIBUTENAMES = initDim(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, 0, 0);
10.21352 + EMPTY_STRINGS = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 0, 0);
10.21353 + EMPTY_ATTRIBUTES = $HtmlAttributes(new HtmlAttributes(), 0);
10.21354 +}
10.21355 +
10.21356 +function $HtmlAttributes(this$static, mode){
10.21357 + $clinit_91();
10.21358 + this$static.mode = mode;
10.21359 + this$static.length_0 = 0;
10.21360 + this$static.names = initDim(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, 5, 0);
10.21361 + this$static.values = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 5, 0);
10.21362 + this$static.xmlnsLength = 0;
10.21363 + this$static.xmlnsNames = EMPTY_ATTRIBUTENAMES;
10.21364 + this$static.xmlnsValues = EMPTY_STRINGS;
10.21365 + return this$static;
10.21366 +}
10.21367 +
10.21368 +function $addAttribute(this$static, name, value, xmlnsPolicy){
10.21369 + var newLen, newNames, newValues;
10.21370 + name == ($clinit_87() , ID);
10.21371 + if (name.xmlns) {
10.21372 + if (this$static.xmlnsNames.length == this$static.xmlnsLength) {
10.21373 + newLen = this$static.xmlnsLength == 0?2:this$static.xmlnsLength << 1;
10.21374 + newNames = initDim(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, newLen, 0);
10.21375 + arraycopy(this$static.xmlnsNames, 0, newNames, 0, this$static.xmlnsNames.length);
10.21376 + this$static.xmlnsNames = newNames;
10.21377 + newValues = initDim(_3Ljava_lang_String_2_classLit, 48, 1, newLen, 0);
10.21378 + arraycopy(this$static.xmlnsValues, 0, newValues, 0, this$static.xmlnsValues.length);
10.21379 + this$static.xmlnsValues = newValues;
10.21380 + }
10.21381 + this$static.xmlnsNames[this$static.xmlnsLength] = name;
10.21382 + this$static.xmlnsValues[this$static.xmlnsLength] = value;
10.21383 + ++this$static.xmlnsLength;
10.21384 + switch (xmlnsPolicy.ordinal) {
10.21385 + case 1:
10.21386 + throw $SAXException(new SAXException(), 'Saw an xmlns attribute.');
10.21387 + case 2:
10.21388 + return;
10.21389 + }
10.21390 + }
10.21391 + if (this$static.names.length == this$static.length_0) {
10.21392 + newLen = this$static.length_0 << 1;
10.21393 + newNames = initDim(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, newLen, 0);
10.21394 + arraycopy(this$static.names, 0, newNames, 0, this$static.names.length);
10.21395 + this$static.names = newNames;
10.21396 + newValues = initDim(_3Ljava_lang_String_2_classLit, 48, 1, newLen, 0);
10.21397 + arraycopy(this$static.values, 0, newValues, 0, this$static.values.length);
10.21398 + this$static.values = newValues;
10.21399 + }
10.21400 + this$static.names[this$static.length_0] = name;
10.21401 + this$static.values[this$static.length_0] = value;
10.21402 + ++this$static.length_0;
10.21403 +}
10.21404 +
10.21405 +function $clear_0(this$static, m){
10.21406 + var i;
10.21407 + for (i = 0; i < this$static.length_0; ++i) {
10.21408 + setCheck(this$static.names, i, null);
10.21409 + setCheck(this$static.values, i, null);
10.21410 + }
10.21411 + this$static.length_0 = 0;
10.21412 + this$static.mode = m;
10.21413 + for (i = 0; i < this$static.xmlnsLength; ++i) {
10.21414 + setCheck(this$static.xmlnsNames, i, null);
10.21415 + setCheck(this$static.xmlnsValues, i, null);
10.21416 + }
10.21417 + this$static.xmlnsLength = 0;
10.21418 +}
10.21419 +
10.21420 +function $clearWithoutReleasingContents(this$static){
10.21421 + var i;
10.21422 + for (i = 0; i < this$static.length_0; ++i) {
10.21423 + setCheck(this$static.names, i, null);
10.21424 + setCheck(this$static.values, i, null);
10.21425 + }
10.21426 + this$static.length_0 = 0;
10.21427 +}
10.21428 +
10.21429 +function $cloneAttributes(this$static){
10.21430 + var clone, i;
10.21431 + clone = $HtmlAttributes(new HtmlAttributes(), 0);
10.21432 + for (i = 0; i < this$static.length_0; ++i) {
10.21433 + $addAttribute(clone, this$static.names[i], this$static.values[i], ($clinit_80() , ALLOW));
10.21434 + }
10.21435 + for (i = 0; i < this$static.xmlnsLength; ++i) {
10.21436 + $addAttribute(clone, this$static.xmlnsNames[i], this$static.xmlnsValues[i], ($clinit_80() , ALLOW));
10.21437 + }
10.21438 + return clone;
10.21439 +}
10.21440 +
10.21441 +function $contains(this$static, name){
10.21442 + var i;
10.21443 + for (i = 0; i < this$static.length_0; ++i) {
10.21444 + if (name.local[0] == this$static.names[i].local[0]) {
10.21445 + return true;
10.21446 + }
10.21447 + }
10.21448 + for (i = 0; i < this$static.xmlnsLength; ++i) {
10.21449 + if (name.local[0] == this$static.xmlnsNames[i].local[0]) {
10.21450 + return true;
10.21451 + }
10.21452 + }
10.21453 + return false;
10.21454 +}
10.21455 +
10.21456 +function $getAttributeName(this$static, index){
10.21457 + if (index < this$static.length_0 && index >= 0) {
10.21458 + return this$static.names[index];
10.21459 + }
10.21460 + else {
10.21461 + return null;
10.21462 + }
10.21463 +}
10.21464 +
10.21465 +function $getIndex(this$static, name){
10.21466 + var i;
10.21467 + for (i = 0; i < this$static.length_0; ++i) {
10.21468 + if (this$static.names[i] == name) {
10.21469 + return i;
10.21470 + }
10.21471 + }
10.21472 + return -1;
10.21473 +}
10.21474 +
10.21475 +function $getLocalName(this$static, index){
10.21476 + if (index < this$static.length_0 && index >= 0) {
10.21477 + return this$static.names[index].local[this$static.mode];
10.21478 + }
10.21479 + else {
10.21480 + return null;
10.21481 + }
10.21482 +}
10.21483 +
10.21484 +function $getURI(this$static, index){
10.21485 + if (index < this$static.length_0 && index >= 0) {
10.21486 + return this$static.names[index].uri[this$static.mode];
10.21487 + }
10.21488 + else {
10.21489 + return null;
10.21490 + }
10.21491 +}
10.21492 +
10.21493 +function $getValue(this$static, index){
10.21494 + if (index < this$static.length_0 && index >= 0) {
10.21495 + return this$static.values[index];
10.21496 + }
10.21497 + else {
10.21498 + return null;
10.21499 + }
10.21500 +}
10.21501 +
10.21502 +function $getValue_0(this$static, name){
10.21503 + var index;
10.21504 + index = $getIndex(this$static, name);
10.21505 + if (index == -1) {
10.21506 + return null;
10.21507 + }
10.21508 + else {
10.21509 + return $getValue(this$static, index);
10.21510 + }
10.21511 +}
10.21512 +
10.21513 +function $processNonNcNames(this$static, treeBuilder, namePolicy){
10.21514 + var attName, i, name;
10.21515 + for (i = 0; i < this$static.length_0; ++i) {
10.21516 + attName = this$static.names[i];
10.21517 + if (!attName.ncname[this$static.mode]) {
10.21518 + name = attName.local[this$static.mode];
10.21519 + switch (namePolicy.ordinal) {
10.21520 + case 2:
10.21521 + this$static.names[i] = ($clinit_87() , $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL(escapeName(name)), ALL_NO_PREFIX, ALL_NCNAME, false));
10.21522 + case 0:
10.21523 + attName != ($clinit_87() , XML_LANG);
10.21524 + break;
10.21525 + case 1:
10.21526 + $fatal_1(treeBuilder, 'Attribute \u201C' + name + '\u201D is not serializable as XML 1.0.');
10.21527 + }
10.21528 + }
10.21529 + }
10.21530 +}
10.21531 +
10.21532 +function getClass_53(){
10.21533 + return Lnu_validator_htmlparser_impl_HtmlAttributes_2_classLit;
10.21534 +}
10.21535 +
10.21536 +function HtmlAttributes(){
10.21537 +}
10.21538 +
10.21539 +_ = HtmlAttributes.prototype = new Object_0();
10.21540 +_.getClass$ = getClass_53;
10.21541 +_.typeId$ = 0;
10.21542 +_.length_0 = 0;
10.21543 +_.mode = 0;
10.21544 +_.names = null;
10.21545 +_.values = null;
10.21546 +_.xmlnsLength = 0;
10.21547 +_.xmlnsNames = null;
10.21548 +_.xmlnsValues = null;
10.21549 +var EMPTY_ATTRIBUTENAMES, EMPTY_ATTRIBUTES, EMPTY_STRINGS;
10.21550 +function $LocatorImpl(this$static, locator){
10.21551 + $getColumnNumber(locator);
10.21552 + $getLineNumber(locator);
10.21553 + return this$static;
10.21554 +}
10.21555 +
10.21556 +function getClass_54(){
10.21557 + return Lnu_validator_htmlparser_impl_LocatorImpl_2_classLit;
10.21558 +}
10.21559 +
10.21560 +function LocatorImpl(){
10.21561 +}
10.21562 +
10.21563 +_ = LocatorImpl.prototype = new Object_0();
10.21564 +_.getClass$ = getClass_54;
10.21565 +_.typeId$ = 0;
10.21566 +function $clinit_93(){
10.21567 + $clinit_93 = nullMethod;
10.21568 + HEX_TABLE = $toCharArray('0123456789ABCDEF');
10.21569 +}
10.21570 +
10.21571 +function appendUHexTo(sb, c){
10.21572 + var i;
10.21573 + $append_0(sb, 'U');
10.21574 + for (i = 0; i < 6; ++i) {
10.21575 + $append_0(sb, String.fromCharCode(HEX_TABLE[(c & 15728640) >> 20]));
10.21576 + c <<= 4;
10.21577 + }
10.21578 +}
10.21579 +
10.21580 +function escapeName(str){
10.21581 + $clinit_93();
10.21582 + var c, i, next, sb;
10.21583 + sb = $StringBuilder(new StringBuilder());
10.21584 + for (i = 0; i < str.length; ++i) {
10.21585 + c = str.charCodeAt(i);
10.21586 + if ((c & 64512) == 55296) {
10.21587 + next = str.charCodeAt(++i);
10.21588 + appendUHexTo(sb, (c << 10) + next + -56613888);
10.21589 + }
10.21590 + else if (i == 0 && !(c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248 && c <= 255 || c >= 256 && c <= 305 || c >= 308 && c <= 318 || c >= 321 && c <= 328 || c >= 330 && c <= 382 || c >= 384 && c <= 451 || c >= 461 && c <= 496 || c >= 500 && c <= 501 || c >= 506 && c <= 535 || c >= 592 && c <= 680 || c >= 699 && c <= 705 || c == 902 || c >= 904 && c <= 906 || c == 908 || c >= 910 && c <= 929 || c >= 931 && c <= 974 || c >= 976 && c <= 982 || c == 986 || c == 988 || c == 990 || c == 992 || c >= 994 && c <= 1011 || c >= 1025 && c <= 1036 || c >= 1038 && c <= 1103 || c >= 1105 && c <= 1116 || c >= 1118 && c <= 1153 || c >= 1168 && c <= 1220 || c >= 1223 && c <= 1224 || c >= 1227 && c <= 1228 || c >= 1232 && c <= 1259 || c >= 1262 && c <= 1269 || c >= 1272 && c <= 1273 || c >= 1329 && c <= 1366 || c == 1369 || c >= 1377 && c <= 1414 || c >= 1488 && c <= 1514 || c >= 1520 && c <= 1522 || c >= 1569 && c <= 1594 || c >= 1601 && c <= 1610 || c >= 1649 && c <= 1719 || c >= 1722 && c <= 1726 || c >= 1728 && c <= 1742 || c >= 1744 && c <= 1747 || c == 1749 || c >= 1765 && c <= 1766 || c >= 2309 && c <= 2361 || c == 2365 || c >= 2392 && c <= 2401 || c >= 2437 && c <= 2444 || c >= 2447 && c <= 2448 || c >= 2451 && c <= 2472 || c >= 2474 && c <= 2480 || c == 2482 || c >= 2486 && c <= 2489 || c >= 2524 && c <= 2525 || c >= 2527 && c <= 2529 || c >= 2544 && c <= 2545 || c >= 2565 && c <= 2570 || c >= 2575 && c <= 2576 || c >= 2579 && c <= 2600 || c >= 2602 && c <= 2608 || c >= 2610 && c <= 2611 || c >= 2613 && c <= 2614 || c >= 2616 && c <= 2617 || c >= 2649 && c <= 2652 || c == 2654 || c >= 2674 && c <= 2676 || c >= 2693 && c <= 2699 || c == 2701 || c >= 2703 && c <= 2705 || c >= 2707 && c <= 2728 || c >= 2730 && c <= 2736 || c >= 2738 && c <= 2739 || c >= 2741 && c <= 2745 || c == 2749 || c == 2784 || c >= 2821 && c <= 2828 || c >= 2831 && c <= 2832 || c >= 2835 && c <= 2856 || c >= 2858 && c <= 2864 || c >= 2866 && c <= 2867 || c >= 2870 && c <= 2873 || c == 2877 || c >= 2908 && c <= 2909 || c >= 2911 && c <= 2913 || c >= 2949 && c <= 2954 || c >= 2958 && c <= 2960 || c >= 2962 && c <= 2965 || c >= 2969 && c <= 2970 || c == 2972 || c >= 2974 && c <= 2975 || c >= 2979 && c <= 2980 || c >= 2984 && c <= 2986 || c >= 2990 && c <= 2997 || c >= 2999 && c <= 3001 || c >= 3077 && c <= 3084 || c >= 3086 && c <= 3088 || c >= 3090 && c <= 3112 || c >= 3114 && c <= 3123 || c >= 3125 && c <= 3129 || c >= 3168 && c <= 3169 || c >= 3205 && c <= 3212 || c >= 3214 && c <= 3216 || c >= 3218 && c <= 3240 || c >= 3242 && c <= 3251 || c >= 3253 && c <= 3257 || c == 3294 || c >= 3296 && c <= 3297 || c >= 3333 && c <= 3340 || c >= 3342 && c <= 3344 || c >= 3346 && c <= 3368 || c >= 3370 && c <= 3385 || c >= 3424 && c <= 3425 || c >= 3585 && c <= 3630 || c == 3632 || c >= 3634 && c <= 3635 || c >= 3648 && c <= 3653 || c >= 3713 && c <= 3714 || c == 3716 || c >= 3719 && c <= 3720 || c == 3722 || c == 3725 || c >= 3732 && c <= 3735 || c >= 3737 && c <= 3743 || c >= 3745 && c <= 3747 || c == 3749 || c == 3751 || c >= 3754 && c <= 3755 || c >= 3757 && c <= 3758 || c == 3760 || c >= 3762 && c <= 3763 || c == 3773 || c >= 3776 && c <= 3780 || c >= 3904 && c <= 3911 || c >= 3913 && c <= 3945 || c >= 4256 && c <= 4293 || c >= 4304 && c <= 4342 || c == 4352 || c >= 4354 && c <= 4355 || c >= 4357 && c <= 4359 || c == 4361 || c >= 4363 && c <= 4364 || c >= 4366 && c <= 4370 || c == 4412 || c == 4414 || c == 4416 || c == 4428 || c == 4430 || c == 4432 || c >= 4436 && c <= 4437 || c == 4441 || c >= 4447 && c <= 4449 || c == 4451 || c == 4453 || c == 4455 || c == 4457 || c >= 4461 && c <= 4462 || c >= 4466 && c <= 4467 || c == 4469 || c == 4510 || c == 4520 || c == 4523 || c >= 4526 && c <= 4527 || c >= 4535 && c <= 4536 || c == 4538 || c >= 4540 && c <= 4546 || c == 4587 || c == 4592 || c == 4601 || c >= 7680 && c <= 7835 || c >= 7840 && c <= 7929 || c >= 7936 && c <= 7957 || c >= 7960 && c <= 7965 || c >= 7968 && c <= 8005 || c >= 8008 && c <= 8013 || c >= 8016 && c <= 8023 || c == 8025 || c == 8027 || c == 8029 || c >= 8031 && c <= 8061 || c >= 8064 && c <= 8116 || c >= 8118 && c <= 8124 || c == 8126 || c >= 8130 && c <= 8132 || c >= 8134 && c <= 8140 || c >= 8144 && c <= 8147 || c >= 8150 && c <= 8155 || c >= 8160 && c <= 8172 || c >= 8178 && c <= 8180 || c >= 8182 && c <= 8188 || c == 8486 || c >= 8490 && c <= 8491 || c == 8494 || c >= 8576 && c <= 8578 || c >= 12353 && c <= 12436 || c >= 12449 && c <= 12538 || c >= 12549 && c <= 12588 || c >= 44032 && c <= 55203 || c >= 19968 && c <= 40869 || c == 12295 || c >= 12321 && c <= 12329 || c == 95)) {
10.21591 + appendUHexTo(sb, c);
10.21592 + }
10.21593 + else if (i != 0 && !(c >= 48 && c <= 57 || c >= 1632 && c <= 1641 || c >= 1776 && c <= 1785 || c >= 2406 && c <= 2415 || c >= 2534 && c <= 2543 || c >= 2662 && c <= 2671 || c >= 2790 && c <= 2799 || c >= 2918 && c <= 2927 || c >= 3047 && c <= 3055 || c >= 3174 && c <= 3183 || c >= 3302 && c <= 3311 || c >= 3430 && c <= 3439 || c >= 3664 && c <= 3673 || c >= 3792 && c <= 3801 || c >= 3872 && c <= 3881 || c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248 && c <= 255 || c >= 256 && c <= 305 || c >= 308 && c <= 318 || c >= 321 && c <= 328 || c >= 330 && c <= 382 || c >= 384 && c <= 451 || c >= 461 && c <= 496 || c >= 500 && c <= 501 || c >= 506 && c <= 535 || c >= 592 && c <= 680 || c >= 699 && c <= 705 || c == 902 || c >= 904 && c <= 906 || c == 908 || c >= 910 && c <= 929 || c >= 931 && c <= 974 || c >= 976 && c <= 982 || c == 986 || c == 988 || c == 990 || c == 992 || c >= 994 && c <= 1011 || c >= 1025 && c <= 1036 || c >= 1038 && c <= 1103 || c >= 1105 && c <= 1116 || c >= 1118 && c <= 1153 || c >= 1168 && c <= 1220 || c >= 1223 && c <= 1224 || c >= 1227 && c <= 1228 || c >= 1232 && c <= 1259 || c >= 1262 && c <= 1269 || c >= 1272 && c <= 1273 || c >= 1329 && c <= 1366 || c == 1369 || c >= 1377 && c <= 1414 || c >= 1488 && c <= 1514 || c >= 1520 && c <= 1522 || c >= 1569 && c <= 1594 || c >= 1601 && c <= 1610 || c >= 1649 && c <= 1719 || c >= 1722 && c <= 1726 || c >= 1728 && c <= 1742 || c >= 1744 && c <= 1747 || c == 1749 || c >= 1765 && c <= 1766 || c >= 2309 && c <= 2361 || c == 2365 || c >= 2392 && c <= 2401 || c >= 2437 && c <= 2444 || c >= 2447 && c <= 2448 || c >= 2451 && c <= 2472 || c >= 2474 && c <= 2480 || c == 2482 || c >= 2486 && c <= 2489 || c >= 2524 && c <= 2525 || c >= 2527 && c <= 2529 || c >= 2544 && c <= 2545 || c >= 2565 && c <= 2570 || c >= 2575 && c <= 2576 || c >= 2579 && c <= 2600 || c >= 2602 && c <= 2608 || c >= 2610 && c <= 2611 || c >= 2613 && c <= 2614 || c >= 2616 && c <= 2617 || c >= 2649 && c <= 2652 || c == 2654 || c >= 2674 && c <= 2676 || c >= 2693 && c <= 2699 || c == 2701 || c >= 2703 && c <= 2705 || c >= 2707 && c <= 2728 || c >= 2730 && c <= 2736 || c >= 2738 && c <= 2739 || c >= 2741 && c <= 2745 || c == 2749 || c == 2784 || c >= 2821 && c <= 2828 || c >= 2831 && c <= 2832 || c >= 2835 && c <= 2856 || c >= 2858 && c <= 2864 || c >= 2866 && c <= 2867 || c >= 2870 && c <= 2873 || c == 2877 || c >= 2908 && c <= 2909 || c >= 2911 && c <= 2913 || c >= 2949 && c <= 2954 || c >= 2958 && c <= 2960 || c >= 2962 && c <= 2965 || c >= 2969 && c <= 2970 || c == 2972 || c >= 2974 && c <= 2975 || c >= 2979 && c <= 2980 || c >= 2984 && c <= 2986 || c >= 2990 && c <= 2997 || c >= 2999 && c <= 3001 || c >= 3077 && c <= 3084 || c >= 3086 && c <= 3088 || c >= 3090 && c <= 3112 || c >= 3114 && c <= 3123 || c >= 3125 && c <= 3129 || c >= 3168 && c <= 3169 || c >= 3205 && c <= 3212 || c >= 3214 && c <= 3216 || c >= 3218 && c <= 3240 || c >= 3242 && c <= 3251 || c >= 3253 && c <= 3257 || c == 3294 || c >= 3296 && c <= 3297 || c >= 3333 && c <= 3340 || c >= 3342 && c <= 3344 || c >= 3346 && c <= 3368 || c >= 3370 && c <= 3385 || c >= 3424 && c <= 3425 || c >= 3585 && c <= 3630 || c == 3632 || c >= 3634 && c <= 3635 || c >= 3648 && c <= 3653 || c >= 3713 && c <= 3714 || c == 3716 || c >= 3719 && c <= 3720 || c == 3722 || c == 3725 || c >= 3732 && c <= 3735 || c >= 3737 && c <= 3743 || c >= 3745 && c <= 3747 || c == 3749 || c == 3751 || c >= 3754 && c <= 3755 || c >= 3757 && c <= 3758 || c == 3760 || c >= 3762 && c <= 3763 || c == 3773 || c >= 3776 && c <= 3780 || c >= 3904 && c <= 3911 || c >= 3913 && c <= 3945 || c >= 4256 && c <= 4293 || c >= 4304 && c <= 4342 || c == 4352 || c >= 4354 && c <= 4355 || c >= 4357 && c <= 4359 || c == 4361 || c >= 4363 && c <= 4364 || c >= 4366 && c <= 4370 || c == 4412 || c == 4414 || c == 4416 || c == 4428 || c == 4430 || c == 4432 || c >= 4436 && c <= 4437 || c == 4441 || c >= 4447 && c <= 4449 || c == 4451 || c == 4453 || c == 4455 || c == 4457 || c >= 4461 && c <= 4462 || c >= 4466 && c <= 4467 || c == 4469 || c == 4510 || c == 4520 || c == 4523 || c >= 4526 && c <= 4527 || c >= 4535 && c <= 4536 || c == 4538 || c >= 4540 && c <= 4546 || c == 4587 || c == 4592 || c == 4601 || c >= 7680 && c <= 7835 || c >= 7840 && c <= 7929 || c >= 7936 && c <= 7957 || c >= 7960 && c <= 7965 || c >= 7968 && c <= 8005 || c >= 8008 && c <= 8013 || c >= 8016 && c <= 8023 || c == 8025 || c == 8027 || c == 8029 || c >= 8031 && c <= 8061 || c >= 8064 && c <= 8116 || c >= 8118 && c <= 8124 || c == 8126 || c >= 8130 && c <= 8132 || c >= 8134 && c <= 8140 || c >= 8144 && c <= 8147 || c >= 8150 && c <= 8155 || c >= 8160 && c <= 8172 || c >= 8178 && c <= 8180 || c >= 8182 && c <= 8188 || c == 8486 || c >= 8490 && c <= 8491 || c == 8494 || c >= 8576 && c <= 8578 || c >= 12353 && c <= 12436 || c >= 12449 && c <= 12538 || c >= 12549 && c <= 12588 || c >= 44032 && c <= 55203 || c >= 19968 && c <= 40869 || c == 12295 || c >= 12321 && c <= 12329 || c == 95 || c == 46 || c == 45 || c >= 768 && c <= 837 || c >= 864 && c <= 865 || c >= 1155 && c <= 1158 || c >= 1425 && c <= 1441 || c >= 1443 && c <= 1465 || c >= 1467 && c <= 1469 || c == 1471 || c >= 1473 && c <= 1474 || c == 1476 || c >= 1611 && c <= 1618 || c == 1648 || c >= 1750 && c <= 1756 || c >= 1757 && c <= 1759 || c >= 1760 && c <= 1764 || c >= 1767 && c <= 1768 || c >= 1770 && c <= 1773 || c >= 2305 && c <= 2307 || c == 2364 || c >= 2366 && c <= 2380 || c == 2381 || c >= 2385 && c <= 2388 || c >= 2402 && c <= 2403 || c >= 2433 && c <= 2435 || c == 2492 || c == 2494 || c == 2495 || c >= 2496 && c <= 2500 || c >= 2503 && c <= 2504 || c >= 2507 && c <= 2509 || c == 2519 || c >= 2530 && c <= 2531 || c == 2562 || c == 2620 || c == 2622 || c == 2623 || c >= 2624 && c <= 2626 || c >= 2631 && c <= 2632 || c >= 2635 && c <= 2637 || c >= 2672 && c <= 2673 || c >= 2689 && c <= 2691 || c == 2748 || c >= 2750 && c <= 2757 || c >= 2759 && c <= 2761 || c >= 2763 && c <= 2765 || c >= 2817 && c <= 2819 || c == 2876 || c >= 2878 && c <= 2883 || c >= 2887 && c <= 2888 || c >= 2891 && c <= 2893 || c >= 2902 && c <= 2903 || c >= 2946 && c <= 2947 || c >= 3006 && c <= 3010 || c >= 3014 && c <= 3016 || c >= 3018 && c <= 3021 || c == 3031 || c >= 3073 && c <= 3075 || c >= 3134 && c <= 3140 || c >= 3142 && c <= 3144 || c >= 3146 && c <= 3149 || c >= 3157 && c <= 3158 || c >= 3202 && c <= 3203 || c >= 3262 && c <= 3268 || c >= 3270 && c <= 3272 || c >= 3274 && c <= 3277 || c >= 3285 && c <= 3286 || c >= 3330 && c <= 3331 || c >= 3390 && c <= 3395 || c >= 3398 && c <= 3400 || c >= 3402 && c <= 3405 || c == 3415 || c == 3633 || c >= 3636 && c <= 3642 || c >= 3655 && c <= 3662 || c == 3761 || c >= 3764 && c <= 3769 || c >= 3771 && c <= 3772 || c >= 3784 && c <= 3789 || c >= 3864 && c <= 3865 || c == 3893 || c == 3895 || c == 3897 || c == 3902 || c == 3903 || c >= 3953 && c <= 3972 || c >= 3974 && c <= 3979 || c >= 3984 && c <= 3989 || c == 3991 || c >= 3993 && c <= 4013 || c >= 4017 && c <= 4023 || c == 4025 || c >= 8400 && c <= 8412 || c == 8417 || c >= 12330 && c <= 12335 || c == 12441 || c == 12442 || c == 183 || c == 720 || c == 721 || c == 903 || c == 1600 || c == 3654 || c == 3782 || c == 12293 || c >= 12337 && c <= 12341 || c >= 12445 && c <= 12446 || c >= 12540 && c <= 12542)) {
10.21594 + appendUHexTo(sb, c);
10.21595 + }
10.21596 + else {
10.21597 + $append_0(sb, String.fromCharCode(c));
10.21598 + }
10.21599 + }
10.21600 + return String($toString_0(sb));
10.21601 +}
10.21602 +
10.21603 +function isNCName(str){
10.21604 + $clinit_93();
10.21605 + var i, len;
10.21606 + if (str == null) {
10.21607 + return false;
10.21608 + }
10.21609 + else {
10.21610 + len = str.length;
10.21611 + switch (len) {
10.21612 + case 0:
10.21613 + return false;
10.21614 + case 1:
10.21615 + return isNCNameStart(str.charCodeAt(0));
10.21616 + default:if (!isNCNameStart(str.charCodeAt(0))) {
10.21617 + return false;
10.21618 + }
10.21619 +
10.21620 + for (i = 1; i < len; ++i) {
10.21621 + if (!isNCNameTrail(str.charCodeAt(i))) {
10.21622 + return false;
10.21623 + }
10.21624 + }
10.21625 +
10.21626 + }
10.21627 + return true;
10.21628 + }
10.21629 +}
10.21630 +
10.21631 +function isNCNameStart(c){
10.21632 + return c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248 && c <= 255 || c >= 256 && c <= 305 || c >= 308 && c <= 318 || c >= 321 && c <= 328 || c >= 330 && c <= 382 || c >= 384 && c <= 451 || c >= 461 && c <= 496 || c >= 500 && c <= 501 || c >= 506 && c <= 535 || c >= 592 && c <= 680 || c >= 699 && c <= 705 || c == 902 || c >= 904 && c <= 906 || c == 908 || c >= 910 && c <= 929 || c >= 931 && c <= 974 || c >= 976 && c <= 982 || c == 986 || c == 988 || c == 990 || c == 992 || c >= 994 && c <= 1011 || c >= 1025 && c <= 1036 || c >= 1038 && c <= 1103 || c >= 1105 && c <= 1116 || c >= 1118 && c <= 1153 || c >= 1168 && c <= 1220 || c >= 1223 && c <= 1224 || c >= 1227 && c <= 1228 || c >= 1232 && c <= 1259 || c >= 1262 && c <= 1269 || c >= 1272 && c <= 1273 || c >= 1329 && c <= 1366 || c == 1369 || c >= 1377 && c <= 1414 || c >= 1488 && c <= 1514 || c >= 1520 && c <= 1522 || c >= 1569 && c <= 1594 || c >= 1601 && c <= 1610 || c >= 1649 && c <= 1719 || c >= 1722 && c <= 1726 || c >= 1728 && c <= 1742 || c >= 1744 && c <= 1747 || c == 1749 || c >= 1765 && c <= 1766 || c >= 2309 && c <= 2361 || c == 2365 || c >= 2392 && c <= 2401 || c >= 2437 && c <= 2444 || c >= 2447 && c <= 2448 || c >= 2451 && c <= 2472 || c >= 2474 && c <= 2480 || c == 2482 || c >= 2486 && c <= 2489 || c >= 2524 && c <= 2525 || c >= 2527 && c <= 2529 || c >= 2544 && c <= 2545 || c >= 2565 && c <= 2570 || c >= 2575 && c <= 2576 || c >= 2579 && c <= 2600 || c >= 2602 && c <= 2608 || c >= 2610 && c <= 2611 || c >= 2613 && c <= 2614 || c >= 2616 && c <= 2617 || c >= 2649 && c <= 2652 || c == 2654 || c >= 2674 && c <= 2676 || c >= 2693 && c <= 2699 || c == 2701 || c >= 2703 && c <= 2705 || c >= 2707 && c <= 2728 || c >= 2730 && c <= 2736 || c >= 2738 && c <= 2739 || c >= 2741 && c <= 2745 || c == 2749 || c == 2784 || c >= 2821 && c <= 2828 || c >= 2831 && c <= 2832 || c >= 2835 && c <= 2856 || c >= 2858 && c <= 2864 || c >= 2866 && c <= 2867 || c >= 2870 && c <= 2873 || c == 2877 || c >= 2908 && c <= 2909 || c >= 2911 && c <= 2913 || c >= 2949 && c <= 2954 || c >= 2958 && c <= 2960 || c >= 2962 && c <= 2965 || c >= 2969 && c <= 2970 || c == 2972 || c >= 2974 && c <= 2975 || c >= 2979 && c <= 2980 || c >= 2984 && c <= 2986 || c >= 2990 && c <= 2997 || c >= 2999 && c <= 3001 || c >= 3077 && c <= 3084 || c >= 3086 && c <= 3088 || c >= 3090 && c <= 3112 || c >= 3114 && c <= 3123 || c >= 3125 && c <= 3129 || c >= 3168 && c <= 3169 || c >= 3205 && c <= 3212 || c >= 3214 && c <= 3216 || c >= 3218 && c <= 3240 || c >= 3242 && c <= 3251 || c >= 3253 && c <= 3257 || c == 3294 || c >= 3296 && c <= 3297 || c >= 3333 && c <= 3340 || c >= 3342 && c <= 3344 || c >= 3346 && c <= 3368 || c >= 3370 && c <= 3385 || c >= 3424 && c <= 3425 || c >= 3585 && c <= 3630 || c == 3632 || c >= 3634 && c <= 3635 || c >= 3648 && c <= 3653 || c >= 3713 && c <= 3714 || c == 3716 || c >= 3719 && c <= 3720 || c == 3722 || c == 3725 || c >= 3732 && c <= 3735 || c >= 3737 && c <= 3743 || c >= 3745 && c <= 3747 || c == 3749 || c == 3751 || c >= 3754 && c <= 3755 || c >= 3757 && c <= 3758 || c == 3760 || c >= 3762 && c <= 3763 || c == 3773 || c >= 3776 && c <= 3780 || c >= 3904 && c <= 3911 || c >= 3913 && c <= 3945 || c >= 4256 && c <= 4293 || c >= 4304 && c <= 4342 || c == 4352 || c >= 4354 && c <= 4355 || c >= 4357 && c <= 4359 || c == 4361 || c >= 4363 && c <= 4364 || c >= 4366 && c <= 4370 || c == 4412 || c == 4414 || c == 4416 || c == 4428 || c == 4430 || c == 4432 || c >= 4436 && c <= 4437 || c == 4441 || c >= 4447 && c <= 4449 || c == 4451 || c == 4453 || c == 4455 || c == 4457 || c >= 4461 && c <= 4462 || c >= 4466 && c <= 4467 || c == 4469 || c == 4510 || c == 4520 || c == 4523 || c >= 4526 && c <= 4527 || c >= 4535 && c <= 4536 || c == 4538 || c >= 4540 && c <= 4546 || c == 4587 || c == 4592 || c == 4601 || c >= 7680 && c <= 7835 || c >= 7840 && c <= 7929 || c >= 7936 && c <= 7957 || c >= 7960 && c <= 7965 || c >= 7968 && c <= 8005 || c >= 8008 && c <= 8013 || c >= 8016 && c <= 8023 || c == 8025 || c == 8027 || c == 8029 || c >= 8031 && c <= 8061 || c >= 8064 && c <= 8116 || c >= 8118 && c <= 8124 || c == 8126 || c >= 8130 && c <= 8132 || c >= 8134 && c <= 8140 || c >= 8144 && c <= 8147 || c >= 8150 && c <= 8155 || c >= 8160 && c <= 8172 || c >= 8178 && c <= 8180 || c >= 8182 && c <= 8188 || c == 8486 || c >= 8490 && c <= 8491 || c == 8494 || c >= 8576 && c <= 8578 || c >= 12353 && c <= 12436 || c >= 12449 && c <= 12538 || c >= 12549 && c <= 12588 || c >= 44032 && c <= 55203 || c >= 19968 && c <= 40869 || c == 12295 || c >= 12321 && c <= 12329 || c == 95;
10.21633 +}
10.21634 +
10.21635 +function isNCNameTrail(c){
10.21636 + return c >= 48 && c <= 57 || c >= 1632 && c <= 1641 || c >= 1776 && c <= 1785 || c >= 2406 && c <= 2415 || c >= 2534 && c <= 2543 || c >= 2662 && c <= 2671 || c >= 2790 && c <= 2799 || c >= 2918 && c <= 2927 || c >= 3047 && c <= 3055 || c >= 3174 && c <= 3183 || c >= 3302 && c <= 3311 || c >= 3430 && c <= 3439 || c >= 3664 && c <= 3673 || c >= 3792 && c <= 3801 || c >= 3872 && c <= 3881 || c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248 && c <= 255 || c >= 256 && c <= 305 || c >= 308 && c <= 318 || c >= 321 && c <= 328 || c >= 330 && c <= 382 || c >= 384 && c <= 451 || c >= 461 && c <= 496 || c >= 500 && c <= 501 || c >= 506 && c <= 535 || c >= 592 && c <= 680 || c >= 699 && c <= 705 || c == 902 || c >= 904 && c <= 906 || c == 908 || c >= 910 && c <= 929 || c >= 931 && c <= 974 || c >= 976 && c <= 982 || c == 986 || c == 988 || c == 990 || c == 992 || c >= 994 && c <= 1011 || c >= 1025 && c <= 1036 || c >= 1038 && c <= 1103 || c >= 1105 && c <= 1116 || c >= 1118 && c <= 1153 || c >= 1168 && c <= 1220 || c >= 1223 && c <= 1224 || c >= 1227 && c <= 1228 || c >= 1232 && c <= 1259 || c >= 1262 && c <= 1269 || c >= 1272 && c <= 1273 || c >= 1329 && c <= 1366 || c == 1369 || c >= 1377 && c <= 1414 || c >= 1488 && c <= 1514 || c >= 1520 && c <= 1522 || c >= 1569 && c <= 1594 || c >= 1601 && c <= 1610 || c >= 1649 && c <= 1719 || c >= 1722 && c <= 1726 || c >= 1728 && c <= 1742 || c >= 1744 && c <= 1747 || c == 1749 || c >= 1765 && c <= 1766 || c >= 2309 && c <= 2361 || c == 2365 || c >= 2392 && c <= 2401 || c >= 2437 && c <= 2444 || c >= 2447 && c <= 2448 || c >= 2451 && c <= 2472 || c >= 2474 && c <= 2480 || c == 2482 || c >= 2486 && c <= 2489 || c >= 2524 && c <= 2525 || c >= 2527 && c <= 2529 || c >= 2544 && c <= 2545 || c >= 2565 && c <= 2570 || c >= 2575 && c <= 2576 || c >= 2579 && c <= 2600 || c >= 2602 && c <= 2608 || c >= 2610 && c <= 2611 || c >= 2613 && c <= 2614 || c >= 2616 && c <= 2617 || c >= 2649 && c <= 2652 || c == 2654 || c >= 2674 && c <= 2676 || c >= 2693 && c <= 2699 || c == 2701 || c >= 2703 && c <= 2705 || c >= 2707 && c <= 2728 || c >= 2730 && c <= 2736 || c >= 2738 && c <= 2739 || c >= 2741 && c <= 2745 || c == 2749 || c == 2784 || c >= 2821 && c <= 2828 || c >= 2831 && c <= 2832 || c >= 2835 && c <= 2856 || c >= 2858 && c <= 2864 || c >= 2866 && c <= 2867 || c >= 2870 && c <= 2873 || c == 2877 || c >= 2908 && c <= 2909 || c >= 2911 && c <= 2913 || c >= 2949 && c <= 2954 || c >= 2958 && c <= 2960 || c >= 2962 && c <= 2965 || c >= 2969 && c <= 2970 || c == 2972 || c >= 2974 && c <= 2975 || c >= 2979 && c <= 2980 || c >= 2984 && c <= 2986 || c >= 2990 && c <= 2997 || c >= 2999 && c <= 3001 || c >= 3077 && c <= 3084 || c >= 3086 && c <= 3088 || c >= 3090 && c <= 3112 || c >= 3114 && c <= 3123 || c >= 3125 && c <= 3129 || c >= 3168 && c <= 3169 || c >= 3205 && c <= 3212 || c >= 3214 && c <= 3216 || c >= 3218 && c <= 3240 || c >= 3242 && c <= 3251 || c >= 3253 && c <= 3257 || c == 3294 || c >= 3296 && c <= 3297 || c >= 3333 && c <= 3340 || c >= 3342 && c <= 3344 || c >= 3346 && c <= 3368 || c >= 3370 && c <= 3385 || c >= 3424 && c <= 3425 || c >= 3585 && c <= 3630 || c == 3632 || c >= 3634 && c <= 3635 || c >= 3648 && c <= 3653 || c >= 3713 && c <= 3714 || c == 3716 || c >= 3719 && c <= 3720 || c == 3722 || c == 3725 || c >= 3732 && c <= 3735 || c >= 3737 && c <= 3743 || c >= 3745 && c <= 3747 || c == 3749 || c == 3751 || c >= 3754 && c <= 3755 || c >= 3757 && c <= 3758 || c == 3760 || c >= 3762 && c <= 3763 || c == 3773 || c >= 3776 && c <= 3780 || c >= 3904 && c <= 3911 || c >= 3913 && c <= 3945 || c >= 4256 && c <= 4293 || c >= 4304 && c <= 4342 || c == 4352 || c >= 4354 && c <= 4355 || c >= 4357 && c <= 4359 || c == 4361 || c >= 4363 && c <= 4364 || c >= 4366 && c <= 4370 || c == 4412 || c == 4414 || c == 4416 || c == 4428 || c == 4430 || c == 4432 || c >= 4436 && c <= 4437 || c == 4441 || c >= 4447 && c <= 4449 || c == 4451 || c == 4453 || c == 4455 || c == 4457 || c >= 4461 && c <= 4462 || c >= 4466 && c <= 4467 || c == 4469 || c == 4510 || c == 4520 || c == 4523 || c >= 4526 && c <= 4527 || c >= 4535 && c <= 4536 || c == 4538 || c >= 4540 && c <= 4546 || c == 4587 || c == 4592 || c == 4601 || c >= 7680 && c <= 7835 || c >= 7840 && c <= 7929 || c >= 7936 && c <= 7957 || c >= 7960 && c <= 7965 || c >= 7968 && c <= 8005 || c >= 8008 && c <= 8013 || c >= 8016 && c <= 8023 || c == 8025 || c == 8027 || c == 8029 || c >= 8031 && c <= 8061 || c >= 8064 && c <= 8116 || c >= 8118 && c <= 8124 || c == 8126 || c >= 8130 && c <= 8132 || c >= 8134 && c <= 8140 || c >= 8144 && c <= 8147 || c >= 8150 && c <= 8155 || c >= 8160 && c <= 8172 || c >= 8178 && c <= 8180 || c >= 8182 && c <= 8188 || c == 8486 || c >= 8490 && c <= 8491 || c == 8494 || c >= 8576 && c <= 8578 || c >= 12353 && c <= 12436 || c >= 12449 && c <= 12538 || c >= 12549 && c <= 12588 || c >= 44032 && c <= 55203 || c >= 19968 && c <= 40869 || c == 12295 || c >= 12321 && c <= 12329 || c == 95 || c == 46 || c == 45 || c >= 768 && c <= 837 || c >= 864 && c <= 865 || c >= 1155 && c <= 1158 || c >= 1425 && c <= 1441 || c >= 1443 && c <= 1465 || c >= 1467 && c <= 1469 || c == 1471 || c >= 1473 && c <= 1474 || c == 1476 || c >= 1611 && c <= 1618 || c == 1648 || c >= 1750 && c <= 1756 || c >= 1757 && c <= 1759 || c >= 1760 && c <= 1764 || c >= 1767 && c <= 1768 || c >= 1770 && c <= 1773 || c >= 2305 && c <= 2307 || c == 2364 || c >= 2366 && c <= 2380 || c == 2381 || c >= 2385 && c <= 2388 || c >= 2402 && c <= 2403 || c >= 2433 && c <= 2435 || c == 2492 || c == 2494 || c == 2495 || c >= 2496 && c <= 2500 || c >= 2503 && c <= 2504 || c >= 2507 && c <= 2509 || c == 2519 || c >= 2530 && c <= 2531 || c == 2562 || c == 2620 || c == 2622 || c == 2623 || c >= 2624 && c <= 2626 || c >= 2631 && c <= 2632 || c >= 2635 && c <= 2637 || c >= 2672 && c <= 2673 || c >= 2689 && c <= 2691 || c == 2748 || c >= 2750 && c <= 2757 || c >= 2759 && c <= 2761 || c >= 2763 && c <= 2765 || c >= 2817 && c <= 2819 || c == 2876 || c >= 2878 && c <= 2883 || c >= 2887 && c <= 2888 || c >= 2891 && c <= 2893 || c >= 2902 && c <= 2903 || c >= 2946 && c <= 2947 || c >= 3006 && c <= 3010 || c >= 3014 && c <= 3016 || c >= 3018 && c <= 3021 || c == 3031 || c >= 3073 && c <= 3075 || c >= 3134 && c <= 3140 || c >= 3142 && c <= 3144 || c >= 3146 && c <= 3149 || c >= 3157 && c <= 3158 || c >= 3202 && c <= 3203 || c >= 3262 && c <= 3268 || c >= 3270 && c <= 3272 || c >= 3274 && c <= 3277 || c >= 3285 && c <= 3286 || c >= 3330 && c <= 3331 || c >= 3390 && c <= 3395 || c >= 3398 && c <= 3400 || c >= 3402 && c <= 3405 || c == 3415 || c == 3633 || c >= 3636 && c <= 3642 || c >= 3655 && c <= 3662 || c == 3761 || c >= 3764 && c <= 3769 || c >= 3771 && c <= 3772 || c >= 3784 && c <= 3789 || c >= 3864 && c <= 3865 || c == 3893 || c == 3895 || c == 3897 || c == 3902 || c == 3903 || c >= 3953 && c <= 3972 || c >= 3974 && c <= 3979 || c >= 3984 && c <= 3989 || c == 3991 || c >= 3993 && c <= 4013 || c >= 4017 && c <= 4023 || c == 4025 || c >= 8400 && c <= 8412 || c == 8417 || c >= 12330 && c <= 12335 || c == 12441 || c == 12442 || c == 183 || c == 720 || c == 721 || c == 903 || c == 1600 || c == 3654 || c == 3782 || c == 12293 || c >= 12337 && c <= 12341 || c >= 12445 && c <= 12446 || c >= 12540 && c <= 12542;
10.21637 +}
10.21638 +
10.21639 +var HEX_TABLE;
10.21640 +function $clinit_94(){
10.21641 + $clinit_94 = nullMethod;
10.21642 + NAMES = initValues(_3_3C_classLit, 52, 12, [$toCharArray('AElig'), $toCharArray('AElig;'), $toCharArray('AMP'), $toCharArray('AMP;'), $toCharArray('Aacute'), $toCharArray('Aacute;'), $toCharArray('Abreve;'), $toCharArray('Acirc'), $toCharArray('Acirc;'), $toCharArray('Acy;'), $toCharArray('Afr;'), $toCharArray('Agrave'), $toCharArray('Agrave;'), $toCharArray('Alpha;'), $toCharArray('Amacr;'), $toCharArray('And;'), $toCharArray('Aogon;'), $toCharArray('Aopf;'), $toCharArray('ApplyFunction;'), $toCharArray('Aring'), $toCharArray('Aring;'), $toCharArray('Ascr;'), $toCharArray('Assign;'), $toCharArray('Atilde'), $toCharArray('Atilde;'), $toCharArray('Auml'), $toCharArray('Auml;'), $toCharArray('Backslash;'), $toCharArray('Barv;'), $toCharArray('Barwed;'), $toCharArray('Bcy;'), $toCharArray('Because;'), $toCharArray('Bernoullis;'), $toCharArray('Beta;'), $toCharArray('Bfr;'), $toCharArray('Bopf;'), $toCharArray('Breve;'), $toCharArray('Bscr;'), $toCharArray('Bumpeq;'), $toCharArray('CHcy;'), $toCharArray('COPY'), $toCharArray('COPY;'), $toCharArray('Cacute;'), $toCharArray('Cap;'), $toCharArray('CapitalDifferentialD;'), $toCharArray('Cayleys;'), $toCharArray('Ccaron;'), $toCharArray('Ccedil'), $toCharArray('Ccedil;'), $toCharArray('Ccirc;'), $toCharArray('Cconint;'), $toCharArray('Cdot;'), $toCharArray('Cedilla;'), $toCharArray('CenterDot;'), $toCharArray('Cfr;'), $toCharArray('Chi;'), $toCharArray('CircleDot;'), $toCharArray('CircleMinus;'), $toCharArray('CirclePlus;'), $toCharArray('CircleTimes;'), $toCharArray('ClockwiseContourIntegral;'), $toCharArray('CloseCurlyDoubleQuote;'), $toCharArray('CloseCurlyQuote;'), $toCharArray('Colon;'), $toCharArray('Colone;'), $toCharArray('Congruent;'), $toCharArray('Conint;'), $toCharArray('ContourIntegral;'), $toCharArray('Copf;'), $toCharArray('Coproduct;'), $toCharArray('CounterClockwiseContourIntegral;'), $toCharArray('Cross;'), $toCharArray('Cscr;'), $toCharArray('Cup;'), $toCharArray('CupCap;'), $toCharArray('DD;'), $toCharArray('DDotrahd;'), $toCharArray('DJcy;'), $toCharArray('DScy;'), $toCharArray('DZcy;'), $toCharArray('Dagger;'), $toCharArray('Darr;'), $toCharArray('Dashv;'), $toCharArray('Dcaron;'), $toCharArray('Dcy;'), $toCharArray('Del;'), $toCharArray('Delta;'), $toCharArray('Dfr;'), $toCharArray('DiacriticalAcute;'), $toCharArray('DiacriticalDot;'), $toCharArray('DiacriticalDoubleAcute;'), $toCharArray('DiacriticalGrave;'), $toCharArray('DiacriticalTilde;'), $toCharArray('Diamond;'), $toCharArray('DifferentialD;'), $toCharArray('Dopf;'), $toCharArray('Dot;'), $toCharArray('DotDot;'), $toCharArray('DotEqual;'), $toCharArray('DoubleContourIntegral;'), $toCharArray('DoubleDot;'), $toCharArray('DoubleDownArrow;'), $toCharArray('DoubleLeftArrow;'), $toCharArray('DoubleLeftRightArrow;'), $toCharArray('DoubleLeftTee;'), $toCharArray('DoubleLongLeftArrow;'), $toCharArray('DoubleLongLeftRightArrow;'), $toCharArray('DoubleLongRightArrow;'), $toCharArray('DoubleRightArrow;'), $toCharArray('DoubleRightTee;'), $toCharArray('DoubleUpArrow;'), $toCharArray('DoubleUpDownArrow;'), $toCharArray('DoubleVerticalBar;'), $toCharArray('DownArrow;'), $toCharArray('DownArrowBar;'), $toCharArray('DownArrowUpArrow;'), $toCharArray('DownBreve;'), $toCharArray('DownLeftRightVector;'), $toCharArray('DownLeftTeeVector;'), $toCharArray('DownLeftVector;'), $toCharArray('DownLeftVectorBar;'), $toCharArray('DownRightTeeVector;'), $toCharArray('DownRightVector;'), $toCharArray('DownRightVectorBar;'), $toCharArray('DownTee;'), $toCharArray('DownTeeArrow;'), $toCharArray('Downarrow;'), $toCharArray('Dscr;'), $toCharArray('Dstrok;'), $toCharArray('ENG;'), $toCharArray('ETH'), $toCharArray('ETH;'), $toCharArray('Eacute'), $toCharArray('Eacute;'), $toCharArray('Ecaron;'), $toCharArray('Ecirc'), $toCharArray('Ecirc;'), $toCharArray('Ecy;'), $toCharArray('Edot;'), $toCharArray('Efr;'), $toCharArray('Egrave'), $toCharArray('Egrave;'), $toCharArray('Element;'), $toCharArray('Emacr;'), $toCharArray('EmptySmallSquare;'), $toCharArray('EmptyVerySmallSquare;'), $toCharArray('Eogon;'), $toCharArray('Eopf;'), $toCharArray('Epsilon;'), $toCharArray('Equal;'), $toCharArray('EqualTilde;'), $toCharArray('Equilibrium;'), $toCharArray('Escr;'), $toCharArray('Esim;'), $toCharArray('Eta;'), $toCharArray('Euml'), $toCharArray('Euml;'), $toCharArray('Exists;'), $toCharArray('ExponentialE;'), $toCharArray('Fcy;'), $toCharArray('Ffr;'), $toCharArray('FilledSmallSquare;'), $toCharArray('FilledVerySmallSquare;'), $toCharArray('Fopf;'), $toCharArray('ForAll;'), $toCharArray('Fouriertrf;'), $toCharArray('Fscr;'), $toCharArray('GJcy;'), $toCharArray('GT'), $toCharArray('GT;'), $toCharArray('Gamma;'), $toCharArray('Gammad;'), $toCharArray('Gbreve;'), $toCharArray('Gcedil;'), $toCharArray('Gcirc;'), $toCharArray('Gcy;'), $toCharArray('Gdot;'), $toCharArray('Gfr;'), $toCharArray('Gg;'), $toCharArray('Gopf;'), $toCharArray('GreaterEqual;'), $toCharArray('GreaterEqualLess;'), $toCharArray('GreaterFullEqual;'), $toCharArray('GreaterGreater;'), $toCharArray('GreaterLess;'), $toCharArray('GreaterSlantEqual;'), $toCharArray('GreaterTilde;'), $toCharArray('Gscr;'), $toCharArray('Gt;'), $toCharArray('HARDcy;'), $toCharArray('Hacek;'), $toCharArray('Hat;'), $toCharArray('Hcirc;'), $toCharArray('Hfr;'), $toCharArray('HilbertSpace;'), $toCharArray('Hopf;'), $toCharArray('HorizontalLine;'), $toCharArray('Hscr;'), $toCharArray('Hstrok;'), $toCharArray('HumpDownHump;'), $toCharArray('HumpEqual;'), $toCharArray('IEcy;'), $toCharArray('IJlig;'), $toCharArray('IOcy;'), $toCharArray('Iacute'), $toCharArray('Iacute;'), $toCharArray('Icirc'), $toCharArray('Icirc;'), $toCharArray('Icy;'), $toCharArray('Idot;'), $toCharArray('Ifr;'), $toCharArray('Igrave'), $toCharArray('Igrave;'), $toCharArray('Im;'), $toCharArray('Imacr;'), $toCharArray('ImaginaryI;'), $toCharArray('Implies;'), $toCharArray('Int;'), $toCharArray('Integral;'), $toCharArray('Intersection;'), $toCharArray('InvisibleComma;'), $toCharArray('InvisibleTimes;'), $toCharArray('Iogon;'), $toCharArray('Iopf;'), $toCharArray('Iota;'), $toCharArray('Iscr;'), $toCharArray('Itilde;'), $toCharArray('Iukcy;'), $toCharArray('Iuml'), $toCharArray('Iuml;'), $toCharArray('Jcirc;'), $toCharArray('Jcy;'), $toCharArray('Jfr;'), $toCharArray('Jopf;'), $toCharArray('Jscr;'), $toCharArray('Jsercy;'), $toCharArray('Jukcy;'), $toCharArray('KHcy;'), $toCharArray('KJcy;'), $toCharArray('Kappa;'), $toCharArray('Kcedil;'), $toCharArray('Kcy;'), $toCharArray('Kfr;'), $toCharArray('Kopf;'), $toCharArray('Kscr;'), $toCharArray('LJcy;'), $toCharArray('LT'), $toCharArray('LT;'), $toCharArray('Lacute;'), $toCharArray('Lambda;'), $toCharArray('Lang;'), $toCharArray('Laplacetrf;'), $toCharArray('Larr;'), $toCharArray('Lcaron;'), $toCharArray('Lcedil;'), $toCharArray('Lcy;'), $toCharArray('LeftAngleBracket;'), $toCharArray('LeftArrow;'), $toCharArray('LeftArrowBar;'), $toCharArray('LeftArrowRightArrow;'), $toCharArray('LeftCeiling;'), $toCharArray('LeftDoubleBracket;'), $toCharArray('LeftDownTeeVector;'), $toCharArray('LeftDownVector;'), $toCharArray('LeftDownVectorBar;'), $toCharArray('LeftFloor;'), $toCharArray('LeftRightArrow;'), $toCharArray('LeftRightVector;'), $toCharArray('LeftTee;'), $toCharArray('LeftTeeArrow;'), $toCharArray('LeftTeeVector;'), $toCharArray('LeftTriangle;'), $toCharArray('LeftTriangleBar;'), $toCharArray('LeftTriangleEqual;'), $toCharArray('LeftUpDownVector;'), $toCharArray('LeftUpTeeVector;'), $toCharArray('LeftUpVector;'), $toCharArray('LeftUpVectorBar;'), $toCharArray('LeftVector;'), $toCharArray('LeftVectorBar;'), $toCharArray('Leftarrow;'), $toCharArray('Leftrightarrow;'), $toCharArray('LessEqualGreater;'), $toCharArray('LessFullEqual;'), $toCharArray('LessGreater;'), $toCharArray('LessLess;'), $toCharArray('LessSlantEqual;'), $toCharArray('LessTilde;'), $toCharArray('Lfr;'), $toCharArray('Ll;'), $toCharArray('Lleftarrow;'), $toCharArray('Lmidot;'), $toCharArray('LongLeftArrow;'), $toCharArray('LongLeftRightArrow;'), $toCharArray('LongRightArrow;'), $toCharArray('Longleftarrow;'), $toCharArray('Longleftrightarrow;'), $toCharArray('Longrightarrow;'), $toCharArray('Lopf;'), $toCharArray('LowerLeftArrow;'), $toCharArray('LowerRightArrow;'), $toCharArray('Lscr;'), $toCharArray('Lsh;'), $toCharArray('Lstrok;'), $toCharArray('Lt;'), $toCharArray('Map;'), $toCharArray('Mcy;'), $toCharArray('MediumSpace;'), $toCharArray('Mellintrf;'), $toCharArray('Mfr;'), $toCharArray('MinusPlus;'), $toCharArray('Mopf;'), $toCharArray('Mscr;'), $toCharArray('Mu;'), $toCharArray('NJcy;'), $toCharArray('Nacute;'), $toCharArray('Ncaron;'), $toCharArray('Ncedil;'), $toCharArray('Ncy;'), $toCharArray('NegativeMediumSpace;'), $toCharArray('NegativeThickSpace;'), $toCharArray('NegativeThinSpace;'), $toCharArray('NegativeVeryThinSpace;'), $toCharArray('NestedGreaterGreater;'), $toCharArray('NestedLessLess;'), $toCharArray('NewLine;'), $toCharArray('Nfr;'), $toCharArray('NoBreak;'), $toCharArray('NonBreakingSpace;'), $toCharArray('Nopf;'), $toCharArray('Not;'), $toCharArray('NotCongruent;'), $toCharArray('NotCupCap;'), $toCharArray('NotDoubleVerticalBar;'), $toCharArray('NotElement;'), $toCharArray('NotEqual;'), $toCharArray('NotExists;'), $toCharArray('NotGreater;'), $toCharArray('NotGreaterEqual;'), $toCharArray('NotGreaterLess;'), $toCharArray('NotGreaterTilde;'), $toCharArray('NotLeftTriangle;'), $toCharArray('NotLeftTriangleEqual;'), $toCharArray('NotLess;'), $toCharArray('NotLessEqual;'), $toCharArray('NotLessGreater;'), $toCharArray('NotLessTilde;'), $toCharArray('NotPrecedes;'), $toCharArray('NotPrecedesSlantEqual;'), $toCharArray('NotReverseElement;'), $toCharArray('NotRightTriangle;'), $toCharArray('NotRightTriangleEqual;'), $toCharArray('NotSquareSubsetEqual;'), $toCharArray('NotSquareSupersetEqual;'), $toCharArray('NotSubsetEqual;'), $toCharArray('NotSucceeds;'), $toCharArray('NotSucceedsSlantEqual;'), $toCharArray('NotSupersetEqual;'), $toCharArray('NotTilde;'), $toCharArray('NotTildeEqual;'), $toCharArray('NotTildeFullEqual;'), $toCharArray('NotTildeTilde;'), $toCharArray('NotVerticalBar;'), $toCharArray('Nscr;'), $toCharArray('Ntilde'), $toCharArray('Ntilde;'), $toCharArray('Nu;'), $toCharArray('OElig;'), $toCharArray('Oacute'), $toCharArray('Oacute;'), $toCharArray('Ocirc'), $toCharArray('Ocirc;'), $toCharArray('Ocy;'), $toCharArray('Odblac;'), $toCharArray('Ofr;'), $toCharArray('Ograve'), $toCharArray('Ograve;'), $toCharArray('Omacr;'), $toCharArray('Omega;'), $toCharArray('Omicron;'), $toCharArray('Oopf;'), $toCharArray('OpenCurlyDoubleQuote;'), $toCharArray('OpenCurlyQuote;'), $toCharArray('Or;'), $toCharArray('Oscr;'), $toCharArray('Oslash'), $toCharArray('Oslash;'), $toCharArray('Otilde'), $toCharArray('Otilde;'), $toCharArray('Otimes;'), $toCharArray('Ouml'), $toCharArray('Ouml;'), $toCharArray('OverBar;'), $toCharArray('OverBrace;'), $toCharArray('OverBracket;'), $toCharArray('OverParenthesis;'), $toCharArray('PartialD;'), $toCharArray('Pcy;'), $toCharArray('Pfr;'), $toCharArray('Phi;'), $toCharArray('Pi;'), $toCharArray('PlusMinus;'), $toCharArray('Poincareplane;'), $toCharArray('Popf;'), $toCharArray('Pr;'), $toCharArray('Precedes;'), $toCharArray('PrecedesEqual;'), $toCharArray('PrecedesSlantEqual;'), $toCharArray('PrecedesTilde;'), $toCharArray('Prime;'), $toCharArray('Product;'), $toCharArray('Proportion;'), $toCharArray('Proportional;'), $toCharArray('Pscr;'), $toCharArray('Psi;'), $toCharArray('QUOT'), $toCharArray('QUOT;'), $toCharArray('Qfr;'), $toCharArray('Qopf;'), $toCharArray('Qscr;'), $toCharArray('RBarr;'), $toCharArray('REG'), $toCharArray('REG;'), $toCharArray('Racute;'), $toCharArray('Rang;'), $toCharArray('Rarr;'), $toCharArray('Rarrtl;'), $toCharArray('Rcaron;'), $toCharArray('Rcedil;'), $toCharArray('Rcy;'), $toCharArray('Re;'), $toCharArray('ReverseElement;'), $toCharArray('ReverseEquilibrium;'), $toCharArray('ReverseUpEquilibrium;'), $toCharArray('Rfr;'), $toCharArray('Rho;'), $toCharArray('RightAngleBracket;'), $toCharArray('RightArrow;'), $toCharArray('RightArrowBar;'), $toCharArray('RightArrowLeftArrow;'), $toCharArray('RightCeiling;'), $toCharArray('RightDoubleBracket;'), $toCharArray('RightDownTeeVector;'), $toCharArray('RightDownVector;'), $toCharArray('RightDownVectorBar;'), $toCharArray('RightFloor;'), $toCharArray('RightTee;'), $toCharArray('RightTeeArrow;'), $toCharArray('RightTeeVector;'), $toCharArray('RightTriangle;'), $toCharArray('RightTriangleBar;'), $toCharArray('RightTriangleEqual;'), $toCharArray('RightUpDownVector;'), $toCharArray('RightUpTeeVector;'), $toCharArray('RightUpVector;'), $toCharArray('RightUpVectorBar;'), $toCharArray('RightVector;'), $toCharArray('RightVectorBar;'), $toCharArray('Rightarrow;'), $toCharArray('Ropf;'), $toCharArray('RoundImplies;'), $toCharArray('Rrightarrow;'), $toCharArray('Rscr;'), $toCharArray('Rsh;'), $toCharArray('RuleDelayed;'), $toCharArray('SHCHcy;'), $toCharArray('SHcy;'), $toCharArray('SOFTcy;'), $toCharArray('Sacute;'), $toCharArray('Sc;'), $toCharArray('Scaron;'), $toCharArray('Scedil;'), $toCharArray('Scirc;'), $toCharArray('Scy;'), $toCharArray('Sfr;'), $toCharArray('ShortDownArrow;'), $toCharArray('ShortLeftArrow;'), $toCharArray('ShortRightArrow;'), $toCharArray('ShortUpArrow;'), $toCharArray('Sigma;'), $toCharArray('SmallCircle;'), $toCharArray('Sopf;'), $toCharArray('Sqrt;'), $toCharArray('Square;'), $toCharArray('SquareIntersection;'), $toCharArray('SquareSubset;'), $toCharArray('SquareSubsetEqual;'), $toCharArray('SquareSuperset;'), $toCharArray('SquareSupersetEqual;'), $toCharArray('SquareUnion;'), $toCharArray('Sscr;'), $toCharArray('Star;'), $toCharArray('Sub;'), $toCharArray('Subset;'), $toCharArray('SubsetEqual;'), $toCharArray('Succeeds;'), $toCharArray('SucceedsEqual;'), $toCharArray('SucceedsSlantEqual;'), $toCharArray('SucceedsTilde;'), $toCharArray('SuchThat;'), $toCharArray('Sum;'), $toCharArray('Sup;'), $toCharArray('Superset;'), $toCharArray('SupersetEqual;'), $toCharArray('Supset;'), $toCharArray('THORN'), $toCharArray('THORN;'), $toCharArray('TRADE;'), $toCharArray('TSHcy;'), $toCharArray('TScy;'), $toCharArray('Tab;'), $toCharArray('Tau;'), $toCharArray('Tcaron;'), $toCharArray('Tcedil;'), $toCharArray('Tcy;'), $toCharArray('Tfr;'), $toCharArray('Therefore;'), $toCharArray('Theta;'), $toCharArray('ThinSpace;'), $toCharArray('Tilde;'), $toCharArray('TildeEqual;'), $toCharArray('TildeFullEqual;'), $toCharArray('TildeTilde;'), $toCharArray('Topf;'), $toCharArray('TripleDot;'), $toCharArray('Tscr;'), $toCharArray('Tstrok;'), $toCharArray('Uacute'), $toCharArray('Uacute;'), $toCharArray('Uarr;'), $toCharArray('Uarrocir;'), $toCharArray('Ubrcy;'), $toCharArray('Ubreve;'), $toCharArray('Ucirc'), $toCharArray('Ucirc;'), $toCharArray('Ucy;'), $toCharArray('Udblac;'), $toCharArray('Ufr;'), $toCharArray('Ugrave'), $toCharArray('Ugrave;'), $toCharArray('Umacr;'), $toCharArray('UnderBar;'), $toCharArray('UnderBrace;'), $toCharArray('UnderBracket;'), $toCharArray('UnderParenthesis;'), $toCharArray('Union;'), $toCharArray('UnionPlus;'), $toCharArray('Uogon;'), $toCharArray('Uopf;'), $toCharArray('UpArrow;'), $toCharArray('UpArrowBar;'), $toCharArray('UpArrowDownArrow;'), $toCharArray('UpDownArrow;'), $toCharArray('UpEquilibrium;'), $toCharArray('UpTee;'), $toCharArray('UpTeeArrow;'), $toCharArray('Uparrow;'), $toCharArray('Updownarrow;'), $toCharArray('UpperLeftArrow;'), $toCharArray('UpperRightArrow;'), $toCharArray('Upsi;'), $toCharArray('Upsilon;'), $toCharArray('Uring;'), $toCharArray('Uscr;'), $toCharArray('Utilde;'), $toCharArray('Uuml'), $toCharArray('Uuml;'), $toCharArray('VDash;'), $toCharArray('Vbar;'), $toCharArray('Vcy;'), $toCharArray('Vdash;'), $toCharArray('Vdashl;'), $toCharArray('Vee;'), $toCharArray('Verbar;'), $toCharArray('Vert;'), $toCharArray('VerticalBar;'), $toCharArray('VerticalLine;'), $toCharArray('VerticalSeparator;'), $toCharArray('VerticalTilde;'), $toCharArray('VeryThinSpace;'), $toCharArray('Vfr;'), $toCharArray('Vopf;'), $toCharArray('Vscr;'), $toCharArray('Vvdash;'), $toCharArray('Wcirc;'), $toCharArray('Wedge;'), $toCharArray('Wfr;'), $toCharArray('Wopf;'), $toCharArray('Wscr;'), $toCharArray('Xfr;'), $toCharArray('Xi;'), $toCharArray('Xopf;'), $toCharArray('Xscr;'), $toCharArray('YAcy;'), $toCharArray('YIcy;'), $toCharArray('YUcy;'), $toCharArray('Yacute'), $toCharArray('Yacute;'), $toCharArray('Ycirc;'), $toCharArray('Ycy;'), $toCharArray('Yfr;'), $toCharArray('Yopf;'), $toCharArray('Yscr;'), $toCharArray('Yuml;'), $toCharArray('ZHcy;'), $toCharArray('Zacute;'), $toCharArray('Zcaron;'), $toCharArray('Zcy;'), $toCharArray('Zdot;'), $toCharArray('ZeroWidthSpace;'), $toCharArray('Zeta;'), $toCharArray('Zfr;'), $toCharArray('Zopf;'), $toCharArray('Zscr;'), $toCharArray('aacute'), $toCharArray('aacute;'), $toCharArray('abreve;'), $toCharArray('ac;'), $toCharArray('acd;'), $toCharArray('acirc'), $toCharArray('acirc;'), $toCharArray('acute'), $toCharArray('acute;'), $toCharArray('acy;'), $toCharArray('aelig'), $toCharArray('aelig;'), $toCharArray('af;'), $toCharArray('afr;'), $toCharArray('agrave'), $toCharArray('agrave;'), $toCharArray('alefsym;'), $toCharArray('aleph;'), $toCharArray('alpha;'), $toCharArray('amacr;'), $toCharArray('amalg;'), $toCharArray('amp'), $toCharArray('amp;'), $toCharArray('and;'), $toCharArray('andand;'), $toCharArray('andd;'), $toCharArray('andslope;'), $toCharArray('andv;'), $toCharArray('ang;'), $toCharArray('ange;'), $toCharArray('angle;'), $toCharArray('angmsd;'), $toCharArray('angmsdaa;'), $toCharArray('angmsdab;'), $toCharArray('angmsdac;'), $toCharArray('angmsdad;'), $toCharArray('angmsdae;'), $toCharArray('angmsdaf;'), $toCharArray('angmsdag;'), $toCharArray('angmsdah;'), $toCharArray('angrt;'), $toCharArray('angrtvb;'), $toCharArray('angrtvbd;'), $toCharArray('angsph;'), $toCharArray('angst;'), $toCharArray('angzarr;'), $toCharArray('aogon;'), $toCharArray('aopf;'), $toCharArray('ap;'), $toCharArray('apE;'), $toCharArray('apacir;'), $toCharArray('ape;'), $toCharArray('apid;'), $toCharArray('apos;'), $toCharArray('approx;'), $toCharArray('approxeq;'), $toCharArray('aring'), $toCharArray('aring;'), $toCharArray('ascr;'), $toCharArray('ast;'), $toCharArray('asymp;'), $toCharArray('asympeq;'), $toCharArray('atilde'), $toCharArray('atilde;'), $toCharArray('auml'), $toCharArray('auml;'), $toCharArray('awconint;'), $toCharArray('awint;'), $toCharArray('bNot;'), $toCharArray('backcong;'), $toCharArray('backepsilon;'), $toCharArray('backprime;'), $toCharArray('backsim;'), $toCharArray('backsimeq;'), $toCharArray('barvee;'), $toCharArray('barwed;'), $toCharArray('barwedge;'), $toCharArray('bbrk;'), $toCharArray('bbrktbrk;'), $toCharArray('bcong;'), $toCharArray('bcy;'), $toCharArray('bdquo;'), $toCharArray('becaus;'), $toCharArray('because;'), $toCharArray('bemptyv;'), $toCharArray('bepsi;'), $toCharArray('bernou;'), $toCharArray('beta;'), $toCharArray('beth;'), $toCharArray('between;'), $toCharArray('bfr;'), $toCharArray('bigcap;'), $toCharArray('bigcirc;'), $toCharArray('bigcup;'), $toCharArray('bigodot;'), $toCharArray('bigoplus;'), $toCharArray('bigotimes;'), $toCharArray('bigsqcup;'), $toCharArray('bigstar;'), $toCharArray('bigtriangledown;'), $toCharArray('bigtriangleup;'), $toCharArray('biguplus;'), $toCharArray('bigvee;'), $toCharArray('bigwedge;'), $toCharArray('bkarow;'), $toCharArray('blacklozenge;'), $toCharArray('blacksquare;'), $toCharArray('blacktriangle;'), $toCharArray('blacktriangledown;'), $toCharArray('blacktriangleleft;'), $toCharArray('blacktriangleright;'), $toCharArray('blank;'), $toCharArray('blk12;'), $toCharArray('blk14;'), $toCharArray('blk34;'), $toCharArray('block;'), $toCharArray('bnot;'), $toCharArray('bopf;'), $toCharArray('bot;'), $toCharArray('bottom;'), $toCharArray('bowtie;'), $toCharArray('boxDL;'), $toCharArray('boxDR;'), $toCharArray('boxDl;'), $toCharArray('boxDr;'), $toCharArray('boxH;'), $toCharArray('boxHD;'), $toCharArray('boxHU;'), $toCharArray('boxHd;'), $toCharArray('boxHu;'), $toCharArray('boxUL;'), $toCharArray('boxUR;'), $toCharArray('boxUl;'), $toCharArray('boxUr;'), $toCharArray('boxV;'), $toCharArray('boxVH;'), $toCharArray('boxVL;'), $toCharArray('boxVR;'), $toCharArray('boxVh;'), $toCharArray('boxVl;'), $toCharArray('boxVr;'), $toCharArray('boxbox;'), $toCharArray('boxdL;'), $toCharArray('boxdR;'), $toCharArray('boxdl;'), $toCharArray('boxdr;'), $toCharArray('boxh;'), $toCharArray('boxhD;'), $toCharArray('boxhU;'), $toCharArray('boxhd;'), $toCharArray('boxhu;'), $toCharArray('boxminus;'), $toCharArray('boxplus;'), $toCharArray('boxtimes;'), $toCharArray('boxuL;'), $toCharArray('boxuR;'), $toCharArray('boxul;'), $toCharArray('boxur;'), $toCharArray('boxv;'), $toCharArray('boxvH;'), $toCharArray('boxvL;'), $toCharArray('boxvR;'), $toCharArray('boxvh;'), $toCharArray('boxvl;'), $toCharArray('boxvr;'), $toCharArray('bprime;'), $toCharArray('breve;'), $toCharArray('brvbar'), $toCharArray('brvbar;'), $toCharArray('bscr;'), $toCharArray('bsemi;'), $toCharArray('bsim;'), $toCharArray('bsime;'), $toCharArray('bsol;'), $toCharArray('bsolb;'), $toCharArray('bull;'), $toCharArray('bullet;'), $toCharArray('bump;'), $toCharArray('bumpE;'), $toCharArray('bumpe;'), $toCharArray('bumpeq;'), $toCharArray('cacute;'), $toCharArray('cap;'), $toCharArray('capand;'), $toCharArray('capbrcup;'), $toCharArray('capcap;'), $toCharArray('capcup;'), $toCharArray('capdot;'), $toCharArray('caret;'), $toCharArray('caron;'), $toCharArray('ccaps;'), $toCharArray('ccaron;'), $toCharArray('ccedil'), $toCharArray('ccedil;'), $toCharArray('ccirc;'), $toCharArray('ccups;'), $toCharArray('ccupssm;'), $toCharArray('cdot;'), $toCharArray('cedil'), $toCharArray('cedil;'), $toCharArray('cemptyv;'), $toCharArray('cent'), $toCharArray('cent;'), $toCharArray('centerdot;'), $toCharArray('cfr;'), $toCharArray('chcy;'), $toCharArray('check;'), $toCharArray('checkmark;'), $toCharArray('chi;'), $toCharArray('cir;'), $toCharArray('cirE;'), $toCharArray('circ;'), $toCharArray('circeq;'), $toCharArray('circlearrowleft;'), $toCharArray('circlearrowright;'), $toCharArray('circledR;'), $toCharArray('circledS;'), $toCharArray('circledast;'), $toCharArray('circledcirc;'), $toCharArray('circleddash;'), $toCharArray('cire;'), $toCharArray('cirfnint;'), $toCharArray('cirmid;'), $toCharArray('cirscir;'), $toCharArray('clubs;'), $toCharArray('clubsuit;'), $toCharArray('colon;'), $toCharArray('colone;'), $toCharArray('coloneq;'), $toCharArray('comma;'), $toCharArray('commat;'), $toCharArray('comp;'), $toCharArray('compfn;'), $toCharArray('complement;'), $toCharArray('complexes;'), $toCharArray('cong;'), $toCharArray('congdot;'), $toCharArray('conint;'), $toCharArray('copf;'), $toCharArray('coprod;'), $toCharArray('copy'), $toCharArray('copy;'), $toCharArray('copysr;'), $toCharArray('crarr;'), $toCharArray('cross;'), $toCharArray('cscr;'), $toCharArray('csub;'), $toCharArray('csube;'), $toCharArray('csup;'), $toCharArray('csupe;'), $toCharArray('ctdot;'), $toCharArray('cudarrl;'), $toCharArray('cudarrr;'), $toCharArray('cuepr;'), $toCharArray('cuesc;'), $toCharArray('cularr;'), $toCharArray('cularrp;'), $toCharArray('cup;'), $toCharArray('cupbrcap;'), $toCharArray('cupcap;'), $toCharArray('cupcup;'), $toCharArray('cupdot;'), $toCharArray('cupor;'), $toCharArray('curarr;'), $toCharArray('curarrm;'), $toCharArray('curlyeqprec;'), $toCharArray('curlyeqsucc;'), $toCharArray('curlyvee;'), $toCharArray('curlywedge;'), $toCharArray('curren'), $toCharArray('curren;'), $toCharArray('curvearrowleft;'), $toCharArray('curvearrowright;'), $toCharArray('cuvee;'), $toCharArray('cuwed;'), $toCharArray('cwconint;'), $toCharArray('cwint;'), $toCharArray('cylcty;'), $toCharArray('dArr;'), $toCharArray('dHar;'), $toCharArray('dagger;'), $toCharArray('daleth;'), $toCharArray('darr;'), $toCharArray('dash;'), $toCharArray('dashv;'), $toCharArray('dbkarow;'), $toCharArray('dblac;'), $toCharArray('dcaron;'), $toCharArray('dcy;'), $toCharArray('dd;'), $toCharArray('ddagger;'), $toCharArray('ddarr;'), $toCharArray('ddotseq;'), $toCharArray('deg'), $toCharArray('deg;'), $toCharArray('delta;'), $toCharArray('demptyv;'), $toCharArray('dfisht;'), $toCharArray('dfr;'), $toCharArray('dharl;'), $toCharArray('dharr;'), $toCharArray('diam;'), $toCharArray('diamond;'), $toCharArray('diamondsuit;'), $toCharArray('diams;'), $toCharArray('die;'), $toCharArray('digamma;'), $toCharArray('disin;'), $toCharArray('div;'), $toCharArray('divide'), $toCharArray('divide;'), $toCharArray('divideontimes;'), $toCharArray('divonx;'), $toCharArray('djcy;'), $toCharArray('dlcorn;'), $toCharArray('dlcrop;'), $toCharArray('dollar;'), $toCharArray('dopf;'), $toCharArray('dot;'), $toCharArray('doteq;'), $toCharArray('doteqdot;'), $toCharArray('dotminus;'), $toCharArray('dotplus;'), $toCharArray('dotsquare;'), $toCharArray('doublebarwedge;'), $toCharArray('downarrow;'), $toCharArray('downdownarrows;'), $toCharArray('downharpoonleft;'), $toCharArray('downharpoonright;'), $toCharArray('drbkarow;'), $toCharArray('drcorn;'), $toCharArray('drcrop;'), $toCharArray('dscr;'), $toCharArray('dscy;'), $toCharArray('dsol;'), $toCharArray('dstrok;'), $toCharArray('dtdot;'), $toCharArray('dtri;'), $toCharArray('dtrif;'), $toCharArray('duarr;'), $toCharArray('duhar;'), $toCharArray('dwangle;'), $toCharArray('dzcy;'), $toCharArray('dzigrarr;'), $toCharArray('eDDot;'), $toCharArray('eDot;'), $toCharArray('eacute'), $toCharArray('eacute;'), $toCharArray('easter;'), $toCharArray('ecaron;'), $toCharArray('ecir;'), $toCharArray('ecirc'), $toCharArray('ecirc;'), $toCharArray('ecolon;'), $toCharArray('ecy;'), $toCharArray('edot;'), $toCharArray('ee;'), $toCharArray('efDot;'), $toCharArray('efr;'), $toCharArray('eg;'), $toCharArray('egrave'), $toCharArray('egrave;'), $toCharArray('egs;'), $toCharArray('egsdot;'), $toCharArray('el;'), $toCharArray('elinters;'), $toCharArray('ell;'), $toCharArray('els;'), $toCharArray('elsdot;'), $toCharArray('emacr;'), $toCharArray('empty;'), $toCharArray('emptyset;'), $toCharArray('emptyv;'), $toCharArray('emsp13;'), $toCharArray('emsp14;'), $toCharArray('emsp;'), $toCharArray('eng;'), $toCharArray('ensp;'), $toCharArray('eogon;'), $toCharArray('eopf;'), $toCharArray('epar;'), $toCharArray('eparsl;'), $toCharArray('eplus;'), $toCharArray('epsi;'), $toCharArray('epsilon;'), $toCharArray('epsiv;'), $toCharArray('eqcirc;'), $toCharArray('eqcolon;'), $toCharArray('eqsim;'), $toCharArray('eqslantgtr;'), $toCharArray('eqslantless;'), $toCharArray('equals;'), $toCharArray('equest;'), $toCharArray('equiv;'), $toCharArray('equivDD;'), $toCharArray('eqvparsl;'), $toCharArray('erDot;'), $toCharArray('erarr;'), $toCharArray('escr;'), $toCharArray('esdot;'), $toCharArray('esim;'), $toCharArray('eta;'), $toCharArray('eth'), $toCharArray('eth;'), $toCharArray('euml'), $toCharArray('euml;'), $toCharArray('euro;'), $toCharArray('excl;'), $toCharArray('exist;'), $toCharArray('expectation;'), $toCharArray('exponentiale;'), $toCharArray('fallingdotseq;'), $toCharArray('fcy;'), $toCharArray('female;'), $toCharArray('ffilig;'), $toCharArray('fflig;'), $toCharArray('ffllig;'), $toCharArray('ffr;'), $toCharArray('filig;'), $toCharArray('flat;'), $toCharArray('fllig;'), $toCharArray('fltns;'), $toCharArray('fnof;'), $toCharArray('fopf;'), $toCharArray('forall;'), $toCharArray('fork;'), $toCharArray('forkv;'), $toCharArray('fpartint;'), $toCharArray('frac12'), $toCharArray('frac12;'), $toCharArray('frac13;'), $toCharArray('frac14'), $toCharArray('frac14;'), $toCharArray('frac15;'), $toCharArray('frac16;'), $toCharArray('frac18;'), $toCharArray('frac23;'), $toCharArray('frac25;'), $toCharArray('frac34'), $toCharArray('frac34;'), $toCharArray('frac35;'), $toCharArray('frac38;'), $toCharArray('frac45;'), $toCharArray('frac56;'), $toCharArray('frac58;'), $toCharArray('frac78;'), $toCharArray('frasl;'), $toCharArray('frown;'), $toCharArray('fscr;'), $toCharArray('gE;'), $toCharArray('gEl;'), $toCharArray('gacute;'), $toCharArray('gamma;'), $toCharArray('gammad;'), $toCharArray('gap;'), $toCharArray('gbreve;'), $toCharArray('gcirc;'), $toCharArray('gcy;'), $toCharArray('gdot;'), $toCharArray('ge;'), $toCharArray('gel;'), $toCharArray('geq;'), $toCharArray('geqq;'), $toCharArray('geqslant;'), $toCharArray('ges;'), $toCharArray('gescc;'), $toCharArray('gesdot;'), $toCharArray('gesdoto;'), $toCharArray('gesdotol;'), $toCharArray('gesles;'), $toCharArray('gfr;'), $toCharArray('gg;'), $toCharArray('ggg;'), $toCharArray('gimel;'), $toCharArray('gjcy;'), $toCharArray('gl;'), $toCharArray('glE;'), $toCharArray('gla;'), $toCharArray('glj;'), $toCharArray('gnE;'), $toCharArray('gnap;'), $toCharArray('gnapprox;'), $toCharArray('gne;'), $toCharArray('gneq;'), $toCharArray('gneqq;'), $toCharArray('gnsim;'), $toCharArray('gopf;'), $toCharArray('grave;'), $toCharArray('gscr;'), $toCharArray('gsim;'), $toCharArray('gsime;'), $toCharArray('gsiml;'), $toCharArray('gt'), $toCharArray('gt;'), $toCharArray('gtcc;'), $toCharArray('gtcir;'), $toCharArray('gtdot;'), $toCharArray('gtlPar;'), $toCharArray('gtquest;'), $toCharArray('gtrapprox;'), $toCharArray('gtrarr;'), $toCharArray('gtrdot;'), $toCharArray('gtreqless;'), $toCharArray('gtreqqless;'), $toCharArray('gtrless;'), $toCharArray('gtrsim;'), $toCharArray('hArr;'), $toCharArray('hairsp;'), $toCharArray('half;'), $toCharArray('hamilt;'), $toCharArray('hardcy;'), $toCharArray('harr;'), $toCharArray('harrcir;'), $toCharArray('harrw;'), $toCharArray('hbar;'), $toCharArray('hcirc;'), $toCharArray('hearts;'), $toCharArray('heartsuit;'), $toCharArray('hellip;'), $toCharArray('hercon;'), $toCharArray('hfr;'), $toCharArray('hksearow;'), $toCharArray('hkswarow;'), $toCharArray('hoarr;'), $toCharArray('homtht;'), $toCharArray('hookleftarrow;'), $toCharArray('hookrightarrow;'), $toCharArray('hopf;'), $toCharArray('horbar;'), $toCharArray('hscr;'), $toCharArray('hslash;'), $toCharArray('hstrok;'), $toCharArray('hybull;'), $toCharArray('hyphen;'), $toCharArray('iacute'), $toCharArray('iacute;'), $toCharArray('ic;'), $toCharArray('icirc'), $toCharArray('icirc;'), $toCharArray('icy;'), $toCharArray('iecy;'), $toCharArray('iexcl'), $toCharArray('iexcl;'), $toCharArray('iff;'), $toCharArray('ifr;'), $toCharArray('igrave'), $toCharArray('igrave;'), $toCharArray('ii;'), $toCharArray('iiiint;'), $toCharArray('iiint;'), $toCharArray('iinfin;'), $toCharArray('iiota;'), $toCharArray('ijlig;'), $toCharArray('imacr;'), $toCharArray('image;'), $toCharArray('imagline;'), $toCharArray('imagpart;'), $toCharArray('imath;'), $toCharArray('imof;'), $toCharArray('imped;'), $toCharArray('in;'), $toCharArray('incare;'), $toCharArray('infin;'), $toCharArray('infintie;'), $toCharArray('inodot;'), $toCharArray('int;'), $toCharArray('intcal;'), $toCharArray('integers;'), $toCharArray('intercal;'), $toCharArray('intlarhk;'), $toCharArray('intprod;'), $toCharArray('iocy;'), $toCharArray('iogon;'), $toCharArray('iopf;'), $toCharArray('iota;'), $toCharArray('iprod;'), $toCharArray('iquest'), $toCharArray('iquest;'), $toCharArray('iscr;'), $toCharArray('isin;'), $toCharArray('isinE;'), $toCharArray('isindot;'), $toCharArray('isins;'), $toCharArray('isinsv;'), $toCharArray('isinv;'), $toCharArray('it;'), $toCharArray('itilde;'), $toCharArray('iukcy;'), $toCharArray('iuml'), $toCharArray('iuml;'), $toCharArray('jcirc;'), $toCharArray('jcy;'), $toCharArray('jfr;'), $toCharArray('jmath;'), $toCharArray('jopf;'), $toCharArray('jscr;'), $toCharArray('jsercy;'), $toCharArray('jukcy;'), $toCharArray('kappa;'), $toCharArray('kappav;'), $toCharArray('kcedil;'), $toCharArray('kcy;'), $toCharArray('kfr;'), $toCharArray('kgreen;'), $toCharArray('khcy;'), $toCharArray('kjcy;'), $toCharArray('kopf;'), $toCharArray('kscr;'), $toCharArray('lAarr;'), $toCharArray('lArr;'), $toCharArray('lAtail;'), $toCharArray('lBarr;'), $toCharArray('lE;'), $toCharArray('lEg;'), $toCharArray('lHar;'), $toCharArray('lacute;'), $toCharArray('laemptyv;'), $toCharArray('lagran;'), $toCharArray('lambda;'), $toCharArray('lang;'), $toCharArray('langd;'), $toCharArray('langle;'), $toCharArray('lap;'), $toCharArray('laquo'), $toCharArray('laquo;'), $toCharArray('larr;'), $toCharArray('larrb;'), $toCharArray('larrbfs;'), $toCharArray('larrfs;'), $toCharArray('larrhk;'), $toCharArray('larrlp;'), $toCharArray('larrpl;'), $toCharArray('larrsim;'), $toCharArray('larrtl;'), $toCharArray('lat;'), $toCharArray('latail;'), $toCharArray('late;'), $toCharArray('lbarr;'), $toCharArray('lbbrk;'), $toCharArray('lbrace;'), $toCharArray('lbrack;'), $toCharArray('lbrke;'), $toCharArray('lbrksld;'), $toCharArray('lbrkslu;'), $toCharArray('lcaron;'), $toCharArray('lcedil;'), $toCharArray('lceil;'), $toCharArray('lcub;'), $toCharArray('lcy;'), $toCharArray('ldca;'), $toCharArray('ldquo;'), $toCharArray('ldquor;'), $toCharArray('ldrdhar;'), $toCharArray('ldrushar;'), $toCharArray('ldsh;'), $toCharArray('le;'), $toCharArray('leftarrow;'), $toCharArray('leftarrowtail;'), $toCharArray('leftharpoondown;'), $toCharArray('leftharpoonup;'), $toCharArray('leftleftarrows;'), $toCharArray('leftrightarrow;'), $toCharArray('leftrightarrows;'), $toCharArray('leftrightharpoons;'), $toCharArray('leftrightsquigarrow;'), $toCharArray('leftthreetimes;'), $toCharArray('leg;'), $toCharArray('leq;'), $toCharArray('leqq;'), $toCharArray('leqslant;'), $toCharArray('les;'), $toCharArray('lescc;'), $toCharArray('lesdot;'), $toCharArray('lesdoto;'), $toCharArray('lesdotor;'), $toCharArray('lesges;'), $toCharArray('lessapprox;'), $toCharArray('lessdot;'), $toCharArray('lesseqgtr;'), $toCharArray('lesseqqgtr;'), $toCharArray('lessgtr;'), $toCharArray('lesssim;'), $toCharArray('lfisht;'), $toCharArray('lfloor;'), $toCharArray('lfr;'), $toCharArray('lg;'), $toCharArray('lgE;'), $toCharArray('lhard;'), $toCharArray('lharu;'), $toCharArray('lharul;'), $toCharArray('lhblk;'), $toCharArray('ljcy;'), $toCharArray('ll;'), $toCharArray('llarr;'), $toCharArray('llcorner;'), $toCharArray('llhard;'), $toCharArray('lltri;'), $toCharArray('lmidot;'), $toCharArray('lmoust;'), $toCharArray('lmoustache;'), $toCharArray('lnE;'), $toCharArray('lnap;'), $toCharArray('lnapprox;'), $toCharArray('lne;'), $toCharArray('lneq;'), $toCharArray('lneqq;'), $toCharArray('lnsim;'), $toCharArray('loang;'), $toCharArray('loarr;'), $toCharArray('lobrk;'), $toCharArray('longleftarrow;'), $toCharArray('longleftrightarrow;'), $toCharArray('longmapsto;'), $toCharArray('longrightarrow;'), $toCharArray('looparrowleft;'), $toCharArray('looparrowright;'), $toCharArray('lopar;'), $toCharArray('lopf;'), $toCharArray('loplus;'), $toCharArray('lotimes;'), $toCharArray('lowast;'), $toCharArray('lowbar;'), $toCharArray('loz;'), $toCharArray('lozenge;'), $toCharArray('lozf;'), $toCharArray('lpar;'), $toCharArray('lparlt;'), $toCharArray('lrarr;'), $toCharArray('lrcorner;'), $toCharArray('lrhar;'), $toCharArray('lrhard;'), $toCharArray('lrm;'), $toCharArray('lrtri;'), $toCharArray('lsaquo;'), $toCharArray('lscr;'), $toCharArray('lsh;'), $toCharArray('lsim;'), $toCharArray('lsime;'), $toCharArray('lsimg;'), $toCharArray('lsqb;'), $toCharArray('lsquo;'), $toCharArray('lsquor;'), $toCharArray('lstrok;'), $toCharArray('lt'), $toCharArray('lt;'), $toCharArray('ltcc;'), $toCharArray('ltcir;'), $toCharArray('ltdot;'), $toCharArray('lthree;'), $toCharArray('ltimes;'), $toCharArray('ltlarr;'), $toCharArray('ltquest;'), $toCharArray('ltrPar;'), $toCharArray('ltri;'), $toCharArray('ltrie;'), $toCharArray('ltrif;'), $toCharArray('lurdshar;'), $toCharArray('luruhar;'), $toCharArray('mDDot;'), $toCharArray('macr'), $toCharArray('macr;'), $toCharArray('male;'), $toCharArray('malt;'), $toCharArray('maltese;'), $toCharArray('map;'), $toCharArray('mapsto;'), $toCharArray('mapstodown;'), $toCharArray('mapstoleft;'), $toCharArray('mapstoup;'), $toCharArray('marker;'), $toCharArray('mcomma;'), $toCharArray('mcy;'), $toCharArray('mdash;'), $toCharArray('measuredangle;'), $toCharArray('mfr;'), $toCharArray('mho;'), $toCharArray('micro'), $toCharArray('micro;'), $toCharArray('mid;'), $toCharArray('midast;'), $toCharArray('midcir;'), $toCharArray('middot'), $toCharArray('middot;'), $toCharArray('minus;'), $toCharArray('minusb;'), $toCharArray('minusd;'), $toCharArray('minusdu;'), $toCharArray('mlcp;'), $toCharArray('mldr;'), $toCharArray('mnplus;'), $toCharArray('models;'), $toCharArray('mopf;'), $toCharArray('mp;'), $toCharArray('mscr;'), $toCharArray('mstpos;'), $toCharArray('mu;'), $toCharArray('multimap;'), $toCharArray('mumap;'), $toCharArray('nLeftarrow;'), $toCharArray('nLeftrightarrow;'), $toCharArray('nRightarrow;'), $toCharArray('nVDash;'), $toCharArray('nVdash;'), $toCharArray('nabla;'), $toCharArray('nacute;'), $toCharArray('nap;'), $toCharArray('napos;'), $toCharArray('napprox;'), $toCharArray('natur;'), $toCharArray('natural;'), $toCharArray('naturals;'), $toCharArray('nbsp'), $toCharArray('nbsp;'), $toCharArray('ncap;'), $toCharArray('ncaron;'), $toCharArray('ncedil;'), $toCharArray('ncong;'), $toCharArray('ncup;'), $toCharArray('ncy;'), $toCharArray('ndash;'), $toCharArray('ne;'), $toCharArray('neArr;'), $toCharArray('nearhk;'), $toCharArray('nearr;'), $toCharArray('nearrow;'), $toCharArray('nequiv;'), $toCharArray('nesear;'), $toCharArray('nexist;'), $toCharArray('nexists;'), $toCharArray('nfr;'), $toCharArray('nge;'), $toCharArray('ngeq;'), $toCharArray('ngsim;'), $toCharArray('ngt;'), $toCharArray('ngtr;'), $toCharArray('nhArr;'), $toCharArray('nharr;'), $toCharArray('nhpar;'), $toCharArray('ni;'), $toCharArray('nis;'), $toCharArray('nisd;'), $toCharArray('niv;'), $toCharArray('njcy;'), $toCharArray('nlArr;'), $toCharArray('nlarr;'), $toCharArray('nldr;'), $toCharArray('nle;'), $toCharArray('nleftarrow;'), $toCharArray('nleftrightarrow;'), $toCharArray('nleq;'), $toCharArray('nless;'), $toCharArray('nlsim;'), $toCharArray('nlt;'), $toCharArray('nltri;'), $toCharArray('nltrie;'), $toCharArray('nmid;'), $toCharArray('nopf;'), $toCharArray('not'), $toCharArray('not;'), $toCharArray('notin;'), $toCharArray('notinva;'), $toCharArray('notinvb;'), $toCharArray('notinvc;'), $toCharArray('notni;'), $toCharArray('notniva;'), $toCharArray('notnivb;'), $toCharArray('notnivc;'), $toCharArray('npar;'), $toCharArray('nparallel;'), $toCharArray('npolint;'), $toCharArray('npr;'), $toCharArray('nprcue;'), $toCharArray('nprec;'), $toCharArray('nrArr;'), $toCharArray('nrarr;'), $toCharArray('nrightarrow;'), $toCharArray('nrtri;'), $toCharArray('nrtrie;'), $toCharArray('nsc;'), $toCharArray('nsccue;'), $toCharArray('nscr;'), $toCharArray('nshortmid;'), $toCharArray('nshortparallel;'), $toCharArray('nsim;'), $toCharArray('nsime;'), $toCharArray('nsimeq;'), $toCharArray('nsmid;'), $toCharArray('nspar;'), $toCharArray('nsqsube;'), $toCharArray('nsqsupe;'), $toCharArray('nsub;'), $toCharArray('nsube;'), $toCharArray('nsubseteq;'), $toCharArray('nsucc;'), $toCharArray('nsup;'), $toCharArray('nsupe;'), $toCharArray('nsupseteq;'), $toCharArray('ntgl;'), $toCharArray('ntilde'), $toCharArray('ntilde;'), $toCharArray('ntlg;'), $toCharArray('ntriangleleft;'), $toCharArray('ntrianglelefteq;'), $toCharArray('ntriangleright;'), $toCharArray('ntrianglerighteq;'), $toCharArray('nu;'), $toCharArray('num;'), $toCharArray('numero;'), $toCharArray('numsp;'), $toCharArray('nvDash;'), $toCharArray('nvHarr;'), $toCharArray('nvdash;'), $toCharArray('nvinfin;'), $toCharArray('nvlArr;'), $toCharArray('nvrArr;'), $toCharArray('nwArr;'), $toCharArray('nwarhk;'), $toCharArray('nwarr;'), $toCharArray('nwarrow;'), $toCharArray('nwnear;'), $toCharArray('oS;'), $toCharArray('oacute'), $toCharArray('oacute;'), $toCharArray('oast;'), $toCharArray('ocir;'), $toCharArray('ocirc'), $toCharArray('ocirc;'), $toCharArray('ocy;'), $toCharArray('odash;'), $toCharArray('odblac;'), $toCharArray('odiv;'), $toCharArray('odot;'), $toCharArray('odsold;'), $toCharArray('oelig;'), $toCharArray('ofcir;'), $toCharArray('ofr;'), $toCharArray('ogon;'), $toCharArray('ograve'), $toCharArray('ograve;'), $toCharArray('ogt;'), $toCharArray('ohbar;'), $toCharArray('ohm;'), $toCharArray('oint;'), $toCharArray('olarr;'), $toCharArray('olcir;'), $toCharArray('olcross;'), $toCharArray('oline;'), $toCharArray('olt;'), $toCharArray('omacr;'), $toCharArray('omega;'), $toCharArray('omicron;'), $toCharArray('omid;'), $toCharArray('ominus;'), $toCharArray('oopf;'), $toCharArray('opar;'), $toCharArray('operp;'), $toCharArray('oplus;'), $toCharArray('or;'), $toCharArray('orarr;'), $toCharArray('ord;'), $toCharArray('order;'), $toCharArray('orderof;'), $toCharArray('ordf'), $toCharArray('ordf;'), $toCharArray('ordm'), $toCharArray('ordm;'), $toCharArray('origof;'), $toCharArray('oror;'), $toCharArray('orslope;'), $toCharArray('orv;'), $toCharArray('oscr;'), $toCharArray('oslash'), $toCharArray('oslash;'), $toCharArray('osol;'), $toCharArray('otilde'), $toCharArray('otilde;'), $toCharArray('otimes;'), $toCharArray('otimesas;'), $toCharArray('ouml'), $toCharArray('ouml;'), $toCharArray('ovbar;'), $toCharArray('par;'), $toCharArray('para'), $toCharArray('para;'), $toCharArray('parallel;'), $toCharArray('parsim;'), $toCharArray('parsl;'), $toCharArray('part;'), $toCharArray('pcy;'), $toCharArray('percnt;'), $toCharArray('period;'), $toCharArray('permil;'), $toCharArray('perp;'), $toCharArray('pertenk;'), $toCharArray('pfr;'), $toCharArray('phi;'), $toCharArray('phiv;'), $toCharArray('phmmat;'), $toCharArray('phone;'), $toCharArray('pi;'), $toCharArray('pitchfork;'), $toCharArray('piv;'), $toCharArray('planck;'), $toCharArray('planckh;'), $toCharArray('plankv;'), $toCharArray('plus;'), $toCharArray('plusacir;'), $toCharArray('plusb;'), $toCharArray('pluscir;'), $toCharArray('plusdo;'), $toCharArray('plusdu;'), $toCharArray('pluse;'), $toCharArray('plusmn'), $toCharArray('plusmn;'), $toCharArray('plussim;'), $toCharArray('plustwo;'), $toCharArray('pm;'), $toCharArray('pointint;'), $toCharArray('popf;'), $toCharArray('pound'), $toCharArray('pound;'), $toCharArray('pr;'), $toCharArray('prE;'), $toCharArray('prap;'), $toCharArray('prcue;'), $toCharArray('pre;'), $toCharArray('prec;'), $toCharArray('precapprox;'), $toCharArray('preccurlyeq;'), $toCharArray('preceq;'), $toCharArray('precnapprox;'), $toCharArray('precneqq;'), $toCharArray('precnsim;'), $toCharArray('precsim;'), $toCharArray('prime;'), $toCharArray('primes;'), $toCharArray('prnE;'), $toCharArray('prnap;'), $toCharArray('prnsim;'), $toCharArray('prod;'), $toCharArray('profalar;'), $toCharArray('profline;'), $toCharArray('profsurf;'), $toCharArray('prop;'), $toCharArray('propto;'), $toCharArray('prsim;'), $toCharArray('prurel;'), $toCharArray('pscr;'), $toCharArray('psi;'), $toCharArray('puncsp;'), $toCharArray('qfr;'), $toCharArray('qint;'), $toCharArray('qopf;'), $toCharArray('qprime;'), $toCharArray('qscr;'), $toCharArray('quaternions;'), $toCharArray('quatint;'), $toCharArray('quest;'), $toCharArray('questeq;'), $toCharArray('quot'), $toCharArray('quot;'), $toCharArray('rAarr;'), $toCharArray('rArr;'), $toCharArray('rAtail;'), $toCharArray('rBarr;'), $toCharArray('rHar;'), $toCharArray('race;'), $toCharArray('racute;'), $toCharArray('radic;'), $toCharArray('raemptyv;'), $toCharArray('rang;'), $toCharArray('rangd;'), $toCharArray('range;'), $toCharArray('rangle;'), $toCharArray('raquo'), $toCharArray('raquo;'), $toCharArray('rarr;'), $toCharArray('rarrap;'), $toCharArray('rarrb;'), $toCharArray('rarrbfs;'), $toCharArray('rarrc;'), $toCharArray('rarrfs;'), $toCharArray('rarrhk;'), $toCharArray('rarrlp;'), $toCharArray('rarrpl;'), $toCharArray('rarrsim;'), $toCharArray('rarrtl;'), $toCharArray('rarrw;'), $toCharArray('ratail;'), $toCharArray('ratio;'), $toCharArray('rationals;'), $toCharArray('rbarr;'), $toCharArray('rbbrk;'), $toCharArray('rbrace;'), $toCharArray('rbrack;'), $toCharArray('rbrke;'), $toCharArray('rbrksld;'), $toCharArray('rbrkslu;'), $toCharArray('rcaron;'), $toCharArray('rcedil;'), $toCharArray('rceil;'), $toCharArray('rcub;'), $toCharArray('rcy;'), $toCharArray('rdca;'), $toCharArray('rdldhar;'), $toCharArray('rdquo;'), $toCharArray('rdquor;'), $toCharArray('rdsh;'), $toCharArray('real;'), $toCharArray('realine;'), $toCharArray('realpart;'), $toCharArray('reals;'), $toCharArray('rect;'), $toCharArray('reg'), $toCharArray('reg;'), $toCharArray('rfisht;'), $toCharArray('rfloor;'), $toCharArray('rfr;'), $toCharArray('rhard;'), $toCharArray('rharu;'), $toCharArray('rharul;'), $toCharArray('rho;'), $toCharArray('rhov;'), $toCharArray('rightarrow;'), $toCharArray('rightarrowtail;'), $toCharArray('rightharpoondown;'), $toCharArray('rightharpoonup;'), $toCharArray('rightleftarrows;'), $toCharArray('rightleftharpoons;'), $toCharArray('rightrightarrows;'), $toCharArray('rightsquigarrow;'), $toCharArray('rightthreetimes;'), $toCharArray('ring;'), $toCharArray('risingdotseq;'), $toCharArray('rlarr;'), $toCharArray('rlhar;'), $toCharArray('rlm;'), $toCharArray('rmoust;'), $toCharArray('rmoustache;'), $toCharArray('rnmid;'), $toCharArray('roang;'), $toCharArray('roarr;'), $toCharArray('robrk;'), $toCharArray('ropar;'), $toCharArray('ropf;'), $toCharArray('roplus;'), $toCharArray('rotimes;'), $toCharArray('rpar;'), $toCharArray('rpargt;'), $toCharArray('rppolint;'), $toCharArray('rrarr;'), $toCharArray('rsaquo;'), $toCharArray('rscr;'), $toCharArray('rsh;'), $toCharArray('rsqb;'), $toCharArray('rsquo;'), $toCharArray('rsquor;'), $toCharArray('rthree;'), $toCharArray('rtimes;'), $toCharArray('rtri;'), $toCharArray('rtrie;'), $toCharArray('rtrif;'), $toCharArray('rtriltri;'), $toCharArray('ruluhar;'), $toCharArray('rx;'), $toCharArray('sacute;'), $toCharArray('sbquo;'), $toCharArray('sc;'), $toCharArray('scE;'), $toCharArray('scap;'), $toCharArray('scaron;'), $toCharArray('sccue;'), $toCharArray('sce;'), $toCharArray('scedil;'), $toCharArray('scirc;'), $toCharArray('scnE;'), $toCharArray('scnap;'), $toCharArray('scnsim;'), $toCharArray('scpolint;'), $toCharArray('scsim;'), $toCharArray('scy;'), $toCharArray('sdot;'), $toCharArray('sdotb;'), $toCharArray('sdote;'), $toCharArray('seArr;'), $toCharArray('searhk;'), $toCharArray('searr;'), $toCharArray('searrow;'), $toCharArray('sect'), $toCharArray('sect;'), $toCharArray('semi;'), $toCharArray('seswar;'), $toCharArray('setminus;'), $toCharArray('setmn;'), $toCharArray('sext;'), $toCharArray('sfr;'), $toCharArray('sfrown;'), $toCharArray('sharp;'), $toCharArray('shchcy;'), $toCharArray('shcy;'), $toCharArray('shortmid;'), $toCharArray('shortparallel;'), $toCharArray('shy'), $toCharArray('shy;'), $toCharArray('sigma;'), $toCharArray('sigmaf;'), $toCharArray('sigmav;'), $toCharArray('sim;'), $toCharArray('simdot;'), $toCharArray('sime;'), $toCharArray('simeq;'), $toCharArray('simg;'), $toCharArray('simgE;'), $toCharArray('siml;'), $toCharArray('simlE;'), $toCharArray('simne;'), $toCharArray('simplus;'), $toCharArray('simrarr;'), $toCharArray('slarr;'), $toCharArray('smallsetminus;'), $toCharArray('smashp;'), $toCharArray('smeparsl;'), $toCharArray('smid;'), $toCharArray('smile;'), $toCharArray('smt;'), $toCharArray('smte;'), $toCharArray('softcy;'), $toCharArray('sol;'), $toCharArray('solb;'), $toCharArray('solbar;'), $toCharArray('sopf;'), $toCharArray('spades;'), $toCharArray('spadesuit;'), $toCharArray('spar;'), $toCharArray('sqcap;'), $toCharArray('sqcup;'), $toCharArray('sqsub;'), $toCharArray('sqsube;'), $toCharArray('sqsubset;'), $toCharArray('sqsubseteq;'), $toCharArray('sqsup;'), $toCharArray('sqsupe;'), $toCharArray('sqsupset;'), $toCharArray('sqsupseteq;'), $toCharArray('squ;'), $toCharArray('square;'), $toCharArray('squarf;'), $toCharArray('squf;'), $toCharArray('srarr;'), $toCharArray('sscr;'), $toCharArray('ssetmn;'), $toCharArray('ssmile;'), $toCharArray('sstarf;'), $toCharArray('star;'), $toCharArray('starf;'), $toCharArray('straightepsilon;'), $toCharArray('straightphi;'), $toCharArray('strns;'), $toCharArray('sub;'), $toCharArray('subE;'), $toCharArray('subdot;'), $toCharArray('sube;'), $toCharArray('subedot;'), $toCharArray('submult;'), $toCharArray('subnE;'), $toCharArray('subne;'), $toCharArray('subplus;'), $toCharArray('subrarr;'), $toCharArray('subset;'), $toCharArray('subseteq;'), $toCharArray('subseteqq;'), $toCharArray('subsetneq;'), $toCharArray('subsetneqq;'), $toCharArray('subsim;'), $toCharArray('subsub;'), $toCharArray('subsup;'), $toCharArray('succ;'), $toCharArray('succapprox;'), $toCharArray('succcurlyeq;'), $toCharArray('succeq;'), $toCharArray('succnapprox;'), $toCharArray('succneqq;'), $toCharArray('succnsim;'), $toCharArray('succsim;'), $toCharArray('sum;'), $toCharArray('sung;'), $toCharArray('sup1'), $toCharArray('sup1;'), $toCharArray('sup2'), $toCharArray('sup2;'), $toCharArray('sup3'), $toCharArray('sup3;'), $toCharArray('sup;'), $toCharArray('supE;'), $toCharArray('supdot;'), $toCharArray('supdsub;'), $toCharArray('supe;'), $toCharArray('supedot;'), $toCharArray('suphsub;'), $toCharArray('suplarr;'), $toCharArray('supmult;'), $toCharArray('supnE;'), $toCharArray('supne;'), $toCharArray('supplus;'), $toCharArray('supset;'), $toCharArray('supseteq;'), $toCharArray('supseteqq;'), $toCharArray('supsetneq;'), $toCharArray('supsetneqq;'), $toCharArray('supsim;'), $toCharArray('supsub;'), $toCharArray('supsup;'), $toCharArray('swArr;'), $toCharArray('swarhk;'), $toCharArray('swarr;'), $toCharArray('swarrow;'), $toCharArray('swnwar;'), $toCharArray('szlig'), $toCharArray('szlig;'), $toCharArray('target;'), $toCharArray('tau;'), $toCharArray('tbrk;'), $toCharArray('tcaron;'), $toCharArray('tcedil;'), $toCharArray('tcy;'), $toCharArray('tdot;'), $toCharArray('telrec;'), $toCharArray('tfr;'), $toCharArray('there4;'), $toCharArray('therefore;'), $toCharArray('theta;'), $toCharArray('thetasym;'), $toCharArray('thetav;'), $toCharArray('thickapprox;'), $toCharArray('thicksim;'), $toCharArray('thinsp;'), $toCharArray('thkap;'), $toCharArray('thksim;'), $toCharArray('thorn'), $toCharArray('thorn;'), $toCharArray('tilde;'), $toCharArray('times'), $toCharArray('times;'), $toCharArray('timesb;'), $toCharArray('timesbar;'), $toCharArray('timesd;'), $toCharArray('tint;'), $toCharArray('toea;'), $toCharArray('top;'), $toCharArray('topbot;'), $toCharArray('topcir;'), $toCharArray('topf;'), $toCharArray('topfork;'), $toCharArray('tosa;'), $toCharArray('tprime;'), $toCharArray('trade;'), $toCharArray('triangle;'), $toCharArray('triangledown;'), $toCharArray('triangleleft;'), $toCharArray('trianglelefteq;'), $toCharArray('triangleq;'), $toCharArray('triangleright;'), $toCharArray('trianglerighteq;'), $toCharArray('tridot;'), $toCharArray('trie;'), $toCharArray('triminus;'), $toCharArray('triplus;'), $toCharArray('trisb;'), $toCharArray('tritime;'), $toCharArray('trpezium;'), $toCharArray('tscr;'), $toCharArray('tscy;'), $toCharArray('tshcy;'), $toCharArray('tstrok;'), $toCharArray('twixt;'), $toCharArray('twoheadleftarrow;'), $toCharArray('twoheadrightarrow;'), $toCharArray('uArr;'), $toCharArray('uHar;'), $toCharArray('uacute'), $toCharArray('uacute;'), $toCharArray('uarr;'), $toCharArray('ubrcy;'), $toCharArray('ubreve;'), $toCharArray('ucirc'), $toCharArray('ucirc;'), $toCharArray('ucy;'), $toCharArray('udarr;'), $toCharArray('udblac;'), $toCharArray('udhar;'), $toCharArray('ufisht;'), $toCharArray('ufr;'), $toCharArray('ugrave'), $toCharArray('ugrave;'), $toCharArray('uharl;'), $toCharArray('uharr;'), $toCharArray('uhblk;'), $toCharArray('ulcorn;'), $toCharArray('ulcorner;'), $toCharArray('ulcrop;'), $toCharArray('ultri;'), $toCharArray('umacr;'), $toCharArray('uml'), $toCharArray('uml;'), $toCharArray('uogon;'), $toCharArray('uopf;'), $toCharArray('uparrow;'), $toCharArray('updownarrow;'), $toCharArray('upharpoonleft;'), $toCharArray('upharpoonright;'), $toCharArray('uplus;'), $toCharArray('upsi;'), $toCharArray('upsih;'), $toCharArray('upsilon;'), $toCharArray('upuparrows;'), $toCharArray('urcorn;'), $toCharArray('urcorner;'), $toCharArray('urcrop;'), $toCharArray('uring;'), $toCharArray('urtri;'), $toCharArray('uscr;'), $toCharArray('utdot;'), $toCharArray('utilde;'), $toCharArray('utri;'), $toCharArray('utrif;'), $toCharArray('uuarr;'), $toCharArray('uuml'), $toCharArray('uuml;'), $toCharArray('uwangle;'), $toCharArray('vArr;'), $toCharArray('vBar;'), $toCharArray('vBarv;'), $toCharArray('vDash;'), $toCharArray('vangrt;'), $toCharArray('varepsilon;'), $toCharArray('varkappa;'), $toCharArray('varnothing;'), $toCharArray('varphi;'), $toCharArray('varpi;'), $toCharArray('varpropto;'), $toCharArray('varr;'), $toCharArray('varrho;'), $toCharArray('varsigma;'), $toCharArray('vartheta;'), $toCharArray('vartriangleleft;'), $toCharArray('vartriangleright;'), $toCharArray('vcy;'), $toCharArray('vdash;'), $toCharArray('vee;'), $toCharArray('veebar;'), $toCharArray('veeeq;'), $toCharArray('vellip;'), $toCharArray('verbar;'), $toCharArray('vert;'), $toCharArray('vfr;'), $toCharArray('vltri;'), $toCharArray('vopf;'), $toCharArray('vprop;'), $toCharArray('vrtri;'), $toCharArray('vscr;'), $toCharArray('vzigzag;'), $toCharArray('wcirc;'), $toCharArray('wedbar;'), $toCharArray('wedge;'), $toCharArray('wedgeq;'), $toCharArray('weierp;'), $toCharArray('wfr;'), $toCharArray('wopf;'), $toCharArray('wp;'), $toCharArray('wr;'), $toCharArray('wreath;'), $toCharArray('wscr;'), $toCharArray('xcap;'), $toCharArray('xcirc;'), $toCharArray('xcup;'), $toCharArray('xdtri;'), $toCharArray('xfr;'), $toCharArray('xhArr;'), $toCharArray('xharr;'), $toCharArray('xi;'), $toCharArray('xlArr;'), $toCharArray('xlarr;'), $toCharArray('xmap;'), $toCharArray('xnis;'), $toCharArray('xodot;'), $toCharArray('xopf;'), $toCharArray('xoplus;'), $toCharArray('xotime;'), $toCharArray('xrArr;'), $toCharArray('xrarr;'), $toCharArray('xscr;'), $toCharArray('xsqcup;'), $toCharArray('xuplus;'), $toCharArray('xutri;'), $toCharArray('xvee;'), $toCharArray('xwedge;'), $toCharArray('yacute'), $toCharArray('yacute;'), $toCharArray('yacy;'), $toCharArray('ycirc;'), $toCharArray('ycy;'), $toCharArray('yen'), $toCharArray('yen;'), $toCharArray('yfr;'), $toCharArray('yicy;'), $toCharArray('yopf;'), $toCharArray('yscr;'), $toCharArray('yucy;'), $toCharArray('yuml'), $toCharArray('yuml;'), $toCharArray('zacute;'), $toCharArray('zcaron;'), $toCharArray('zcy;'), $toCharArray('zdot;'), $toCharArray('zeetrf;'), $toCharArray('zeta;'), $toCharArray('zfr;'), $toCharArray('zhcy;'), $toCharArray('zigrarr;'), $toCharArray('zopf;'), $toCharArray('zscr;'), $toCharArray('zwj;'), $toCharArray('zwnj;')]);
10.21643 + VALUES_0 = initValues(_3_3C_classLit, 52, 12, [initValues(_3C_classLit, 42, -1, [198]), initValues(_3C_classLit, 42, -1, [198]), initValues(_3C_classLit, 42, -1, [38]), initValues(_3C_classLit, 42, -1, [38]), initValues(_3C_classLit, 42, -1, [193]), initValues(_3C_classLit, 42, -1, [193]), initValues(_3C_classLit, 42, -1, [258]), initValues(_3C_classLit, 42, -1, [194]), initValues(_3C_classLit, 42, -1, [194]), initValues(_3C_classLit, 42, -1, [1040]), initValues(_3C_classLit, 42, -1, [55349, 56580]), initValues(_3C_classLit, 42, -1, [192]), initValues(_3C_classLit, 42, -1, [192]), initValues(_3C_classLit, 42, -1, [913]), initValues(_3C_classLit, 42, -1, [256]), initValues(_3C_classLit, 42, -1, [10835]), initValues(_3C_classLit, 42, -1, [260]), initValues(_3C_classLit, 42, -1, [55349, 56632]), initValues(_3C_classLit, 42, -1, [8289]), initValues(_3C_classLit, 42, -1, [197]), initValues(_3C_classLit, 42, -1, [197]), initValues(_3C_classLit, 42, -1, [55349, 56476]), initValues(_3C_classLit, 42, -1, [8788]), initValues(_3C_classLit, 42, -1, [195]), initValues(_3C_classLit, 42, -1, [195]), initValues(_3C_classLit, 42, -1, [196]), initValues(_3C_classLit, 42, -1, [196]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [10983]), initValues(_3C_classLit, 42, -1, [8966]), initValues(_3C_classLit, 42, -1, [1041]), initValues(_3C_classLit, 42, -1, [8757]), initValues(_3C_classLit, 42, -1, [8492]), initValues(_3C_classLit, 42, -1, [914]), initValues(_3C_classLit, 42, -1, [55349, 56581]), initValues(_3C_classLit, 42, -1, [55349, 56633]), initValues(_3C_classLit, 42, -1, [728]), initValues(_3C_classLit, 42, -1, [8492]), initValues(_3C_classLit, 42, -1, [8782]), initValues(_3C_classLit, 42, -1, [1063]), initValues(_3C_classLit, 42, -1, [169]), initValues(_3C_classLit, 42, -1, [169]), initValues(_3C_classLit, 42, -1, [262]), initValues(_3C_classLit, 42, -1, [8914]), initValues(_3C_classLit, 42, -1, [8517]), initValues(_3C_classLit, 42, -1, [8493]), initValues(_3C_classLit, 42, -1, [268]), initValues(_3C_classLit, 42, -1, [199]), initValues(_3C_classLit, 42, -1, [199]), initValues(_3C_classLit, 42, -1, [264]), initValues(_3C_classLit, 42, -1, [8752]), initValues(_3C_classLit, 42, -1, [266]), initValues(_3C_classLit, 42, -1, [184]), initValues(_3C_classLit, 42, -1, [183]), initValues(_3C_classLit, 42, -1, [8493]), initValues(_3C_classLit, 42, -1, [935]), initValues(_3C_classLit, 42, -1, [8857]), initValues(_3C_classLit, 42, -1, [8854]), initValues(_3C_classLit, 42, -1, [8853]), initValues(_3C_classLit, 42, -1, [8855]), initValues(_3C_classLit, 42, -1, [8754]), initValues(_3C_classLit, 42, -1, [8221]), initValues(_3C_classLit, 42, -1, [8217]), initValues(_3C_classLit, 42, -1, [8759]), initValues(_3C_classLit, 42, -1, [10868]), initValues(_3C_classLit, 42, -1, [8801]), initValues(_3C_classLit, 42, -1, [8751]), initValues(_3C_classLit, 42, -1, [8750]), initValues(_3C_classLit, 42, -1, [8450]), initValues(_3C_classLit, 42, -1, [8720]), initValues(_3C_classLit, 42, -1, [8755]), initValues(_3C_classLit, 42, -1, [10799]), initValues(_3C_classLit, 42, -1, [55349, 56478]), initValues(_3C_classLit, 42, -1, [8915]), initValues(_3C_classLit, 42, -1, [8781]), initValues(_3C_classLit, 42, -1, [8517]), initValues(_3C_classLit, 42, -1, [10513]), initValues(_3C_classLit, 42, -1, [1026]), initValues(_3C_classLit, 42, -1, [1029]), initValues(_3C_classLit, 42, -1, [1039]), initValues(_3C_classLit, 42, -1, [8225]), initValues(_3C_classLit, 42, -1, [8609]), initValues(_3C_classLit, 42, -1, [10980]), initValues(_3C_classLit, 42, -1, [270]), initValues(_3C_classLit, 42, -1, [1044]), initValues(_3C_classLit, 42, -1, [8711]), initValues(_3C_classLit, 42, -1, [916]), initValues(_3C_classLit, 42, -1, [55349, 56583]), initValues(_3C_classLit, 42, -1, [180]), initValues(_3C_classLit, 42, -1, [729]), initValues(_3C_classLit, 42, -1, [733]), initValues(_3C_classLit, 42, -1, [96]), initValues(_3C_classLit, 42, -1, [732]), initValues(_3C_classLit, 42, -1, [8900]), initValues(_3C_classLit, 42, -1, [8518]), initValues(_3C_classLit, 42, -1, [55349, 56635]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [8412]), initValues(_3C_classLit, 42, -1, [8784]), initValues(_3C_classLit, 42, -1, [8751]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [8659]), initValues(_3C_classLit, 42, -1, [8656]), initValues(_3C_classLit, 42, -1, [8660]), initValues(_3C_classLit, 42, -1, [10980]), initValues(_3C_classLit, 42, -1, [10232]), initValues(_3C_classLit, 42, -1, [10234]), initValues(_3C_classLit, 42, -1, [10233]), initValues(_3C_classLit, 42, -1, [8658]), initValues(_3C_classLit, 42, -1, [8872]), initValues(_3C_classLit, 42, -1, [8657]), initValues(_3C_classLit, 42, -1, [8661]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [8595]), initValues(_3C_classLit, 42, -1, [10515]), initValues(_3C_classLit, 42, -1, [8693]), initValues(_3C_classLit, 42, -1, [785]), initValues(_3C_classLit, 42, -1, [10576]), initValues(_3C_classLit, 42, -1, [10590]), initValues(_3C_classLit, 42, -1, [8637]), initValues(_3C_classLit, 42, -1, [10582]), initValues(_3C_classLit, 42, -1, [10591]), initValues(_3C_classLit, 42, -1, [8641]), initValues(_3C_classLit, 42, -1, [10583]), initValues(_3C_classLit, 42, -1, [8868]), initValues(_3C_classLit, 42, -1, [8615]), initValues(_3C_classLit, 42, -1, [8659]), initValues(_3C_classLit, 42, -1, [55349, 56479]), initValues(_3C_classLit, 42, -1, [272]), initValues(_3C_classLit, 42, -1, [330]), initValues(_3C_classLit, 42, -1, [208]), initValues(_3C_classLit, 42, -1, [208]), initValues(_3C_classLit, 42, -1, [201]), initValues(_3C_classLit, 42, -1, [201]), initValues(_3C_classLit, 42, -1, [282]), initValues(_3C_classLit, 42, -1, [202]), initValues(_3C_classLit, 42, -1, [202]), initValues(_3C_classLit, 42, -1, [1069]), initValues(_3C_classLit, 42, -1, [278]), initValues(_3C_classLit, 42, -1, [55349, 56584]), initValues(_3C_classLit, 42, -1, [200]), initValues(_3C_classLit, 42, -1, [200]), initValues(_3C_classLit, 42, -1, [8712]), initValues(_3C_classLit, 42, -1, [274]), initValues(_3C_classLit, 42, -1, [9723]), initValues(_3C_classLit, 42, -1, [9643]), initValues(_3C_classLit, 42, -1, [280]), initValues(_3C_classLit, 42, -1, [55349, 56636]), initValues(_3C_classLit, 42, -1, [917]), initValues(_3C_classLit, 42, -1, [10869]), initValues(_3C_classLit, 42, -1, [8770]), initValues(_3C_classLit, 42, -1, [8652]), initValues(_3C_classLit, 42, -1, [8496]), initValues(_3C_classLit, 42, -1, [10867]), initValues(_3C_classLit, 42, -1, [919]), initValues(_3C_classLit, 42, -1, [203]), initValues(_3C_classLit, 42, -1, [203]), initValues(_3C_classLit, 42, -1, [8707]), initValues(_3C_classLit, 42, -1, [8519]), initValues(_3C_classLit, 42, -1, [1060]), initValues(_3C_classLit, 42, -1, [55349, 56585]), initValues(_3C_classLit, 42, -1, [9724]), initValues(_3C_classLit, 42, -1, [9642]), initValues(_3C_classLit, 42, -1, [55349, 56637]), initValues(_3C_classLit, 42, -1, [8704]), initValues(_3C_classLit, 42, -1, [8497]), initValues(_3C_classLit, 42, -1, [8497]), initValues(_3C_classLit, 42, -1, [1027]), initValues(_3C_classLit, 42, -1, [62]), initValues(_3C_classLit, 42, -1, [62]), initValues(_3C_classLit, 42, -1, [915]), initValues(_3C_classLit, 42, -1, [988]), initValues(_3C_classLit, 42, -1, [286]), initValues(_3C_classLit, 42, -1, [290]), initValues(_3C_classLit, 42, -1, [284]), initValues(_3C_classLit, 42, -1, [1043]), initValues(_3C_classLit, 42, -1, [288]), initValues(_3C_classLit, 42, -1, [55349, 56586]), initValues(_3C_classLit, 42, -1, [8921]), initValues(_3C_classLit, 42, -1, [55349, 56638]), initValues(_3C_classLit, 42, -1, [8805]), initValues(_3C_classLit, 42, -1, [8923]), initValues(_3C_classLit, 42, -1, [8807]), initValues(_3C_classLit, 42, -1, [10914]), initValues(_3C_classLit, 42, -1, [8823]), initValues(_3C_classLit, 42, -1, [10878]), initValues(_3C_classLit, 42, -1, [8819]), initValues(_3C_classLit, 42, -1, [55349, 56482]), initValues(_3C_classLit, 42, -1, [8811]), initValues(_3C_classLit, 42, -1, [1066]), initValues(_3C_classLit, 42, -1, [711]), initValues(_3C_classLit, 42, -1, [94]), initValues(_3C_classLit, 42, -1, [292]), initValues(_3C_classLit, 42, -1, [8460]), initValues(_3C_classLit, 42, -1, [8459]), initValues(_3C_classLit, 42, -1, [8461]), initValues(_3C_classLit, 42, -1, [9472]), initValues(_3C_classLit, 42, -1, [8459]), initValues(_3C_classLit, 42, -1, [294]), initValues(_3C_classLit, 42, -1, [8782]), initValues(_3C_classLit, 42, -1, [8783]), initValues(_3C_classLit, 42, -1, [1045]), initValues(_3C_classLit, 42, -1, [306]), initValues(_3C_classLit, 42, -1, [1025]), initValues(_3C_classLit, 42, -1, [205]), initValues(_3C_classLit, 42, -1, [205]), initValues(_3C_classLit, 42, -1, [206]), initValues(_3C_classLit, 42, -1, [206]), initValues(_3C_classLit, 42, -1, [1048]), initValues(_3C_classLit, 42, -1, [304]), initValues(_3C_classLit, 42, -1, [8465]), initValues(_3C_classLit, 42, -1, [204]), initValues(_3C_classLit, 42, -1, [204]), initValues(_3C_classLit, 42, -1, [8465]), initValues(_3C_classLit, 42, -1, [298]), initValues(_3C_classLit, 42, -1, [8520]), initValues(_3C_classLit, 42, -1, [8658]), initValues(_3C_classLit, 42, -1, [8748]), initValues(_3C_classLit, 42, -1, [8747]), initValues(_3C_classLit, 42, -1, [8898]), initValues(_3C_classLit, 42, -1, [8291]), initValues(_3C_classLit, 42, -1, [8290]), initValues(_3C_classLit, 42, -1, [302]), initValues(_3C_classLit, 42, -1, [55349, 56640]), initValues(_3C_classLit, 42, -1, [921]), initValues(_3C_classLit, 42, -1, [8464]), initValues(_3C_classLit, 42, -1, [296]), initValues(_3C_classLit, 42, -1, [1030]), initValues(_3C_classLit, 42, -1, [207]), initValues(_3C_classLit, 42, -1, [207]), initValues(_3C_classLit, 42, -1, [308]), initValues(_3C_classLit, 42, -1, [1049]), initValues(_3C_classLit, 42, -1, [55349, 56589]), initValues(_3C_classLit, 42, -1, [55349, 56641]), initValues(_3C_classLit, 42, -1, [55349, 56485]), initValues(_3C_classLit, 42, -1, [1032]), initValues(_3C_classLit, 42, -1, [1028]), initValues(_3C_classLit, 42, -1, [1061]), initValues(_3C_classLit, 42, -1, [1036]), initValues(_3C_classLit, 42, -1, [922]), initValues(_3C_classLit, 42, -1, [310]), initValues(_3C_classLit, 42, -1, [1050]), initValues(_3C_classLit, 42, -1, [55349, 56590]), initValues(_3C_classLit, 42, -1, [55349, 56642]), initValues(_3C_classLit, 42, -1, [55349, 56486]), initValues(_3C_classLit, 42, -1, [1033]), initValues(_3C_classLit, 42, -1, [60]), initValues(_3C_classLit, 42, -1, [60]), initValues(_3C_classLit, 42, -1, [313]), initValues(_3C_classLit, 42, -1, [923]), initValues(_3C_classLit, 42, -1, [10218]), initValues(_3C_classLit, 42, -1, [8466]), initValues(_3C_classLit, 42, -1, [8606]), initValues(_3C_classLit, 42, -1, [317]), initValues(_3C_classLit, 42, -1, [315]), initValues(_3C_classLit, 42, -1, [1051]), initValues(_3C_classLit, 42, -1, [10216]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8676]), initValues(_3C_classLit, 42, -1, [8646]), initValues(_3C_classLit, 42, -1, [8968]), initValues(_3C_classLit, 42, -1, [10214]), initValues(_3C_classLit, 42, -1, [10593]), initValues(_3C_classLit, 42, -1, [8643]), initValues(_3C_classLit, 42, -1, [10585]), initValues(_3C_classLit, 42, -1, [8970]), initValues(_3C_classLit, 42, -1, [8596]), initValues(_3C_classLit, 42, -1, [10574]), initValues(_3C_classLit, 42, -1, [8867]), initValues(_3C_classLit, 42, -1, [8612]), initValues(_3C_classLit, 42, -1, [10586]), initValues(_3C_classLit, 42, -1, [8882]), initValues(_3C_classLit, 42, -1, [10703]), initValues(_3C_classLit, 42, -1, [8884]), initValues(_3C_classLit, 42, -1, [10577]), initValues(_3C_classLit, 42, -1, [10592]), initValues(_3C_classLit, 42, -1, [8639]), initValues(_3C_classLit, 42, -1, [10584]), initValues(_3C_classLit, 42, -1, [8636]), initValues(_3C_classLit, 42, -1, [10578]), initValues(_3C_classLit, 42, -1, [8656]), initValues(_3C_classLit, 42, -1, [8660]), initValues(_3C_classLit, 42, -1, [8922]), initValues(_3C_classLit, 42, -1, [8806]), initValues(_3C_classLit, 42, -1, [8822]), initValues(_3C_classLit, 42, -1, [10913]), initValues(_3C_classLit, 42, -1, [10877]), initValues(_3C_classLit, 42, -1, [8818]), initValues(_3C_classLit, 42, -1, [55349, 56591]), initValues(_3C_classLit, 42, -1, [8920]), initValues(_3C_classLit, 42, -1, [8666]), initValues(_3C_classLit, 42, -1, [319]), initValues(_3C_classLit, 42, -1, [10229]), initValues(_3C_classLit, 42, -1, [10231]), initValues(_3C_classLit, 42, -1, [10230]), initValues(_3C_classLit, 42, -1, [10232]), initValues(_3C_classLit, 42, -1, [10234]), initValues(_3C_classLit, 42, -1, [10233]), initValues(_3C_classLit, 42, -1, [55349, 56643]), initValues(_3C_classLit, 42, -1, [8601]), initValues(_3C_classLit, 42, -1, [8600]), initValues(_3C_classLit, 42, -1, [8466]), initValues(_3C_classLit, 42, -1, [8624]), initValues(_3C_classLit, 42, -1, [321]), initValues(_3C_classLit, 42, -1, [8810]), initValues(_3C_classLit, 42, -1, [10501]), initValues(_3C_classLit, 42, -1, [1052]), initValues(_3C_classLit, 42, -1, [8287]), initValues(_3C_classLit, 42, -1, [8499]), initValues(_3C_classLit, 42, -1, [55349, 56592]), initValues(_3C_classLit, 42, -1, [8723]), initValues(_3C_classLit, 42, -1, [55349, 56644]), initValues(_3C_classLit, 42, -1, [8499]), initValues(_3C_classLit, 42, -1, [924]), initValues(_3C_classLit, 42, -1, [1034]), initValues(_3C_classLit, 42, -1, [323]), initValues(_3C_classLit, 42, -1, [327]), initValues(_3C_classLit, 42, -1, [325]), initValues(_3C_classLit, 42, -1, [1053]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [8811]), initValues(_3C_classLit, 42, -1, [8810]), initValues(_3C_classLit, 42, -1, [10]), initValues(_3C_classLit, 42, -1, [55349, 56593]), initValues(_3C_classLit, 42, -1, [8288]), initValues(_3C_classLit, 42, -1, [160]), initValues(_3C_classLit, 42, -1, [8469]), initValues(_3C_classLit, 42, -1, [10988]), initValues(_3C_classLit, 42, -1, [8802]), initValues(_3C_classLit, 42, -1, [8813]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [8713]), initValues(_3C_classLit, 42, -1, [8800]), initValues(_3C_classLit, 42, -1, [8708]), initValues(_3C_classLit, 42, -1, [8815]), initValues(_3C_classLit, 42, -1, [8817]), initValues(_3C_classLit, 42, -1, [8825]), initValues(_3C_classLit, 42, -1, [8821]), initValues(_3C_classLit, 42, -1, [8938]), initValues(_3C_classLit, 42, -1, [8940]), initValues(_3C_classLit, 42, -1, [8814]), initValues(_3C_classLit, 42, -1, [8816]), initValues(_3C_classLit, 42, -1, [8824]), initValues(_3C_classLit, 42, -1, [8820]), initValues(_3C_classLit, 42, -1, [8832]), initValues(_3C_classLit, 42, -1, [8928]), initValues(_3C_classLit, 42, -1, [8716]), initValues(_3C_classLit, 42, -1, [8939]), initValues(_3C_classLit, 42, -1, [8941]), initValues(_3C_classLit, 42, -1, [8930]), initValues(_3C_classLit, 42, -1, [8931]), initValues(_3C_classLit, 42, -1, [8840]), initValues(_3C_classLit, 42, -1, [8833]), initValues(_3C_classLit, 42, -1, [8929]), initValues(_3C_classLit, 42, -1, [8841]), initValues(_3C_classLit, 42, -1, [8769]), initValues(_3C_classLit, 42, -1, [8772]), initValues(_3C_classLit, 42, -1, [8775]), initValues(_3C_classLit, 42, -1, [8777]), initValues(_3C_classLit, 42, -1, [8740]), initValues(_3C_classLit, 42, -1, [55349, 56489]), initValues(_3C_classLit, 42, -1, [209]), initValues(_3C_classLit, 42, -1, [209]), initValues(_3C_classLit, 42, -1, [925]), initValues(_3C_classLit, 42, -1, [338]), initValues(_3C_classLit, 42, -1, [211]), initValues(_3C_classLit, 42, -1, [211]), initValues(_3C_classLit, 42, -1, [212]), initValues(_3C_classLit, 42, -1, [212]), initValues(_3C_classLit, 42, -1, [1054]), initValues(_3C_classLit, 42, -1, [336]), initValues(_3C_classLit, 42, -1, [55349, 56594]), initValues(_3C_classLit, 42, -1, [210]), initValues(_3C_classLit, 42, -1, [210]), initValues(_3C_classLit, 42, -1, [332]), initValues(_3C_classLit, 42, -1, [937]), initValues(_3C_classLit, 42, -1, [927]), initValues(_3C_classLit, 42, -1, [55349, 56646]), initValues(_3C_classLit, 42, -1, [8220]), initValues(_3C_classLit, 42, -1, [8216]), initValues(_3C_classLit, 42, -1, [10836]), initValues(_3C_classLit, 42, -1, [55349, 56490]), initValues(_3C_classLit, 42, -1, [216]), initValues(_3C_classLit, 42, -1, [216]), initValues(_3C_classLit, 42, -1, [213]), initValues(_3C_classLit, 42, -1, [213]), initValues(_3C_classLit, 42, -1, [10807]), initValues(_3C_classLit, 42, -1, [214]), initValues(_3C_classLit, 42, -1, [214]), initValues(_3C_classLit, 42, -1, [175]), initValues(_3C_classLit, 42, -1, [9182]), initValues(_3C_classLit, 42, -1, [9140]), initValues(_3C_classLit, 42, -1, [9180]), initValues(_3C_classLit, 42, -1, [8706]), initValues(_3C_classLit, 42, -1, [1055]), initValues(_3C_classLit, 42, -1, [55349, 56595]), initValues(_3C_classLit, 42, -1, [934]), initValues(_3C_classLit, 42, -1, [928]), initValues(_3C_classLit, 42, -1, [177]), initValues(_3C_classLit, 42, -1, [8460]), initValues(_3C_classLit, 42, -1, [8473]), initValues(_3C_classLit, 42, -1, [10939]), initValues(_3C_classLit, 42, -1, [8826]), initValues(_3C_classLit, 42, -1, [10927]), initValues(_3C_classLit, 42, -1, [8828]), initValues(_3C_classLit, 42, -1, [8830]), initValues(_3C_classLit, 42, -1, [8243]), initValues(_3C_classLit, 42, -1, [8719]), initValues(_3C_classLit, 42, -1, [8759]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [55349, 56491]), initValues(_3C_classLit, 42, -1, [936]), initValues(_3C_classLit, 42, -1, [34]), initValues(_3C_classLit, 42, -1, [34]), initValues(_3C_classLit, 42, -1, [55349, 56596]), initValues(_3C_classLit, 42, -1, [8474]), initValues(_3C_classLit, 42, -1, [55349, 56492]), initValues(_3C_classLit, 42, -1, [10512]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [340]), initValues(_3C_classLit, 42, -1, [10219]), initValues(_3C_classLit, 42, -1, [8608]), initValues(_3C_classLit, 42, -1, [10518]), initValues(_3C_classLit, 42, -1, [344]), initValues(_3C_classLit, 42, -1, [342]), initValues(_3C_classLit, 42, -1, [1056]), initValues(_3C_classLit, 42, -1, [8476]), initValues(_3C_classLit, 42, -1, [8715]), initValues(_3C_classLit, 42, -1, [8651]), initValues(_3C_classLit, 42, -1, [10607]), initValues(_3C_classLit, 42, -1, [8476]), initValues(_3C_classLit, 42, -1, [929]), initValues(_3C_classLit, 42, -1, [10217]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [8677]), initValues(_3C_classLit, 42, -1, [8644]), initValues(_3C_classLit, 42, -1, [8969]), initValues(_3C_classLit, 42, -1, [10215]), initValues(_3C_classLit, 42, -1, [10589]), initValues(_3C_classLit, 42, -1, [8642]), initValues(_3C_classLit, 42, -1, [10581]), initValues(_3C_classLit, 42, -1, [8971]), initValues(_3C_classLit, 42, -1, [8866]), initValues(_3C_classLit, 42, -1, [8614]), initValues(_3C_classLit, 42, -1, [10587]), initValues(_3C_classLit, 42, -1, [8883]), initValues(_3C_classLit, 42, -1, [10704]), initValues(_3C_classLit, 42, -1, [8885]), initValues(_3C_classLit, 42, -1, [10575]), initValues(_3C_classLit, 42, -1, [10588]), initValues(_3C_classLit, 42, -1, [8638]), initValues(_3C_classLit, 42, -1, [10580]), initValues(_3C_classLit, 42, -1, [8640]), initValues(_3C_classLit, 42, -1, [10579]), initValues(_3C_classLit, 42, -1, [8658]), initValues(_3C_classLit, 42, -1, [8477]), initValues(_3C_classLit, 42, -1, [10608]), initValues(_3C_classLit, 42, -1, [8667]), initValues(_3C_classLit, 42, -1, [8475]), initValues(_3C_classLit, 42, -1, [8625]), initValues(_3C_classLit, 42, -1, [10740]), initValues(_3C_classLit, 42, -1, [1065]), initValues(_3C_classLit, 42, -1, [1064]), initValues(_3C_classLit, 42, -1, [1068]), initValues(_3C_classLit, 42, -1, [346]), initValues(_3C_classLit, 42, -1, [10940]), initValues(_3C_classLit, 42, -1, [352]), initValues(_3C_classLit, 42, -1, [350]), initValues(_3C_classLit, 42, -1, [348]), initValues(_3C_classLit, 42, -1, [1057]), initValues(_3C_classLit, 42, -1, [55349, 56598]), initValues(_3C_classLit, 42, -1, [8595]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [8593]), initValues(_3C_classLit, 42, -1, [931]), initValues(_3C_classLit, 42, -1, [8728]), initValues(_3C_classLit, 42, -1, [55349, 56650]), initValues(_3C_classLit, 42, -1, [8730]), initValues(_3C_classLit, 42, -1, [9633]), initValues(_3C_classLit, 42, -1, [8851]), initValues(_3C_classLit, 42, -1, [8847]), initValues(_3C_classLit, 42, -1, [8849]), initValues(_3C_classLit, 42, -1, [8848]), initValues(_3C_classLit, 42, -1, [8850]), initValues(_3C_classLit, 42, -1, [8852]), initValues(_3C_classLit, 42, -1, [55349, 56494]), initValues(_3C_classLit, 42, -1, [8902]), initValues(_3C_classLit, 42, -1, [8912]), initValues(_3C_classLit, 42, -1, [8912]), initValues(_3C_classLit, 42, -1, [8838]), initValues(_3C_classLit, 42, -1, [8827]), initValues(_3C_classLit, 42, -1, [10928]), initValues(_3C_classLit, 42, -1, [8829]), initValues(_3C_classLit, 42, -1, [8831]), initValues(_3C_classLit, 42, -1, [8715]), initValues(_3C_classLit, 42, -1, [8721]), initValues(_3C_classLit, 42, -1, [8913]), initValues(_3C_classLit, 42, -1, [8835]), initValues(_3C_classLit, 42, -1, [8839]), initValues(_3C_classLit, 42, -1, [8913]), initValues(_3C_classLit, 42, -1, [222]), initValues(_3C_classLit, 42, -1, [222]), initValues(_3C_classLit, 42, -1, [8482]), initValues(_3C_classLit, 42, -1, [1035]), initValues(_3C_classLit, 42, -1, [1062]), initValues(_3C_classLit, 42, -1, [9]), initValues(_3C_classLit, 42, -1, [932]), initValues(_3C_classLit, 42, -1, [356]), initValues(_3C_classLit, 42, -1, [354]), initValues(_3C_classLit, 42, -1, [1058]), initValues(_3C_classLit, 42, -1, [55349, 56599]), initValues(_3C_classLit, 42, -1, [8756]), initValues(_3C_classLit, 42, -1, [920]), initValues(_3C_classLit, 42, -1, [8201]), initValues(_3C_classLit, 42, -1, [8764]), initValues(_3C_classLit, 42, -1, [8771]), initValues(_3C_classLit, 42, -1, [8773]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [55349, 56651]), initValues(_3C_classLit, 42, -1, [8411]), initValues(_3C_classLit, 42, -1, [55349, 56495]), initValues(_3C_classLit, 42, -1, [358]), initValues(_3C_classLit, 42, -1, [218]), initValues(_3C_classLit, 42, -1, [218]), initValues(_3C_classLit, 42, -1, [8607]), initValues(_3C_classLit, 42, -1, [10569]), initValues(_3C_classLit, 42, -1, [1038]), initValues(_3C_classLit, 42, -1, [364]), initValues(_3C_classLit, 42, -1, [219]), initValues(_3C_classLit, 42, -1, [219]), initValues(_3C_classLit, 42, -1, [1059]), initValues(_3C_classLit, 42, -1, [368]), initValues(_3C_classLit, 42, -1, [55349, 56600]), initValues(_3C_classLit, 42, -1, [217]), initValues(_3C_classLit, 42, -1, [217]), initValues(_3C_classLit, 42, -1, [362]), initValues(_3C_classLit, 42, -1, [818]), initValues(_3C_classLit, 42, -1, [9183]), initValues(_3C_classLit, 42, -1, [9141]), initValues(_3C_classLit, 42, -1, [9181]), initValues(_3C_classLit, 42, -1, [8899]), initValues(_3C_classLit, 42, -1, [8846]), initValues(_3C_classLit, 42, -1, [370]), initValues(_3C_classLit, 42, -1, [55349, 56652]), initValues(_3C_classLit, 42, -1, [8593]), initValues(_3C_classLit, 42, -1, [10514]), initValues(_3C_classLit, 42, -1, [8645]), initValues(_3C_classLit, 42, -1, [8597]), initValues(_3C_classLit, 42, -1, [10606]), initValues(_3C_classLit, 42, -1, [8869]), initValues(_3C_classLit, 42, -1, [8613]), initValues(_3C_classLit, 42, -1, [8657]), initValues(_3C_classLit, 42, -1, [8661]), initValues(_3C_classLit, 42, -1, [8598]), initValues(_3C_classLit, 42, -1, [8599]), initValues(_3C_classLit, 42, -1, [978]), initValues(_3C_classLit, 42, -1, [933]), initValues(_3C_classLit, 42, -1, [366]), initValues(_3C_classLit, 42, -1, [55349, 56496]), initValues(_3C_classLit, 42, -1, [360]), initValues(_3C_classLit, 42, -1, [220]), initValues(_3C_classLit, 42, -1, [220]), initValues(_3C_classLit, 42, -1, [8875]), initValues(_3C_classLit, 42, -1, [10987]), initValues(_3C_classLit, 42, -1, [1042]), initValues(_3C_classLit, 42, -1, [8873]), initValues(_3C_classLit, 42, -1, [10982]), initValues(_3C_classLit, 42, -1, [8897]), initValues(_3C_classLit, 42, -1, [8214]), initValues(_3C_classLit, 42, -1, [8214]), initValues(_3C_classLit, 42, -1, [8739]), initValues(_3C_classLit, 42, -1, [124]), initValues(_3C_classLit, 42, -1, [10072]), initValues(_3C_classLit, 42, -1, [8768]), initValues(_3C_classLit, 42, -1, [8202]), initValues(_3C_classLit, 42, -1, [55349, 56601]), initValues(_3C_classLit, 42, -1, [55349, 56653]), initValues(_3C_classLit, 42, -1, [55349, 56497]), initValues(_3C_classLit, 42, -1, [8874]), initValues(_3C_classLit, 42, -1, [372]), initValues(_3C_classLit, 42, -1, [8896]), initValues(_3C_classLit, 42, -1, [55349, 56602]), initValues(_3C_classLit, 42, -1, [55349, 56654]), initValues(_3C_classLit, 42, -1, [55349, 56498]), initValues(_3C_classLit, 42, -1, [55349, 56603]), initValues(_3C_classLit, 42, -1, [926]), initValues(_3C_classLit, 42, -1, [55349, 56655]), initValues(_3C_classLit, 42, -1, [55349, 56499]), initValues(_3C_classLit, 42, -1, [1071]), initValues(_3C_classLit, 42, -1, [1031]), initValues(_3C_classLit, 42, -1, [1070]), initValues(_3C_classLit, 42, -1, [221]), initValues(_3C_classLit, 42, -1, [221]), initValues(_3C_classLit, 42, -1, [374]), initValues(_3C_classLit, 42, -1, [1067]), initValues(_3C_classLit, 42, -1, [55349, 56604]), initValues(_3C_classLit, 42, -1, [55349, 56656]), initValues(_3C_classLit, 42, -1, [55349, 56500]), initValues(_3C_classLit, 42, -1, [376]), initValues(_3C_classLit, 42, -1, [1046]), initValues(_3C_classLit, 42, -1, [377]), initValues(_3C_classLit, 42, -1, [381]), initValues(_3C_classLit, 42, -1, [1047]), initValues(_3C_classLit, 42, -1, [379]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [918]), initValues(_3C_classLit, 42, -1, [8488]), initValues(_3C_classLit, 42, -1, [8484]), initValues(_3C_classLit, 42, -1, [55349, 56501]), initValues(_3C_classLit, 42, -1, [225]), initValues(_3C_classLit, 42, -1, [225]), initValues(_3C_classLit, 42, -1, [259]), initValues(_3C_classLit, 42, -1, [8766]), initValues(_3C_classLit, 42, -1, [8767]), initValues(_3C_classLit, 42, -1, [226]), initValues(_3C_classLit, 42, -1, [226]), initValues(_3C_classLit, 42, -1, [180]), initValues(_3C_classLit, 42, -1, [180]), initValues(_3C_classLit, 42, -1, [1072]), initValues(_3C_classLit, 42, -1, [230]), initValues(_3C_classLit, 42, -1, [230]), initValues(_3C_classLit, 42, -1, [8289]), initValues(_3C_classLit, 42, -1, [55349, 56606]), initValues(_3C_classLit, 42, -1, [224]), initValues(_3C_classLit, 42, -1, [224]), initValues(_3C_classLit, 42, -1, [8501]), initValues(_3C_classLit, 42, -1, [8501]), initValues(_3C_classLit, 42, -1, [945]), initValues(_3C_classLit, 42, -1, [257]), initValues(_3C_classLit, 42, -1, [10815]), initValues(_3C_classLit, 42, -1, [38]), initValues(_3C_classLit, 42, -1, [38]), initValues(_3C_classLit, 42, -1, [8743]), initValues(_3C_classLit, 42, -1, [10837]), initValues(_3C_classLit, 42, -1, [10844]), initValues(_3C_classLit, 42, -1, [10840]), initValues(_3C_classLit, 42, -1, [10842]), initValues(_3C_classLit, 42, -1, [8736]), initValues(_3C_classLit, 42, -1, [10660]), initValues(_3C_classLit, 42, -1, [8736]), initValues(_3C_classLit, 42, -1, [8737]), initValues(_3C_classLit, 42, -1, [10664]), initValues(_3C_classLit, 42, -1, [10665]), initValues(_3C_classLit, 42, -1, [10666]), initValues(_3C_classLit, 42, -1, [10667]), initValues(_3C_classLit, 42, -1, [10668]), initValues(_3C_classLit, 42, -1, [10669]), initValues(_3C_classLit, 42, -1, [10670]), initValues(_3C_classLit, 42, -1, [10671]), initValues(_3C_classLit, 42, -1, [8735]), initValues(_3C_classLit, 42, -1, [8894]), initValues(_3C_classLit, 42, -1, [10653]), initValues(_3C_classLit, 42, -1, [8738]), initValues(_3C_classLit, 42, -1, [8491]), initValues(_3C_classLit, 42, -1, [9084]), initValues(_3C_classLit, 42, -1, [261]), initValues(_3C_classLit, 42, -1, [55349, 56658]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [10864]), initValues(_3C_classLit, 42, -1, [10863]), initValues(_3C_classLit, 42, -1, [8778]), initValues(_3C_classLit, 42, -1, [8779]), initValues(_3C_classLit, 42, -1, [39]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [8778]), initValues(_3C_classLit, 42, -1, [229]), initValues(_3C_classLit, 42, -1, [229]), initValues(_3C_classLit, 42, -1, [55349, 56502]), initValues(_3C_classLit, 42, -1, [42]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [8781]), initValues(_3C_classLit, 42, -1, [227]), initValues(_3C_classLit, 42, -1, [227]), initValues(_3C_classLit, 42, -1, [228]), initValues(_3C_classLit, 42, -1, [228]), initValues(_3C_classLit, 42, -1, [8755]), initValues(_3C_classLit, 42, -1, [10769]), initValues(_3C_classLit, 42, -1, [10989]), initValues(_3C_classLit, 42, -1, [8780]), initValues(_3C_classLit, 42, -1, [1014]), initValues(_3C_classLit, 42, -1, [8245]), initValues(_3C_classLit, 42, -1, [8765]), initValues(_3C_classLit, 42, -1, [8909]), initValues(_3C_classLit, 42, -1, [8893]), initValues(_3C_classLit, 42, -1, [8965]), initValues(_3C_classLit, 42, -1, [8965]), initValues(_3C_classLit, 42, -1, [9141]), initValues(_3C_classLit, 42, -1, [9142]), initValues(_3C_classLit, 42, -1, [8780]), initValues(_3C_classLit, 42, -1, [1073]), initValues(_3C_classLit, 42, -1, [8222]), initValues(_3C_classLit, 42, -1, [8757]), initValues(_3C_classLit, 42, -1, [8757]), initValues(_3C_classLit, 42, -1, [10672]), initValues(_3C_classLit, 42, -1, [1014]), initValues(_3C_classLit, 42, -1, [8492]), initValues(_3C_classLit, 42, -1, [946]), initValues(_3C_classLit, 42, -1, [8502]), initValues(_3C_classLit, 42, -1, [8812]), initValues(_3C_classLit, 42, -1, [55349, 56607]), initValues(_3C_classLit, 42, -1, [8898]), initValues(_3C_classLit, 42, -1, [9711]), initValues(_3C_classLit, 42, -1, [8899]), initValues(_3C_classLit, 42, -1, [10752]), initValues(_3C_classLit, 42, -1, [10753]), initValues(_3C_classLit, 42, -1, [10754]), initValues(_3C_classLit, 42, -1, [10758]), initValues(_3C_classLit, 42, -1, [9733]), initValues(_3C_classLit, 42, -1, [9661]), initValues(_3C_classLit, 42, -1, [9651]), initValues(_3C_classLit, 42, -1, [10756]), initValues(_3C_classLit, 42, -1, [8897]), initValues(_3C_classLit, 42, -1, [8896]), initValues(_3C_classLit, 42, -1, [10509]), initValues(_3C_classLit, 42, -1, [10731]), initValues(_3C_classLit, 42, -1, [9642]), initValues(_3C_classLit, 42, -1, [9652]), initValues(_3C_classLit, 42, -1, [9662]), initValues(_3C_classLit, 42, -1, [9666]), initValues(_3C_classLit, 42, -1, [9656]), initValues(_3C_classLit, 42, -1, [9251]), initValues(_3C_classLit, 42, -1, [9618]), initValues(_3C_classLit, 42, -1, [9617]), initValues(_3C_classLit, 42, -1, [9619]), initValues(_3C_classLit, 42, -1, [9608]), initValues(_3C_classLit, 42, -1, [8976]), initValues(_3C_classLit, 42, -1, [55349, 56659]), initValues(_3C_classLit, 42, -1, [8869]), initValues(_3C_classLit, 42, -1, [8869]), initValues(_3C_classLit, 42, -1, [8904]), initValues(_3C_classLit, 42, -1, [9559]), initValues(_3C_classLit, 42, -1, [9556]), initValues(_3C_classLit, 42, -1, [9558]), initValues(_3C_classLit, 42, -1, [9555]), initValues(_3C_classLit, 42, -1, [9552]), initValues(_3C_classLit, 42, -1, [9574]), initValues(_3C_classLit, 42, -1, [9577]), initValues(_3C_classLit, 42, -1, [9572]), initValues(_3C_classLit, 42, -1, [9575]), initValues(_3C_classLit, 42, -1, [9565]), initValues(_3C_classLit, 42, -1, [9562]), initValues(_3C_classLit, 42, -1, [9564]), initValues(_3C_classLit, 42, -1, [9561]), initValues(_3C_classLit, 42, -1, [9553]), initValues(_3C_classLit, 42, -1, [9580]), initValues(_3C_classLit, 42, -1, [9571]), initValues(_3C_classLit, 42, -1, [9568]), initValues(_3C_classLit, 42, -1, [9579]), initValues(_3C_classLit, 42, -1, [9570]), initValues(_3C_classLit, 42, -1, [9567]), initValues(_3C_classLit, 42, -1, [10697]), initValues(_3C_classLit, 42, -1, [9557]), initValues(_3C_classLit, 42, -1, [9554]), initValues(_3C_classLit, 42, -1, [9488]), initValues(_3C_classLit, 42, -1, [9484]), initValues(_3C_classLit, 42, -1, [9472]), initValues(_3C_classLit, 42, -1, [9573]), initValues(_3C_classLit, 42, -1, [9576]), initValues(_3C_classLit, 42, -1, [9516]), initValues(_3C_classLit, 42, -1, [9524]), initValues(_3C_classLit, 42, -1, [8863]), initValues(_3C_classLit, 42, -1, [8862]), initValues(_3C_classLit, 42, -1, [8864]), initValues(_3C_classLit, 42, -1, [9563]), initValues(_3C_classLit, 42, -1, [9560]), initValues(_3C_classLit, 42, -1, [9496]), initValues(_3C_classLit, 42, -1, [9492]), initValues(_3C_classLit, 42, -1, [9474]), initValues(_3C_classLit, 42, -1, [9578]), initValues(_3C_classLit, 42, -1, [9569]), initValues(_3C_classLit, 42, -1, [9566]), initValues(_3C_classLit, 42, -1, [9532]), initValues(_3C_classLit, 42, -1, [9508]), initValues(_3C_classLit, 42, -1, [9500]), initValues(_3C_classLit, 42, -1, [8245]), initValues(_3C_classLit, 42, -1, [728]), initValues(_3C_classLit, 42, -1, [166]), initValues(_3C_classLit, 42, -1, [166]), initValues(_3C_classLit, 42, -1, [55349, 56503]), initValues(_3C_classLit, 42, -1, [8271]), initValues(_3C_classLit, 42, -1, [8765]), initValues(_3C_classLit, 42, -1, [8909]), initValues(_3C_classLit, 42, -1, [92]), initValues(_3C_classLit, 42, -1, [10693]), initValues(_3C_classLit, 42, -1, [8226]), initValues(_3C_classLit, 42, -1, [8226]), initValues(_3C_classLit, 42, -1, [8782]), initValues(_3C_classLit, 42, -1, [10926]), initValues(_3C_classLit, 42, -1, [8783]), initValues(_3C_classLit, 42, -1, [8783]), initValues(_3C_classLit, 42, -1, [263]), initValues(_3C_classLit, 42, -1, [8745]), initValues(_3C_classLit, 42, -1, [10820]), initValues(_3C_classLit, 42, -1, [10825]), initValues(_3C_classLit, 42, -1, [10827]), initValues(_3C_classLit, 42, -1, [10823]), initValues(_3C_classLit, 42, -1, [10816]), initValues(_3C_classLit, 42, -1, [8257]), initValues(_3C_classLit, 42, -1, [711]), initValues(_3C_classLit, 42, -1, [10829]), initValues(_3C_classLit, 42, -1, [269]), initValues(_3C_classLit, 42, -1, [231]), initValues(_3C_classLit, 42, -1, [231]), initValues(_3C_classLit, 42, -1, [265]), initValues(_3C_classLit, 42, -1, [10828]), initValues(_3C_classLit, 42, -1, [10832]), initValues(_3C_classLit, 42, -1, [267]), initValues(_3C_classLit, 42, -1, [184]), initValues(_3C_classLit, 42, -1, [184]), initValues(_3C_classLit, 42, -1, [10674]), initValues(_3C_classLit, 42, -1, [162]), initValues(_3C_classLit, 42, -1, [162]), initValues(_3C_classLit, 42, -1, [183]), initValues(_3C_classLit, 42, -1, [55349, 56608]), initValues(_3C_classLit, 42, -1, [1095]), initValues(_3C_classLit, 42, -1, [10003]), initValues(_3C_classLit, 42, -1, [10003]), initValues(_3C_classLit, 42, -1, [967]), initValues(_3C_classLit, 42, -1, [9675]), initValues(_3C_classLit, 42, -1, [10691]), initValues(_3C_classLit, 42, -1, [710]), initValues(_3C_classLit, 42, -1, [8791]), initValues(_3C_classLit, 42, -1, [8634]), initValues(_3C_classLit, 42, -1, [8635]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [9416]), initValues(_3C_classLit, 42, -1, [8859]), initValues(_3C_classLit, 42, -1, [8858]), initValues(_3C_classLit, 42, -1, [8861]), initValues(_3C_classLit, 42, -1, [8791]), initValues(_3C_classLit, 42, -1, [10768]), initValues(_3C_classLit, 42, -1, [10991]), initValues(_3C_classLit, 42, -1, [10690]), initValues(_3C_classLit, 42, -1, [9827]), initValues(_3C_classLit, 42, -1, [9827]), initValues(_3C_classLit, 42, -1, [58]), initValues(_3C_classLit, 42, -1, [8788]), initValues(_3C_classLit, 42, -1, [8788]), initValues(_3C_classLit, 42, -1, [44]), initValues(_3C_classLit, 42, -1, [64]), initValues(_3C_classLit, 42, -1, [8705]), initValues(_3C_classLit, 42, -1, [8728]), initValues(_3C_classLit, 42, -1, [8705]), initValues(_3C_classLit, 42, -1, [8450]), initValues(_3C_classLit, 42, -1, [8773]), initValues(_3C_classLit, 42, -1, [10861]), initValues(_3C_classLit, 42, -1, [8750]), initValues(_3C_classLit, 42, -1, [55349, 56660]), initValues(_3C_classLit, 42, -1, [8720]), initValues(_3C_classLit, 42, -1, [169]), initValues(_3C_classLit, 42, -1, [169]), initValues(_3C_classLit, 42, -1, [8471]), initValues(_3C_classLit, 42, -1, [8629]), initValues(_3C_classLit, 42, -1, [10007]), initValues(_3C_classLit, 42, -1, [55349, 56504]), initValues(_3C_classLit, 42, -1, [10959]), initValues(_3C_classLit, 42, -1, [10961]), initValues(_3C_classLit, 42, -1, [10960]), initValues(_3C_classLit, 42, -1, [10962]), initValues(_3C_classLit, 42, -1, [8943]), initValues(_3C_classLit, 42, -1, [10552]), initValues(_3C_classLit, 42, -1, [10549]), initValues(_3C_classLit, 42, -1, [8926]), initValues(_3C_classLit, 42, -1, [8927]), initValues(_3C_classLit, 42, -1, [8630]), initValues(_3C_classLit, 42, -1, [10557]), initValues(_3C_classLit, 42, -1, [8746]), initValues(_3C_classLit, 42, -1, [10824]), initValues(_3C_classLit, 42, -1, [10822]), initValues(_3C_classLit, 42, -1, [10826]), initValues(_3C_classLit, 42, -1, [8845]), initValues(_3C_classLit, 42, -1, [10821]), initValues(_3C_classLit, 42, -1, [8631]), initValues(_3C_classLit, 42, -1, [10556]), initValues(_3C_classLit, 42, -1, [8926]), initValues(_3C_classLit, 42, -1, [8927]), initValues(_3C_classLit, 42, -1, [8910]), initValues(_3C_classLit, 42, -1, [8911]), initValues(_3C_classLit, 42, -1, [164]), initValues(_3C_classLit, 42, -1, [164]), initValues(_3C_classLit, 42, -1, [8630]), initValues(_3C_classLit, 42, -1, [8631]), initValues(_3C_classLit, 42, -1, [8910]), initValues(_3C_classLit, 42, -1, [8911]), initValues(_3C_classLit, 42, -1, [8754]), initValues(_3C_classLit, 42, -1, [8753]), initValues(_3C_classLit, 42, -1, [9005]), initValues(_3C_classLit, 42, -1, [8659]), initValues(_3C_classLit, 42, -1, [10597]), initValues(_3C_classLit, 42, -1, [8224]), initValues(_3C_classLit, 42, -1, [8504]), initValues(_3C_classLit, 42, -1, [8595]), initValues(_3C_classLit, 42, -1, [8208]), initValues(_3C_classLit, 42, -1, [8867]), initValues(_3C_classLit, 42, -1, [10511]), initValues(_3C_classLit, 42, -1, [733]), initValues(_3C_classLit, 42, -1, [271]), initValues(_3C_classLit, 42, -1, [1076]), initValues(_3C_classLit, 42, -1, [8518]), initValues(_3C_classLit, 42, -1, [8225]), initValues(_3C_classLit, 42, -1, [8650]), initValues(_3C_classLit, 42, -1, [10871]), initValues(_3C_classLit, 42, -1, [176]), initValues(_3C_classLit, 42, -1, [176]), initValues(_3C_classLit, 42, -1, [948]), initValues(_3C_classLit, 42, -1, [10673]), initValues(_3C_classLit, 42, -1, [10623]), initValues(_3C_classLit, 42, -1, [55349, 56609]), initValues(_3C_classLit, 42, -1, [8643]), initValues(_3C_classLit, 42, -1, [8642]), initValues(_3C_classLit, 42, -1, [8900]), initValues(_3C_classLit, 42, -1, [8900]), initValues(_3C_classLit, 42, -1, [9830]), initValues(_3C_classLit, 42, -1, [9830]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [989]), initValues(_3C_classLit, 42, -1, [8946]), initValues(_3C_classLit, 42, -1, [247]), initValues(_3C_classLit, 42, -1, [247]), initValues(_3C_classLit, 42, -1, [247]), initValues(_3C_classLit, 42, -1, [8903]), initValues(_3C_classLit, 42, -1, [8903]), initValues(_3C_classLit, 42, -1, [1106]), initValues(_3C_classLit, 42, -1, [8990]), initValues(_3C_classLit, 42, -1, [8973]), initValues(_3C_classLit, 42, -1, [36]), initValues(_3C_classLit, 42, -1, [55349, 56661]), initValues(_3C_classLit, 42, -1, [729]), initValues(_3C_classLit, 42, -1, [8784]), initValues(_3C_classLit, 42, -1, [8785]), initValues(_3C_classLit, 42, -1, [8760]), initValues(_3C_classLit, 42, -1, [8724]), initValues(_3C_classLit, 42, -1, [8865]), initValues(_3C_classLit, 42, -1, [8966]), initValues(_3C_classLit, 42, -1, [8595]), initValues(_3C_classLit, 42, -1, [8650]), initValues(_3C_classLit, 42, -1, [8643]), initValues(_3C_classLit, 42, -1, [8642]), initValues(_3C_classLit, 42, -1, [10512]), initValues(_3C_classLit, 42, -1, [8991]), initValues(_3C_classLit, 42, -1, [8972]), initValues(_3C_classLit, 42, -1, [55349, 56505]), initValues(_3C_classLit, 42, -1, [1109]), initValues(_3C_classLit, 42, -1, [10742]), initValues(_3C_classLit, 42, -1, [273]), initValues(_3C_classLit, 42, -1, [8945]), initValues(_3C_classLit, 42, -1, [9663]), initValues(_3C_classLit, 42, -1, [9662]), initValues(_3C_classLit, 42, -1, [8693]), initValues(_3C_classLit, 42, -1, [10607]), initValues(_3C_classLit, 42, -1, [10662]), initValues(_3C_classLit, 42, -1, [1119]), initValues(_3C_classLit, 42, -1, [10239]), initValues(_3C_classLit, 42, -1, [10871]), initValues(_3C_classLit, 42, -1, [8785]), initValues(_3C_classLit, 42, -1, [233]), initValues(_3C_classLit, 42, -1, [233]), initValues(_3C_classLit, 42, -1, [10862]), initValues(_3C_classLit, 42, -1, [283]), initValues(_3C_classLit, 42, -1, [8790]), initValues(_3C_classLit, 42, -1, [234]), initValues(_3C_classLit, 42, -1, [234]), initValues(_3C_classLit, 42, -1, [8789]), initValues(_3C_classLit, 42, -1, [1101]), initValues(_3C_classLit, 42, -1, [279]), initValues(_3C_classLit, 42, -1, [8519]), initValues(_3C_classLit, 42, -1, [8786]), initValues(_3C_classLit, 42, -1, [55349, 56610]), initValues(_3C_classLit, 42, -1, [10906]), initValues(_3C_classLit, 42, -1, [232]), initValues(_3C_classLit, 42, -1, [232]), initValues(_3C_classLit, 42, -1, [10902]), initValues(_3C_classLit, 42, -1, [10904]), initValues(_3C_classLit, 42, -1, [10905]), initValues(_3C_classLit, 42, -1, [9191]), initValues(_3C_classLit, 42, -1, [8467]), initValues(_3C_classLit, 42, -1, [10901]), initValues(_3C_classLit, 42, -1, [10903]), initValues(_3C_classLit, 42, -1, [275]), initValues(_3C_classLit, 42, -1, [8709]), initValues(_3C_classLit, 42, -1, [8709]), initValues(_3C_classLit, 42, -1, [8709]), initValues(_3C_classLit, 42, -1, [8196]), initValues(_3C_classLit, 42, -1, [8197]), initValues(_3C_classLit, 42, -1, [8195]), initValues(_3C_classLit, 42, -1, [331]), initValues(_3C_classLit, 42, -1, [8194]), initValues(_3C_classLit, 42, -1, [281]), initValues(_3C_classLit, 42, -1, [55349, 56662]), initValues(_3C_classLit, 42, -1, [8917]), initValues(_3C_classLit, 42, -1, [10723]), initValues(_3C_classLit, 42, -1, [10865]), initValues(_3C_classLit, 42, -1, [1013]), initValues(_3C_classLit, 42, -1, [949]), initValues(_3C_classLit, 42, -1, [949]), initValues(_3C_classLit, 42, -1, [8790]), initValues(_3C_classLit, 42, -1, [8789]), initValues(_3C_classLit, 42, -1, [8770]), initValues(_3C_classLit, 42, -1, [10902]), initValues(_3C_classLit, 42, -1, [10901]), initValues(_3C_classLit, 42, -1, [61]), initValues(_3C_classLit, 42, -1, [8799]), initValues(_3C_classLit, 42, -1, [8801]), initValues(_3C_classLit, 42, -1, [10872]), initValues(_3C_classLit, 42, -1, [10725]), initValues(_3C_classLit, 42, -1, [8787]), initValues(_3C_classLit, 42, -1, [10609]), initValues(_3C_classLit, 42, -1, [8495]), initValues(_3C_classLit, 42, -1, [8784]), initValues(_3C_classLit, 42, -1, [8770]), initValues(_3C_classLit, 42, -1, [951]), initValues(_3C_classLit, 42, -1, [240]), initValues(_3C_classLit, 42, -1, [240]), initValues(_3C_classLit, 42, -1, [235]), initValues(_3C_classLit, 42, -1, [235]), initValues(_3C_classLit, 42, -1, [8364]), initValues(_3C_classLit, 42, -1, [33]), initValues(_3C_classLit, 42, -1, [8707]), initValues(_3C_classLit, 42, -1, [8496]), initValues(_3C_classLit, 42, -1, [8519]), initValues(_3C_classLit, 42, -1, [8786]), initValues(_3C_classLit, 42, -1, [1092]), initValues(_3C_classLit, 42, -1, [9792]), initValues(_3C_classLit, 42, -1, [64259]), initValues(_3C_classLit, 42, -1, [64256]), initValues(_3C_classLit, 42, -1, [64260]), initValues(_3C_classLit, 42, -1, [55349, 56611]), initValues(_3C_classLit, 42, -1, [64257]), initValues(_3C_classLit, 42, -1, [9837]), initValues(_3C_classLit, 42, -1, [64258]), initValues(_3C_classLit, 42, -1, [9649]), initValues(_3C_classLit, 42, -1, [402]), initValues(_3C_classLit, 42, -1, [55349, 56663]), initValues(_3C_classLit, 42, -1, [8704]), initValues(_3C_classLit, 42, -1, [8916]), initValues(_3C_classLit, 42, -1, [10969]), initValues(_3C_classLit, 42, -1, [10765]), initValues(_3C_classLit, 42, -1, [189]), initValues(_3C_classLit, 42, -1, [189]), initValues(_3C_classLit, 42, -1, [8531]), initValues(_3C_classLit, 42, -1, [188]), initValues(_3C_classLit, 42, -1, [188]), initValues(_3C_classLit, 42, -1, [8533]), initValues(_3C_classLit, 42, -1, [8537]), initValues(_3C_classLit, 42, -1, [8539]), initValues(_3C_classLit, 42, -1, [8532]), initValues(_3C_classLit, 42, -1, [8534]), initValues(_3C_classLit, 42, -1, [190]), initValues(_3C_classLit, 42, -1, [190]), initValues(_3C_classLit, 42, -1, [8535]), initValues(_3C_classLit, 42, -1, [8540]), initValues(_3C_classLit, 42, -1, [8536]), initValues(_3C_classLit, 42, -1, [8538]), initValues(_3C_classLit, 42, -1, [8541]), initValues(_3C_classLit, 42, -1, [8542]), initValues(_3C_classLit, 42, -1, [8260]), initValues(_3C_classLit, 42, -1, [8994]), initValues(_3C_classLit, 42, -1, [55349, 56507]), initValues(_3C_classLit, 42, -1, [8807]), initValues(_3C_classLit, 42, -1, [10892]), initValues(_3C_classLit, 42, -1, [501]), initValues(_3C_classLit, 42, -1, [947]), initValues(_3C_classLit, 42, -1, [989]), initValues(_3C_classLit, 42, -1, [10886]), initValues(_3C_classLit, 42, -1, [287]), initValues(_3C_classLit, 42, -1, [285]), initValues(_3C_classLit, 42, -1, [1075]), initValues(_3C_classLit, 42, -1, [289]), initValues(_3C_classLit, 42, -1, [8805]), initValues(_3C_classLit, 42, -1, [8923]), initValues(_3C_classLit, 42, -1, [8805]), initValues(_3C_classLit, 42, -1, [8807]), initValues(_3C_classLit, 42, -1, [10878]), initValues(_3C_classLit, 42, -1, [10878]), initValues(_3C_classLit, 42, -1, [10921]), initValues(_3C_classLit, 42, -1, [10880]), initValues(_3C_classLit, 42, -1, [10882]), initValues(_3C_classLit, 42, -1, [10884]), initValues(_3C_classLit, 42, -1, [10900]), initValues(_3C_classLit, 42, -1, [55349, 56612]), initValues(_3C_classLit, 42, -1, [8811]), initValues(_3C_classLit, 42, -1, [8921]), initValues(_3C_classLit, 42, -1, [8503]), initValues(_3C_classLit, 42, -1, [1107]), initValues(_3C_classLit, 42, -1, [8823]), initValues(_3C_classLit, 42, -1, [10898]), initValues(_3C_classLit, 42, -1, [10917]), initValues(_3C_classLit, 42, -1, [10916]), initValues(_3C_classLit, 42, -1, [8809]), initValues(_3C_classLit, 42, -1, [10890]), initValues(_3C_classLit, 42, -1, [10890]), initValues(_3C_classLit, 42, -1, [10888]), initValues(_3C_classLit, 42, -1, [10888]), initValues(_3C_classLit, 42, -1, [8809]), initValues(_3C_classLit, 42, -1, [8935]), initValues(_3C_classLit, 42, -1, [55349, 56664]), initValues(_3C_classLit, 42, -1, [96]), initValues(_3C_classLit, 42, -1, [8458]), initValues(_3C_classLit, 42, -1, [8819]), initValues(_3C_classLit, 42, -1, [10894]), initValues(_3C_classLit, 42, -1, [10896]), initValues(_3C_classLit, 42, -1, [62]), initValues(_3C_classLit, 42, -1, [62]), initValues(_3C_classLit, 42, -1, [10919]), initValues(_3C_classLit, 42, -1, [10874]), initValues(_3C_classLit, 42, -1, [8919]), initValues(_3C_classLit, 42, -1, [10645]), initValues(_3C_classLit, 42, -1, [10876]), initValues(_3C_classLit, 42, -1, [10886]), initValues(_3C_classLit, 42, -1, [10616]), initValues(_3C_classLit, 42, -1, [8919]), initValues(_3C_classLit, 42, -1, [8923]), initValues(_3C_classLit, 42, -1, [10892]), initValues(_3C_classLit, 42, -1, [8823]), initValues(_3C_classLit, 42, -1, [8819]), initValues(_3C_classLit, 42, -1, [8660]), initValues(_3C_classLit, 42, -1, [8202]), initValues(_3C_classLit, 42, -1, [189]), initValues(_3C_classLit, 42, -1, [8459]), initValues(_3C_classLit, 42, -1, [1098]), initValues(_3C_classLit, 42, -1, [8596]), initValues(_3C_classLit, 42, -1, [10568]), initValues(_3C_classLit, 42, -1, [8621]), initValues(_3C_classLit, 42, -1, [8463]), initValues(_3C_classLit, 42, -1, [293]), initValues(_3C_classLit, 42, -1, [9829]), initValues(_3C_classLit, 42, -1, [9829]), initValues(_3C_classLit, 42, -1, [8230]), initValues(_3C_classLit, 42, -1, [8889]), initValues(_3C_classLit, 42, -1, [55349, 56613]), initValues(_3C_classLit, 42, -1, [10533]), initValues(_3C_classLit, 42, -1, [10534]), initValues(_3C_classLit, 42, -1, [8703]), initValues(_3C_classLit, 42, -1, [8763]), initValues(_3C_classLit, 42, -1, [8617]), initValues(_3C_classLit, 42, -1, [8618]), initValues(_3C_classLit, 42, -1, [55349, 56665]), initValues(_3C_classLit, 42, -1, [8213]), initValues(_3C_classLit, 42, -1, [55349, 56509]), initValues(_3C_classLit, 42, -1, [8463]), initValues(_3C_classLit, 42, -1, [295]), initValues(_3C_classLit, 42, -1, [8259]), initValues(_3C_classLit, 42, -1, [8208]), initValues(_3C_classLit, 42, -1, [237]), initValues(_3C_classLit, 42, -1, [237]), initValues(_3C_classLit, 42, -1, [8291]), initValues(_3C_classLit, 42, -1, [238]), initValues(_3C_classLit, 42, -1, [238]), initValues(_3C_classLit, 42, -1, [1080]), initValues(_3C_classLit, 42, -1, [1077]), initValues(_3C_classLit, 42, -1, [161]), initValues(_3C_classLit, 42, -1, [161]), initValues(_3C_classLit, 42, -1, [8660]), initValues(_3C_classLit, 42, -1, [55349, 56614]), initValues(_3C_classLit, 42, -1, [236]), initValues(_3C_classLit, 42, -1, [236]), initValues(_3C_classLit, 42, -1, [8520]), initValues(_3C_classLit, 42, -1, [10764]), initValues(_3C_classLit, 42, -1, [8749]), initValues(_3C_classLit, 42, -1, [10716]), initValues(_3C_classLit, 42, -1, [8489]), initValues(_3C_classLit, 42, -1, [307]), initValues(_3C_classLit, 42, -1, [299]), initValues(_3C_classLit, 42, -1, [8465]), initValues(_3C_classLit, 42, -1, [8464]), initValues(_3C_classLit, 42, -1, [8465]), initValues(_3C_classLit, 42, -1, [305]), initValues(_3C_classLit, 42, -1, [8887]), initValues(_3C_classLit, 42, -1, [437]), initValues(_3C_classLit, 42, -1, [8712]), initValues(_3C_classLit, 42, -1, [8453]), initValues(_3C_classLit, 42, -1, [8734]), initValues(_3C_classLit, 42, -1, [10717]), initValues(_3C_classLit, 42, -1, [305]), initValues(_3C_classLit, 42, -1, [8747]), initValues(_3C_classLit, 42, -1, [8890]), initValues(_3C_classLit, 42, -1, [8484]), initValues(_3C_classLit, 42, -1, [8890]), initValues(_3C_classLit, 42, -1, [10775]), initValues(_3C_classLit, 42, -1, [10812]), initValues(_3C_classLit, 42, -1, [1105]), initValues(_3C_classLit, 42, -1, [303]), initValues(_3C_classLit, 42, -1, [55349, 56666]), initValues(_3C_classLit, 42, -1, [953]), initValues(_3C_classLit, 42, -1, [10812]), initValues(_3C_classLit, 42, -1, [191]), initValues(_3C_classLit, 42, -1, [191]), initValues(_3C_classLit, 42, -1, [55349, 56510]), initValues(_3C_classLit, 42, -1, [8712]), initValues(_3C_classLit, 42, -1, [8953]), initValues(_3C_classLit, 42, -1, [8949]), initValues(_3C_classLit, 42, -1, [8948]), initValues(_3C_classLit, 42, -1, [8947]), initValues(_3C_classLit, 42, -1, [8712]), initValues(_3C_classLit, 42, -1, [8290]), initValues(_3C_classLit, 42, -1, [297]), initValues(_3C_classLit, 42, -1, [1110]), initValues(_3C_classLit, 42, -1, [239]), initValues(_3C_classLit, 42, -1, [239]), initValues(_3C_classLit, 42, -1, [309]), initValues(_3C_classLit, 42, -1, [1081]), initValues(_3C_classLit, 42, -1, [55349, 56615]), initValues(_3C_classLit, 42, -1, [567]), initValues(_3C_classLit, 42, -1, [55349, 56667]), initValues(_3C_classLit, 42, -1, [55349, 56511]), initValues(_3C_classLit, 42, -1, [1112]), initValues(_3C_classLit, 42, -1, [1108]), initValues(_3C_classLit, 42, -1, [954]), initValues(_3C_classLit, 42, -1, [1008]), initValues(_3C_classLit, 42, -1, [311]), initValues(_3C_classLit, 42, -1, [1082]), initValues(_3C_classLit, 42, -1, [55349, 56616]), initValues(_3C_classLit, 42, -1, [312]), initValues(_3C_classLit, 42, -1, [1093]), initValues(_3C_classLit, 42, -1, [1116]), initValues(_3C_classLit, 42, -1, [55349, 56668]), initValues(_3C_classLit, 42, -1, [55349, 56512]), initValues(_3C_classLit, 42, -1, [8666]), initValues(_3C_classLit, 42, -1, [8656]), initValues(_3C_classLit, 42, -1, [10523]), initValues(_3C_classLit, 42, -1, [10510]), initValues(_3C_classLit, 42, -1, [8806]), initValues(_3C_classLit, 42, -1, [10891]), initValues(_3C_classLit, 42, -1, [10594]), initValues(_3C_classLit, 42, -1, [314]), initValues(_3C_classLit, 42, -1, [10676]), initValues(_3C_classLit, 42, -1, [8466]), initValues(_3C_classLit, 42, -1, [955]), initValues(_3C_classLit, 42, -1, [10216]), initValues(_3C_classLit, 42, -1, [10641]), initValues(_3C_classLit, 42, -1, [10216]), initValues(_3C_classLit, 42, -1, [10885]), initValues(_3C_classLit, 42, -1, [171]), initValues(_3C_classLit, 42, -1, [171]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8676]), initValues(_3C_classLit, 42, -1, [10527]), initValues(_3C_classLit, 42, -1, [10525]), initValues(_3C_classLit, 42, -1, [8617]), initValues(_3C_classLit, 42, -1, [8619]), initValues(_3C_classLit, 42, -1, [10553]), initValues(_3C_classLit, 42, -1, [10611]), initValues(_3C_classLit, 42, -1, [8610]), initValues(_3C_classLit, 42, -1, [10923]), initValues(_3C_classLit, 42, -1, [10521]), initValues(_3C_classLit, 42, -1, [10925]), initValues(_3C_classLit, 42, -1, [10508]), initValues(_3C_classLit, 42, -1, [10098]), initValues(_3C_classLit, 42, -1, [123]), initValues(_3C_classLit, 42, -1, [91]), initValues(_3C_classLit, 42, -1, [10635]), initValues(_3C_classLit, 42, -1, [10639]), initValues(_3C_classLit, 42, -1, [10637]), initValues(_3C_classLit, 42, -1, [318]), initValues(_3C_classLit, 42, -1, [316]), initValues(_3C_classLit, 42, -1, [8968]), initValues(_3C_classLit, 42, -1, [123]), initValues(_3C_classLit, 42, -1, [1083]), initValues(_3C_classLit, 42, -1, [10550]), initValues(_3C_classLit, 42, -1, [8220]), initValues(_3C_classLit, 42, -1, [8222]), initValues(_3C_classLit, 42, -1, [10599]), initValues(_3C_classLit, 42, -1, [10571]), initValues(_3C_classLit, 42, -1, [8626]), initValues(_3C_classLit, 42, -1, [8804]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8610]), initValues(_3C_classLit, 42, -1, [8637]), initValues(_3C_classLit, 42, -1, [8636]), initValues(_3C_classLit, 42, -1, [8647]), initValues(_3C_classLit, 42, -1, [8596]), initValues(_3C_classLit, 42, -1, [8646]), initValues(_3C_classLit, 42, -1, [8651]), initValues(_3C_classLit, 42, -1, [8621]), initValues(_3C_classLit, 42, -1, [8907]), initValues(_3C_classLit, 42, -1, [8922]), initValues(_3C_classLit, 42, -1, [8804]), initValues(_3C_classLit, 42, -1, [8806]), initValues(_3C_classLit, 42, -1, [10877]), initValues(_3C_classLit, 42, -1, [10877]), initValues(_3C_classLit, 42, -1, [10920]), initValues(_3C_classLit, 42, -1, [10879]), initValues(_3C_classLit, 42, -1, [10881]), initValues(_3C_classLit, 42, -1, [10883]), initValues(_3C_classLit, 42, -1, [10899]), initValues(_3C_classLit, 42, -1, [10885]), initValues(_3C_classLit, 42, -1, [8918]), initValues(_3C_classLit, 42, -1, [8922]), initValues(_3C_classLit, 42, -1, [10891]), initValues(_3C_classLit, 42, -1, [8822]), initValues(_3C_classLit, 42, -1, [8818]), initValues(_3C_classLit, 42, -1, [10620]), initValues(_3C_classLit, 42, -1, [8970]), initValues(_3C_classLit, 42, -1, [55349, 56617]), initValues(_3C_classLit, 42, -1, [8822]), initValues(_3C_classLit, 42, -1, [10897]), initValues(_3C_classLit, 42, -1, [8637]), initValues(_3C_classLit, 42, -1, [8636]), initValues(_3C_classLit, 42, -1, [10602]), initValues(_3C_classLit, 42, -1, [9604]), initValues(_3C_classLit, 42, -1, [1113]), initValues(_3C_classLit, 42, -1, [8810]), initValues(_3C_classLit, 42, -1, [8647]), initValues(_3C_classLit, 42, -1, [8990]), initValues(_3C_classLit, 42, -1, [10603]), initValues(_3C_classLit, 42, -1, [9722]), initValues(_3C_classLit, 42, -1, [320]), initValues(_3C_classLit, 42, -1, [9136]), initValues(_3C_classLit, 42, -1, [9136]), initValues(_3C_classLit, 42, -1, [8808]), initValues(_3C_classLit, 42, -1, [10889]), initValues(_3C_classLit, 42, -1, [10889]), initValues(_3C_classLit, 42, -1, [10887]), initValues(_3C_classLit, 42, -1, [10887]), initValues(_3C_classLit, 42, -1, [8808]), initValues(_3C_classLit, 42, -1, [8934]), initValues(_3C_classLit, 42, -1, [10220]), initValues(_3C_classLit, 42, -1, [8701]), initValues(_3C_classLit, 42, -1, [10214]), initValues(_3C_classLit, 42, -1, [10229]), initValues(_3C_classLit, 42, -1, [10231]), initValues(_3C_classLit, 42, -1, [10236]), initValues(_3C_classLit, 42, -1, [10230]), initValues(_3C_classLit, 42, -1, [8619]), initValues(_3C_classLit, 42, -1, [8620]), initValues(_3C_classLit, 42, -1, [10629]), initValues(_3C_classLit, 42, -1, [55349, 56669]), initValues(_3C_classLit, 42, -1, [10797]), initValues(_3C_classLit, 42, -1, [10804]), initValues(_3C_classLit, 42, -1, [8727]), initValues(_3C_classLit, 42, -1, [95]), initValues(_3C_classLit, 42, -1, [9674]), initValues(_3C_classLit, 42, -1, [9674]), initValues(_3C_classLit, 42, -1, [10731]), initValues(_3C_classLit, 42, -1, [40]), initValues(_3C_classLit, 42, -1, [10643]), initValues(_3C_classLit, 42, -1, [8646]), initValues(_3C_classLit, 42, -1, [8991]), initValues(_3C_classLit, 42, -1, [8651]), initValues(_3C_classLit, 42, -1, [10605]), initValues(_3C_classLit, 42, -1, [8206]), initValues(_3C_classLit, 42, -1, [8895]), initValues(_3C_classLit, 42, -1, [8249]), initValues(_3C_classLit, 42, -1, [55349, 56513]), initValues(_3C_classLit, 42, -1, [8624]), initValues(_3C_classLit, 42, -1, [8818]), initValues(_3C_classLit, 42, -1, [10893]), initValues(_3C_classLit, 42, -1, [10895]), initValues(_3C_classLit, 42, -1, [91]), initValues(_3C_classLit, 42, -1, [8216]), initValues(_3C_classLit, 42, -1, [8218]), initValues(_3C_classLit, 42, -1, [322]), initValues(_3C_classLit, 42, -1, [60]), initValues(_3C_classLit, 42, -1, [60]), initValues(_3C_classLit, 42, -1, [10918]), initValues(_3C_classLit, 42, -1, [10873]), initValues(_3C_classLit, 42, -1, [8918]), initValues(_3C_classLit, 42, -1, [8907]), initValues(_3C_classLit, 42, -1, [8905]), initValues(_3C_classLit, 42, -1, [10614]), initValues(_3C_classLit, 42, -1, [10875]), initValues(_3C_classLit, 42, -1, [10646]), initValues(_3C_classLit, 42, -1, [9667]), initValues(_3C_classLit, 42, -1, [8884]), initValues(_3C_classLit, 42, -1, [9666]), initValues(_3C_classLit, 42, -1, [10570]), initValues(_3C_classLit, 42, -1, [10598]), initValues(_3C_classLit, 42, -1, [8762]), initValues(_3C_classLit, 42, -1, [175]), initValues(_3C_classLit, 42, -1, [175]), initValues(_3C_classLit, 42, -1, [9794]), initValues(_3C_classLit, 42, -1, [10016]), initValues(_3C_classLit, 42, -1, [10016]), initValues(_3C_classLit, 42, -1, [8614]), initValues(_3C_classLit, 42, -1, [8614]), initValues(_3C_classLit, 42, -1, [8615]), initValues(_3C_classLit, 42, -1, [8612]), initValues(_3C_classLit, 42, -1, [8613]), initValues(_3C_classLit, 42, -1, [9646]), initValues(_3C_classLit, 42, -1, [10793]), initValues(_3C_classLit, 42, -1, [1084]), initValues(_3C_classLit, 42, -1, [8212]), initValues(_3C_classLit, 42, -1, [8737]), initValues(_3C_classLit, 42, -1, [55349, 56618]), initValues(_3C_classLit, 42, -1, [8487]), initValues(_3C_classLit, 42, -1, [181]), initValues(_3C_classLit, 42, -1, [181]), initValues(_3C_classLit, 42, -1, [8739]), initValues(_3C_classLit, 42, -1, [42]), initValues(_3C_classLit, 42, -1, [10992]), initValues(_3C_classLit, 42, -1, [183]), initValues(_3C_classLit, 42, -1, [183]), initValues(_3C_classLit, 42, -1, [8722]), initValues(_3C_classLit, 42, -1, [8863]), initValues(_3C_classLit, 42, -1, [8760]), initValues(_3C_classLit, 42, -1, [10794]), initValues(_3C_classLit, 42, -1, [10971]), initValues(_3C_classLit, 42, -1, [8230]), initValues(_3C_classLit, 42, -1, [8723]), initValues(_3C_classLit, 42, -1, [8871]), initValues(_3C_classLit, 42, -1, [55349, 56670]), initValues(_3C_classLit, 42, -1, [8723]), initValues(_3C_classLit, 42, -1, [55349, 56514]), initValues(_3C_classLit, 42, -1, [8766]), initValues(_3C_classLit, 42, -1, [956]), initValues(_3C_classLit, 42, -1, [8888]), initValues(_3C_classLit, 42, -1, [8888]), initValues(_3C_classLit, 42, -1, [8653]), initValues(_3C_classLit, 42, -1, [8654]), initValues(_3C_classLit, 42, -1, [8655]), initValues(_3C_classLit, 42, -1, [8879]), initValues(_3C_classLit, 42, -1, [8878]), initValues(_3C_classLit, 42, -1, [8711]), initValues(_3C_classLit, 42, -1, [324]), initValues(_3C_classLit, 42, -1, [8777]), initValues(_3C_classLit, 42, -1, [329]), initValues(_3C_classLit, 42, -1, [8777]), initValues(_3C_classLit, 42, -1, [9838]), initValues(_3C_classLit, 42, -1, [9838]), initValues(_3C_classLit, 42, -1, [8469]), initValues(_3C_classLit, 42, -1, [160]), initValues(_3C_classLit, 42, -1, [160]), initValues(_3C_classLit, 42, -1, [10819]), initValues(_3C_classLit, 42, -1, [328]), initValues(_3C_classLit, 42, -1, [326]), initValues(_3C_classLit, 42, -1, [8775]), initValues(_3C_classLit, 42, -1, [10818]), initValues(_3C_classLit, 42, -1, [1085]), initValues(_3C_classLit, 42, -1, [8211]), initValues(_3C_classLit, 42, -1, [8800]), initValues(_3C_classLit, 42, -1, [8663]), initValues(_3C_classLit, 42, -1, [10532]), initValues(_3C_classLit, 42, -1, [8599]), initValues(_3C_classLit, 42, -1, [8599]), initValues(_3C_classLit, 42, -1, [8802]), initValues(_3C_classLit, 42, -1, [10536]), initValues(_3C_classLit, 42, -1, [8708]), initValues(_3C_classLit, 42, -1, [8708]), initValues(_3C_classLit, 42, -1, [55349, 56619]), initValues(_3C_classLit, 42, -1, [8817]), initValues(_3C_classLit, 42, -1, [8817]), initValues(_3C_classLit, 42, -1, [8821]), initValues(_3C_classLit, 42, -1, [8815]), initValues(_3C_classLit, 42, -1, [8815]), initValues(_3C_classLit, 42, -1, [8654]), initValues(_3C_classLit, 42, -1, [8622]), initValues(_3C_classLit, 42, -1, [10994]), initValues(_3C_classLit, 42, -1, [8715]), initValues(_3C_classLit, 42, -1, [8956]), initValues(_3C_classLit, 42, -1, [8954]), initValues(_3C_classLit, 42, -1, [8715]), initValues(_3C_classLit, 42, -1, [1114]), initValues(_3C_classLit, 42, -1, [8653]), initValues(_3C_classLit, 42, -1, [8602]), initValues(_3C_classLit, 42, -1, [8229]), initValues(_3C_classLit, 42, -1, [8816]), initValues(_3C_classLit, 42, -1, [8602]), initValues(_3C_classLit, 42, -1, [8622]), initValues(_3C_classLit, 42, -1, [8816]), initValues(_3C_classLit, 42, -1, [8814]), initValues(_3C_classLit, 42, -1, [8820]), initValues(_3C_classLit, 42, -1, [8814]), initValues(_3C_classLit, 42, -1, [8938]), initValues(_3C_classLit, 42, -1, [8940]), initValues(_3C_classLit, 42, -1, [8740]), initValues(_3C_classLit, 42, -1, [55349, 56671]), initValues(_3C_classLit, 42, -1, [172]), initValues(_3C_classLit, 42, -1, [172]), initValues(_3C_classLit, 42, -1, [8713]), initValues(_3C_classLit, 42, -1, [8713]), initValues(_3C_classLit, 42, -1, [8951]), initValues(_3C_classLit, 42, -1, [8950]), initValues(_3C_classLit, 42, -1, [8716]), initValues(_3C_classLit, 42, -1, [8716]), initValues(_3C_classLit, 42, -1, [8958]), initValues(_3C_classLit, 42, -1, [8957]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [10772]), initValues(_3C_classLit, 42, -1, [8832]), initValues(_3C_classLit, 42, -1, [8928]), initValues(_3C_classLit, 42, -1, [8832]), initValues(_3C_classLit, 42, -1, [8655]), initValues(_3C_classLit, 42, -1, [8603]), initValues(_3C_classLit, 42, -1, [8603]), initValues(_3C_classLit, 42, -1, [8939]), initValues(_3C_classLit, 42, -1, [8941]), initValues(_3C_classLit, 42, -1, [8833]), initValues(_3C_classLit, 42, -1, [8929]), initValues(_3C_classLit, 42, -1, [55349, 56515]), initValues(_3C_classLit, 42, -1, [8740]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [8769]), initValues(_3C_classLit, 42, -1, [8772]), initValues(_3C_classLit, 42, -1, [8772]), initValues(_3C_classLit, 42, -1, [8740]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [8930]), initValues(_3C_classLit, 42, -1, [8931]), initValues(_3C_classLit, 42, -1, [8836]), initValues(_3C_classLit, 42, -1, [8840]), initValues(_3C_classLit, 42, -1, [8840]), initValues(_3C_classLit, 42, -1, [8833]), initValues(_3C_classLit, 42, -1, [8837]), initValues(_3C_classLit, 42, -1, [8841]), initValues(_3C_classLit, 42, -1, [8841]), initValues(_3C_classLit, 42, -1, [8825]), initValues(_3C_classLit, 42, -1, [241]), initValues(_3C_classLit, 42, -1, [241]), initValues(_3C_classLit, 42, -1, [8824]), initValues(_3C_classLit, 42, -1, [8938]), initValues(_3C_classLit, 42, -1, [8940]), initValues(_3C_classLit, 42, -1, [8939]), initValues(_3C_classLit, 42, -1, [8941]), initValues(_3C_classLit, 42, -1, [957]), initValues(_3C_classLit, 42, -1, [35]), initValues(_3C_classLit, 42, -1, [8470]), initValues(_3C_classLit, 42, -1, [8199]), initValues(_3C_classLit, 42, -1, [8877]), initValues(_3C_classLit, 42, -1, [10500]), initValues(_3C_classLit, 42, -1, [8876]), initValues(_3C_classLit, 42, -1, [10718]), initValues(_3C_classLit, 42, -1, [10498]), initValues(_3C_classLit, 42, -1, [10499]), initValues(_3C_classLit, 42, -1, [8662]), initValues(_3C_classLit, 42, -1, [10531]), initValues(_3C_classLit, 42, -1, [8598]), initValues(_3C_classLit, 42, -1, [8598]), initValues(_3C_classLit, 42, -1, [10535]), initValues(_3C_classLit, 42, -1, [9416]), initValues(_3C_classLit, 42, -1, [243]), initValues(_3C_classLit, 42, -1, [243]), initValues(_3C_classLit, 42, -1, [8859]), initValues(_3C_classLit, 42, -1, [8858]), initValues(_3C_classLit, 42, -1, [244]), initValues(_3C_classLit, 42, -1, [244]), initValues(_3C_classLit, 42, -1, [1086]), initValues(_3C_classLit, 42, -1, [8861]), initValues(_3C_classLit, 42, -1, [337]), initValues(_3C_classLit, 42, -1, [10808]), initValues(_3C_classLit, 42, -1, [8857]), initValues(_3C_classLit, 42, -1, [10684]), initValues(_3C_classLit, 42, -1, [339]), initValues(_3C_classLit, 42, -1, [10687]), initValues(_3C_classLit, 42, -1, [55349, 56620]), initValues(_3C_classLit, 42, -1, [731]), initValues(_3C_classLit, 42, -1, [242]), initValues(_3C_classLit, 42, -1, [242]), initValues(_3C_classLit, 42, -1, [10689]), initValues(_3C_classLit, 42, -1, [10677]), initValues(_3C_classLit, 42, -1, [8486]), initValues(_3C_classLit, 42, -1, [8750]), initValues(_3C_classLit, 42, -1, [8634]), initValues(_3C_classLit, 42, -1, [10686]), initValues(_3C_classLit, 42, -1, [10683]), initValues(_3C_classLit, 42, -1, [8254]), initValues(_3C_classLit, 42, -1, [10688]), initValues(_3C_classLit, 42, -1, [333]), initValues(_3C_classLit, 42, -1, [969]), initValues(_3C_classLit, 42, -1, [959]), initValues(_3C_classLit, 42, -1, [10678]), initValues(_3C_classLit, 42, -1, [8854]), initValues(_3C_classLit, 42, -1, [55349, 56672]), initValues(_3C_classLit, 42, -1, [10679]), initValues(_3C_classLit, 42, -1, [10681]), initValues(_3C_classLit, 42, -1, [8853]), initValues(_3C_classLit, 42, -1, [8744]), initValues(_3C_classLit, 42, -1, [8635]), initValues(_3C_classLit, 42, -1, [10845]), initValues(_3C_classLit, 42, -1, [8500]), initValues(_3C_classLit, 42, -1, [8500]), initValues(_3C_classLit, 42, -1, [170]), initValues(_3C_classLit, 42, -1, [170]), initValues(_3C_classLit, 42, -1, [186]), initValues(_3C_classLit, 42, -1, [186]), initValues(_3C_classLit, 42, -1, [8886]), initValues(_3C_classLit, 42, -1, [10838]), initValues(_3C_classLit, 42, -1, [10839]), initValues(_3C_classLit, 42, -1, [10843]), initValues(_3C_classLit, 42, -1, [8500]), initValues(_3C_classLit, 42, -1, [248]), initValues(_3C_classLit, 42, -1, [248]), initValues(_3C_classLit, 42, -1, [8856]), initValues(_3C_classLit, 42, -1, [245]), initValues(_3C_classLit, 42, -1, [245]), initValues(_3C_classLit, 42, -1, [8855]), initValues(_3C_classLit, 42, -1, [10806]), initValues(_3C_classLit, 42, -1, [246]), initValues(_3C_classLit, 42, -1, [246]), initValues(_3C_classLit, 42, -1, [9021]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [182]), initValues(_3C_classLit, 42, -1, [182]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [10995]), initValues(_3C_classLit, 42, -1, [11005]), initValues(_3C_classLit, 42, -1, [8706]), initValues(_3C_classLit, 42, -1, [1087]), initValues(_3C_classLit, 42, -1, [37]), initValues(_3C_classLit, 42, -1, [46]), initValues(_3C_classLit, 42, -1, [8240]), initValues(_3C_classLit, 42, -1, [8869]), initValues(_3C_classLit, 42, -1, [8241]), initValues(_3C_classLit, 42, -1, [55349, 56621]), initValues(_3C_classLit, 42, -1, [966]), initValues(_3C_classLit, 42, -1, [966]), initValues(_3C_classLit, 42, -1, [8499]), initValues(_3C_classLit, 42, -1, [9742]), initValues(_3C_classLit, 42, -1, [960]), initValues(_3C_classLit, 42, -1, [8916]), initValues(_3C_classLit, 42, -1, [982]), initValues(_3C_classLit, 42, -1, [8463]), initValues(_3C_classLit, 42, -1, [8462]), initValues(_3C_classLit, 42, -1, [8463]), initValues(_3C_classLit, 42, -1, [43]), initValues(_3C_classLit, 42, -1, [10787]), initValues(_3C_classLit, 42, -1, [8862]), initValues(_3C_classLit, 42, -1, [10786]), initValues(_3C_classLit, 42, -1, [8724]), initValues(_3C_classLit, 42, -1, [10789]), initValues(_3C_classLit, 42, -1, [10866]), initValues(_3C_classLit, 42, -1, [177]), initValues(_3C_classLit, 42, -1, [177]), initValues(_3C_classLit, 42, -1, [10790]), initValues(_3C_classLit, 42, -1, [10791]), initValues(_3C_classLit, 42, -1, [177]), initValues(_3C_classLit, 42, -1, [10773]), initValues(_3C_classLit, 42, -1, [55349, 56673]), initValues(_3C_classLit, 42, -1, [163]), initValues(_3C_classLit, 42, -1, [163]), initValues(_3C_classLit, 42, -1, [8826]), initValues(_3C_classLit, 42, -1, [10931]), initValues(_3C_classLit, 42, -1, [10935]), initValues(_3C_classLit, 42, -1, [8828]), initValues(_3C_classLit, 42, -1, [10927]), initValues(_3C_classLit, 42, -1, [8826]), initValues(_3C_classLit, 42, -1, [10935]), initValues(_3C_classLit, 42, -1, [8828]), initValues(_3C_classLit, 42, -1, [10927]), initValues(_3C_classLit, 42, -1, [10937]), initValues(_3C_classLit, 42, -1, [10933]), initValues(_3C_classLit, 42, -1, [8936]), initValues(_3C_classLit, 42, -1, [8830]), initValues(_3C_classLit, 42, -1, [8242]), initValues(_3C_classLit, 42, -1, [8473]), initValues(_3C_classLit, 42, -1, [10933]), initValues(_3C_classLit, 42, -1, [10937]), initValues(_3C_classLit, 42, -1, [8936]), initValues(_3C_classLit, 42, -1, [8719]), initValues(_3C_classLit, 42, -1, [9006]), initValues(_3C_classLit, 42, -1, [8978]), initValues(_3C_classLit, 42, -1, [8979]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [8830]), initValues(_3C_classLit, 42, -1, [8880]), initValues(_3C_classLit, 42, -1, [55349, 56517]), initValues(_3C_classLit, 42, -1, [968]), initValues(_3C_classLit, 42, -1, [8200]), initValues(_3C_classLit, 42, -1, [55349, 56622]), initValues(_3C_classLit, 42, -1, [10764]), initValues(_3C_classLit, 42, -1, [55349, 56674]), initValues(_3C_classLit, 42, -1, [8279]), initValues(_3C_classLit, 42, -1, [55349, 56518]), initValues(_3C_classLit, 42, -1, [8461]), initValues(_3C_classLit, 42, -1, [10774]), initValues(_3C_classLit, 42, -1, [63]), initValues(_3C_classLit, 42, -1, [8799]), initValues(_3C_classLit, 42, -1, [34]), initValues(_3C_classLit, 42, -1, [34]), initValues(_3C_classLit, 42, -1, [8667]), initValues(_3C_classLit, 42, -1, [8658]), initValues(_3C_classLit, 42, -1, [10524]), initValues(_3C_classLit, 42, -1, [10511]), initValues(_3C_classLit, 42, -1, [10596]), initValues(_3C_classLit, 42, -1, [10714]), initValues(_3C_classLit, 42, -1, [341]), initValues(_3C_classLit, 42, -1, [8730]), initValues(_3C_classLit, 42, -1, [10675]), initValues(_3C_classLit, 42, -1, [10217]), initValues(_3C_classLit, 42, -1, [10642]), initValues(_3C_classLit, 42, -1, [10661]), initValues(_3C_classLit, 42, -1, [10217]), initValues(_3C_classLit, 42, -1, [187]), initValues(_3C_classLit, 42, -1, [187]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [10613]), initValues(_3C_classLit, 42, -1, [8677]), initValues(_3C_classLit, 42, -1, [10528]), initValues(_3C_classLit, 42, -1, [10547]), initValues(_3C_classLit, 42, -1, [10526]), initValues(_3C_classLit, 42, -1, [8618]), initValues(_3C_classLit, 42, -1, [8620]), initValues(_3C_classLit, 42, -1, [10565]), initValues(_3C_classLit, 42, -1, [10612]), initValues(_3C_classLit, 42, -1, [8611]), initValues(_3C_classLit, 42, -1, [8605]), initValues(_3C_classLit, 42, -1, [10522]), initValues(_3C_classLit, 42, -1, [8758]), initValues(_3C_classLit, 42, -1, [8474]), initValues(_3C_classLit, 42, -1, [10509]), initValues(_3C_classLit, 42, -1, [10099]), initValues(_3C_classLit, 42, -1, [125]), initValues(_3C_classLit, 42, -1, [93]), initValues(_3C_classLit, 42, -1, [10636]), initValues(_3C_classLit, 42, -1, [10638]), initValues(_3C_classLit, 42, -1, [10640]), initValues(_3C_classLit, 42, -1, [345]), initValues(_3C_classLit, 42, -1, [343]), initValues(_3C_classLit, 42, -1, [8969]), initValues(_3C_classLit, 42, -1, [125]), initValues(_3C_classLit, 42, -1, [1088]), initValues(_3C_classLit, 42, -1, [10551]), initValues(_3C_classLit, 42, -1, [10601]), initValues(_3C_classLit, 42, -1, [8221]), initValues(_3C_classLit, 42, -1, [8221]), initValues(_3C_classLit, 42, -1, [8627]), initValues(_3C_classLit, 42, -1, [8476]), initValues(_3C_classLit, 42, -1, [8475]), initValues(_3C_classLit, 42, -1, [8476]), initValues(_3C_classLit, 42, -1, [8477]), initValues(_3C_classLit, 42, -1, [9645]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [10621]), initValues(_3C_classLit, 42, -1, [8971]), initValues(_3C_classLit, 42, -1, [55349, 56623]), initValues(_3C_classLit, 42, -1, [8641]), initValues(_3C_classLit, 42, -1, [8640]), initValues(_3C_classLit, 42, -1, [10604]), initValues(_3C_classLit, 42, -1, [961]), initValues(_3C_classLit, 42, -1, [1009]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [8611]), initValues(_3C_classLit, 42, -1, [8641]), initValues(_3C_classLit, 42, -1, [8640]), initValues(_3C_classLit, 42, -1, [8644]), initValues(_3C_classLit, 42, -1, [8652]), initValues(_3C_classLit, 42, -1, [8649]), initValues(_3C_classLit, 42, -1, [8605]), initValues(_3C_classLit, 42, -1, [8908]), initValues(_3C_classLit, 42, -1, [730]), initValues(_3C_classLit, 42, -1, [8787]), initValues(_3C_classLit, 42, -1, [8644]), initValues(_3C_classLit, 42, -1, [8652]), initValues(_3C_classLit, 42, -1, [8207]), initValues(_3C_classLit, 42, -1, [9137]), initValues(_3C_classLit, 42, -1, [9137]), initValues(_3C_classLit, 42, -1, [10990]), initValues(_3C_classLit, 42, -1, [10221]), initValues(_3C_classLit, 42, -1, [8702]), initValues(_3C_classLit, 42, -1, [10215]), initValues(_3C_classLit, 42, -1, [10630]), initValues(_3C_classLit, 42, -1, [55349, 56675]), initValues(_3C_classLit, 42, -1, [10798]), initValues(_3C_classLit, 42, -1, [10805]), initValues(_3C_classLit, 42, -1, [41]), initValues(_3C_classLit, 42, -1, [10644]), initValues(_3C_classLit, 42, -1, [10770]), initValues(_3C_classLit, 42, -1, [8649]), initValues(_3C_classLit, 42, -1, [8250]), initValues(_3C_classLit, 42, -1, [55349, 56519]), initValues(_3C_classLit, 42, -1, [8625]), initValues(_3C_classLit, 42, -1, [93]), initValues(_3C_classLit, 42, -1, [8217]), initValues(_3C_classLit, 42, -1, [8217]), initValues(_3C_classLit, 42, -1, [8908]), initValues(_3C_classLit, 42, -1, [8906]), initValues(_3C_classLit, 42, -1, [9657]), initValues(_3C_classLit, 42, -1, [8885]), initValues(_3C_classLit, 42, -1, [9656]), initValues(_3C_classLit, 42, -1, [10702]), initValues(_3C_classLit, 42, -1, [10600]), initValues(_3C_classLit, 42, -1, [8478]), initValues(_3C_classLit, 42, -1, [347]), initValues(_3C_classLit, 42, -1, [8218]), initValues(_3C_classLit, 42, -1, [8827]), initValues(_3C_classLit, 42, -1, [10932]), initValues(_3C_classLit, 42, -1, [10936]), initValues(_3C_classLit, 42, -1, [353]), initValues(_3C_classLit, 42, -1, [8829]), initValues(_3C_classLit, 42, -1, [10928]), initValues(_3C_classLit, 42, -1, [351]), initValues(_3C_classLit, 42, -1, [349]), initValues(_3C_classLit, 42, -1, [10934]), initValues(_3C_classLit, 42, -1, [10938]), initValues(_3C_classLit, 42, -1, [8937]), initValues(_3C_classLit, 42, -1, [10771]), initValues(_3C_classLit, 42, -1, [8831]), initValues(_3C_classLit, 42, -1, [1089]), initValues(_3C_classLit, 42, -1, [8901]), initValues(_3C_classLit, 42, -1, [8865]), initValues(_3C_classLit, 42, -1, [10854]), initValues(_3C_classLit, 42, -1, [8664]), initValues(_3C_classLit, 42, -1, [10533]), initValues(_3C_classLit, 42, -1, [8600]), initValues(_3C_classLit, 42, -1, [8600]), initValues(_3C_classLit, 42, -1, [167]), initValues(_3C_classLit, 42, -1, [167]), initValues(_3C_classLit, 42, -1, [59]), initValues(_3C_classLit, 42, -1, [10537]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [10038]), initValues(_3C_classLit, 42, -1, [55349, 56624]), initValues(_3C_classLit, 42, -1, [8994]), initValues(_3C_classLit, 42, -1, [9839]), initValues(_3C_classLit, 42, -1, [1097]), initValues(_3C_classLit, 42, -1, [1096]), initValues(_3C_classLit, 42, -1, [8739]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [173]), initValues(_3C_classLit, 42, -1, [173]), initValues(_3C_classLit, 42, -1, [963]), initValues(_3C_classLit, 42, -1, [962]), initValues(_3C_classLit, 42, -1, [962]), initValues(_3C_classLit, 42, -1, [8764]), initValues(_3C_classLit, 42, -1, [10858]), initValues(_3C_classLit, 42, -1, [8771]), initValues(_3C_classLit, 42, -1, [8771]), initValues(_3C_classLit, 42, -1, [10910]), initValues(_3C_classLit, 42, -1, [10912]), initValues(_3C_classLit, 42, -1, [10909]), initValues(_3C_classLit, 42, -1, [10911]), initValues(_3C_classLit, 42, -1, [8774]), initValues(_3C_classLit, 42, -1, [10788]), initValues(_3C_classLit, 42, -1, [10610]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [10803]), initValues(_3C_classLit, 42, -1, [10724]), initValues(_3C_classLit, 42, -1, [8739]), initValues(_3C_classLit, 42, -1, [8995]), initValues(_3C_classLit, 42, -1, [10922]), initValues(_3C_classLit, 42, -1, [10924]), initValues(_3C_classLit, 42, -1, [1100]), initValues(_3C_classLit, 42, -1, [47]), initValues(_3C_classLit, 42, -1, [10692]), initValues(_3C_classLit, 42, -1, [9023]), initValues(_3C_classLit, 42, -1, [55349, 56676]), initValues(_3C_classLit, 42, -1, [9824]), initValues(_3C_classLit, 42, -1, [9824]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [8851]), initValues(_3C_classLit, 42, -1, [8852]), initValues(_3C_classLit, 42, -1, [8847]), initValues(_3C_classLit, 42, -1, [8849]), initValues(_3C_classLit, 42, -1, [8847]), initValues(_3C_classLit, 42, -1, [8849]), initValues(_3C_classLit, 42, -1, [8848]), initValues(_3C_classLit, 42, -1, [8850]), initValues(_3C_classLit, 42, -1, [8848]), initValues(_3C_classLit, 42, -1, [8850]), initValues(_3C_classLit, 42, -1, [9633]), initValues(_3C_classLit, 42, -1, [9633]), initValues(_3C_classLit, 42, -1, [9642]), initValues(_3C_classLit, 42, -1, [9642]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [55349, 56520]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [8995]), initValues(_3C_classLit, 42, -1, [8902]), initValues(_3C_classLit, 42, -1, [9734]), initValues(_3C_classLit, 42, -1, [9733]), initValues(_3C_classLit, 42, -1, [1013]), initValues(_3C_classLit, 42, -1, [981]), initValues(_3C_classLit, 42, -1, [175]), initValues(_3C_classLit, 42, -1, [8834]), initValues(_3C_classLit, 42, -1, [10949]), initValues(_3C_classLit, 42, -1, [10941]), initValues(_3C_classLit, 42, -1, [8838]), initValues(_3C_classLit, 42, -1, [10947]), initValues(_3C_classLit, 42, -1, [10945]), initValues(_3C_classLit, 42, -1, [10955]), initValues(_3C_classLit, 42, -1, [8842]), initValues(_3C_classLit, 42, -1, [10943]), initValues(_3C_classLit, 42, -1, [10617]), initValues(_3C_classLit, 42, -1, [8834]), initValues(_3C_classLit, 42, -1, [8838]), initValues(_3C_classLit, 42, -1, [10949]), initValues(_3C_classLit, 42, -1, [8842]), initValues(_3C_classLit, 42, -1, [10955]), initValues(_3C_classLit, 42, -1, [10951]), initValues(_3C_classLit, 42, -1, [10965]), initValues(_3C_classLit, 42, -1, [10963]), initValues(_3C_classLit, 42, -1, [8827]), initValues(_3C_classLit, 42, -1, [10936]), initValues(_3C_classLit, 42, -1, [8829]), initValues(_3C_classLit, 42, -1, [10928]), initValues(_3C_classLit, 42, -1, [10938]), initValues(_3C_classLit, 42, -1, [10934]), initValues(_3C_classLit, 42, -1, [8937]), initValues(_3C_classLit, 42, -1, [8831]), initValues(_3C_classLit, 42, -1, [8721]), initValues(_3C_classLit, 42, -1, [9834]), initValues(_3C_classLit, 42, -1, [185]), initValues(_3C_classLit, 42, -1, [185]), initValues(_3C_classLit, 42, -1, [178]), initValues(_3C_classLit, 42, -1, [178]), initValues(_3C_classLit, 42, -1, [179]), initValues(_3C_classLit, 42, -1, [179]), initValues(_3C_classLit, 42, -1, [8835]), initValues(_3C_classLit, 42, -1, [10950]), initValues(_3C_classLit, 42, -1, [10942]), initValues(_3C_classLit, 42, -1, [10968]), initValues(_3C_classLit, 42, -1, [8839]), initValues(_3C_classLit, 42, -1, [10948]), initValues(_3C_classLit, 42, -1, [10967]), initValues(_3C_classLit, 42, -1, [10619]), initValues(_3C_classLit, 42, -1, [10946]), initValues(_3C_classLit, 42, -1, [10956]), initValues(_3C_classLit, 42, -1, [8843]), initValues(_3C_classLit, 42, -1, [10944]), initValues(_3C_classLit, 42, -1, [8835]), initValues(_3C_classLit, 42, -1, [8839]), initValues(_3C_classLit, 42, -1, [10950]), initValues(_3C_classLit, 42, -1, [8843]), initValues(_3C_classLit, 42, -1, [10956]), initValues(_3C_classLit, 42, -1, [10952]), initValues(_3C_classLit, 42, -1, [10964]), initValues(_3C_classLit, 42, -1, [10966]), initValues(_3C_classLit, 42, -1, [8665]), initValues(_3C_classLit, 42, -1, [10534]), initValues(_3C_classLit, 42, -1, [8601]), initValues(_3C_classLit, 42, -1, [8601]), initValues(_3C_classLit, 42, -1, [10538]), initValues(_3C_classLit, 42, -1, [223]), initValues(_3C_classLit, 42, -1, [223]), initValues(_3C_classLit, 42, -1, [8982]), initValues(_3C_classLit, 42, -1, [964]), initValues(_3C_classLit, 42, -1, [9140]), initValues(_3C_classLit, 42, -1, [357]), initValues(_3C_classLit, 42, -1, [355]), initValues(_3C_classLit, 42, -1, [1090]), initValues(_3C_classLit, 42, -1, [8411]), initValues(_3C_classLit, 42, -1, [8981]), initValues(_3C_classLit, 42, -1, [55349, 56625]), initValues(_3C_classLit, 42, -1, [8756]), initValues(_3C_classLit, 42, -1, [8756]), initValues(_3C_classLit, 42, -1, [952]), initValues(_3C_classLit, 42, -1, [977]), initValues(_3C_classLit, 42, -1, [977]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [8764]), initValues(_3C_classLit, 42, -1, [8201]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [8764]), initValues(_3C_classLit, 42, -1, [254]), initValues(_3C_classLit, 42, -1, [254]), initValues(_3C_classLit, 42, -1, [732]), initValues(_3C_classLit, 42, -1, [215]), initValues(_3C_classLit, 42, -1, [215]), initValues(_3C_classLit, 42, -1, [8864]), initValues(_3C_classLit, 42, -1, [10801]), initValues(_3C_classLit, 42, -1, [10800]), initValues(_3C_classLit, 42, -1, [8749]), initValues(_3C_classLit, 42, -1, [10536]), initValues(_3C_classLit, 42, -1, [8868]), initValues(_3C_classLit, 42, -1, [9014]), initValues(_3C_classLit, 42, -1, [10993]), initValues(_3C_classLit, 42, -1, [55349, 56677]), initValues(_3C_classLit, 42, -1, [10970]), initValues(_3C_classLit, 42, -1, [10537]), initValues(_3C_classLit, 42, -1, [8244]), initValues(_3C_classLit, 42, -1, [8482]), initValues(_3C_classLit, 42, -1, [9653]), initValues(_3C_classLit, 42, -1, [9663]), initValues(_3C_classLit, 42, -1, [9667]), initValues(_3C_classLit, 42, -1, [8884]), initValues(_3C_classLit, 42, -1, [8796]), initValues(_3C_classLit, 42, -1, [9657]), initValues(_3C_classLit, 42, -1, [8885]), initValues(_3C_classLit, 42, -1, [9708]), initValues(_3C_classLit, 42, -1, [8796]), initValues(_3C_classLit, 42, -1, [10810]), initValues(_3C_classLit, 42, -1, [10809]), initValues(_3C_classLit, 42, -1, [10701]), initValues(_3C_classLit, 42, -1, [10811]), initValues(_3C_classLit, 42, -1, [9186]), initValues(_3C_classLit, 42, -1, [55349, 56521]), initValues(_3C_classLit, 42, -1, [1094]), initValues(_3C_classLit, 42, -1, [1115]), initValues(_3C_classLit, 42, -1, [359]), initValues(_3C_classLit, 42, -1, [8812]), initValues(_3C_classLit, 42, -1, [8606]), initValues(_3C_classLit, 42, -1, [8608]), initValues(_3C_classLit, 42, -1, [8657]), initValues(_3C_classLit, 42, -1, [10595]), initValues(_3C_classLit, 42, -1, [250]), initValues(_3C_classLit, 42, -1, [250]), initValues(_3C_classLit, 42, -1, [8593]), initValues(_3C_classLit, 42, -1, [1118]), initValues(_3C_classLit, 42, -1, [365]), initValues(_3C_classLit, 42, -1, [251]), initValues(_3C_classLit, 42, -1, [251]), initValues(_3C_classLit, 42, -1, [1091]), initValues(_3C_classLit, 42, -1, [8645]), initValues(_3C_classLit, 42, -1, [369]), initValues(_3C_classLit, 42, -1, [10606]), initValues(_3C_classLit, 42, -1, [10622]), initValues(_3C_classLit, 42, -1, [55349, 56626]), initValues(_3C_classLit, 42, -1, [249]), initValues(_3C_classLit, 42, -1, [249]), initValues(_3C_classLit, 42, -1, [8639]), initValues(_3C_classLit, 42, -1, [8638]), initValues(_3C_classLit, 42, -1, [9600]), initValues(_3C_classLit, 42, -1, [8988]), initValues(_3C_classLit, 42, -1, [8988]), initValues(_3C_classLit, 42, -1, [8975]), initValues(_3C_classLit, 42, -1, [9720]), initValues(_3C_classLit, 42, -1, [363]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [371]), initValues(_3C_classLit, 42, -1, [55349, 56678]), initValues(_3C_classLit, 42, -1, [8593]), initValues(_3C_classLit, 42, -1, [8597]), initValues(_3C_classLit, 42, -1, [8639]), initValues(_3C_classLit, 42, -1, [8638]), initValues(_3C_classLit, 42, -1, [8846]), initValues(_3C_classLit, 42, -1, [965]), initValues(_3C_classLit, 42, -1, [978]), initValues(_3C_classLit, 42, -1, [965]), initValues(_3C_classLit, 42, -1, [8648]), initValues(_3C_classLit, 42, -1, [8989]), initValues(_3C_classLit, 42, -1, [8989]), initValues(_3C_classLit, 42, -1, [8974]), initValues(_3C_classLit, 42, -1, [367]), initValues(_3C_classLit, 42, -1, [9721]), initValues(_3C_classLit, 42, -1, [55349, 56522]), initValues(_3C_classLit, 42, -1, [8944]), initValues(_3C_classLit, 42, -1, [361]), initValues(_3C_classLit, 42, -1, [9653]), initValues(_3C_classLit, 42, -1, [9652]), initValues(_3C_classLit, 42, -1, [8648]), initValues(_3C_classLit, 42, -1, [252]), initValues(_3C_classLit, 42, -1, [252]), initValues(_3C_classLit, 42, -1, [10663]), initValues(_3C_classLit, 42, -1, [8661]), initValues(_3C_classLit, 42, -1, [10984]), initValues(_3C_classLit, 42, -1, [10985]), initValues(_3C_classLit, 42, -1, [8872]), initValues(_3C_classLit, 42, -1, [10652]), initValues(_3C_classLit, 42, -1, [949]), initValues(_3C_classLit, 42, -1, [1008]), initValues(_3C_classLit, 42, -1, [8709]), initValues(_3C_classLit, 42, -1, [966]), initValues(_3C_classLit, 42, -1, [982]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [8597]), initValues(_3C_classLit, 42, -1, [1009]), initValues(_3C_classLit, 42, -1, [962]), initValues(_3C_classLit, 42, -1, [977]), initValues(_3C_classLit, 42, -1, [8882]), initValues(_3C_classLit, 42, -1, [8883]), initValues(_3C_classLit, 42, -1, [1074]), initValues(_3C_classLit, 42, -1, [8866]), initValues(_3C_classLit, 42, -1, [8744]), initValues(_3C_classLit, 42, -1, [8891]), initValues(_3C_classLit, 42, -1, [8794]), initValues(_3C_classLit, 42, -1, [8942]), initValues(_3C_classLit, 42, -1, [124]), initValues(_3C_classLit, 42, -1, [124]), initValues(_3C_classLit, 42, -1, [55349, 56627]), initValues(_3C_classLit, 42, -1, [8882]), initValues(_3C_classLit, 42, -1, [55349, 56679]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [8883]), initValues(_3C_classLit, 42, -1, [55349, 56523]), initValues(_3C_classLit, 42, -1, [10650]), initValues(_3C_classLit, 42, -1, [373]), initValues(_3C_classLit, 42, -1, [10847]), initValues(_3C_classLit, 42, -1, [8743]), initValues(_3C_classLit, 42, -1, [8793]), initValues(_3C_classLit, 42, -1, [8472]), initValues(_3C_classLit, 42, -1, [55349, 56628]), initValues(_3C_classLit, 42, -1, [55349, 56680]), initValues(_3C_classLit, 42, -1, [8472]), initValues(_3C_classLit, 42, -1, [8768]), initValues(_3C_classLit, 42, -1, [8768]), initValues(_3C_classLit, 42, -1, [55349, 56524]), initValues(_3C_classLit, 42, -1, [8898]), initValues(_3C_classLit, 42, -1, [9711]), initValues(_3C_classLit, 42, -1, [8899]), initValues(_3C_classLit, 42, -1, [9661]), initValues(_3C_classLit, 42, -1, [55349, 56629]), initValues(_3C_classLit, 42, -1, [10234]), initValues(_3C_classLit, 42, -1, [10231]), initValues(_3C_classLit, 42, -1, [958]), initValues(_3C_classLit, 42, -1, [10232]), initValues(_3C_classLit, 42, -1, [10229]), initValues(_3C_classLit, 42, -1, [10236]), initValues(_3C_classLit, 42, -1, [8955]), initValues(_3C_classLit, 42, -1, [10752]), initValues(_3C_classLit, 42, -1, [55349, 56681]), initValues(_3C_classLit, 42, -1, [10753]), initValues(_3C_classLit, 42, -1, [10754]), initValues(_3C_classLit, 42, -1, [10233]), initValues(_3C_classLit, 42, -1, [10230]), initValues(_3C_classLit, 42, -1, [55349, 56525]), initValues(_3C_classLit, 42, -1, [10758]), initValues(_3C_classLit, 42, -1, [10756]), initValues(_3C_classLit, 42, -1, [9651]), initValues(_3C_classLit, 42, -1, [8897]), initValues(_3C_classLit, 42, -1, [8896]), initValues(_3C_classLit, 42, -1, [253]), initValues(_3C_classLit, 42, -1, [253]), initValues(_3C_classLit, 42, -1, [1103]), initValues(_3C_classLit, 42, -1, [375]), initValues(_3C_classLit, 42, -1, [1099]), initValues(_3C_classLit, 42, -1, [165]), initValues(_3C_classLit, 42, -1, [165]), initValues(_3C_classLit, 42, -1, [55349, 56630]), initValues(_3C_classLit, 42, -1, [1111]), initValues(_3C_classLit, 42, -1, [55349, 56682]), initValues(_3C_classLit, 42, -1, [55349, 56526]), initValues(_3C_classLit, 42, -1, [1102]), initValues(_3C_classLit, 42, -1, [255]), initValues(_3C_classLit, 42, -1, [255]), initValues(_3C_classLit, 42, -1, [378]), initValues(_3C_classLit, 42, -1, [382]), initValues(_3C_classLit, 42, -1, [1079]), initValues(_3C_classLit, 42, -1, [380]), initValues(_3C_classLit, 42, -1, [8488]), initValues(_3C_classLit, 42, -1, [950]), initValues(_3C_classLit, 42, -1, [55349, 56631]), initValues(_3C_classLit, 42, -1, [1078]), initValues(_3C_classLit, 42, -1, [8669]), initValues(_3C_classLit, 42, -1, [55349, 56683]), initValues(_3C_classLit, 42, -1, [55349, 56527]), initValues(_3C_classLit, 42, -1, [8205]), initValues(_3C_classLit, 42, -1, [8204])]);
10.21644 + WINDOWS_1252 = initValues(_3_3C_classLit, 52, 12, [initValues(_3C_classLit, 42, -1, [8364]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [8218]), initValues(_3C_classLit, 42, -1, [402]), initValues(_3C_classLit, 42, -1, [8222]), initValues(_3C_classLit, 42, -1, [8230]), initValues(_3C_classLit, 42, -1, [8224]), initValues(_3C_classLit, 42, -1, [8225]), initValues(_3C_classLit, 42, -1, [710]), initValues(_3C_classLit, 42, -1, [8240]), initValues(_3C_classLit, 42, -1, [352]), initValues(_3C_classLit, 42, -1, [8249]), initValues(_3C_classLit, 42, -1, [338]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [381]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [8216]), initValues(_3C_classLit, 42, -1, [8217]), initValues(_3C_classLit, 42, -1, [8220]), initValues(_3C_classLit, 42, -1, [8221]), initValues(_3C_classLit, 42, -1, [8226]), initValues(_3C_classLit, 42, -1, [8211]), initValues(_3C_classLit, 42, -1, [8212]), initValues(_3C_classLit, 42, -1, [732]), initValues(_3C_classLit, 42, -1, [8482]), initValues(_3C_classLit, 42, -1, [353]), initValues(_3C_classLit, 42, -1, [8250]), initValues(_3C_classLit, 42, -1, [339]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [382]), initValues(_3C_classLit, 42, -1, [376])]);
10.21645 +}
10.21646 +
10.21647 +var NAMES, VALUES_0, WINDOWS_1252;
10.21648 +function localEqualsBuffer(local, buf, offset, length){
10.21649 + var i;
10.21650 + if (local.length != length) {
10.21651 + return false;
10.21652 + }
10.21653 + for (i = 0; i < length; ++i) {
10.21654 + if (local.charCodeAt(i) != buf[offset + i]) {
10.21655 + return false;
10.21656 + }
10.21657 + }
10.21658 + return true;
10.21659 +}
10.21660 +
10.21661 +function lowerCaseLiteralEqualsIgnoreAsciiCaseString(lowerCaseLiteral, string){
10.21662 + var c0, c1, i;
10.21663 + if (string == null) {
10.21664 + return false;
10.21665 + }
10.21666 + if (lowerCaseLiteral.length != string.length) {
10.21667 + return false;
10.21668 + }
10.21669 + for (i = 0; i < lowerCaseLiteral.length; ++i) {
10.21670 + c0 = lowerCaseLiteral.charCodeAt(i);
10.21671 + c1 = string.charCodeAt(i);
10.21672 + if (c1 >= 65 && c1 <= 90) {
10.21673 + c1 += 32;
10.21674 + }
10.21675 + if (c0 != c1) {
10.21676 + return false;
10.21677 + }
10.21678 + }
10.21679 + return true;
10.21680 +}
10.21681 +
10.21682 +function lowerCaseLiteralIsPrefixOfIgnoreAsciiCaseString(lowerCaseLiteral, string){
10.21683 + var c0, c1, i;
10.21684 + if (string == null) {
10.21685 + return false;
10.21686 + }
10.21687 + if (lowerCaseLiteral.length > string.length) {
10.21688 + return false;
10.21689 + }
10.21690 + for (i = 0; i < lowerCaseLiteral.length; ++i) {
10.21691 + c0 = lowerCaseLiteral.charCodeAt(i);
10.21692 + c1 = string.charCodeAt(i);
10.21693 + if (c1 >= 65 && c1 <= 90) {
10.21694 + c1 += 32;
10.21695 + }
10.21696 + if (c0 != c1) {
10.21697 + return false;
10.21698 + }
10.21699 + }
10.21700 + return true;
10.21701 +}
10.21702 +
10.21703 +function $StackNode(this$static, group, ns, name, node, scoping, special, fosterParenting, popName, attributes){
10.21704 + this$static.group = group;
10.21705 + this$static.name_0 = name;
10.21706 + this$static.popName = popName;
10.21707 + this$static.ns = ns;
10.21708 + this$static.node = node;
10.21709 + this$static.scoping = scoping;
10.21710 + this$static.special = special;
10.21711 + this$static.fosterParenting = fosterParenting;
10.21712 + this$static.attributes = attributes;
10.21713 + this$static.refcount = 1;
10.21714 + return this$static;
10.21715 +}
10.21716 +
10.21717 +function $StackNode_0(this$static, ns, elementName, node){
10.21718 + this$static.group = elementName.group;
10.21719 + this$static.name_0 = elementName.name_0;
10.21720 + this$static.popName = elementName.name_0;
10.21721 + this$static.ns = ns;
10.21722 + this$static.node = node;
10.21723 + this$static.scoping = elementName.scoping;
10.21724 + this$static.special = elementName.special;
10.21725 + this$static.fosterParenting = elementName.fosterParenting;
10.21726 + this$static.attributes = null;
10.21727 + this$static.refcount = 1;
10.21728 + return this$static;
10.21729 +}
10.21730 +
10.21731 +function $StackNode_3(this$static, ns, elementName, node, attributes){
10.21732 + this$static.group = elementName.group;
10.21733 + this$static.name_0 = elementName.name_0;
10.21734 + this$static.popName = elementName.name_0;
10.21735 + this$static.ns = ns;
10.21736 + this$static.node = node;
10.21737 + this$static.scoping = elementName.scoping;
10.21738 + this$static.special = elementName.special;
10.21739 + this$static.fosterParenting = elementName.fosterParenting;
10.21740 + this$static.attributes = attributes;
10.21741 + this$static.refcount = 1;
10.21742 + return this$static;
10.21743 +}
10.21744 +
10.21745 +function $StackNode_1(this$static, ns, elementName, node, popName){
10.21746 + this$static.group = elementName.group;
10.21747 + this$static.name_0 = elementName.name_0;
10.21748 + this$static.popName = popName;
10.21749 + this$static.ns = ns;
10.21750 + this$static.node = node;
10.21751 + this$static.scoping = elementName.scoping;
10.21752 + this$static.special = elementName.special;
10.21753 + this$static.fosterParenting = elementName.fosterParenting;
10.21754 + this$static.attributes = null;
10.21755 + this$static.refcount = 1;
10.21756 + return this$static;
10.21757 +}
10.21758 +
10.21759 +function $StackNode_2(this$static, ns, elementName, node, popName, scoping){
10.21760 + this$static.group = elementName.group;
10.21761 + this$static.name_0 = elementName.name_0;
10.21762 + this$static.popName = popName;
10.21763 + this$static.ns = ns;
10.21764 + this$static.node = node;
10.21765 + this$static.scoping = scoping;
10.21766 + this$static.special = false;
10.21767 + this$static.fosterParenting = false;
10.21768 + this$static.attributes = null;
10.21769 + this$static.refcount = 1;
10.21770 + return this$static;
10.21771 +}
10.21772 +
10.21773 +function getClass_55(){
10.21774 + return Lnu_validator_htmlparser_impl_StackNode_2_classLit;
10.21775 +}
10.21776 +
10.21777 +function toString_11(){
10.21778 + return this.name_0;
10.21779 +}
10.21780 +
10.21781 +function StackNode(){
10.21782 +}
10.21783 +
10.21784 +_ = StackNode.prototype = new Object_0();
10.21785 +_.getClass$ = getClass_55;
10.21786 +_.toString$ = toString_11;
10.21787 +_.typeId$ = 38;
10.21788 +_.attributes = null;
10.21789 +_.fosterParenting = false;
10.21790 +_.group = 0;
10.21791 +_.name_0 = null;
10.21792 +_.node = null;
10.21793 +_.ns = null;
10.21794 +_.popName = null;
10.21795 +_.refcount = 1;
10.21796 +_.scoping = false;
10.21797 +_.special = false;
10.21798 +function $UTF16Buffer(this$static, buffer, start, end){
10.21799 + this$static.buffer = buffer;
10.21800 + this$static.start = start;
10.21801 + this$static.end = end;
10.21802 + return this$static;
10.21803 +}
10.21804 +
10.21805 +function $adjust(this$static, lastWasCR){
10.21806 + if (lastWasCR && this$static.buffer[this$static.start] == 10) {
10.21807 + ++this$static.start;
10.21808 + }
10.21809 +}
10.21810 +
10.21811 +function getClass_58(){
10.21812 + return Lnu_validator_htmlparser_impl_UTF16Buffer_2_classLit;
10.21813 +}
10.21814 +
10.21815 +function UTF16Buffer(){
10.21816 +}
10.21817 +
10.21818 +_ = UTF16Buffer.prototype = new Object_0();
10.21819 +_.getClass$ = getClass_58;
10.21820 +_.typeId$ = 39;
10.21821 +_.buffer = null;
10.21822 +_.end = 0;
10.21823 +_.start = 0;
10.21824 +function $SAXException(this$static, message){
10.21825 + this$static.detailMessage = message;
10.21826 + this$static.exception = null;
10.21827 + return this$static;
10.21828 +}
10.21829 +
10.21830 +function $getMessage(this$static){
10.21831 + var message;
10.21832 + message = this$static.detailMessage;
10.21833 + if (message == null && !!this$static.exception) {
10.21834 + return this$static.exception.detailMessage;
10.21835 + }
10.21836 + else {
10.21837 + return message;
10.21838 + }
10.21839 +}
10.21840 +
10.21841 +function getClass_59(){
10.21842 + return Lorg_xml_sax_SAXException_2_classLit;
10.21843 +}
10.21844 +
10.21845 +function getMessage_0(){
10.21846 + return $getMessage(this);
10.21847 +}
10.21848 +
10.21849 +function toString_12(){
10.21850 + if (this.exception) {
10.21851 + return $toString_1(this.exception);
10.21852 + }
10.21853 + else {
10.21854 + return $toString_1(this);
10.21855 + }
10.21856 +}
10.21857 +
10.21858 +function SAXException(){
10.21859 +}
10.21860 +
10.21861 +_ = SAXException.prototype = new Exception();
10.21862 +_.getClass$ = getClass_59;
10.21863 +_.getMessage = getMessage_0;
10.21864 +_.toString$ = toString_12;
10.21865 +_.typeId$ = 40;
10.21866 +_.exception = null;
10.21867 +function $SAXParseException(this$static, message, locator){
10.21868 + this$static.detailMessage = message;
10.21869 + this$static.exception = null;
10.21870 + if (locator) {
10.21871 + $getLineNumber(locator);
10.21872 + $getColumnNumber(locator);
10.21873 + }
10.21874 + else {
10.21875 + }
10.21876 + return this$static;
10.21877 +}
10.21878 +
10.21879 +function $SAXParseException_0(this$static, message, locator, e){
10.21880 + this$static.detailMessage = message;
10.21881 + this$static.exception = e;
10.21882 + if (locator) {
10.21883 + $getLineNumber(locator);
10.21884 + $getColumnNumber(locator);
10.21885 + }
10.21886 + else {
10.21887 + }
10.21888 + return this$static;
10.21889 +}
10.21890 +
10.21891 +function getClass_60(){
10.21892 + return Lorg_xml_sax_SAXParseException_2_classLit;
10.21893 +}
10.21894 +
10.21895 +function SAXParseException(){
10.21896 +}
10.21897 +
10.21898 +_ = SAXParseException.prototype = new SAXException();
10.21899 +_.getClass$ = getClass_60;
10.21900 +_.typeId$ = 41;
10.21901 +function init_0(){
10.21902 + !!$stats && $stats({moduleName:$moduleName, subSystem:'startup', evtGroup:'moduleStartup', millis:(new Date()).getTime(), type:'onModuleLoadStart', className:'nu.validator.htmlparser.gwt.HtmlParserModule'});
10.21903 + Envjs.parseHtmlDocument = parseHtmlDocument;
10.21904 +}
10.21905 +
10.21906 +__defineParser__ = function gwtOnLoad(errFn, modName, modBase){
10.21907 + $moduleName = modName;
10.21908 + $moduleBase = modBase;
10.21909 + if (errFn)
10.21910 + try {
10.21911 + init_0();
10.21912 + }
10.21913 + catch (e) {
10.21914 + errFn(modName);
10.21915 + }
10.21916 + else {
10.21917 + init_0();
10.21918 + }
10.21919 +}
10.21920 +
10.21921 +function nullMethod(){
10.21922 +}
10.21923 +
10.21924 +var Ljava_lang_Object_2_classLit = createForClass('java.lang.', 'Object'), Lcom_google_gwt_user_client_Timer_2_classLit = createForClass('com.google.gwt.user.client.', 'Timer'), Ljava_lang_Throwable_2_classLit = createForClass('java.lang.', 'Throwable'), Ljava_lang_Exception_2_classLit = createForClass('java.lang.', 'Exception'), Ljava_lang_RuntimeException_2_classLit = createForClass('java.lang.', 'RuntimeException'), Lcom_google_gwt_core_client_JavaScriptException_2_classLit = createForClass('com.google.gwt.core.client.', 'JavaScriptException'), Lcom_google_gwt_core_client_JavaScriptObject_2_classLit = createForClass('com.google.gwt.core.client.', 'JavaScriptObject$'), _3Ljava_lang_String_2_classLit = createForArray('[Ljava.lang.', 'String;'), Ljava_lang_Enum_2_classLit = createForClass('java.lang.', 'Enum'), _3_3D_classLit = createForArray('', '[[D'), Ljava_util_AbstractCollection_2_classLit = createForClass('java.util.', 'AbstractCollection'), Ljava_util_AbstractList_2_classLit = createForClass('java.util.', 'AbstractList'), Ljava_util_ArrayList_2_classLit = createForClass('java.util.', 'ArrayList'), Lcom_google_gwt_user_client_Timer$1_2_classLit = createForClass('com.google.gwt.user.client.', 'Timer$1'), Ljava_lang_IndexOutOfBoundsException_2_classLit = createForClass('java.lang.', 'IndexOutOfBoundsException'), Ljava_lang_ArrayStoreException_2_classLit = createForClass('java.lang.', 'ArrayStoreException'), _3C_classLit = createForArray('', '[C'), Ljava_lang_Class_2_classLit = createForClass('java.lang.', 'Class'), Ljava_lang_ClassCastException_2_classLit = createForClass('java.lang.', 'ClassCastException'), Ljava_lang_IllegalArgumentException_2_classLit = createForClass('java.lang.', 'IllegalArgumentException'), _3I_classLit = createForArray('', '[I'), Ljava_lang_NullPointerException_2_classLit = createForClass('java.lang.', 'NullPointerException'), Ljava_lang_String_2_classLit = createForClass('java.lang.', 'String'), Ljava_lang_StringBuffer_2_classLit = createForClass('java.lang.', 'StringBuffer'), Ljava_lang_StringBuilder_2_classLit = createForClass('java.lang.', 'StringBuilder'), Ljava_lang_StringIndexOutOfBoundsException_2_classLit = createForClass('java.lang.', 'StringIndexOutOfBoundsException'), Ljava_lang_UnsupportedOperationException_2_classLit = createForClass('java.lang.', 'UnsupportedOperationException'), _3Ljava_lang_Object_2_classLit = createForArray('[Ljava.lang.', 'Object;'), Ljava_util_AbstractMap_2_classLit = createForClass('java.util.', 'AbstractMap'), Ljava_util_AbstractHashMap_2_classLit = createForClass('java.util.', 'AbstractHashMap'), Ljava_util_AbstractSet_2_classLit = createForClass('java.util.', 'AbstractSet'), Ljava_util_AbstractHashMap$EntrySet_2_classLit = createForClass('java.util.', 'AbstractHashMap$EntrySet'), Ljava_util_AbstractHashMap$EntrySetIterator_2_classLit = createForClass('java.util.', 'AbstractHashMap$EntrySetIterator'), Ljava_util_AbstractMapEntry_2_classLit = createForClass('java.util.', 'AbstractMapEntry'), Ljava_util_AbstractHashMap$MapEntryNull_2_classLit = createForClass('java.util.', 'AbstractHashMap$MapEntryNull'), Ljava_util_AbstractHashMap$MapEntryString_2_classLit = createForClass('java.util.', 'AbstractHashMap$MapEntryString'), Ljava_util_AbstractList$IteratorImpl_2_classLit = createForClass('java.util.', 'AbstractList$IteratorImpl'), Ljava_util_AbstractList$ListIteratorImpl_2_classLit = createForClass('java.util.', 'AbstractList$ListIteratorImpl'), Ljava_util_AbstractSequentialList_2_classLit = createForClass('java.util.', 'AbstractSequentialList'), Ljava_util_Comparators$1_2_classLit = createForClass('java.util.', 'Comparators$1'), Ljava_util_HashMap_2_classLit = createForClass('java.util.', 'HashMap'), Ljava_util_LinkedList_2_classLit = createForClass('java.util.', 'LinkedList'), Ljava_util_LinkedList$ListIteratorImpl_2_classLit = createForClass('java.util.', 'LinkedList$ListIteratorImpl'), Ljava_util_LinkedList$Node_2_classLit = createForClass('java.util.', 'LinkedList$Node'), Ljava_util_NoSuchElementException_2_classLit = createForClass('java.util.', 'NoSuchElementException'), Lnu_validator_htmlparser_common_DoctypeExpectation_2_classLit = createForEnum('nu.validator.htmlparser.common.', 'DoctypeExpectation'), Lnu_validator_htmlparser_common_DocumentMode_2_classLit = createForEnum('nu.validator.htmlparser.common.', 'DocumentMode'), Lnu_validator_htmlparser_common_XmlViolationPolicy_2_classLit = createForEnum('nu.validator.htmlparser.common.', 'XmlViolationPolicy'), Lnu_validator_htmlparser_impl_TreeBuilder_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'TreeBuilder'), Lnu_validator_htmlparser_impl_CoalescingTreeBuilder_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'CoalescingTreeBuilder'), Lnu_validator_htmlparser_gwt_BrowserTreeBuilder_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'BrowserTreeBuilder'), Lnu_validator_htmlparser_gwt_BrowserTreeBuilder$ScriptHolder_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'BrowserTreeBuilder$ScriptHolder'), Lnu_validator_htmlparser_gwt_HtmlParser_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'HtmlParser'), Lnu_validator_htmlparser_gwt_HtmlParser$1_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'HtmlParser$1'), Lnu_validator_htmlparser_gwt_ParseEndListener_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'ParseEndListener'), _3Z_classLit = createForArray('', '[Z'), _3Lnu_validator_htmlparser_impl_AttributeName_2_classLit = createForArray('[Lnu.validator.htmlparser.impl.', 'AttributeName;'), Lnu_validator_htmlparser_impl_AttributeName_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'AttributeName'), _3Lnu_validator_htmlparser_impl_ElementName_2_classLit = createForArray('[Lnu.validator.htmlparser.impl.', 'ElementName;'), Lnu_validator_htmlparser_impl_ElementName_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'ElementName'), Lnu_validator_htmlparser_impl_Tokenizer_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'Tokenizer'), Lnu_validator_htmlparser_impl_ErrorReportingTokenizer_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'ErrorReportingTokenizer'), Lnu_validator_htmlparser_impl_HtmlAttributes_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'HtmlAttributes'), Lnu_validator_htmlparser_impl_LocatorImpl_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'LocatorImpl'), _3_3C_classLit = createForArray('', '[[C'), Lnu_validator_htmlparser_impl_StackNode_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'StackNode'), _3Lnu_validator_htmlparser_impl_StackNode_2_classLit = createForArray('[Lnu.validator.htmlparser.impl.', 'StackNode;'), Lnu_validator_htmlparser_impl_UTF16Buffer_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'UTF16Buffer'), Lorg_xml_sax_SAXException_2_classLit = createForClass('org.xml.sax.', 'SAXException'), Lorg_xml_sax_SAXParseException_2_classLit = createForClass('org.xml.sax.', 'SAXParseException');
10.21925 +if (false) { var __gwt_initHandlers = nu_validator_htmlparser_HtmlParser.__gwt_initHandlers; nu_validator_htmlparser_HtmlParser.onScriptLoad(gwtOnLoad);}})();
10.21926 +
10.21927 +/**
10.21928 +* DOMParser
10.21929 +*/
10.21930 +
10.21931 +__defineParser__(function(e){
10.21932 + console.log('Error loading html 5 parser implementation');
10.21933 +}, 'nu_validator_htmlparser_HtmlParser', '');
10.21934 +
10.21935 +/*DOMParser = function(principle, documentURI, baseURI){};
10.21936 +__extend__(DOMParser.prototype,{
10.21937 + parseFromString: function(xmlstring, mimetype){
10.21938 + //console.log('DOMParser.parseFromString %s', mimetype);
10.21939 + var xmldoc = new Document(new DOMImplementation());
10.21940 + return XMLParser.parseDocument(xmlstring, xmldoc, mimetype);
10.21941 + }
10.21942 +});*/
10.21943 +
10.21944 +XMLParser.parseDocument = function(xmlstring, xmldoc, mimetype){
10.21945 + //console.log('XMLParser.parseDocument');
10.21946 + var tmpdoc = new Document(new DOMImplementation()),
10.21947 + parent,
10.21948 + importedNode,
10.21949 + tmpNode;
10.21950 +
10.21951 + if(mimetype && mimetype == 'text/xml'){
10.21952 + //console.log('mimetype: text/xml');
10.21953 + tmpdoc.baseURI = 'http://envjs.com/xml';
10.21954 + xmlstring = '<html><head></head><body>'+
10.21955 + '<envjs_1234567890 xmlns="envjs_1234567890">'
10.21956 + +xmlstring+
10.21957 + '</envjs_1234567890>'+
10.21958 + '</body></html>';
10.21959 + Envjs.parseHtmlDocument(xmlstring, tmpdoc, false, null, null);
10.21960 + parent = tmpdoc.getElementsByTagName('envjs_1234567890')[0];
10.21961 + }else{
10.21962 + Envjs.parseHtmlDocument(xmlstring, tmpdoc, false, null, null);
10.21963 + parent = tmpdoc.documentElement;
10.21964 + }
10.21965 +
10.21966 + while(xmldoc.firstChild != null){
10.21967 + xmldoc.removeChild( xmldoc.firstChild );
10.21968 + }
10.21969 + while(parent.firstChild != null){
10.21970 + tmpNode = parent.removeChild( parent.firstChild );
10.21971 + importedNode = xmldoc.importNode( tmpNode, true);
10.21972 + xmldoc.appendChild( importedNode );
10.21973 + }
10.21974 + return xmldoc;
10.21975 +};
10.21976 +
10.21977 +var __fragmentCache__ = {length:0},
10.21978 + __cachable__ = 255;
10.21979 +
10.21980 +HTMLParser.parseDocument = function(htmlstring, htmldoc){
10.21981 + //console.log('HTMLParser.parseDocument %s', htmldoc.async);
10.21982 + htmldoc.parsing = true;
10.21983 + Envjs.parseHtmlDocument(htmlstring, htmldoc, htmldoc.async, null, null);
10.21984 + //Envjs.wait(-1);
10.21985 + return htmldoc;
10.21986 +};
10.21987 +HTMLParser.parseFragment = function(htmlstring, element){
10.21988 + //console.log('HTMLParser.parseFragment')
10.21989 + // fragment is allowed to be an element as well
10.21990 + var tmpdoc,
10.21991 + parent,
10.21992 + importedNode,
10.21993 + tmpNode,
10.21994 + length,
10.21995 + i,
10.21996 + docstring;
10.21997 + //console.log('parsing fragment: %s', htmlstring);
10.21998 + //console.log('__fragmentCache__.length %s', __fragmentCache__.length)
10.21999 + if( htmlstring.length > __cachable__ && htmlstring in __fragmentCache__){
10.22000 + tmpdoc = __fragmentCache__[htmlstring];
10.22001 + }else{
10.22002 + //console.log('parsing html fragment \n%s', htmlstring);
10.22003 + tmpdoc = new HTMLDocument(new DOMImplementation());
10.22004 +
10.22005 +
10.22006 + // Need some indicator that this document isn't THE document
10.22007 + // to fire off img.src change events and other items.
10.22008 + // Otherwise, what happens is the tmpdoc fires and img.src
10.22009 + // event, then when it's all imported to the original document
10.22010 + // it happens again.
10.22011 +
10.22012 + tmpdoc.fragment = true;
10.22013 +
10.22014 + //preserves leading white space
10.22015 + docstring = '<html><head></head><body>'+
10.22016 + '<envjs_1234567890 xmlns="envjs_1234567890">'
10.22017 + +htmlstring+
10.22018 + '</envjs_1234567890>'+
10.22019 + '</body></html>';
10.22020 + Envjs.parseHtmlDocument(docstring,tmpdoc, false, null,null);
10.22021 + if(htmlstring.length > __cachable__ ){
10.22022 + tmpdoc.normalizeDocument();
10.22023 + __fragmentCache__[htmlstring] = tmpdoc;
10.22024 + __fragmentCache__.length += htmlstring.length;
10.22025 + tmpdoc.cached = true;
10.22026 + }else{
10.22027 + tmpdoc.cached = false;
10.22028 + }
10.22029 + }
10.22030 +
10.22031 + //parent is envjs_1234567890 element
10.22032 + parent = tmpdoc.body.childNodes[0];
10.22033 + while(element.firstChild != null){
10.22034 + //zap the elements children so we can import
10.22035 + element.removeChild( element.firstChild );
10.22036 + }
10.22037 +
10.22038 + if(tmpdoc.cached){
10.22039 + length = parent.childNodes.length;
10.22040 + for(i=0;i<length;i++){
10.22041 + importedNode = element.importNode( parent.childNodes[i], true );
10.22042 + element.appendChild( importedNode );
10.22043 + }
10.22044 + }else{
10.22045 + while(parent.firstChild != null){
10.22046 + tmpNode = parent.removeChild( parent.firstChild );
10.22047 + importedNode = element.importNode( tmpNode, true);
10.22048 + element.appendChild( importedNode );
10.22049 + }
10.22050 + }
10.22051 +
10.22052 + // console.log('finished fragment: %s', element.outerHTML);
10.22053 + return element;
10.22054 +};
10.22055 +
10.22056 +var __clearFragmentCache__ = function(){
10.22057 + __fragmentCache__ = {};
10.22058 +}
10.22059 +
10.22060 +
10.22061 +/**
10.22062 + * @name Document
10.22063 + * @w3c:domlevel 2
10.22064 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
10.22065 + */
10.22066 +__extend__(Document.prototype, {
10.22067 + loadXML : function(xmlString) {
10.22068 + //console.log('Parser::Document.loadXML');
10.22069 + // create Document
10.22070 + if(this === document){
10.22071 + //$debug("Setting internal window.document");
10.22072 + document = this;
10.22073 + }
10.22074 + // populate Document
10.22075 + try {
10.22076 + // make sure this document object is empty before we try to load ...
10.22077 + this.attributes = new NamedNodeMap(this, this);
10.22078 + this._namespaces = new NamespaceNodeMap(this, this);
10.22079 + this._readonly = false;
10.22080 +
10.22081 + XMLParser.parseDocument(xmlString, this);
10.22082 +
10.22083 + Envjs.wait(-1);
10.22084 + } catch (e) {
10.22085 + //$error(e);
10.22086 + }
10.22087 + return this;
10.22088 + }
10.22089 +});
10.22090 +
10.22091 +
10.22092 +__extend__(HTMLDocument.prototype, {
10.22093 +
10.22094 + open : function() {
10.22095 + //console.log('opening doc for write.');
10.22096 + if (! this._writebuffer) {
10.22097 + this._writebuffer = [];
10.22098 + }
10.22099 + },
10.22100 + close : function() {
10.22101 + //console.log('closing doc.');
10.22102 + if (this._writebuffer) {
10.22103 + HTMLParser.parseDocument(this._writebuffer.join(''), this);
10.22104 + this._writebuffer = null;
10.22105 + //console.log('finished writing doc.');
10.22106 + }
10.22107 + },
10.22108 +
10.22109 + /**
10.22110 + * http://dev.w3.org/html5/spec/Overview.html#document.write
10.22111 + */
10.22112 + write: function(htmlstring) {
10.22113 + //console.log('writing doc.');
10.22114 + this.open();
10.22115 + this._writebuffer.push(htmlstring);
10.22116 + },
10.22117 +
10.22118 + /**
10.22119 + * http://dev.w3.org/html5/spec/Overview.html#dom-document-writeln
10.22120 + */
10.22121 + writeln: function(htmlstring) {
10.22122 + this.open();
10.22123 + this._writebuffer.push(htmlstring + '\n');
10.22124 + }
10.22125 +});
10.22126 +
10.22127 +/**
10.22128 + * elementPopped is called by the parser in two cases
10.22129 + *
10.22130 + * - an 'tag' is * complete (all children process and end tag, real or
10.22131 + * implied is * processed)
10.22132 + * - a replaceElement happens (this happens by making placeholder
10.22133 + * nodes and then the real one is swapped in.
10.22134 + *
10.22135 + */
10.22136 +var __elementPopped__ = function(ns, name, node){
10.22137 + //console.log('popped html element %s %s %s', ns, name, node);
10.22138 + var doc = node.ownerDocument,
10.22139 + okay,
10.22140 + event;
10.22141 + switch(doc.parsing){
10.22142 + case false:
10.22143 + //innerHTML so dont do loading patterns for parsing
10.22144 + //console.log('element popped (implies innerHTML) not in parsing mode %s', node.nodeName);
10.22145 + break;
10.22146 + case true:
10.22147 + switch(doc+''){
10.22148 + case '[object XMLDocument]':
10.22149 + break;
10.22150 + case '[object HTMLDocument]':
10.22151 + switch(node.namespaceURI){
10.22152 + case "http://n.validator.nu/placeholder/":
10.22153 + //console.log('got script during parsing %s', node.textContent);
10.22154 + break;
10.22155 + case null:
10.22156 + case "":
10.22157 + case "http://www.w3.org/1999/xhtml":
10.22158 + switch(name.toLowerCase()){
10.22159 + case 'script':
10.22160 + try{
10.22161 + okay = Envjs.loadLocalScript(node, null);
10.22162 + // console.log('loaded script? %s %s', node.uuid, okay);
10.22163 + // only fire event if we actually had something to load
10.22164 + if (node.src && node.src.length > 0){
10.22165 + event = doc.createEvent('HTMLEvents');
10.22166 + event.initEvent( okay ? "load" : "error", false, false );
10.22167 + node.dispatchEvent( event, false );
10.22168 + }
10.22169 + }catch(e){
10.22170 + console.log('error loading html element %s %s %s %e', ns, name, node, e.toString());
10.22171 + }
10.22172 + break;
10.22173 + case 'frame':
10.22174 + case 'iframe':
10.22175 + node.contentWindow = { };
10.22176 + node.contentDocument = new HTMLDocument(new DOMImplementation(), node.contentWindow);
10.22177 + node.contentWindow.document = node.contentDocument;
10.22178 + try{
10.22179 + Window;
10.22180 + }catch(e){
10.22181 + node.contentDocument.addEventListener('DOMContentLoaded', function(){
10.22182 + event = node.contentDocument.createEvent('HTMLEvents');
10.22183 + event.initEvent("load", false, false);
10.22184 + node.dispatchEvent( event, false );
10.22185 + });
10.22186 + }
10.22187 + try{
10.22188 + if (node.src && node.src.length > 0){
10.22189 + //console.log("getting content document for (i)frame from %s", node.src);
10.22190 + Envjs.loadFrame(node, Envjs.uri(node.src));
10.22191 + event = node.contentDocument.createEvent('HTMLEvents');
10.22192 + event.initEvent("load", false, false);
10.22193 + node.dispatchEvent( event, false );
10.22194 + }else{
10.22195 + //I dont like this being here:
10.22196 + //TODO: better mix-in strategy so the try/catch isnt required
10.22197 + try{
10.22198 + if(Window){
10.22199 + Envjs.loadFrame(node);
10.22200 + //console.log('src/html/document.js: triggering frame load');
10.22201 + event = node.contentDocument.createEvent('HTMLEvents');
10.22202 + event.initEvent("load", false, false);
10.22203 + node.dispatchEvent( event, false );
10.22204 + }
10.22205 + }catch(e){}
10.22206 + }
10.22207 + }catch(e){
10.22208 + console.log('error loading html element %s %e', node, e.toString());
10.22209 + }
10.22210 + /*try{
10.22211 + if (node.src && node.src.length > 0){
10.22212 + //console.log("getting content document for (i)frame from %s", node.src);
10.22213 + Envjs.loadFrame(node, Envjs.uri(node.src));
10.22214 + event = node.ownerDocument.createEvent('HTMLEvents');
10.22215 + event.initEvent("load", false, false);
10.22216 + node.dispatchEvent( event, false );
10.22217 + }else{
10.22218 + //console.log('src/parser/htmldocument: triggering frame load (no src)');
10.22219 + }
10.22220 + }catch(e){
10.22221 + console.log('error loading html element %s %s %s %e', ns, name, node, e.toString());
10.22222 + }*/
10.22223 + break;
10.22224 + case 'link':
10.22225 + if (node.href) {
10.22226 + __loadLink__(node, node.href);
10.22227 + }
10.22228 + break;
10.22229 + case 'option':
10.22230 + node._updateoptions();
10.22231 + break;
10.22232 + case 'img':
10.22233 + if (node.src){
10.22234 + __loadImage__(node, node.src);
10.22235 + }
10.22236 + break;
10.22237 + case 'html':
10.22238 + //console.log('html popped');
10.22239 + doc.parsing = false;
10.22240 + //DOMContentLoaded event
10.22241 + // try{
10.22242 + if(doc.createEvent){
10.22243 + event = doc.createEvent('Events');
10.22244 + event.initEvent("DOMContentLoaded", false, false);
10.22245 + doc.dispatchEvent( event, false );
10.22246 + }
10.22247 + /* }catch(e){
10.22248 + console.log('%s', e);
10.22249 + } */
10.22250 + try{
10.22251 + if(doc.createEvent){
10.22252 + event = doc.createEvent('HTMLEvents');
10.22253 + event.initEvent("load", false, false);
10.22254 + doc.dispatchEvent( event, false );
10.22255 + }
10.22256 + }catch(e){
10.22257 + console.log('%s', e);
10.22258 + }
10.22259 +
10.22260 + try{
10.22261 + if(doc.parentWindow){
10.22262 + event = doc.createEvent('HTMLEvents');
10.22263 + event.initEvent("load", false, false);
10.22264 + doc.parentWindow.dispatchEvent( event, false );
10.22265 + }
10.22266 + }catch(e){
10.22267 + console.log('%s', e);
10.22268 + }
10.22269 + try{
10.22270 + if(doc === window.document){
10.22271 + //console.log('triggering window.load')
10.22272 + event = doc.createEvent('HTMLEvents');
10.22273 + event.initEvent("load", false, false);
10.22274 + try{
10.22275 + window.dispatchEvent( event, false );
10.22276 + }catch(e){
10.22277 + console.log('%s', e);
10.22278 + }
10.22279 + }
10.22280 + }catch(e){
10.22281 + //console.log('%s', e);
10.22282 + //swallow
10.22283 + }
10.22284 + default:
10.22285 + if(node.getAttribute('onload')){
10.22286 + //console.log('%s onload', node);
10.22287 + node.onload();
10.22288 + }
10.22289 + break;
10.22290 + }//switch on name
10.22291 + default:
10.22292 + break;
10.22293 + }//switch on ns
10.22294 + break;
10.22295 + default:
10.22296 + console.log('element popped: %s %s', ns, name, node.ownerDocument+'');
10.22297 + }//switch on doc type
10.22298 + default:
10.22299 + break;
10.22300 + }//switch on parsing
10.22301 +};
10.22302 +
10.22303 +__extend__(HTMLElement.prototype,{
10.22304 + set innerHTML(html){
10.22305 + HTMLParser.parseFragment(html, this);
10.22306 + }
10.22307 +});
10.22308 +
10.22309 +/**
10.22310 + * @author john resig & the envjs team
10.22311 + * @uri http://www.envjs.com/
10.22312 + * @copyright 2008-2010
10.22313 + * @license MIT
10.22314 + */
10.22315 +//CLOSURE_END
10.22316 +}());
10.22317 +/*
10.22318 + * Envjs xhr.1.2.13
10.22319 + * Pure JavaScript Browser Environment
10.22320 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.22321 + * Copyright 2008-2010 John Resig, under the MIT License
10.22322 + *
10.22323 + * Parts of the implementation originally written by Yehuda Katz.
10.22324 + *
10.22325 + * This file simply provides the global definitions we need to
10.22326 + * be able to correctly implement to core browser (XML)HTTPRequest
10.22327 + * interfaces.
10.22328 + */
10.22329 +var Location,
10.22330 + XMLHttpRequest;
10.22331 +
10.22332 +/*
10.22333 + * Envjs xhr.1.2.13
10.22334 + * Pure JavaScript Browser Environment
10.22335 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.22336 + * Copyright 2008-2010 John Resig, under the MIT License
10.22337 + */
10.22338 +
10.22339 +//CLOSURE_START
10.22340 +(function(){
10.22341 +
10.22342 +
10.22343 +
10.22344 +
10.22345 +
10.22346 +/**
10.22347 + * @author john resig
10.22348 + */
10.22349 +// Helper method for extending one object with another.
10.22350 +function __extend__(a,b) {
10.22351 + for ( var i in b ) {
10.22352 + var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
10.22353 + if ( g || s ) {
10.22354 + if ( g ) { a.__defineGetter__(i, g); }
10.22355 + if ( s ) { a.__defineSetter__(i, s); }
10.22356 + } else {
10.22357 + a[i] = b[i];
10.22358 + }
10.22359 + } return a;
10.22360 +}
10.22361 +
10.22362 +/**
10.22363 + * @author john resig
10.22364 + */
10.22365 +//from jQuery
10.22366 +function __setArray__( target, array ) {
10.22367 + // Resetting the length to 0, then using the native Array push
10.22368 + // is a super-fast way to populate an object with array-like properties
10.22369 + target.length = 0;
10.22370 + Array.prototype.push.apply( target, array );
10.22371 +}
10.22372 +
10.22373 +/**
10.22374 + * @author ariel flesler
10.22375 + * http://flesler.blogspot.com/2008/11/fast-trim-function-for-javascript.html
10.22376 + * @param {Object} str
10.22377 + */
10.22378 +function __trim__( str ){
10.22379 + return (str || "").replace( /^\s+|\s+$/g, "" );
10.22380 +}
10.22381 +
10.22382 +
10.22383 +/**
10.22384 + * @todo: document
10.22385 + */
10.22386 +__extend__(Document.prototype,{
10.22387 + load: function(url){
10.22388 + if(this.documentURI == 'about:html'){
10.22389 + this.location.assign(url);
10.22390 + }else if(this.documentURI == url){
10.22391 + this.location.reload(false);
10.22392 + }else{
10.22393 + this.location.replace(url);
10.22394 + }
10.22395 + },
10.22396 + get location(){
10.22397 + return new Location(this.documentURI, this);
10.22398 + },
10.22399 + set location(url){
10.22400 + //very important or you will go into an infinite
10.22401 + //loop when creating a xml document
10.22402 + if(url) {
10.22403 + this.location.replace(url);
10.22404 + }
10.22405 + }
10.22406 +});
10.22407 +
10.22408 +
10.22409 +HTMLFormElement.prototype.submit = function(){
10.22410 + var event = __submit__(this),
10.22411 + serialized,
10.22412 + xhr,
10.22413 + method,
10.22414 + action;
10.22415 + if(!event.cancelled){
10.22416 + serialized = __formSerialize__(this);
10.22417 + xhr = new XMLHttpRequest();
10.22418 + method = this.method !== ""?this.method:"GET";
10.22419 + action = this.action !== ""?this.action:this.ownerDocument.baseURI;
10.22420 + xhr.open(method, action, false);
10.22421 + xhr.send(data, false);
10.22422 + if(xhr.readyState === 4){
10.22423 + __exchangeHTMLDocument__(this.ownerDocument, xhr.responseText, url);
10.22424 + }
10.22425 + }
10.22426 +};
10.22427 +
10.22428 +/**
10.22429 + * Form Submissions
10.22430 + *
10.22431 + * This code is borrow largely from jquery.params and jquery.form.js
10.22432 + *
10.22433 + * formToArray() gathers form element data into an array of objects that can
10.22434 + * be passed to any of the following ajax functions: $.get, $.post, or load.
10.22435 + * Each object in the array has both a 'name' and 'value' property. An example of
10.22436 + * an array for a simple login form might be:
10.22437 + *
10.22438 + * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
10.22439 + *
10.22440 + * It is this array that is passed to pre-submit callback functions provided to the
10.22441 + * ajaxSubmit() and ajaxForm() methods.
10.22442 + *
10.22443 + * The semantic argument can be used to force form serialization in semantic order.
10.22444 + * This is normally true anyway, unless the form contains input elements of type='image'.
10.22445 + * If your form must be submitted with name/value pairs in semantic order and your form
10.22446 + * contains an input of type='image" then pass true for this arg, otherwise pass false
10.22447 + * (or nothing) to avoid the overhead for this logic.
10.22448 + *
10.22449 + *
10.22450 + * @name formToArray
10.22451 + * @param semantic true if serialization must maintain strict semantic ordering of elements (slower)
10.22452 + * @type Array<Object>
10.22453 + */
10.22454 +var __formToArray__ = function(form, semantic) {
10.22455 + var array = [],
10.22456 + elements = semantic ? form.getElementsByTagName('*') : form.elements,
10.22457 + element,
10.22458 + i,j,imax, jmax,
10.22459 + name,
10.22460 + value;
10.22461 +
10.22462 + if (!elements) {
10.22463 + return array;
10.22464 + }
10.22465 +
10.22466 + imax = elements.length;
10.22467 + for(i=0; i < imax; i++) {
10.22468 + element = elements[i];
10.22469 + name = element.name;
10.22470 + if (!name) {
10.22471 + continue;
10.22472 + }
10.22473 + if (semantic && form.clk && element.type === "image") {
10.22474 + // handle image inputs on the fly when semantic == true
10.22475 + if(!element.disabled && form.clk == element) {
10.22476 + array.push({
10.22477 + name: name+'.x',
10.22478 + value: form.clk_x
10.22479 + },{
10.22480 + name: name+'.y',
10.22481 + value: form.clk_y
10.22482 + });
10.22483 + }
10.22484 + continue;
10.22485 + }
10.22486 +
10.22487 + value = __fieldValue__(element, true);
10.22488 + if (value && value.constructor == Array) {
10.22489 + jmax = value.length;
10.22490 + for(j=0; j < jmax; j++){
10.22491 + array.push({name: name, value: value[j]});
10.22492 + }
10.22493 + } else if (value !== null && typeof value != 'undefined'){
10.22494 + array.push({name: name, value: value});
10.22495 + }
10.22496 + }
10.22497 +
10.22498 + if (!semantic && form.clk) {
10.22499 + // input type=='image' are not found in elements array! handle them here
10.22500 + elements = form.getElementsByTagName("input");
10.22501 + imax = imax=elements.length;
10.22502 + for(i=0; i < imax; i++) {
10.22503 + element = elements[i];
10.22504 + name = element.name;
10.22505 + if(name && !element.disabled && element.type == "image" && form.clk == input) {
10.22506 + array.push(
10.22507 + {name: name+'.x', value: form.clk_x},
10.22508 + {name: name+'.y', value: form.clk_y});
10.22509 + }
10.22510 + }
10.22511 + }
10.22512 + return array;
10.22513 +};
10.22514 +
10.22515 +
10.22516 +/**
10.22517 + * Serializes form data into a 'submittable' string. This method will return a string
10.22518 + * in the format: name1=value1&name2=value2
10.22519 + *
10.22520 + * The semantic argument can be used to force form serialization in semantic order.
10.22521 + * If your form must be submitted with name/value pairs in semantic order then pass
10.22522 + * true for this arg, otherwise pass false (or nothing) to avoid the overhead for
10.22523 + * this logic (which can be significant for very large forms).
10.22524 + *
10.22525 + *
10.22526 + * @name formSerialize
10.22527 + * @param semantic true if serialization must maintain strict semantic ordering of elements (slower)
10.22528 + * @type String
10.22529 + */
10.22530 +var __formSerialize__ = function(form, semantic) {
10.22531 + //hand off to param for proper encoding
10.22532 + return __param__(__formToArray__(form, semantic));
10.22533 +};
10.22534 +
10.22535 +
10.22536 +/**
10.22537 + * Serializes all field elements inputs Array into a query string.
10.22538 + * This method will return a string in the format: name1=value1&name2=value2
10.22539 + *
10.22540 + * The successful argument controls whether or not serialization is limited to
10.22541 + * 'successful' controls (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
10.22542 + * The default value of the successful argument is true.
10.22543 + *
10.22544 + *
10.22545 + * @name fieldSerialize
10.22546 + * @param successful true if only successful controls should be serialized (default is true)
10.22547 + * @type String
10.22548 + */
10.22549 +var __fieldSerialize__ = function(inputs, successful) {
10.22550 + var array = [],
10.22551 + input,
10.22552 + name,
10.22553 + value,
10.22554 + i,j, imax, jmax;
10.22555 +
10.22556 + imax = inputs.length;
10.22557 + for(i=0; i<imax; i++){
10.22558 + input = inputs[i];
10.22559 + name = input.name;
10.22560 + if (!name) {
10.22561 + return '';
10.22562 + }
10.22563 + value = __fieldValue__(input, successful);
10.22564 + if (value && value.constructor == Array) {
10.22565 + jmax = value.length;
10.22566 + for (j=0; j < jmax; j++){
10.22567 + array.push({
10.22568 + name: name,
10.22569 + value: value[j]
10.22570 + });
10.22571 + }
10.22572 + }else if (value !== null && typeof value != 'undefined'){
10.22573 + array.push({
10.22574 + name: input.name,
10.22575 + value: value
10.22576 + });
10.22577 + }
10.22578 + }
10.22579 +
10.22580 + //hand off for proper encoding
10.22581 + return __param__(array);
10.22582 +};
10.22583 +
10.22584 +
10.22585 +/**
10.22586 + * Returns the value(s) of the element in the matched set. For example, consider the following form:
10.22587 + *
10.22588 + *
10.22589 + * The successful argument controls whether or not the field element must be 'successful'
10.22590 + * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
10.22591 + * The default value of the successful argument is true. If this value is false the value(s)
10.22592 + * for each element is returned.
10.22593 + *
10.22594 + * Note: This method *always* returns an array. If no valid value can be determined the
10.22595 + * array will be empty, otherwise it will contain one or more values.
10.22596 + *
10.22597 + *
10.22598 + * @name fieldValue
10.22599 + * @param Boolean successful true if only the values for successful controls
10.22600 + * should be returned (default is true)
10.22601 + * @type Array<String>
10.22602 + */
10.22603 +var __fieldValues__ = function(inputs, successful) {
10.22604 + var i,
10.22605 + imax = inputs.length,
10.22606 + element,
10.22607 + values = [],
10.22608 + value;
10.22609 + for (i=0; i < imax; i++) {
10.22610 + element = inputs[i];
10.22611 + value = __fieldValue__(element, successful);
10.22612 + if (value === null || typeof value == 'undefined' ||
10.22613 + (value.constructor == Array && !value.length)) {
10.22614 + continue;
10.22615 + }
10.22616 + if (value.constructor == Array) {
10.22617 + Array.prototype.push(values, value);
10.22618 + } else {
10.22619 + values.push(value);
10.22620 + }
10.22621 + }
10.22622 + return values;
10.22623 +};
10.22624 +
10.22625 +/**
10.22626 + * Returns the value of the field element.
10.22627 + *
10.22628 + * The successful argument controls whether or not the field element must be 'successful'
10.22629 + * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
10.22630 + * The default value of the successful argument is true. If the given element is not
10.22631 + * successful and the successful arg is not false then the returned value will be null.
10.22632 + *
10.22633 + * Note: If the successful flag is true (default) but the element is not successful, the return will be null
10.22634 + * Note: The value returned for a successful select-multiple element will always be an array.
10.22635 + * Note: If the element has no value the return value will be undefined.
10.22636 + *
10.22637 + * @name fieldValue
10.22638 + * @param Element el The DOM element for which the value will be returned
10.22639 + * @param Boolean successful true if value returned must be for a successful controls (default is true)
10.22640 + * @type String or Array<String> or null or undefined
10.22641 + */
10.22642 +var __fieldValue__ = function(element, successful) {
10.22643 + var name = element.name,
10.22644 + type = element.type,
10.22645 + tag = element.tagName.toLowerCase(),
10.22646 + index,
10.22647 + array,
10.22648 + options,
10.22649 + option,
10.22650 + one,
10.22651 + i, imax,
10.22652 + value;
10.22653 +
10.22654 + if (typeof successful == 'undefined') {
10.22655 + successful = true;
10.22656 + }
10.22657 +
10.22658 + if (successful && (!name || element.disabled || type == 'reset' || type == 'button' ||
10.22659 + (type == 'checkbox' || type == 'radio') && !element.checked ||
10.22660 + (type == 'submit' || type == 'image') &&
10.22661 + element.form && element.form.clk != element || tag === 'select' &&
10.22662 + element.selectedIndex === -1)) {
10.22663 + return null;
10.22664 + }
10.22665 +
10.22666 + if (tag === 'select') {
10.22667 + index = element.selectedIndex;
10.22668 + if (index < 0) {
10.22669 + return null;
10.22670 + }
10.22671 + array = [];
10.22672 + options = element.options;
10.22673 + one = (type == 'select-one');
10.22674 + imax = (one ? index+1 : options.length);
10.22675 + i = (one ? index : 0);
10.22676 + for( i; i < imax; i++) {
10.22677 + option = options[i];
10.22678 + if (option.selected) {
10.22679 + value = option.value;
10.22680 + if (one) {
10.22681 + return value;
10.22682 + }
10.22683 + array.push(value);
10.22684 + }
10.22685 + }
10.22686 + return array;
10.22687 + }
10.22688 + return element.value;
10.22689 +};
10.22690 +
10.22691 +
10.22692 +/**
10.22693 + * Clears the form data. Takes the following actions on the form's input fields:
10.22694 + * - input text fields will have their 'value' property set to the empty string
10.22695 + * - select elements will have their 'selectedIndex' property set to -1
10.22696 + * - checkbox and radio inputs will have their 'checked' property set to false
10.22697 + * - inputs of type submit, button, reset, and hidden will *not* be effected
10.22698 + * - button elements will *not* be effected
10.22699 + *
10.22700 + *
10.22701 + * @name clearForm
10.22702 + */
10.22703 +var __clearForm__ = function(form) {
10.22704 + var i,
10.22705 + j, jmax,
10.22706 + elements,
10.22707 + resetable = ['input','select','textarea'];
10.22708 + for(i=0; i<resetable.length; i++){
10.22709 + elements = form.getElementsByTagName(resetable[i]);
10.22710 + jmax = elements.length;
10.22711 + for(j=0;j<jmax;j++){
10.22712 + __clearField__(elements[j]);
10.22713 + }
10.22714 + }
10.22715 +};
10.22716 +
10.22717 +/**
10.22718 + * Clears the selected form element. Takes the following actions on the element:
10.22719 + * - input text fields will have their 'value' property set to the empty string
10.22720 + * - select elements will have their 'selectedIndex' property set to -1
10.22721 + * - checkbox and radio inputs will have their 'checked' property set to false
10.22722 + * - inputs of type submit, button, reset, and hidden will *not* be effected
10.22723 + * - button elements will *not* be effected
10.22724 + *
10.22725 + * @name clearFields
10.22726 + */
10.22727 +var __clearField__ = function(element) {
10.22728 + var type = element.type,
10.22729 + tag = element.tagName.toLowerCase();
10.22730 + if (type == 'text' || type == 'password' || tag === 'textarea') {
10.22731 + element.value = '';
10.22732 + } else if (type == 'checkbox' || type == 'radio') {
10.22733 + element.checked = false;
10.22734 + } else if (tag === 'select') {
10.22735 + element.selectedIndex = -1;
10.22736 + }
10.22737 +};
10.22738 +
10.22739 +
10.22740 +// Serialize an array of key/values into a query string
10.22741 +var __param__= function( array ) {
10.22742 + var i, serialized = [];
10.22743 +
10.22744 + // Serialize the key/values
10.22745 + for(i=0; i<array.length; i++){
10.22746 + serialized[ serialized.length ] =
10.22747 + encodeURIComponent(array[i].name) + '=' +
10.22748 + encodeURIComponent(array[i].value);
10.22749 + }
10.22750 +
10.22751 + // Return the resulting serialization
10.22752 + return serialized.join("&").replace(/%20/g, "+");
10.22753 +};
10.22754 +
10.22755 +/**
10.22756 + * Location
10.22757 + *
10.22758 + * Mozilla MDC:
10.22759 + * https://developer.mozilla.org/En/DOM/Window.location
10.22760 + * https://developer.mozilla.org/en/DOM/document.location
10.22761 + *
10.22762 + * HTML5: 6.10.4 The Location interface
10.22763 + * http://dev.w3.org/html5/spec/Overview.html#location
10.22764 + *
10.22765 + * HTML5: 2.5.3 Interfaces for URL manipulation
10.22766 + * http://dev.w3.org/html5/spec/Overview.html#url-decomposition-idl-attributes
10.22767 + * All of section 2.5 is worth reading, but 2.5.3 contains very
10.22768 + * detailed information on how getters/setter should work
10.22769 + *
10.22770 + * NOT IMPLEMENTED:
10.22771 + * HTML5: Section 6.10.4.1 Security -- prevents scripts from another domain
10.22772 + * from accessing most of the 'Location'
10.22773 + * Not sure if anyone implements this in HTML4
10.22774 + */
10.22775 +
10.22776 +Location = function(url, doc, history) {
10.22777 + //console.log('Location url %s', url);
10.22778 + var $url = url,
10.22779 + $document = doc ? doc : null,
10.22780 + $history = history ? history : null;
10.22781 +
10.22782 + var parts = Envjs.urlsplit($url);
10.22783 +
10.22784 + return {
10.22785 + get hash() {
10.22786 + return parts.fragment ? '#' + parts.fragment : parts.fragment;
10.22787 + },
10.22788 + set hash(s) {
10.22789 + if (s[0] === '#') {
10.22790 + parts.fragment = s.substr(1);
10.22791 + } else {
10.22792 + parts.fragment = s;
10.22793 + }
10.22794 + $url = Envjs.urlunsplit(parts);
10.22795 + if ($history) {
10.22796 + $history.add($url, 'hash');
10.22797 + }
10.22798 + },
10.22799 +
10.22800 + get host() {
10.22801 + return parts.netloc;
10.22802 + },
10.22803 + set host(s) {
10.22804 + if (!s || s === '') {
10.22805 + return;
10.22806 + }
10.22807 +
10.22808 + parts.netloc = s;
10.22809 + $url = Envjs.urlunsplit(parts);
10.22810 +
10.22811 + // this regenerates hostname & port
10.22812 + parts = Envjs.urlsplit($url);
10.22813 +
10.22814 + if ($history) {
10.22815 + $history.add( $url, 'host');
10.22816 + }
10.22817 + this.assign($url);
10.22818 + },
10.22819 +
10.22820 + get hostname() {
10.22821 + return parts.hostname;
10.22822 + },
10.22823 + set hostname(s) {
10.22824 + if (!s || s === '') {
10.22825 + return;
10.22826 + }
10.22827 +
10.22828 + parts.netloc = s;
10.22829 + if (parts.port != '') {
10.22830 + parts.netloc += ':' + parts.port;
10.22831 + }
10.22832 + parts.hostname = s;
10.22833 + $url = Envjs.urlunsplit(parts);
10.22834 + if ($history) {
10.22835 + $history.add( $url, 'hostname');
10.22836 + }
10.22837 + this.assign($url);
10.22838 + },
10.22839 +
10.22840 + get href() {
10.22841 + return $url;
10.22842 + },
10.22843 + set href(url) {
10.22844 + $url = url;
10.22845 + if ($history) {
10.22846 + $history.add($url, 'href');
10.22847 + }
10.22848 + this.assign($url);
10.22849 + },
10.22850 +
10.22851 + get pathname() {
10.22852 + return parts.path;
10.22853 + },
10.22854 + set pathname(s) {
10.22855 + if (s[0] === '/') {
10.22856 + parts.path = s;
10.22857 + } else {
10.22858 + parts.path = '/' + s;
10.22859 + }
10.22860 + $url = Envjs.urlunsplit(parts);
10.22861 +
10.22862 + if ($history) {
10.22863 + $history.add($url, 'pathname');
10.22864 + }
10.22865 + this.assign($url);
10.22866 + },
10.22867 +
10.22868 + get port() {
10.22869 + // make sure it's a string
10.22870 + return '' + parts.port;
10.22871 + },
10.22872 + set port(p) {
10.22873 + // make a string
10.22874 + var s = '' + p;
10.22875 + parts.port = s;
10.22876 + parts.netloc = parts.hostname + ':' + parts.port;
10.22877 + $url = Envjs.urlunsplit(parts);
10.22878 + if ($history) {
10.22879 + $history.add( $url, 'port');
10.22880 + }
10.22881 + this.assign($url);
10.22882 + },
10.22883 +
10.22884 + get protocol() {
10.22885 + return parts.scheme + ':';
10.22886 + },
10.22887 + set protocol(s) {
10.22888 + var i = s.indexOf(':');
10.22889 + if (i != -1) {
10.22890 + s = s.substr(0,i);
10.22891 + }
10.22892 + parts.scheme = s;
10.22893 + $url = Envjs.urlunsplit(parts);
10.22894 + if ($history) {
10.22895 + $history.add($url, 'protocol');
10.22896 + }
10.22897 + this.assign($url);
10.22898 + },
10.22899 +
10.22900 + get search() {
10.22901 + return (parts.query) ? '?' + parts.query : parts.query;
10.22902 + },
10.22903 + set search(s) {
10.22904 + if (s[0] == '?') {
10.22905 + s = s.substr(1);
10.22906 + }
10.22907 + parts.query = s;
10.22908 + $url = Envjs.urlunsplit(parts);
10.22909 + if ($history) {
10.22910 + $history.add($url, 'search');
10.22911 + }
10.22912 + this.assign($url);
10.22913 + },
10.22914 +
10.22915 + toString: function() {
10.22916 + return $url;
10.22917 + },
10.22918 +
10.22919 + assign: function(url) {
10.22920 + var _this = this,
10.22921 + xhr,
10.22922 + event,
10.22923 + cookie;
10.22924 +
10.22925 + //console.log('assigning %s',url);
10.22926 +
10.22927 + // update closure upvars
10.22928 + $url = url;
10.22929 + parts = Envjs.urlsplit($url);
10.22930 +
10.22931 + //we can only assign if this Location is associated with a document
10.22932 + if ($document) {
10.22933 + //console.log('fetching %s (async? %s)', url, $document.async);
10.22934 + xhr = new XMLHttpRequest();
10.22935 +
10.22936 + // TODO: make async flag a Envjs paramter
10.22937 + xhr.open('GET', url, false);//$document.async);
10.22938 +
10.22939 + // TODO: is there a better way to test if a node is an HTMLDocument?
10.22940 + if ($document.toString() === '[object HTMLDocument]') {
10.22941 + //tell the xhr to not parse the document as XML
10.22942 + //console.log('loading html document');
10.22943 + xhr.onreadystatechange = function() {
10.22944 + //console.log('readyState %s', xhr.readyState);
10.22945 + if (xhr.readyState === 4) {
10.22946 + $document.baseURI = new Location(url, $document);
10.22947 + //console.log('new document baseURI %s', $document.baseURI);
10.22948 + __exchangeHTMLDocument__($document, xhr.responseText, url);
10.22949 + }
10.22950 + };
10.22951 + xhr.send(null, false);
10.22952 + } else {
10.22953 + //Treat as an XMLDocument
10.22954 + xhr.onreadystatechange = function() {
10.22955 + if (xhr.readyState === 4) {
10.22956 + $document = xhr.responseXML;
10.22957 + $document.baseURI = $url;
10.22958 + if ($document.createEvent) {
10.22959 + event = $document.createEvent('Event');
10.22960 + event.initEvent('DOMContentLoaded');
10.22961 + $document.dispatchEvent( event, false );
10.22962 + }
10.22963 + }
10.22964 + };
10.22965 + xhr.send();
10.22966 + }
10.22967 +
10.22968 + };
10.22969 +
10.22970 + },
10.22971 + reload: function(forceget) {
10.22972 + //for now we have no caching so just proxy to assign
10.22973 + //console.log('reloading %s',$url);
10.22974 + this.assign($url);
10.22975 + },
10.22976 + replace: function(url) {
10.22977 + this.assign(url);
10.22978 + }
10.22979 + };
10.22980 +};
10.22981 +
10.22982 +var __exchangeHTMLDocument__ = function(doc, text, url) {
10.22983 + var html, head, title, body, event, e;
10.22984 + // try {
10.22985 + doc.baseURI = url;
10.22986 + HTMLParser.parseDocument(text, doc);
10.22987 + Envjs.wait();
10.22988 + /* } catch (e) {
10.22989 + console.log('parsererror %s', e);
10.22990 + try {
10.22991 + console.log('document \n %s', doc.documentElement.outerHTML);
10.22992 + } catch (e) {
10.22993 + // swallow
10.22994 + }
10.22995 + doc = new HTMLDocument(new DOMImplementation(), doc.ownerWindow);
10.22996 + html = doc.createElement('html');
10.22997 + head = doc.createElement('head');
10.22998 + title = doc.createElement('title');
10.22999 + body = doc.createElement('body');
10.23000 + title.appendChild(doc.createTextNode('Error'));
10.23001 + body.appendChild(doc.createTextNode('' + e));
10.23002 + head.appendChild(title);
10.23003 + html.appendChild(head);
10.23004 + html.appendChild(body);
10.23005 + doc.appendChild(html);
10.23006 + //console.log('default error document \n %s', doc.documentElement.outerHTML);
10.23007 +
10.23008 + //DOMContentLoaded event
10.23009 + if (doc.createEvent) {
10.23010 + event = doc.createEvent('Event');
10.23011 + event.initEvent('DOMContentLoaded', false, false);
10.23012 + doc.dispatchEvent( event, false );
10.23013 +
10.23014 + event = doc.createEvent('HTMLEvents');
10.23015 + event.initEvent('load', false, false);
10.23016 + doc.dispatchEvent( event, false );
10.23017 + }
10.23018 +
10.23019 + //finally fire the window.onload event
10.23020 + //TODO: this belongs in window.js which is a event
10.23021 + // event handler for DOMContentLoaded on document
10.23022 +
10.23023 + try {
10.23024 + if (doc === window.document) {
10.23025 + console.log('triggering window.load');
10.23026 + event = doc.createEvent('HTMLEvents');
10.23027 + event.initEvent('load', false, false);
10.23028 + window.dispatchEvent( event, false );
10.23029 + }
10.23030 + } catch (e) {
10.23031 + //console.log('window load event failed %s', e);
10.23032 + //swallow
10.23033 + }
10.23034 + }; */ /* closes return {... */
10.23035 +};
10.23036 +
10.23037 +/**
10.23038 + *
10.23039 + * @class XMLHttpRequest
10.23040 + * @author Originally implemented by Yehuda Katz
10.23041 + *
10.23042 + */
10.23043 +
10.23044 +// this implementation can be used without requiring a DOMParser
10.23045 +// assuming you dont try to use it to get xml/html documents
10.23046 +var domparser;
10.23047 +
10.23048 +XMLHttpRequest = function(){
10.23049 + this.headers = {};
10.23050 + this.responseHeaders = {};
10.23051 + this.aborted = false;//non-standard
10.23052 +};
10.23053 +
10.23054 +// defined by the standard: http://www.w3.org/TR/XMLHttpRequest/#xmlhttprequest
10.23055 +// but not provided by Firefox. Safari and others do define it.
10.23056 +XMLHttpRequest.UNSENT = 0;
10.23057 +XMLHttpRequest.OPEN = 1;
10.23058 +XMLHttpRequest.HEADERS_RECEIVED = 2;
10.23059 +XMLHttpRequest.LOADING = 3;
10.23060 +XMLHttpRequest.DONE = 4;
10.23061 +
10.23062 +XMLHttpRequest.prototype = {
10.23063 + open: function(method, url, async, user, password){
10.23064 + //console.log('openning xhr %s %s %s', method, url, async);
10.23065 + this.readyState = 1;
10.23066 + this.async = (async === false)?false:true;
10.23067 + this.method = method || "GET";
10.23068 + this.url = Envjs.uri(url);
10.23069 + this.onreadystatechange();
10.23070 + },
10.23071 + setRequestHeader: function(header, value){
10.23072 + this.headers[header] = value;
10.23073 + },
10.23074 + send: function(data, parsedoc/*non-standard*/){
10.23075 + var _this = this;
10.23076 + parsedoc = (parsedoc === undefined)?true:!!parsedoc;
10.23077 + function makeRequest(){
10.23078 + var cookie = Envjs.getCookies(_this.url);
10.23079 + if(cookie){
10.23080 + _this.setRequestHeader('COOKIE', cookie);
10.23081 + }
10.23082 + Envjs.connection(_this, function(){
10.23083 + if (!_this.aborted){
10.23084 + var doc = null,
10.23085 + domparser,
10.23086 + cookie;
10.23087 + // try to parse the document if we havent explicitly set a
10.23088 + // flag saying not to and if we can assure the text at least
10.23089 + // starts with valid xml
10.23090 + if ( parsedoc && _this.responseText.match(/^\s*</) ) {
10.23091 + domparser = domparser||new DOMParser();
10.23092 + try {
10.23093 + //console.log("parsing response text into xml document");
10.23094 + doc = domparser.parseFromString(_this.responseText+"", 'text/xml');
10.23095 + } catch(e) {
10.23096 + //Envjs.error('response XML does not appear to be well formed xml', e);
10.23097 + console.warn('parseerror \n%s', e);
10.23098 + doc = document.implementation.createDocument('','error',null);
10.23099 + doc.appendChild(doc.createTextNode(e+''));
10.23100 + }
10.23101 + }else{
10.23102 + //Envjs.warn('response XML does not appear to be xml');
10.23103 + }
10.23104 +
10.23105 + try{
10.23106 + cookie = _this.getResponseHeader('SET-COOKIE');
10.23107 + if(cookie){
10.23108 + Envjs.setCookie(_this.url, cookie);
10.23109 + }
10.23110 + }catch(e){
10.23111 + console.warn("Failed to set cookie");
10.23112 + }
10.23113 + _this.__defineGetter__("responseXML", function(){
10.23114 + return doc;
10.23115 + });
10.23116 + }
10.23117 + }, data);
10.23118 +
10.23119 + if (!_this.aborted){
10.23120 + _this.onreadystatechange();
10.23121 + }
10.23122 + }
10.23123 +
10.23124 + if (this.async){
10.23125 + //TODO: what we really need to do here is rejoin the
10.23126 + // current thread and call onreadystatechange via
10.23127 + // setTimeout so the callback is essentially applied
10.23128 + // at the end of the current callstack
10.23129 + //console.log('requesting async: %s', this.url);
10.23130 + Envjs.runAsync(makeRequest);
10.23131 + }else{
10.23132 + //console.log('requesting sync: %s', this.url);
10.23133 + makeRequest();
10.23134 + }
10.23135 + },
10.23136 + abort: function(){
10.23137 + this.aborted = true;
10.23138 + },
10.23139 + onreadystatechange: function(){
10.23140 + //Instance specific
10.23141 + },
10.23142 + getResponseHeader: function(header){
10.23143 + //$debug('GETTING RESPONSE HEADER '+header);
10.23144 + var rHeader, returnedHeaders;
10.23145 + if (this.readyState < 3){
10.23146 + throw new Error("INVALID_STATE_ERR");
10.23147 + } else {
10.23148 + returnedHeaders = [];
10.23149 + for (rHeader in this.responseHeaders) {
10.23150 + if (rHeader.match(new RegExp(header, "i"))) {
10.23151 + returnedHeaders.push(this.responseHeaders[rHeader]);
10.23152 + }
10.23153 + }
10.23154 +
10.23155 + if (returnedHeaders.length){
10.23156 + //$debug('GOT RESPONSE HEADER '+returnedHeaders.join(", "));
10.23157 + return returnedHeaders.join(", ");
10.23158 + }
10.23159 + }
10.23160 + return null;
10.23161 + },
10.23162 + getAllResponseHeaders: function(){
10.23163 + var header, returnedHeaders = [];
10.23164 + if (this.readyState < 3){
10.23165 + throw new Error("INVALID_STATE_ERR");
10.23166 + } else {
10.23167 + for (header in this.responseHeaders) {
10.23168 + returnedHeaders.push( header + ": " + this.responseHeaders[header] );
10.23169 + }
10.23170 + }
10.23171 + return returnedHeaders.join("\r\n");
10.23172 + },
10.23173 + async: true,
10.23174 + readyState: 0,
10.23175 + responseText: "",
10.23176 + status: 0,
10.23177 + statusText: ""
10.23178 +};
10.23179 +
10.23180 +/**
10.23181 + * @author john resig & the envjs team
10.23182 + * @uri http://www.envjs.com/
10.23183 + * @copyright 2008-2010
10.23184 + * @license MIT
10.23185 + */
10.23186 +//CLOSURE_END
10.23187 +}());
10.23188 +
10.23189 +/**
10.23190 + * @todo: document
10.23191 + */
10.23192 +var Window,
10.23193 + Screen,
10.23194 + History,
10.23195 + Navigator;
10.23196 +
10.23197 +
10.23198 +/*
10.23199 + * Envjs window.1.2.13
10.23200 + * Pure JavaScript Browser Environment
10.23201 + * By John Resig <http://ejohn.org/> and the Envjs Team
10.23202 + * Copyright 2008-2010 John Resig, under the MIT License
10.23203 + */
10.23204 +
10.23205 +//CLOSURE_START
10.23206 +(function(){
10.23207 +
10.23208 +
10.23209 +
10.23210 +
10.23211 +
10.23212 +/**
10.23213 + * @author john resig
10.23214 + */
10.23215 +// Helper method for extending one object with another.
10.23216 +function __extend__(a,b) {
10.23217 + for ( var i in b ) {
10.23218 + var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
10.23219 + if ( g || s ) {
10.23220 + if ( g ) { a.__defineGetter__(i, g); }
10.23221 + if ( s ) { a.__defineSetter__(i, s); }
10.23222 + } else {
10.23223 + a[i] = b[i];
10.23224 + }
10.23225 + } return a;
10.23226 +}
10.23227 +
10.23228 +/**
10.23229 + * @todo: document
10.23230 + */
10.23231 +
10.23232 +__extend__(HTMLFrameElement.prototype,{
10.23233 +
10.23234 + get contentDocument(){
10.23235 + return this.contentWindow?
10.23236 + this.contentWindow.document:
10.23237 + null;
10.23238 + },
10.23239 + set src(value){
10.23240 + var event;
10.23241 + this.setAttribute('src', value);
10.23242 + if (this.parentNode && value && value.length > 0){
10.23243 + //console.log('loading frame %s', value);
10.23244 + Envjs.loadFrame(this, Envjs.uri(value));
10.23245 +
10.23246 + //console.log('event frame load %s', value);
10.23247 + event = this.ownerDocument.createEvent('HTMLEvents');
10.23248 + event.initEvent("load", false, false);
10.23249 + this.dispatchEvent( event, false );
10.23250 + }
10.23251 + }
10.23252 +
10.23253 +});
10.23254 +
10.23255 +/*
10.23256 + * history.js
10.23257 + *
10.23258 + */
10.23259 +
10.23260 +History = function(owner) {
10.23261 + var $current = 0,
10.23262 + $history = [null],
10.23263 + $owner = owner;
10.23264 +
10.23265 + return {
10.23266 + go : function(target) {
10.23267 + if (typeof target === "number") {
10.23268 + target = $current + target;
10.23269 + if (target > -1 && target < $history.length){
10.23270 + if ($history[target].type === "hash") {
10.23271 + if ($owner.location) {
10.23272 + $owner.location.hash = $history[target].value;
10.23273 + }
10.23274 + } else {
10.23275 + if ($owner.location) {
10.23276 + $owner.location = $history[target].value;
10.23277 + }
10.23278 + }
10.23279 + $current = target;
10.23280 + }
10.23281 + } else {
10.23282 + //TODO: walk through the history and find the 'best match'?
10.23283 + }
10.23284 + },
10.23285 +
10.23286 + get length() {
10.23287 + return $history.length;
10.23288 + },
10.23289 +
10.23290 + back : function(count) {
10.23291 + if (count) {
10.23292 + this.go(-count);
10.23293 + } else {
10.23294 + this.go(-1);
10.23295 + }
10.23296 + },
10.23297 +
10.23298 + get current() {
10.23299 + return this.item($current);
10.23300 + },
10.23301 +
10.23302 + get previous() {
10.23303 + return this.item($current-1);
10.23304 + },
10.23305 +
10.23306 + forward : function(count) {
10.23307 + if (count) {
10.23308 + this.go(count);
10.23309 + } else {
10.23310 + this.go(1);
10.23311 + }
10.23312 + },
10.23313 +
10.23314 + item: function(idx) {
10.23315 + if (idx >= 0 && idx < $history.length) {
10.23316 + return $history[idx];
10.23317 + } else {
10.23318 + return null;
10.23319 + }
10.23320 + },
10.23321 +
10.23322 + add: function(newLocation, type) {
10.23323 + //not a standard interface, we expose it to simplify
10.23324 + //history state modifications
10.23325 + if (newLocation !== $history[$current]) {
10.23326 + $history.slice(0, $current);
10.23327 + $history.push({
10.23328 + type: type || 'href',
10.23329 + value: newLocation
10.23330 + });
10.23331 + }
10.23332 + }
10.23333 + }; /* closes 'return {' */
10.23334 +};
10.23335 +
10.23336 +
10.23337 +/*
10.23338 + * navigator.js
10.23339 + * Browser Navigator
10.23340 + */
10.23341 +Navigator = function(){
10.23342 +
10.23343 + return {
10.23344 + get appCodeName(){
10.23345 + return Envjs.appCodeName;
10.23346 + },
10.23347 + get appName(){
10.23348 + return Envjs.appName;
10.23349 + },
10.23350 + get appVersion(){
10.23351 + return Envjs.version +" ("+
10.23352 + this.platform +"; "+
10.23353 + "U; "+//?
10.23354 + Envjs.os_name+" "+Envjs.os_arch+" "+Envjs.os_version+"; "+
10.23355 + (Envjs.lang?Envjs.lang:"en-US")+"; "+
10.23356 + "rv:"+Envjs.revision+
10.23357 + ")";
10.23358 + },
10.23359 + get cookieEnabled(){
10.23360 + return true;
10.23361 + },
10.23362 + get mimeTypes(){
10.23363 + return [];
10.23364 + },
10.23365 + get platform(){
10.23366 + return Envjs.platform;
10.23367 + },
10.23368 + get plugins(){
10.23369 + return [];
10.23370 + },
10.23371 + get userAgent(){
10.23372 + return this.appCodeName + "/" + this.appVersion + " " + this.appName;
10.23373 + },
10.23374 + javaEnabled : function(){
10.23375 + return Envjs.javaEnabled;
10.23376 + }
10.23377 + };
10.23378 +};
10.23379 +
10.23380 +
10.23381 +/**
10.23382 + * Screen
10.23383 + * @param {Object} __window__
10.23384 + */
10.23385 +
10.23386 +Screen = function(__window__){
10.23387 +
10.23388 + var $availHeight = 600,
10.23389 + $availWidth = 800,
10.23390 + $colorDepth = 16,
10.23391 + $pixelDepth = 24,
10.23392 + $height = 600,
10.23393 + $width = 800,
10.23394 + $top = 0,
10.23395 + $left = 0,
10.23396 + $availTop = 0,
10.23397 + $availLeft = 0;
10.23398 +
10.23399 + __extend__( __window__, {
10.23400 + moveBy : function(dx,dy){
10.23401 + //TODO - modify $locals to reflect change
10.23402 + },
10.23403 + moveTo : function(x,y) {
10.23404 + //TODO - modify $locals to reflect change
10.23405 + },
10.23406 + /*print : function(){
10.23407 + //TODO - good global to modify to ensure print is not misused
10.23408 + };*/
10.23409 + resizeBy : function(dw, dh){
10.23410 + __window__resizeTo($width + dw, $height + dh);
10.23411 + },
10.23412 + resizeTo : function(width, height){
10.23413 + $width = (width <= $availWidth) ? width : $availWidth;
10.23414 + $height = (height <= $availHeight) ? height : $availHeight;
10.23415 + },
10.23416 + scroll : function(x,y){
10.23417 + //TODO - modify $locals to reflect change
10.23418 + },
10.23419 + scrollBy : function(dx, dy){
10.23420 + //TODO - modify $locals to reflect change
10.23421 + },
10.23422 + scrollTo : function(x,y){
10.23423 + //TODO - modify $locals to reflect change
10.23424 + }
10.23425 + });
10.23426 +
10.23427 + return {
10.23428 + get top(){
10.23429 + return $top;
10.23430 + },
10.23431 + get left(){
10.23432 + return $left;
10.23433 + },
10.23434 + get availTop(){
10.23435 + return $availTop;
10.23436 + },
10.23437 + get availLeft(){
10.23438 + return $availLeft;
10.23439 + },
10.23440 + get availHeight(){
10.23441 + return $availHeight;
10.23442 + },
10.23443 + get availWidth(){
10.23444 + return $availWidth;
10.23445 + },
10.23446 + get colorDepth(){
10.23447 + return $colorDepth;
10.23448 + },
10.23449 + get pixelDepth(){
10.23450 + return $pixelDepth;
10.23451 + },
10.23452 + get height(){
10.23453 + return $height;
10.23454 + },
10.23455 + get width(){
10.23456 + return $width;
10.23457 + }
10.23458 + };
10.23459 +};
10.23460 +
10.23461 +/*
10.23462 + * Copyright (c) 2010 Nick Galbreath
10.23463 + * http://code.google.com/p/stringencoders/source/browse/#svn/trunk/javascript
10.23464 + *
10.23465 + * Permission is hereby granted, free of charge, to any person
10.23466 + * obtaining a copy of this software and associated documentation
10.23467 + * files (the "Software"), to deal in the Software without
10.23468 + * restriction, including without limitation the rights to use,
10.23469 + * copy, modify, merge, publish, distribute, sublicense, and/or sell
10.23470 + * copies of the Software, and to permit persons to whom the
10.23471 + * Software is furnished to do so, subject to the following
10.23472 + * conditions:
10.23473 + *
10.23474 + * The above copyright notice and this permission notice shall be
10.23475 + * included in all copies or substantial portions of the Software.
10.23476 + *
10.23477 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
10.23478 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
10.23479 + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
10.23480 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
10.23481 + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
10.23482 + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
10.23483 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
10.23484 + * OTHER DEALINGS IN THE SOFTWARE.
10.23485 + */
10.23486 +
10.23487 +/* base64 encode/decode compatible with window.btoa/atob
10.23488 + *
10.23489 + * window.atob/btoa is a Firefox extension to convert binary data (the "b")
10.23490 + * to base64 (ascii, the "a").
10.23491 + *
10.23492 + * It is also found in Safari and Chrome. It is not available in IE.
10.23493 + *
10.23494 + * if (!window.btoa) window.btoa = base64.encode
10.23495 + * if (!window.atob) window.atob = base64.decode
10.23496 + *
10.23497 + * The original spec's for atob/btoa are a bit lacking
10.23498 + * https://developer.mozilla.org/en/DOM/window.atob
10.23499 + * https://developer.mozilla.org/en/DOM/window.btoa
10.23500 + *
10.23501 + * window.btoa and base64.encode takes a string where charCodeAt is [0,255]
10.23502 + * If any character is not [0,255], then an DOMException(5) is thrown.
10.23503 + *
10.23504 + * window.atob and base64.decode take a base64-encoded string
10.23505 + * If the input length is not a multiple of 4, or contains invalid characters
10.23506 + * then an DOMException(5) is thrown.
10.23507 + */
10.23508 +var base64 = {};
10.23509 +base64.PADCHAR = '=';
10.23510 +base64.ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
10.23511 +
10.23512 +base64.makeDOMException = function() {
10.23513 + // sadly in FF,Safari,Chrome you can't make a DOMException
10.23514 + var e, tmp;
10.23515 +
10.23516 + try {
10.23517 + return new DOMException(DOMException.INVALID_CHARACTER_ERR);
10.23518 + } catch (tmp) {
10.23519 + // not available, just passback a duck-typed equiv
10.23520 + // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Error
10.23521 + // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Error/prototype
10.23522 + var ex = new Error("DOM Exception 5");
10.23523 +
10.23524 + // ex.number and ex.description is IE-specific.
10.23525 + ex.code = ex.number = 5;
10.23526 + ex.name = ex.description = "INVALID_CHARACTER_ERR";
10.23527 +
10.23528 + // Safari/Chrome output format
10.23529 + ex.toString = function() { return 'Error: ' + ex.name + ': ' + ex.message; };
10.23530 + return ex;
10.23531 + }
10.23532 +};
10.23533 +
10.23534 +base64.getbyte64 = function(s,i) {
10.23535 + // This is oddly fast, except on Chrome/V8.
10.23536 + // Minimal or no improvement in performance by using a
10.23537 + // object with properties mapping chars to value (eg. 'A': 0)
10.23538 + var idx = base64.ALPHA.indexOf(s.charAt(i));
10.23539 + if (idx === -1) {
10.23540 + throw base64.makeDOMException();
10.23541 + }
10.23542 + return idx;
10.23543 +};
10.23544 +
10.23545 +base64.decode = function(s) {
10.23546 + // convert to string
10.23547 + s = '' + s;
10.23548 + var getbyte64 = base64.getbyte64;
10.23549 + var pads, i, b10;
10.23550 + var imax = s.length;
10.23551 + if (imax === 0) {
10.23552 + return s;
10.23553 + }
10.23554 +
10.23555 + if (imax % 4 !== 0) {
10.23556 + throw base64.makeDOMException();
10.23557 + }
10.23558 +
10.23559 + pads = 0;
10.23560 + if (s.charAt(imax - 1) === base64.PADCHAR) {
10.23561 + pads = 1;
10.23562 + if (s.charAt(imax - 2) === base64.PADCHAR) {
10.23563 + pads = 2;
10.23564 + }
10.23565 + // either way, we want to ignore this last block
10.23566 + imax -= 4;
10.23567 + }
10.23568 +
10.23569 + var x = [];
10.23570 + for (i = 0; i < imax; i += 4) {
10.23571 + b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12) |
10.23572 + (getbyte64(s,i+2) << 6) | getbyte64(s,i+3);
10.23573 + x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 0xff, b10 & 0xff));
10.23574 + }
10.23575 +
10.23576 + switch (pads) {
10.23577 + case 1:
10.23578 + b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12) | (getbyte64(s,i+2) << 6);
10.23579 + x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 0xff));
10.23580 + break;
10.23581 + case 2:
10.23582 + b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12);
10.23583 + x.push(String.fromCharCode(b10 >> 16));
10.23584 + break;
10.23585 + }
10.23586 + return x.join('');
10.23587 +};
10.23588 +
10.23589 +base64.getbyte = function(s,i) {
10.23590 + var x = s.charCodeAt(i);
10.23591 + if (x > 255) {
10.23592 + throw base64.makeDOMException();
10.23593 + }
10.23594 + return x;
10.23595 +};
10.23596 +
10.23597 +base64.encode = function(s) {
10.23598 + if (arguments.length !== 1) {
10.23599 + throw new SyntaxError("Not enough arguments");
10.23600 + }
10.23601 + var padchar = base64.PADCHAR;
10.23602 + var alpha = base64.ALPHA;
10.23603 + var getbyte = base64.getbyte;
10.23604 +
10.23605 + var i, b10;
10.23606 + var x = [];
10.23607 +
10.23608 + // convert to string
10.23609 + s = '' + s;
10.23610 +
10.23611 + var imax = s.length - s.length % 3;
10.23612 +
10.23613 + if (s.length === 0) {
10.23614 + return s;
10.23615 + }
10.23616 + for (i = 0; i < imax; i += 3) {
10.23617 + b10 = (getbyte(s,i) << 16) | (getbyte(s,i+1) << 8) | getbyte(s,i+2);
10.23618 + x.push(alpha.charAt(b10 >> 18));
10.23619 + x.push(alpha.charAt((b10 >> 12) & 0x3F));
10.23620 + x.push(alpha.charAt((b10 >> 6) & 0x3f));
10.23621 + x.push(alpha.charAt(b10 & 0x3f));
10.23622 + }
10.23623 + switch (s.length - imax) {
10.23624 + case 1:
10.23625 + b10 = getbyte(s,i) << 16;
10.23626 + x.push(alpha.charAt(b10 >> 18) + alpha.charAt((b10 >> 12) & 0x3F) +
10.23627 + padchar + padchar);
10.23628 + break;
10.23629 + case 2:
10.23630 + b10 = (getbyte(s,i) << 16) | (getbyte(s,i+1) << 8);
10.23631 + x.push(alpha.charAt(b10 >> 18) + alpha.charAt((b10 >> 12) & 0x3F) +
10.23632 + alpha.charAt((b10 >> 6) & 0x3f) + padchar);
10.23633 + break;
10.23634 + }
10.23635 + return x.join('');
10.23636 +};
10.23637 +//These descriptions of window properties are taken loosely David Flanagan's
10.23638 +//'JavaScript - The Definitive Guide' (O'Reilly)
10.23639 +
10.23640 +var __windows__ = {};
10.23641 +
10.23642 +var __top__ = function(_scope){
10.23643 + var _parent = _scope.parent;
10.23644 + while (_scope && _parent && _scope !== _parent) {
10.23645 + if (_parent === _parent.parent) {
10.23646 + break;
10.23647 + }
10.23648 + _parent = _parent.parent;
10.23649 + //console.log('scope %s _parent %s', scope, _parent);
10.23650 + }
10.23651 + return _parent || null;
10.23652 +};
10.23653 +
10.23654 +/**
10.23655 + * Window
10.23656 + * @param {Object} scope
10.23657 + * @param {Object} parent
10.23658 + * @param {Object} opener
10.23659 + */
10.23660 +Window = function(scope, parent, opener){
10.23661 +
10.23662 + // the window property is identical to the self property and to this obj
10.23663 + //var proxy = new Envjs.proxy(scope, parent);
10.23664 + //scope.__proxy__ = proxy;
10.23665 + scope.__defineGetter__('window', function(){
10.23666 + return scope;
10.23667 + });
10.23668 +
10.23669 + var $uuid = new Date().getTime()+'-'+Math.floor(Math.random()*1000000000000000);
10.23670 + __windows__[$uuid] = scope;
10.23671 + //console.log('opening window %s', $uuid);
10.23672 +
10.23673 + // every window has one-and-only-one .document property which is always
10.23674 + // an [object HTMLDocument]. also, only window.document objects are
10.23675 + // html documents, all other documents created by the window.document are
10.23676 + // [object XMLDocument]
10.23677 + var $htmlImplementation = new DOMImplementation();
10.23678 + $htmlImplementation.namespaceAware = true;
10.23679 + $htmlImplementation.errorChecking = false;
10.23680 +
10.23681 + // read only reference to the Document object
10.23682 + var $document = new HTMLDocument($htmlImplementation, scope);
10.23683 +
10.23684 + // A read-only reference to the Window object that contains this window
10.23685 + // or frame. If the window is a top-level window, parent refers to
10.23686 + // the window itself. If this window is a frame, this property refers
10.23687 + // to the window or frame that contains it.
10.23688 + var $parent = parent;
10.23689 +
10.23690 + /**> $cookies - see cookie.js <*/
10.23691 + // read only boolean specifies whether the window has been closed
10.23692 + var $closed = false;
10.23693 +
10.23694 + // a read/write string that specifies the default message that
10.23695 + // appears in the status line
10.23696 + var $defaultStatus = "Done";
10.23697 +
10.23698 + // IE only, refers to the most recent event object - this maybe be
10.23699 + // removed after review
10.23700 + var $event = null;
10.23701 +
10.23702 + // a read-only reference to the History object
10.23703 + var $history = new History();
10.23704 +
10.23705 + // a read-only reference to the Location object. the location object does
10.23706 + // expose read/write properties
10.23707 + var $location = new Location('about:blank', $document, $history);
10.23708 +
10.23709 + // The name of window/frame. Set directly, when using open(), or in frameset.
10.23710 + // May be used when specifying the target attribute of links
10.23711 + var $name = null;
10.23712 +
10.23713 + // a read-only reference to the Navigator object
10.23714 + var $navigator = new Navigator();
10.23715 +
10.23716 + // a read/write reference to the Window object that contained the script
10.23717 + // that called open() to open this browser window. This property is valid
10.23718 + // only for top-level window objects.
10.23719 + var $opener = opener?opener:null;
10.23720 +
10.23721 + // read-only properties that specify the height and width, in pixels
10.23722 + var $innerHeight = 600, $innerWidth = 800;
10.23723 +
10.23724 + // Read-only properties that specify the total height and width, in pixels,
10.23725 + // of the browser window. These dimensions include the height and width of
10.23726 + // the menu bar, toolbars, scrollbars, window borders and so on. These
10.23727 + // properties are not supported by IE and IE offers no alternative
10.23728 + // properties;
10.23729 + var $outerHeight = $innerHeight,
10.23730 + $outerWidth = $innerWidth;
10.23731 +
10.23732 + // Read-only properties that specify the number of pixels that the current
10.23733 + // document has been scrolled to the right and down. These are not
10.23734 + // supported by IE.
10.23735 + var $pageXOffset = 0, $pageYOffset = 0;
10.23736 +
10.23737 + // a read-only reference to the Screen object that specifies information
10.23738 + // about the screen: the number of available pixels and the number of
10.23739 + // available colors.
10.23740 + var $screen = new Screen(scope);
10.23741 +
10.23742 + // read only properties that specify the coordinates of the upper-left
10.23743 + // corner of the screen.
10.23744 + var $screenX = 1,
10.23745 + $screenY = 1;
10.23746 + var $screenLeft = $screenX,
10.23747 + $screenTop = $screenY;
10.23748 +
10.23749 + // a read/write string that specifies the current status line.
10.23750 + var $status = '';
10.23751 +
10.23752 + __extend__(scope, EventTarget.prototype);
10.23753 +
10.23754 + return __extend__( scope, {
10.23755 + get closed(){
10.23756 + return $closed;
10.23757 + },
10.23758 + get defaultStatus(){
10.23759 + return $defaultStatus;
10.23760 + },
10.23761 + set defaultStatus(defaultStatus){
10.23762 + $defaultStatus = defaultStatus;
10.23763 + },
10.23764 + get document(){
10.23765 + return $document;
10.23766 + },
10.23767 + set document(doc){
10.23768 + $document = doc;
10.23769 + },
10.23770 + /*
10.23771 + deprecated ie specific property probably not good to support
10.23772 + get event(){
10.23773 + return $event;
10.23774 + },
10.23775 + */
10.23776 + get frames(){
10.23777 + return new HTMLCollection($document.getElementsByTagName('frame'));
10.23778 + },
10.23779 + get length(){
10.23780 + // should be frames.length,
10.23781 + return this.frames.length;
10.23782 + },
10.23783 + get history(){
10.23784 + return $history;
10.23785 + },
10.23786 + get innerHeight(){
10.23787 + return $innerHeight;
10.23788 + },
10.23789 + get innerWidth(){
10.23790 + return $innerWidth;
10.23791 + },
10.23792 + get clientHeight(){
10.23793 + return $innerHeight;
10.23794 + },
10.23795 + get clientWidth(){
10.23796 + return $innerWidth;
10.23797 + },
10.23798 + get location(){
10.23799 + return $location;
10.23800 + },
10.23801 + set location(uri){
10.23802 + uri = Envjs.uri(uri);
10.23803 + //new Window(this, this.parent, this.opener);
10.23804 + if($location.href == uri){
10.23805 + $location.reload();
10.23806 + }else if($location.href == 'about:blank'){
10.23807 + $location.assign(uri);
10.23808 + }else{
10.23809 + $location.replace(uri);
10.23810 + }
10.23811 + },
10.23812 + get name(){
10.23813 + return $name;
10.23814 + },
10.23815 + set name(newName){
10.23816 + $name = newName;
10.23817 + },
10.23818 + get navigator(){
10.23819 + return $navigator;
10.23820 + },
10.23821 + get opener(){
10.23822 + return $opener;
10.23823 + },
10.23824 + get outerHeight(){
10.23825 + return $outerHeight;
10.23826 + },
10.23827 + get outerWidth(){
10.23828 + return $outerWidth;
10.23829 + },
10.23830 + get pageXOffest(){
10.23831 + return $pageXOffset;
10.23832 + },
10.23833 + get pageYOffset(){
10.23834 + return $pageYOffset;
10.23835 + },
10.23836 + get parent(){
10.23837 + return $parent;
10.23838 + },
10.23839 + get screen(){
10.23840 + return $screen;
10.23841 + },
10.23842 + get screenLeft(){
10.23843 + return $screenLeft;
10.23844 + },
10.23845 + get screenTop(){
10.23846 + return $screenTop;
10.23847 + },
10.23848 + get screenX(){
10.23849 + return $screenX;
10.23850 + },
10.23851 + get screenY(){
10.23852 + return $screenY;
10.23853 + },
10.23854 + get self(){
10.23855 + return scope;
10.23856 + },
10.23857 + get status(){
10.23858 + return $status;
10.23859 + },
10.23860 + set status(status){
10.23861 + $status = status;
10.23862 + },
10.23863 + // a read-only reference to the top-level window that contains this window.
10.23864 + // If this window is a top-level window it is simply a reference to itself.
10.23865 + // If this window is a frame, the top property refers to the top-level
10.23866 + // window that contains the frame.
10.23867 + get top(){
10.23868 + return __top__(scope);
10.23869 + },
10.23870 + get window(){
10.23871 + return this;
10.23872 + },
10.23873 + toString : function(){
10.23874 + return '[Window]';
10.23875 + },
10.23876 +
10.23877 + /**
10.23878 + * getComputedStyle
10.23879 + *
10.23880 + * Firefox 3.6:
10.23881 + * - Requires both elements to be present else an
10.23882 + * exception is thrown.
10.23883 + * - Returns a 'ComputedCSSStyleDeclaration' object.
10.23884 + * while a raw element.style returns a 'CSSStyleDeclaration' object.
10.23885 + * - Bogus input also throws exception
10.23886 + *
10.23887 + * Safari 4:
10.23888 + * - Requires one argument (second can be MIA)
10.23889 + * - Returns a CSSStyleDeclaration object
10.23890 + * - if bad imput, returns null
10.23891 + *
10.23892 + * getComputedStyle should really be an "add on" from the css
10.23893 + * modules. Unfortunately, 'window' comes way after the 'css'
10.23894 + * so css can't add it.
10.23895 + */
10.23896 + getComputedStyle: function(element, pseudoElement) {
10.23897 + return element.style;
10.23898 + },
10.23899 +
10.23900 + open: function(url, name, features, replace){
10.23901 + if (features) {
10.23902 + console.log("'features argument not yet implemented");
10.23903 + }
10.23904 + var _window = Envjs.proxy({}),
10.23905 + open;
10.23906 + if(replace && name){
10.23907 + for(open in __windows__){
10.23908 + if(open.name === name) {
10.23909 + _window = open;
10.23910 + }
10.23911 + }
10.23912 + }
10.23913 + new Window(_window, _window, this);
10.23914 + if(name) {
10.23915 + _window.name = name;
10.23916 + }
10.23917 + _window.document.async = false;
10.23918 + _window.location.assign(Envjs.uri(url));
10.23919 + return _window;
10.23920 + },
10.23921 + close: function(){
10.23922 + //console.log('closing window %s', __windows__[$uuid]);
10.23923 + try{
10.23924 + delete __windows__[$uuid];
10.23925 + }catch(e){
10.23926 + console.log('%s',e);
10.23927 + }
10.23928 + },
10.23929 + alert : function(message){
10.23930 + Envjs.alert(message);
10.23931 + },
10.23932 + confirm : function(question){
10.23933 + Envjs.confirm(question);
10.23934 + },
10.23935 + prompt : function(message, defaultMsg){
10.23936 + Envjs.prompt(message, defaultMsg);
10.23937 + },
10.23938 + btoa: function(binary){
10.23939 + return base64.encode(binary);
10.23940 + },
10.23941 + atob: function(ascii){
10.23942 + return base64.decode(ascii);
10.23943 + },
10.23944 + onload: function(){},
10.23945 + onunload: function(){},
10.23946 + get guid(){
10.23947 + return $uuid;
10.23948 + }
10.23949 + });
10.23950 +
10.23951 +};
10.23952 +
10.23953 +
10.23954 +//finally pre-supply the window with the window-like environment
10.23955 +//console.log('Default Window');
10.23956 +new Window(__this__, __this__);
10.23957 +console.log('[ %s ]',window.navigator.userAgent);
10.23958 +/**
10.23959 + *
10.23960 + * @param {Object} event
10.23961 + */
10.23962 +__extend__(Envjs.defaultEventBehaviors,{
10.23963 +
10.23964 + 'submit': function(event) {
10.23965 + var target = event.target;
10.23966 + while (target && target.nodeName !== 'FORM') {
10.23967 + target = target.parentNode;
10.23968 + }
10.23969 + if (target && target.nodeName === 'FORM') {
10.23970 + target.submit();
10.23971 + }
10.23972 + },
10.23973 + 'click': function(event) {
10.23974 + // console.log('handling event target default behavior for click');
10.23975 + }
10.23976 +
10.23977 +});
10.23978 +/**
10.23979 + * @author john resig & the envjs team
10.23980 + * @uri http://www.envjs.com/
10.23981 + * @copyright 2008-2010
10.23982 + * @license MIT
10.23983 + */
10.23984 +//CLOSURE_END
10.23985 +}());
11.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
11.2 +++ b/boot-script/src/test/resources/net/java/html/boot/script/ko4j/test.html Thu Jun 05 22:13:56 2014 +0200
11.3 @@ -0,0 +1,56 @@
11.4 +<!--
11.5 +
11.6 + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
11.7 +
11.8 + Copyright 2013-2014 Oracle and/or its affiliates. All rights reserved.
11.9 +
11.10 + Oracle and Java are registered trademarks of Oracle and/or its affiliates.
11.11 + Other names may be trademarks of their respective owners.
11.12 +
11.13 + The contents of this file are subject to the terms of either the GNU
11.14 + General Public License Version 2 only ("GPL") or the Common
11.15 + Development and Distribution License("CDDL") (collectively, the
11.16 + "License"). You may not use this file except in compliance with the
11.17 + License. You can obtain a copy of the License at
11.18 + http://www.netbeans.org/cddl-gplv2.html
11.19 + or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
11.20 + specific language governing permissions and limitations under the
11.21 + License. When distributing the software, include this License Header
11.22 + Notice in each file and include the License file at
11.23 + nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this
11.24 + particular file as subject to the "Classpath" exception as provided
11.25 + by Oracle in the GPL Version 2 section of the License file that
11.26 + accompanied this code. If applicable, add the following below the
11.27 + License Header, with the fields enclosed by brackets [] replaced by
11.28 + your own identifying information:
11.29 + "Portions Copyrighted [year] [name of copyright owner]"
11.30 +
11.31 + Contributor(s):
11.32 +
11.33 + The Original Software is NetBeans. The Initial Developer of the Original
11.34 + Software is Oracle. Portions Copyright 2013-2014 Oracle. All Rights Reserved.
11.35 +
11.36 + If you wish your version of this file to be governed by only the CDDL
11.37 + or only the GPL Version 2, indicate your decision by adding
11.38 + "[Contributor] elects to include this software in this distribution
11.39 + under the [CDDL or GPL Version 2] license." If you do not indicate a
11.40 + single choice of license, a recipient has the option to distribute
11.41 + your version of this file under either the CDDL, the GPL Version 2 or
11.42 + to extend the choice of license to its licensees as provided above.
11.43 + However, if you add GPL Version 2 code and therefore, elected the GPL
11.44 + Version 2 license, then the option applies only if the new code is
11.45 + made subject to such option by the copyright holder.
11.46 +
11.47 +-->
11.48 +<!DOCTYPE html>
11.49 +<html>
11.50 + <head>
11.51 + <title>Knockout.fx Execution Harness</title>
11.52 + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
11.53 + <meta name="viewport" content="width=device-width">
11.54 + </head>
11.55 + <body>
11.56 + <h1>Knockout in Env.Execution Harness</h1>
11.57 + <script></script>
11.58 + </body>
11.59 +</html>
12.1 --- a/boot/src/main/java/net/java/html/boot/BrowserBuilder.java Wed Jun 04 06:36:44 2014 +0200
12.2 +++ b/boot/src/main/java/net/java/html/boot/BrowserBuilder.java Thu Jun 05 22:13:56 2014 +0200
12.3 @@ -72,7 +72,7 @@
12.4 * <pre>
12.5 *
12.6 * <b>public static void</b> <em>main</em>(String... args) {
12.7 - * BrowserBuilder.{@link #newBrowser}.
12.8 + * BrowserBuilder.{@link #newBrowser newBrowser()}.
12.9 * {@link #loadClass(java.lang.Class) loadClass(YourMain.class)}.
12.10 * {@link #loadPage(java.lang.String) loadPage("index.html")}.
12.11 * {@link #invoke(java.lang.String, java.lang.String[]) invoke("initialized", args)}.
13.1 --- a/boot/src/main/java/org/apidesign/html/boot/spi/Fn.java Wed Jun 04 06:36:44 2014 +0200
13.2 +++ b/boot/src/main/java/org/apidesign/html/boot/spi/Fn.java Thu Jun 05 22:13:56 2014 +0200
13.3 @@ -43,6 +43,7 @@
13.4 package org.apidesign.html.boot.spi;
13.5
13.6 import java.io.Closeable;
13.7 +import java.io.IOException;
13.8 import java.io.InputStream;
13.9 import java.io.InputStreamReader;
13.10 import java.io.Reader;
13.11 @@ -162,7 +163,14 @@
13.12 LOADED.put(resource, there);
13.13 }
13.14 if (there.add(p)) {
13.15 - InputStream is = caller.getClassLoader().getResourceAsStream(resource);
13.16 + final ClassLoader l = caller.getClassLoader();
13.17 + InputStream is = l.getResourceAsStream(resource);
13.18 + if (is == null && resource.startsWith("/")) {
13.19 + is = l.getResourceAsStream(resource.substring(1));
13.20 + }
13.21 + if (is == null) {
13.22 + throw new IOException("Cannot find " + resource + " in " + l);
13.23 + }
13.24 try {
13.25 InputStreamReader r = new InputStreamReader(is, "UTF-8");
13.26 p.loadScript(r);
14.1 --- a/boot/src/main/java/org/netbeans/html/boot/impl/JavaScriptProcesor.java Wed Jun 04 06:36:44 2014 +0200
14.2 +++ b/boot/src/main/java/org/netbeans/html/boot/impl/JavaScriptProcesor.java Thu Jun 05 22:13:56 2014 +0200
14.3 @@ -151,7 +151,7 @@
14.4 }
14.5 final String res;
14.6 if (r.value().startsWith("/")) {
14.7 - res = r.value();
14.8 + res = r.value().substring(1);
14.9 } else {
14.10 res = findPkg(e).replace('.', '/') + "/" + r.value();
14.11 }
14.12 @@ -164,7 +164,12 @@
14.13 FileObject os2 = processingEnv.getFiler().getResource(StandardLocation.CLASS_OUTPUT, "", res);
14.14 os2.openInputStream().close();
14.15 } catch (IOException ex2) {
14.16 - msg.printMessage(Diagnostic.Kind.ERROR, "Cannot find " + res + " in " + res + " package", e);
14.17 + try {
14.18 + FileObject os3 = processingEnv.getFiler().getResource(StandardLocation.CLASS_PATH, "", res);
14.19 + os3.openInputStream().close();
14.20 + } catch (IOException ex3) {
14.21 + msg.printMessage(Diagnostic.Kind.ERROR, "Cannot find resource " + res, e);
14.22 + }
14.23 }
14.24 }
14.25
15.1 --- a/json-tck/src/main/java/net/java/html/json/tests/KnockoutTest.java Wed Jun 04 06:36:44 2014 +0200
15.2 +++ b/json-tck/src/main/java/net/java/html/json/tests/KnockoutTest.java Thu Jun 05 22:13:56 2014 +0200
15.3 @@ -142,10 +142,11 @@
15.4 + "var n = window.document.getElementById('input'); \n "
15.5 + "if (value != null) n['value'] = value; \n "
15.6 + "return n['value'];";
15.7 - return (String)Utils.executeScript(
15.8 + Object ret = Utils.executeScript(
15.9 KnockoutTest.class,
15.10 s, value
15.11 );
15.12 + return ret == null ? null : ret.toString();
15.13 }
15.14
15.15 public static void triggerEvent(String id, String ev) throws Exception {
15.16 @@ -167,12 +168,12 @@
15.17 m.getResults().add("Ahoj");
15.18 m.applyBindings();
15.19
15.20 - int cnt = countChildren("ul");
15.21 + int cnt = Utils.countChildren(KnockoutTest.class, "ul");
15.22 assert cnt == 1 : "One child, but was " + cnt;
15.23
15.24 m.getResults().add("Hi");
15.25
15.26 - cnt = countChildren("ul");
15.27 + cnt = Utils.countChildren(KnockoutTest.class, "ul");
15.28 assert cnt == 2 : "Two children now, but was " + cnt;
15.29
15.30 triggerChildClick("ul", 1);
15.31 @@ -194,7 +195,7 @@
15.32 Pair m = Models.bind(new Pair("First", "Last", null), newContext());
15.33 m.applyBindings();
15.34
15.35 - int cnt = countChildren("ul");
15.36 + int cnt = Utils.countChildren(KnockoutTest.class, "ul");
15.37 assert cnt == 2 : "Two children now, but was " + cnt;
15.38
15.39 triggerChildClick("ul", 1);
15.40 @@ -203,7 +204,7 @@
15.41
15.42 m.setLastName("Verylast");
15.43
15.44 - cnt = countChildren("ul");
15.45 + cnt = Utils.countChildren(KnockoutTest.class, "ul");
15.46 assert cnt == 2 : "Two children now, but was " + cnt;
15.47
15.48 triggerChildClick("ul", 1);
15.49 @@ -228,7 +229,7 @@
15.50 Pair m = Models.bind(new Pair(null, null, new Pair("First", "Last", null)), ctx);
15.51 m.applyBindings();
15.52
15.53 - int cnt = countChildren("ul");
15.54 + int cnt = Utils.countChildren(KnockoutTest.class, "ul");
15.55 assert cnt == 2 : "Two children now, but was " + cnt;
15.56
15.57 triggerChildClick("ul", 1);
15.58 @@ -253,7 +254,7 @@
15.59 Pair m = Models.bind(new Pair(null, null, new Pair("First", "Last", null)), newContext());
15.60 m.applyBindings();
15.61
15.62 - int cnt = countChildren("ul");
15.63 + int cnt = Utils.countChildren(KnockoutTest.class, "ul");
15.64 assert cnt == 2 : "Two children now, but was " + cnt;
15.65
15.66 triggerChildClick("ul", 1);
15.67 @@ -295,12 +296,12 @@
15.68 m.getResults().add("Ahoj");
15.69 m.applyBindings();
15.70
15.71 - int cnt = countChildren("ul");
15.72 + int cnt = Utils.countChildren(KnockoutTest.class, "ul");
15.73 assert cnt == 1 : "One child, but was " + cnt;
15.74
15.75 m.getResults().add("hello");
15.76
15.77 - cnt = countChildren("ul");
15.78 + cnt = Utils.countChildren(KnockoutTest.class, "ul");
15.79 assert cnt == 2 : "Two children now, but was " + cnt;
15.80 } finally {
15.81 Utils.exposeHTML(KnockoutTest.class, "");
15.82 @@ -323,21 +324,21 @@
15.83
15.84 m.applyBindings();
15.85
15.86 - int cnt = countChildren("ul");
15.87 + int cnt = Utils.countChildren(KnockoutTest.class, "ul");
15.88 assert cnt == 1 : "One child, but was " + cnt;
15.89
15.90 final Person second = Models.bind(new Person(), c);
15.91 second.setFirstName("second");
15.92 m.getPeople().add(second);
15.93
15.94 - cnt = countChildren("ul");
15.95 + cnt = Utils.countChildren(KnockoutTest.class, "ul");
15.96 assert cnt == 2 : "Two children now, but was " + cnt;
15.97
15.98 triggerChildClick("ul", 1);
15.99
15.100 assert 1 == m.getCallbackCount() : "One callback " + m.getCallbackCount();
15.101
15.102 - cnt = countChildren("ul");
15.103 + cnt = Utils.countChildren(KnockoutTest.class, "ul");
15.104 assert cnt == 1 : "Again one child, but was " + cnt;
15.105
15.106 String txt = childText("ul", 0);
15.107 @@ -394,7 +395,7 @@
15.108
15.109 m.applyBindings();
15.110
15.111 - int cnt = countChildren("ul");
15.112 + int cnt = Utils.countChildren(KnockoutTest.class, "ul");
15.113 assert cnt == 1 : "One child, but was " + cnt;
15.114
15.115
15.116 @@ -426,42 +427,50 @@
15.117 return results;
15.118 }
15.119
15.120 - private static int countChildren(String id) throws Exception {
15.121 - return ((Number)Utils.executeScript(
15.122 - KnockoutTest.class,
15.123 - "var e = window.document.getElementById(arguments[0]);\n "
15.124 - + "if (typeof e === 'undefined') return -2;\n "
15.125 - + "return e.children.length;",
15.126 - id
15.127 - )).intValue();
15.128 - }
15.129 -
15.130 private static void triggerClick(String id) throws Exception {
15.131 String s = "var id = arguments[0];"
15.132 + "var e = window.document.getElementById(id);\n "
15.133 + + "if (e.checked) throw 'It should not be checked yet: ' + e;\n "
15.134 + "var ev = window.document.createEvent('MouseEvents');\n "
15.135 + "ev.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n "
15.136 - + "e.dispatchEvent(ev);\n ";
15.137 + + "e.dispatchEvent(ev);\n "
15.138 + + "if (!e.checked) {\n"
15.139 + + " e.checked = true;\n "
15.140 + + " e.dispatchEvent(ev);\n "
15.141 + + "}\n";
15.142 Utils.executeScript(
15.143 KnockoutTest.class,
15.144 s, id);
15.145 }
15.146 private static void triggerChildClick(String id, int pos) throws Exception {
15.147 - String s = "var id = arguments[0]; var pos = arguments[1];"
15.148 - + "var e = window.document.getElementById(id);\n "
15.149 - + "var ev = window.document.createEvent('MouseEvents');\n "
15.150 - + "ev.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n "
15.151 - + "e.children[pos].dispatchEvent(ev);\n ";
15.152 + String s =
15.153 + "var id = arguments[0]; var pos = arguments[1];\n" +
15.154 + "var e = window.document.getElementById(id);\n " +
15.155 + "var ev = window.document.createEvent('MouseEvents');\n " +
15.156 + "ev.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n " +
15.157 + "var list = e.childNodes;\n" +
15.158 + "var cnt = -1;\n" +
15.159 + "for (var i = 0; i < list.length; i++) {\n" +
15.160 + " if (list[i].nodeType == 1) cnt++;\n" +
15.161 + " if (cnt === pos) return list[i].dispatchEvent(ev);\n" +
15.162 + "}\n" +
15.163 + "return null;\n";
15.164 Utils.executeScript(
15.165 KnockoutTest.class,
15.166 s, id, pos);
15.167 }
15.168
15.169 private static String childText(String id, int pos) throws Exception {
15.170 - String s = "var id = arguments[0]; var pos = arguments[1];"
15.171 - + "var e = window.document.getElementById(id);\n "
15.172 - + "var t = e.children[pos].innerHTML;\n "
15.173 - + "return t ? t : null;";
15.174 + String s =
15.175 + "var id = arguments[0]; var pos = arguments[1];" +
15.176 + "var e = window.document.getElementById(id);\n" +
15.177 + "var list = e.childNodes;\n" +
15.178 + "var cnt = -1;\n" +
15.179 + "for (var i = 0; i < list.length; i++) {\n" +
15.180 + " if (list[i].nodeType == 1) cnt++;\n" +
15.181 + " if (cnt === pos) return list[i].innerHTML;\n" +
15.182 + "}\n" +
15.183 + "return null;\n";
15.184 return (String)Utils.executeScript(
15.185 KnockoutTest.class,
15.186 s, id, pos);
16.1 --- a/json-tck/src/main/java/net/java/html/json/tests/MinesTest.java Wed Jun 04 06:36:44 2014 +0200
16.2 +++ b/json-tck/src/main/java/net/java/html/json/tests/MinesTest.java Thu Jun 05 22:13:56 2014 +0200
16.3 @@ -85,13 +85,13 @@
16.4 );
16.5 m = Models.bind(new Mines(), ctx);
16.6 m.applyBindings();
16.7 - int cnt = countChildren("table");
16.8 + int cnt = Utils.countChildren(MinesTest.class, "table");
16.9 assert cnt == 0 : "Table is empty: " + cnt;
16.10 scheduleClick("init", 100);
16.11 }
16.12
16.13
16.14 - int cnt = countChildren("table");
16.15 + int cnt = Utils.countChildren(MinesTest.class, "table");
16.16 if (cnt == 0) {
16.17 throw new InterruptedException();
16.18 }
16.19 @@ -111,16 +111,6 @@
16.20 assert cnt == 3 : "There are three mines around. Was: " + cnt;
16.21 }
16.22
16.23 - private static int countChildren(String id) throws Exception {
16.24 - return ((Number)Utils.executeScript(
16.25 - MinesTest.class,
16.26 - "var e = window.document.getElementById(arguments[0]);\n "
16.27 - + "if (typeof e === 'undefined') return -2;\n "
16.28 - + "return e.children.length;",
16.29 - id
16.30 - )).intValue();
16.31 - }
16.32 -
16.33 private static void scheduleClick(String id, int delay) throws Exception {
16.34 String s = "var id = arguments[0]; var delay = arguments[1];"
16.35 + "var e = window.document.getElementById(id);\n "
17.1 --- a/json-tck/src/main/java/net/java/html/json/tests/Utils.java Wed Jun 04 06:36:44 2014 +0200
17.2 +++ b/json-tck/src/main/java/net/java/html/json/tests/Utils.java Thu Jun 05 22:13:56 2014 +0200
17.3 @@ -55,7 +55,7 @@
17.4 */
17.5 public final class Utils {
17.6 private static KnockoutTCK instantiatedTCK;
17.7 -
17.8 +
17.9 private Utils() {
17.10 }
17.11
17.12 @@ -110,6 +110,20 @@
17.13 return executeScript(clazz, s, html);
17.14 }
17.15
17.16 + static int countChildren(Class<?> caller, String id) throws Exception {
17.17 + return ((Number) executeScript(caller,
17.18 + "var e = window.document.getElementById(arguments[0]);\n" +
17.19 + "if (typeof e === 'undefined') return -2;\n " +
17.20 + "var list = e.childNodes;\n" +
17.21 + "var cnt = 0;\n" +
17.22 + "for (var i = 0; i < list.length; i++) {\n" +
17.23 + " if (list[i].nodeType == 1) cnt++;\n" +
17.24 + "}\n" +
17.25 + "return cnt;\n"
17.26 + , id
17.27 + )).intValue();
17.28 + }
17.29 +
17.30 static String prepareURL(
17.31 Class<?> clazz, String content, String mimeType, String... parameters) {
17.32 for (KnockoutTCK tck : tcks(clazz)) {
18.1 --- a/json/src/main/java/org/apidesign/html/json/spi/JSONCall.java Wed Jun 04 06:36:44 2014 +0200
18.2 +++ b/json/src/main/java/org/apidesign/html/json/spi/JSONCall.java Thu Jun 05 22:13:56 2014 +0200
18.3 @@ -45,8 +45,6 @@
18.4 import java.io.IOException;
18.5 import java.io.OutputStream;
18.6 import net.java.html.BrwsrCtx;
18.7 -import org.apidesign.html.context.spi.Contexts;
18.8 -import org.netbeans.html.json.impl.JSON;
18.9 import org.netbeans.html.json.impl.RcvrJSON;
18.10
18.11 /** Description of a JSON call request that is supposed to be processed
19.1 --- a/ko4j/src/main/java/org/netbeans/html/ko4j/LoadJSON.java Wed Jun 04 06:36:44 2014 +0200
19.2 +++ b/ko4j/src/main/java/org/netbeans/html/ko4j/LoadJSON.java Thu Jun 05 22:13:56 2014 +0200
19.3 @@ -163,16 +163,17 @@
19.4 + "request.open(method, url, true);\n"
19.5 + "request.setRequestHeader('Content-Type', 'application/json; charset=utf-8');\n"
19.6 + "request.onreadystatechange = function() {\n"
19.7 - + " if (this.readyState!==4) return;\n"
19.8 + + " if (request.readyState !== 4) return;\n"
19.9 + + " var r = request.response || request.responseText;\n"
19.10 + " try {\n"
19.11 - + " var r = this.response;\n"
19.12 - + " try { r = eval('(' + this.response + ')'); } catch (ignore) { }"
19.13 + + " try { r = eval('(' + r + ')'); } catch (ignore) { }"
19.14 + " done.@org.apidesign.html.json.spi.JSONCall::notifySuccess(Ljava/lang/Object;)(r);\n"
19.15 + " } catch (error) {;\n"
19.16 - + " @org.netbeans.html.ko4j.LoadJSON::notifyError(Ljava/lang/Object;Ljava/lang/Object;)(done, this.response);\n"
19.17 + + " @org.netbeans.html.ko4j.LoadJSON::notifyError(Ljava/lang/Object;Ljava/lang/Object;)(done, r);\n"
19.18 + " }\n"
19.19 + "};\n"
19.20 - + "request.onerror = function (e) {console.log('eeeor:' + Object.getOwnPropertyNames(e));\n"
19.21 + + "request.onerror = function (e) {\n"
19.22 + + " console.log('error loading :' + url + ' props: ' + Object.getOwnPropertyNames(e));\n"
19.23 + " @org.netbeans.html.ko4j.LoadJSON::notifyError(Ljava/lang/Object;Ljava/lang/Object;)(done, e);\n"
19.24 + "}\n"
19.25 + "if (data) request.send(data);"
20.1 --- a/pom.xml Wed Jun 04 06:36:44 2014 +0200
20.2 +++ b/pom.xml Thu Jun 05 22:13:56 2014 +0200
20.3 @@ -95,6 +95,7 @@
20.4 <exclude>*</exclude>
20.5 <exclude>.*/**</exclude>
20.6 <exclude>ko4j/src/main/resources/org/netbeans/html/ko4j/knockout*.js</exclude>
20.7 + <exclude>boot-script/src/test/resources/net/java/html/boot/script/ko4j/env.nashorn.1.2-debug.js</exclude>
20.8 <exclude>src/main/javadoc/resources/teavm.js</exclude>
20.9 </excludes>
20.10 </configuration>
20.11 @@ -136,6 +137,10 @@
20.12 <packages>net.java.html.sound</packages>
20.13 </group>
20.14 <group>
20.15 + <title>Testing and Headless API</title>
20.16 + <packages>net.java.html.boot.script</packages>
20.17 + </group>
20.18 + <group>
20.19 <title>Service Provider APIs (not commonly interesting)</title>
20.20 <packages>org.apidesign.html.*</packages>
20.21 </group>