Merge JDK-8200758-branch
authorherrick
Wed, 21 Nov 2018 13:53:17 -0500
branchJDK-8200758-branch
changeset 57032 a42d0a8e0916
parent 57031 ea4755429ed8 (current diff)
parent 52640 3a7d49718852 (diff)
child 57038 b0f09e7c4680
Merge
--- a/doc/building.html	Wed Nov 21 13:20:52 2018 -0500
+++ b/doc/building.html	Wed Nov 21 13:53:17 2018 -0500
@@ -93,7 +93,7 @@
 <li><a href="#getting-help">Getting Help</a></li>
 </ul></li>
 <li><a href="#hints-and-suggestions-for-advanced-users">Hints and Suggestions for Advanced Users</a><ul>
-<li><a href="#setting-up-a-forest-for-pushing-changes-defpath">Setting Up a Forest for Pushing Changes (defpath)</a></li>
+<li><a href="#setting-up-a-repository-for-pushing-changes-defpath">Setting Up a Repository for Pushing Changes (defpath)</a></li>
 <li><a href="#bash-completion">Bash Completion</a></li>
 <li><a href="#using-multiple-configurations">Using Multiple Configurations</a></li>
 <li><a href="#handling-reconfigurations">Handling Reconfigurations</a></li>
@@ -131,7 +131,7 @@
 <p>The JDK is a complex software project. Building it requires a certain amount of technical expertise, a fair number of dependencies on external software, and reasonably powerful hardware.</p>
 <p>If you just want to use the JDK and not build it yourself, this document is not for you. See for instance <a href="http://openjdk.java.net/install">OpenJDK installation</a> for some methods of installing a prebuilt JDK.</p>
 <h2 id="getting-the-source-code">Getting the Source Code</h2>
-<p>Make sure you are getting the correct version. As of JDK 10, the source is no longer split into separate repositories so you only need to clone one single repository. At the <a href="http://hg.openjdk.java.net/">OpenJDK Mercurial server</a> you can see a list of all available forests. If you want to build an older version, e.g. JDK 8, it is recommended that you get the <code>jdk8u</code> forest, which contains incremental updates, instead of the <code>jdk8</code> forest, which was frozen at JDK 8 GA.</p>
+<p>Make sure you are getting the correct version. As of JDK 10, the source is no longer split into separate repositories so you only need to clone one single repository. At the <a href="http://hg.openjdk.java.net/">OpenJDK Mercurial server</a> you can see a list of all available repositories. If you want to build an older version, e.g. JDK 8, it is recommended that you get the <code>jdk8u</code> forest, which contains incremental updates, instead of the <code>jdk8</code> forest, which was frozen at JDK 8 GA.</p>
 <p>If you are new to Mercurial, a good place to start is the <a href="http://www.mercurial-scm.org/guide">Mercurial Beginner's Guide</a>. The rest of this document assumes a working knowledge of Mercurial.</p>
 <h3 id="special-considerations">Special Considerations</h3>
 <p>For a smooth building experience, it is recommended that you follow these rules on where and how to check out the source code.</p>
@@ -780,11 +780,11 @@
 <p>Verify that the summary at the end looks correct. Are you indeed using the Boot JDK and native toolchain that you expect?</p>
 <p>By default, the JDK has a strict approach where warnings from the compiler is considered errors which fail the build. For very new or very old compiler versions, this can trigger new classes of warnings, which thus fails the build. Run <code>configure</code> with <code>--disable-warnings-as-errors</code> to turn of this behavior. (The warnings will still show, but not make the build fail.)</p>
 <h4 id="problems-with-incremental-rebuilds">Problems with Incremental Rebuilds</h4>
-<p>Incremental rebuilds mean that when you modify part of the product, only the affected parts get rebuilt. While this works great in most cases, and significantly speed up the development process, from time to time complex interdependencies will result in an incorrect build result. This is the most common cause for unexpected build problems, together with inconsistencies between the different Mercurial repositories in the forest.</p>
+<p>Incremental rebuilds mean that when you modify part of the product, only the affected parts get rebuilt. While this works great in most cases, and significantly speed up the development process, from time to time complex interdependencies will result in an incorrect build result. This is the most common cause for unexpected build problems.</p>
 <p>Here are a suggested list of things to try if you are having unexpected build problems. Each step requires more time than the one before, so try them in order. Most issues will be solved at step 1 or 2.</p>
 <ol type="1">
-<li><p>Make sure your forest is up-to-date</p>
-<p>Run <code>bash get_source.sh</code> to make sure you have the latest version of all repositories.</p></li>
+<li><p>Make sure your repository is up-to-date</p>
+<p>Run <code>hg pull -u</code> to make sure you have the latest changes.</p></li>
 <li><p>Clean build results</p>
 <p>The simplest way to fix incremental rebuild issues is to run <code>make clean</code>. This will remove all build results, but not the configuration or any build system support artifacts. In most cases, this will solve build errors resulting from incremental build mismatches.</p></li>
 <li><p>Completely clean the build directory.</p>
@@ -793,8 +793,8 @@
 make dist-clean
 bash configure $(cat current-configuration)
 make</code></pre></li>
-<li><p>Re-clone the Mercurial forest</p>
-<p>Sometimes the Mercurial repositories themselves gets in a state that causes the product to be un-buildable. In such a case, the simplest solution is often the &quot;sledgehammer approach&quot;: delete the entire forest, and re-clone it. If you have local changes, save them first to a different location using <code>hg export</code>.</p></li>
+<li><p>Re-clone the Mercurial repository</p>
+<p>Sometimes the Mercurial repository gets in a state that causes the product to be un-buildable. In such a case, the simplest solution is often the &quot;sledgehammer approach&quot;: delete the entire repository, and re-clone it. If you have local changes, save them first to a different location using <code>hg export</code>.</p></li>
 </ol>
 <h3 id="specific-build-issues">Specific Build Issues</h3>
 <h4 id="clock-skew">Clock Skew</h4>
@@ -816,7 +816,7 @@
 <p>If none of the suggestions in this document helps you, or if you find what you believe is a bug in the build system, please contact the Build Group by sending a mail to <a href="mailto:build-dev@openjdk.java.net">build-dev@openjdk.java.net</a>. Please include the relevant parts of the configure and/or build log.</p>
 <p>If you need general help or advice about developing for the JDK, you can also contact the Adoption Group. See the section on <a href="#contributing-to-openjdk">Contributing to OpenJDK</a> for more information.</p>
 <h2 id="hints-and-suggestions-for-advanced-users">Hints and Suggestions for Advanced Users</h2>
-<h3 id="setting-up-a-forest-for-pushing-changes-defpath">Setting Up a Forest for Pushing Changes (defpath)</h3>
+<h3 id="setting-up-a-repository-for-pushing-changes-defpath">Setting Up a Repository for Pushing Changes (defpath)</h3>
 <p>To help you prepare a proper push path for a Mercurial repository, there exists a useful tool known as <a href="http://openjdk.java.net/projects/code-tools/defpath">defpath</a>. It will help you setup a proper push path for pushing changes to the JDK.</p>
 <p>Install the extension by cloning <code>http://hg.openjdk.java.net/code-tools/defpath</code> and updating your <code>.hgrc</code> file. Here's one way to do this:</p>
 <pre><code>cd ~
@@ -829,7 +829,6 @@
 EOT</code></pre>
 <p>You can now setup a proper push path using:</p>
 <pre><code>hg defpath -d -u &lt;your OpenJDK username&gt;</code></pre>
-<p>If you also have the <code>trees</code> extension installed in Mercurial, you will automatically get a <code>tdefpath</code> command, which is even more useful. By running <code>hg tdefpath -du &lt;username&gt;</code> in the top repository of your forest, all repos will get setup automatically. This is the recommended usage.</p>
 <h3 id="bash-completion">Bash Completion</h3>
 <p>The <code>configure</code> and <code>make</code> commands tries to play nice with bash command-line completion (using <code>&lt;tab&gt;</code> or <code>&lt;tab&gt;&lt;tab&gt;</code>). To use this functionality, make sure you enable completion in your <code>~/.bashrc</code> (see instructions for bash in your operating system).</p>
 <p>Make completion will work out of the box, and will complete valid make targets. For instance, typing <code>make jdk-i&lt;tab&gt;</code> will complete to <code>make jdk-image</code>.</p>
@@ -847,10 +846,10 @@
 sudo mv /tmp/configure /usr/local/bin</code></pre>
 <p>Now <code>configure --en&lt;tab&gt;-dt&lt;tab&gt;</code> will result in <code>configure --enable-dtrace</code>.</p>
 <h3 id="using-multiple-configurations">Using Multiple Configurations</h3>
-<p>You can have multiple configurations for a single source forest. When you create a new configuration, run <code>configure --with-conf-name=&lt;name&gt;</code> to create a configuration with the name <code>&lt;name&gt;</code>. Alternatively, you can create a directory under <code>build</code> and run <code>configure</code> from there, e.g. <code>mkdir build/&lt;name&gt; &amp;&amp; cd build/&lt;name&gt; &amp;&amp; bash ../../configure</code>.</p>
+<p>You can have multiple configurations for a single source repository. When you create a new configuration, run <code>configure --with-conf-name=&lt;name&gt;</code> to create a configuration with the name <code>&lt;name&gt;</code>. Alternatively, you can create a directory under <code>build</code> and run <code>configure</code> from there, e.g. <code>mkdir build/&lt;name&gt; &amp;&amp; cd build/&lt;name&gt; &amp;&amp; bash ../../configure</code>.</p>
 <p>Then you can build that configuration using <code>make CONF_NAME=&lt;name&gt;</code> or <code>make CONF=&lt;pattern&gt;</code>, where <code>&lt;pattern&gt;</code> is a substring matching one or several configurations, e.g. <code>CONF=debug</code>. The special empty pattern (<code>CONF=</code>) will match <em>all</em> available configuration, so <code>make CONF= hotspot</code> will build the <code>hotspot</code> target for all configurations. Alternatively, you can execute <code>make</code> in the configuration directory, e.g. <code>cd build/&lt;name&gt; &amp;&amp; make</code>.</p>
 <h3 id="handling-reconfigurations">Handling Reconfigurations</h3>
-<p>If you update the forest and part of the configure script has changed, the build system will force you to re-run <code>configure</code>.</p>
+<p>If you update the repository and part of the configure script has changed, the build system will force you to re-run <code>configure</code>.</p>
 <p>Most of the time, you will be fine by running <code>configure</code> again with the same arguments as the last time, which can easily be performed by <code>make reconfigure</code>. To simplify this, you can use the <code>CONF_CHECK</code> make control variable, either as <code>make CONF_CHECK=auto</code>, or by setting an environment variable. For instance, if you add <code>export CONF_CHECK=auto</code> to your <code>.bashrc</code> file, <code>make</code> will always run <code>reconfigure</code> automatically whenever the configure script has changed.</p>
 <p>You can also use <code>CONF_CHECK=ignore</code> to skip the check for a needed configure update. This might speed up the build, but comes at the risk of an incorrect build result. This is only recommended if you know what you're doing.</p>
 <p>From time to time, you will also need to modify the command line to <code>configure</code> due to changes. Use <code>make print-configure</code> to show the command line used for your current configuration.</p>
--- a/doc/building.md	Wed Nov 21 13:20:52 2018 -0500
+++ b/doc/building.md	Wed Nov 21 13:53:17 2018 -0500
@@ -48,7 +48,7 @@
 Make sure you are getting the correct version. As of JDK 10, the source is no
 longer split into separate repositories so you only need to clone one single
 repository. At the [OpenJDK Mercurial server](http://hg.openjdk.java.net/) you
-can see a list of all available forests. If you want to build an older version,
+can see a list of all available repositories. If you want to build an older version,
 e.g. JDK 8, it is recommended that you get the `jdk8u` forest, which contains
 incremental updates, instead of the `jdk8` forest, which was frozen at JDK 8 GA.
 
@@ -1301,17 +1301,15 @@
 affected parts get rebuilt. While this works great in most cases, and
 significantly speed up the development process, from time to time complex
 interdependencies will result in an incorrect build result. This is the most
-common cause for unexpected build problems, together with inconsistencies
-between the different Mercurial repositories in the forest.
+common cause for unexpected build problems.
 
 Here are a suggested list of things to try if you are having unexpected build
 problems. Each step requires more time than the one before, so try them in
 order. Most issues will be solved at step 1 or 2.
 
- 1. Make sure your forest is up-to-date
+ 1. Make sure your repository is up-to-date
 
-    Run `bash get_source.sh` to make sure you have the latest version of all
-    repositories.
+    Run `hg pull -u` to make sure you have the latest changes.
 
  2. Clean build results
 
@@ -1336,13 +1334,13 @@
     make
     ```
 
- 4. Re-clone the Mercurial forest
+ 4. Re-clone the Mercurial repository
 
-    Sometimes the Mercurial repositories themselves gets in a state that causes
-    the product to be un-buildable. In such a case, the simplest solution is
-    often the "sledgehammer approach": delete the entire forest, and re-clone
-    it. If you have local changes, save them first to a different location
-    using `hg export`.
+    Sometimes the Mercurial repository gets in a state that causes the product
+    to be un-buildable. In such a case, the simplest solution is often the
+    "sledgehammer approach": delete the entire repository, and re-clone it.
+    If you have local changes, save them first to a different location using
+    `hg export`.
 
 ### Specific Build Issues
 
@@ -1393,7 +1391,7 @@
 
 ## Hints and Suggestions for Advanced Users
 
-### Setting Up a Forest for Pushing Changes (defpath)
+### Setting Up a Repository for Pushing Changes (defpath)
 
 To help you prepare a proper push path for a Mercurial repository, there exists
 a useful tool known as [defpath](
@@ -1420,11 +1418,6 @@
 hg defpath -d -u <your OpenJDK username>
 ```
 
-If you also have the `trees` extension installed in Mercurial, you will
-automatically get a `tdefpath` command, which is even more useful. By running
-`hg tdefpath -du <username>` in the top repository of your forest, all repos
-will get setup automatically. This is the recommended usage.
-
 ### Bash Completion
 
 The `configure` and `make` commands tries to play nice with bash command-line
@@ -1459,7 +1452,7 @@
 
 ### Using Multiple Configurations
 
-You can have multiple configurations for a single source forest. When you
+You can have multiple configurations for a single source repository. When you
 create a new configuration, run `configure --with-conf-name=<name>` to create a
 configuration with the name `<name>`. Alternatively, you can create a directory
 under `build` and run `configure` from there, e.g. `mkdir build/<name> && cd
@@ -1474,7 +1467,7 @@
 
 ### Handling Reconfigurations
 
-If you update the forest and part of the configure script has changed, the
+If you update the repository and part of the configure script has changed, the
 build system will force you to re-run `configure`.
 
 Most of the time, you will be fine by running `configure` again with the same
--- a/make/Main.gmk	Wed Nov 21 13:20:52 2018 -0500
+++ b/make/Main.gmk	Wed Nov 21 13:53:17 2018 -0500
@@ -793,7 +793,7 @@
 
   jrtfs-jar: interim-langtools
 
-  build-microbenchmark: interim-langtools jdk.unsupported java.management
+  build-microbenchmark: interim-langtools exploded-image
 
   ifeq ($(ENABLE_GENERATE_CLASSLIST), true)
     ifeq ($(CREATE_BUILDJDK), true)
--- a/make/data/characterdata/CharacterData00.java.template	Wed Nov 21 13:20:52 2018 -0500
+++ b/make/data/characterdata/CharacterData00.java.template	Wed Nov 21 13:53:17 2018 -0500
@@ -25,7 +25,7 @@
 
 package java.lang;
 
-/** 
+/**
  * The CharacterData00 class encapsulates the large tables once found in
  * java.lang.Character
 */
@@ -265,6 +265,54 @@
             case 0x13ED: mapChar = 0xABBD; break;
             case 0x13EE: mapChar = 0xABBE; break;
             case 0x13EF: mapChar = 0xABBF; break;
+            case 0x1C90: mapChar = 0x10D0; break;
+            case 0x1C91: mapChar = 0x10D1; break;
+            case 0x1C92: mapChar = 0x10D2; break;
+            case 0x1C93: mapChar = 0x10D3; break;
+            case 0x1C94: mapChar = 0x10D4; break;
+            case 0x1C95: mapChar = 0x10D5; break;
+            case 0x1C96: mapChar = 0x10D6; break;
+            case 0x1C97: mapChar = 0x10D7; break;
+            case 0x1C98: mapChar = 0x10D8; break;
+            case 0x1C99: mapChar = 0x10D9; break;
+            case 0x1C9A: mapChar = 0x10DA; break;
+            case 0x1C9B: mapChar = 0x10DB; break;
+            case 0x1C9C: mapChar = 0x10DC; break;
+            case 0x1C9D: mapChar = 0x10DD; break;
+            case 0x1C9E: mapChar = 0x10DE; break;
+            case 0x1C9F: mapChar = 0x10DF; break;
+            case 0x1CA0: mapChar = 0x10E0; break;
+            case 0x1CA1: mapChar = 0x10E1; break;
+            case 0x1CA2: mapChar = 0x10E2; break;
+            case 0x1CA3: mapChar = 0x10E3; break;
+            case 0x1CA4: mapChar = 0x10E4; break;
+            case 0x1CA5: mapChar = 0x10E5; break;
+            case 0x1CA6: mapChar = 0x10E6; break;
+            case 0x1CA7: mapChar = 0x10E7; break;
+            case 0x1CA8: mapChar = 0x10E8; break;
+            case 0x1CA9: mapChar = 0x10E9; break;
+            case 0x1CAA: mapChar = 0x10EA; break;
+            case 0x1CAB: mapChar = 0x10EB; break;
+            case 0x1CAC: mapChar = 0x10EC; break;
+            case 0x1CAD: mapChar = 0x10ED; break;
+            case 0x1CAE: mapChar = 0x10EE; break;
+            case 0x1CAF: mapChar = 0x10EF; break;
+            case 0x1CB0: mapChar = 0x10F0; break;
+            case 0x1CB1: mapChar = 0x10F1; break;
+            case 0x1CB2: mapChar = 0x10F2; break;
+            case 0x1CB3: mapChar = 0x10F3; break;
+            case 0x1CB4: mapChar = 0x10F4; break;
+            case 0x1CB5: mapChar = 0x10F5; break;
+            case 0x1CB6: mapChar = 0x10F6; break;
+            case 0x1CB7: mapChar = 0x10F7; break;
+            case 0x1CB8: mapChar = 0x10F8; break;
+            case 0x1CB9: mapChar = 0x10F9; break;
+            case 0x1CBA: mapChar = 0x10FA; break;
+            case 0x1CBB: mapChar = 0x10FB; break;
+            case 0x1CBC: mapChar = 0x10FC; break;
+            case 0x1CBD: mapChar = 0x10FD; break;
+            case 0x1CBE: mapChar = 0x10FE; break;
+            case 0x1CBF: mapChar = 0x10FF; break;
             case 0x1E9E: mapChar = 0x00DF; break;
             case 0x1F88: mapChar = 0x1F80; break;
             case 0x1F89: mapChar = 0x1F81; break;
@@ -355,6 +403,52 @@
             case 0x0287: mapChar = 0xA7B1; break;
             case 0x029D: mapChar = 0xA7B2; break;
             case 0x029E: mapChar = 0xA7B0; break;
+            case 0x10D0: mapChar = 0x1C90; break;
+            case 0x10D1: mapChar = 0x1C91; break;
+            case 0x10D2: mapChar = 0x1C92; break;
+            case 0x10D3: mapChar = 0x1C93; break;
+            case 0x10D4: mapChar = 0x1C94; break;
+            case 0x10D5: mapChar = 0x1C95; break;
+            case 0x10D6: mapChar = 0x1C96; break;
+            case 0x10D7: mapChar = 0x1C97; break;
+            case 0x10D8: mapChar = 0x1C98; break;
+            case 0x10D9: mapChar = 0x1C99; break;
+            case 0x10DA: mapChar = 0x1C9A; break;
+            case 0x10DB: mapChar = 0x1C9B; break;
+            case 0x10DC: mapChar = 0x1C9C; break;
+            case 0x10DD: mapChar = 0x1C9D; break;
+            case 0x10DE: mapChar = 0x1C9E; break;
+            case 0x10DF: mapChar = 0x1C9F; break;
+            case 0x10E0: mapChar = 0x1CA0; break;
+            case 0x10E1: mapChar = 0x1CA1; break;
+            case 0x10E2: mapChar = 0x1CA2; break;
+            case 0x10E3: mapChar = 0x1CA3; break;
+            case 0x10E4: mapChar = 0x1CA4; break;
+            case 0x10E5: mapChar = 0x1CA5; break;
+            case 0x10E6: mapChar = 0x1CA6; break;
+            case 0x10E7: mapChar = 0x1CA7; break;
+            case 0x10E8: mapChar = 0x1CA8; break;
+            case 0x10E9: mapChar = 0x1CA9; break;
+            case 0x10EA: mapChar = 0x1CAA; break;
+            case 0x10EB: mapChar = 0x1CAB; break;
+            case 0x10EC: mapChar = 0x1CAC; break;
+            case 0x10ED: mapChar = 0x1CAD; break;
+            case 0x10EE: mapChar = 0x1CAE; break;
+            case 0x10EF: mapChar = 0x1CAF; break;
+            case 0x10F0: mapChar = 0x1CB0; break;
+            case 0x10F1: mapChar = 0x1CB1; break;
+            case 0x10F2: mapChar = 0x1CB2; break;
+            case 0x10F3: mapChar = 0x1CB3; break;
+            case 0x10F4: mapChar = 0x1CB4; break;
+            case 0x10F5: mapChar = 0x1CB5; break;
+            case 0x10F6: mapChar = 0x1CB6; break;
+            case 0x10F7: mapChar = 0x1CB7; break;
+            case 0x10F8: mapChar = 0x1CB8; break;
+            case 0x10F9: mapChar = 0x1CB9; break;
+            case 0x10FA: mapChar = 0x1CBA; break;
+            case 0x10FD: mapChar = 0x1CBD; break;
+            case 0x10FE: mapChar = 0x1CBE; break;
+            case 0x10FF: mapChar = 0x1CBF; break;
             case 0x1C80: mapChar = 0x0412; break;
             case 0x1C81: mapChar = 0x0414; break;
             case 0x1C82: mapChar = 0x041E; break;
@@ -544,9 +638,16 @@
                 mapChar = ch + 1;
             }
             else if ((val & $$maskLowerCase) == 0) {
-                // The character does not have a lowercase equivalent, so it must
-                // already be lowercase; so subtract 1 to get the titlecase form.
-                mapChar = ch - 1;
+                // For some Georgian letters, titlecase form is 
+                // same as this character.
+                if(ch >= 0x10D0 && ch <= 0x10FF) {
+                    mapChar = ch;
+                }
+                else {
+                    // The character does not have a lowercase equivalent, so it must
+                    // already be lowercase; so subtract 1 to get the titlecase form.
+                    mapChar = ch - 1;
+                }                
             }
             // else {
             // The character has both an uppercase equivalent and a lowercase
@@ -741,6 +842,52 @@
                     case 0x0287: mapChar = 0xA7B1; break;
                     case 0x029D: mapChar = 0xA7B2; break;
                     case 0x029E: mapChar = 0xA7B0; break;
+                    case 0x10D0: mapChar = 0x1C90; break;
+                    case 0x10D1: mapChar = 0x1C91; break;
+                    case 0x10D2: mapChar = 0x1C92; break;
+                    case 0x10D3: mapChar = 0x1C93; break;
+                    case 0x10D4: mapChar = 0x1C94; break;
+                    case 0x10D5: mapChar = 0x1C95; break;
+                    case 0x10D6: mapChar = 0x1C96; break;
+                    case 0x10D7: mapChar = 0x1C97; break;
+                    case 0x10D8: mapChar = 0x1C98; break;
+                    case 0x10D9: mapChar = 0x1C99; break;
+                    case 0x10DA: mapChar = 0x1C9A; break;
+                    case 0x10DB: mapChar = 0x1C9B; break;
+                    case 0x10DC: mapChar = 0x1C9C; break;
+                    case 0x10DD: mapChar = 0x1C9D; break;
+                    case 0x10DE: mapChar = 0x1C9E; break;
+                    case 0x10DF: mapChar = 0x1C9F; break;
+                    case 0x10E0: mapChar = 0x1CA0; break;
+                    case 0x10E1: mapChar = 0x1CA1; break;
+                    case 0x10E2: mapChar = 0x1CA2; break;
+                    case 0x10E3: mapChar = 0x1CA3; break;
+                    case 0x10E4: mapChar = 0x1CA4; break;
+                    case 0x10E5: mapChar = 0x1CA5; break;
+                    case 0x10E6: mapChar = 0x1CA6; break;
+                    case 0x10E7: mapChar = 0x1CA7; break;
+                    case 0x10E8: mapChar = 0x1CA8; break;
+                    case 0x10E9: mapChar = 0x1CA9; break;
+                    case 0x10EA: mapChar = 0x1CAA; break;
+                    case 0x10EB: mapChar = 0x1CAB; break;
+                    case 0x10EC: mapChar = 0x1CAC; break;
+                    case 0x10ED: mapChar = 0x1CAD; break;
+                    case 0x10EE: mapChar = 0x1CAE; break;
+                    case 0x10EF: mapChar = 0x1CAF; break;
+                    case 0x10F0: mapChar = 0x1CB0; break;
+                    case 0x10F1: mapChar = 0x1CB1; break;
+                    case 0x10F2: mapChar = 0x1CB2; break;
+                    case 0x10F3: mapChar = 0x1CB3; break;
+                    case 0x10F4: mapChar = 0x1CB4; break;
+                    case 0x10F5: mapChar = 0x1CB5; break;
+                    case 0x10F6: mapChar = 0x1CB6; break;
+                    case 0x10F7: mapChar = 0x1CB7; break;
+                    case 0x10F8: mapChar = 0x1CB8; break;
+                    case 0x10F9: mapChar = 0x1CB9; break;
+                    case 0x10FA: mapChar = 0x1CBA; break;
+                    case 0x10FD: mapChar = 0x1CBD; break;
+                    case 0x10FE: mapChar = 0x1CBE; break;
+                    case 0x10FF: mapChar = 0x1CBF; break;
                     case 0x1C80: mapChar = 0x0412; break;
                     case 0x1C81: mapChar = 0x0414; break;
                     case 0x1C82: mapChar = 0x041E; break;
@@ -928,5 +1075,5 @@
 
     static {
         $$Initializers
-    }        
+    }
 }
--- a/make/data/characterdata/CharacterData01.java.template	Wed Nov 21 13:20:52 2018 -0500
+++ b/make/data/characterdata/CharacterData01.java.template	Wed Nov 21 13:53:17 2018 -0500
@@ -364,6 +364,8 @@
             case 0x10E78: retval = 700; break;     // RUMI NUMBER SEVEN HUNDRED
             case 0x10E79: retval = 800; break;     // RUMI NUMBER EIGHT HUNDRED
             case 0x10E7A: retval = 900; break;     // RUMI NUMBER NINE HUNDRED
+            case 0x10F25: retval = 100; break;     // OLD SOGDIAN NUMBER ONE HUNDRED
+            case 0x10F54: retval = 100; break;     // SOGDIAN NUMBER ONE HUNDRED
             case 0x1105E: retval = 40; break;      // BRAHMI NUMBER FORTY
             case 0x1105F: retval = 50; break;      // BRAHMI NUMBER FIFTY
             case 0x11060: retval = 60; break;      // BRAHMI NUMBER SIXTY
@@ -407,6 +409,46 @@
             case 0x1D36F: retval = 70; break;      // COUNTING ROD TENS DIGIT SEVEN
             case 0x1D370: retval = 80; break;      // COUNTING ROD TENS DIGIT EIGHT
             case 0x1D371: retval = 90; break;      // COUNTING ROD TENS DIGIT NINE
+            case 0x1EC7D: retval = 40; break;      // INDIC SIYAQ NUMBER FORTY
+            case 0x1EC7E: retval = 50; break;      // INDIC SIYAQ NUMBER FIFTY
+            case 0x1EC7F: retval = 60; break;      // INDIC SIYAQ NUMBER SIXTY
+            case 0X1EC80: retval = 70; break;      // INDIC SIYAQ NUMBER SEVENTY
+            case 0X1EC81: retval = 80; break;      // INDIC SIYAQ NUMBER EIGHTY
+            case 0X1EC82: retval = 90; break;      // INDIC SIYAQ NUMBER NINETY
+            case 0X1EC83: retval = 100; break;     // INDIC SIYAQ NUMBER ONE HUNDRED
+            case 0X1EC84: retval = 200; break;     // INDIC SIYAQ NUMBER TWO HUNDRED
+            case 0X1EC85: retval = 300; break;     // INDIC SIYAQ NUMBER THREE HUNDRED
+            case 0X1EC86: retval = 400; break;     // INDIC SIYAQ NUMBER FOUR HUNDRED
+            case 0X1EC87: retval = 500; break;     // INDIC SIYAQ NUMBER FIVE HUNDRED
+            case 0X1EC88: retval = 600; break;     // INDIC SIYAQ NUMBER SIX HUNDRED
+            case 0X1EC89: retval = 700; break;     // INDIC SIYAQ NUMBER SEVEN HUNDRED
+            case 0X1EC8A: retval = 800; break;     // INDIC SIYAQ NUMBER EIGHT HUNDRED
+            case 0X1EC8B: retval = 900; break;     // INDIC SIYAQ NUMBER NINE HUNDRED
+            case 0X1EC8C: retval = 1000; break;    // INDIC SIYAQ NUMBER ONE THOUSAND
+            case 0X1EC8D: retval = 2000; break;    // INDIC SIYAQ NUMBER TWO THOUSAND
+            case 0X1EC8E: retval = 3000; break;    // INDIC SIYAQ NUMBER THREE THOUSAND
+            case 0X1EC8F: retval = 4000; break;    // INDIC SIYAQ NUMBER FOUR THOUSAND
+            case 0X1EC90: retval = 5000; break;    // INDIC SIYAQ NUMBER FIVE THOUSAND
+            case 0X1EC91: retval = 6000; break;    // INDIC SIYAQ NUMBER SIX THOUSAND
+            case 0X1EC92: retval = 7000; break;    // INDIC SIYAQ NUMBER SEVEN THOUSAND
+            case 0X1EC93: retval = 8000; break;    // INDIC SIYAQ NUMBER EIGHT THOUSAND
+            case 0X1EC94: retval = 9000; break;    // INDIC SIYAQ NUMBER NINE THOUSAND
+            case 0X1EC95: retval = 10000; break;    // INDIC SIYAQ NUMBER TEN THOUSAND
+            case 0X1EC96: retval = 20000; break;    // INDIC SIYAQ NUMBER TWENTY THOUSAND
+            case 0X1EC97: retval = 30000; break;    // INDIC SIYAQ NUMBER THIRTY THOUSAND
+            case 0X1EC98: retval = 40000; break;    // INDIC SIYAQ NUMBER FORTY THOUSAND
+            case 0X1EC99: retval = 50000; break;    // INDIC SIYAQ NUMBER FIFTY THOUSAND
+            case 0X1EC9A: retval = 60000; break;    // INDIC SIYAQ NUMBER SIXTY THOUSAND
+            case 0X1EC9B: retval = 70000; break;    // INDIC SIYAQ NUMBER SEVENTY THOUSAND
+            case 0X1EC9C: retval = 80000; break;    // INDIC SIYAQ NUMBER EIGHTY THOUSAND
+            case 0X1EC9D: retval = 90000; break;    // INDIC SIYAQ NUMBER NINETY THOUSAND
+            case 0X1EC9E: retval = 100000; break;    // INDIC SIYAQ NUMBER LAKH
+            case 0X1EC9F: retval = 200000; break;    // INDIC SIYAQ NUMBER LAKHAN
+            case 0X1ECA0: retval = 100000; break;    // INDIC SIYAQ LAKH MARK
+            case 0X1ECA1: retval = 10000000; break;  // INDIC SIYAQ NUMBER KAROR
+            case 0X1ECA2: retval = 20000000; break;  // INDIC SIYAQ NUMBER KARORAN
+            case 0X1ECB3: retval = 10000; break;    // INDIC SIYAQ NUMBER ALTERNATE TEN THOUSAND
+            case 0X1ECB4: retval = 100000; break;   // INDIC SIYAQ NUMBER ALTERNATE LAKH MARK
             default: retval = -2; break;
             }
             
--- a/make/data/unicodedata/PropList.txt	Wed Nov 21 13:20:52 2018 -0500
+++ b/make/data/unicodedata/PropList.txt	Wed Nov 21 13:53:17 2018 -0500
@@ -1,6 +1,6 @@
-# PropList-10.0.0.txt
-# Date: 2017-03-10, 08:25:30 GMT
-# Copyright (c) 2017 Unicode, Inc.
+# PropList-11.0.0.txt
+# Date: 2018-03-15, 04:28:35 GMT
+# Copyright (c) 2018 Unicode, Inc.
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
@@ -125,7 +125,7 @@
 05C3          ; Terminal_Punctuation # Po       HEBREW PUNCTUATION SOF PASUQ
 060C          ; Terminal_Punctuation # Po       ARABIC COMMA
 061B          ; Terminal_Punctuation # Po       ARABIC SEMICOLON
-061F          ; Terminal_Punctuation # Po       ARABIC QUESTION MARK
+061E..061F    ; Terminal_Punctuation # Po   [2] ARABIC TRIPLE DOT PUNCTUATION MARK..ARABIC QUESTION MARK
 06D4          ; Terminal_Punctuation # Po       ARABIC FULL STOP
 0700..070A    ; Terminal_Punctuation # Po  [11] SYRIAC END OF PARAGRAPH..SYRIAC CONTRACTION
 070C          ; Terminal_Punctuation # Po       SYRIAC HARKLEAN METOBELUS
@@ -156,6 +156,8 @@
 2E2E          ; Terminal_Punctuation # Po       REVERSED QUESTION MARK
 2E3C          ; Terminal_Punctuation # Po       STENOGRAPHIC FULL STOP
 2E41          ; Terminal_Punctuation # Po       REVERSED COMMA
+2E4C          ; Terminal_Punctuation # Po       MEDIEVAL COMMA
+2E4E          ; Terminal_Punctuation # Po       PUNCTUS ELEVATUS MARK
 3001..3002    ; Terminal_Punctuation # Po   [2] IDEOGRAPHIC COMMA..IDEOGRAPHIC FULL STOP
 A4FE..A4FF    ; Terminal_Punctuation # Po   [2] LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP
 A60D..A60F    ; Terminal_Punctuation # Po   [3] VAI COMMA..VAI QUESTION MARK
@@ -185,6 +187,7 @@
 10AF0..10AF5  ; Terminal_Punctuation # Po   [6] MANICHAEAN PUNCTUATION STAR..MANICHAEAN PUNCTUATION TWO DOTS
 10B3A..10B3F  ; Terminal_Punctuation # Po   [6] TINY TWO DOTS OVER ONE DOT PUNCTUATION..LARGE ONE RING OVER TWO RINGS PUNCTUATION
 10B99..10B9C  ; Terminal_Punctuation # Po   [4] PSALTER PAHLAVI SECTION MARK..PSALTER PAHLAVI FOUR DOTS WITH DOT
+10F55..10F59  ; Terminal_Punctuation # Po   [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
 11047..1104D  ; Terminal_Punctuation # Po   [7] BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS
 110BE..110C1  ; Terminal_Punctuation # Po   [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA
 11141..11143  ; Terminal_Punctuation # Po   [3] CHAKMA DANDA..CHAKMA QUESTION MARK
@@ -204,15 +207,17 @@
 11AA1..11AA2  ; Terminal_Punctuation # Po   [2] SOYOMBO TERMINAL MARK-1..SOYOMBO TERMINAL MARK-2
 11C41..11C43  ; Terminal_Punctuation # Po   [3] BHAIKSUKI DANDA..BHAIKSUKI WORD SEPARATOR
 11C71         ; Terminal_Punctuation # Po       MARCHEN MARK SHAD
+11EF7..11EF8  ; Terminal_Punctuation # Po   [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION
 12470..12474  ; Terminal_Punctuation # Po   [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
 16A6E..16A6F  ; Terminal_Punctuation # Po   [2] MRO DANDA..MRO DOUBLE DANDA
 16AF5         ; Terminal_Punctuation # Po       BASSA VAH FULL STOP
 16B37..16B39  ; Terminal_Punctuation # Po   [3] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN CIM CHEEM
 16B44         ; Terminal_Punctuation # Po       PAHAWH HMONG SIGN XAUS
+16E97..16E98  ; Terminal_Punctuation # Po   [2] MEDEFAIDRIN COMMA..MEDEFAIDRIN FULL STOP
 1BC9F         ; Terminal_Punctuation # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
 1DA87..1DA8A  ; Terminal_Punctuation # Po   [4] SIGNWRITING COMMA..SIGNWRITING COLON
 
-# Total code points: 252
+# Total code points: 264
 
 # ================================================
 
@@ -661,6 +666,7 @@
 10A01..10A03  ; Other_Alphabetic # Mn   [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
 10A05..10A06  ; Other_Alphabetic # Mn   [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
 10A0C..10A0F  ; Other_Alphabetic # Mn   [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
+10D24..10D27  ; Other_Alphabetic # Mn   [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
 11000         ; Other_Alphabetic # Mc       BRAHMI SIGN CANDRABINDU
 11001         ; Other_Alphabetic # Mn       BRAHMI SIGN ANUSVARA
 11002         ; Other_Alphabetic # Mc       BRAHMI SIGN VISARGA
@@ -673,6 +679,7 @@
 11127..1112B  ; Other_Alphabetic # Mn   [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU
 1112C         ; Other_Alphabetic # Mc       CHAKMA VOWEL SIGN E
 1112D..11132  ; Other_Alphabetic # Mn   [6] CHAKMA VOWEL SIGN AI..CHAKMA AU MARK
+11145..11146  ; Other_Alphabetic # Mc   [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI
 11180..11181  ; Other_Alphabetic # Mn   [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA
 11182         ; Other_Alphabetic # Mc       SHARADA SIGN VISARGA
 111B3..111B5  ; Other_Alphabetic # Mc   [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II
@@ -730,9 +737,10 @@
 11722..11725  ; Other_Alphabetic # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
 11726         ; Other_Alphabetic # Mc       AHOM VOWEL SIGN E
 11727..1172A  ; Other_Alphabetic # Mn   [4] AHOM VOWEL SIGN AW..AHOM VOWEL SIGN AM
-11A01..11A06  ; Other_Alphabetic # Mn   [6] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL SIGN O
-11A07..11A08  ; Other_Alphabetic # Mc   [2] ZANABAZAR SQUARE VOWEL SIGN AI..ZANABAZAR SQUARE VOWEL SIGN AU
-11A09..11A0A  ; Other_Alphabetic # Mn   [2] ZANABAZAR SQUARE VOWEL SIGN REVERSED I..ZANABAZAR SQUARE VOWEL LENGTH MARK
+1182C..1182E  ; Other_Alphabetic # Mc   [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II
+1182F..11837  ; Other_Alphabetic # Mn   [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
+11838         ; Other_Alphabetic # Mc       DOGRA SIGN VISARGA
+11A01..11A0A  ; Other_Alphabetic # Mn  [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK
 11A35..11A38  ; Other_Alphabetic # Mn   [4] ZANABAZAR SQUARE SIGN CANDRABINDU..ZANABAZAR SQUARE SIGN ANUSVARA
 11A39         ; Other_Alphabetic # Mc       ZANABAZAR SQUARE SIGN VISARGA
 11A3B..11A3E  ; Other_Alphabetic # Mn   [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
@@ -758,6 +766,13 @@
 11D3F..11D41  ; Other_Alphabetic # Mn   [3] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI SIGN VISARGA
 11D43         ; Other_Alphabetic # Mn       MASARAM GONDI SIGN CANDRA
 11D47         ; Other_Alphabetic # Mn       MASARAM GONDI RA-KARA
+11D8A..11D8E  ; Other_Alphabetic # Mc   [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU
+11D90..11D91  ; Other_Alphabetic # Mn   [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI
+11D93..11D94  ; Other_Alphabetic # Mc   [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU
+11D95         ; Other_Alphabetic # Mn       GUNJALA GONDI SIGN ANUSVARA
+11D96         ; Other_Alphabetic # Mc       GUNJALA GONDI SIGN VISARGA
+11EF3..11EF4  ; Other_Alphabetic # Mn   [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
+11EF5..11EF6  ; Other_Alphabetic # Mc   [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O
 16B30..16B36  ; Other_Alphabetic # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
 16F51..16F7E  ; Other_Alphabetic # Mc  [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
 1BC9E         ; Other_Alphabetic # Mn       DUPLOYAN DOUBLE MARK
@@ -771,7 +786,7 @@
 1F150..1F169  ; Other_Alphabetic # So  [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
 1F170..1F189  ; Other_Alphabetic # So  [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
 
-# Total code points: 1300
+# Total code points: 1334
 
 # ================================================
 
@@ -780,10 +795,10 @@
 3021..3029    ; Ideographic # Nl   [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
 3038..303A    ; Ideographic # Nl   [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
 3400..4DB5    ; Ideographic # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
-4E00..9FEA    ; Ideographic # Lo [20971] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEA
+4E00..9FEF    ; Ideographic # Lo [20976] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEF
 F900..FA6D    ; Ideographic # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
 FA70..FAD9    ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
-17000..187EC  ; Ideographic # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+17000..187F1  ; Ideographic # Lo [6130] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F1
 18800..18AF2  ; Ideographic # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
 1B170..1B2FB  ; Ideographic # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
 20000..2A6D6  ; Ideographic # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
@@ -793,7 +808,7 @@
 2CEB0..2EBE0  ; Ideographic # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
 2F800..2FA1D  ; Ideographic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
 
-# Total code points: 96174
+# Total code points: 96184
 
 # ================================================
 
@@ -953,6 +968,9 @@
 FFE3          ; Diacritic # Sk       FULLWIDTH MACRON
 102E0         ; Diacritic # Mn       COPTIC EPACT THOUSANDS MARK
 10AE5..10AE6  ; Diacritic # Mn   [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
+10D22..10D23  ; Diacritic # Lo   [2] HANIFI ROHINGYA MARK SAKIN..HANIFI ROHINGYA MARK NA KHONNA
+10D24..10D27  ; Diacritic # Mn   [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+10F46..10F50  ; Diacritic # Mn  [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
 110B9..110BA  ; Diacritic # Mn   [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA
 11133..11134  ; Diacritic # Mn   [2] CHAKMA VIRAMA..CHAKMA MAAYYAA
 11173         ; Diacritic # Mn       MAHAJANI SIGN NUKTA
@@ -973,12 +991,14 @@
 116B6         ; Diacritic # Mc       TAKRI SIGN VIRAMA
 116B7         ; Diacritic # Mn       TAKRI SIGN NUKTA
 1172B         ; Diacritic # Mn       AHOM SIGN KILLER
+11839..1183A  ; Diacritic # Mn   [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
 11A34         ; Diacritic # Mn       ZANABAZAR SQUARE SIGN VIRAMA
 11A47         ; Diacritic # Mn       ZANABAZAR SQUARE SUBJOINER
 11A99         ; Diacritic # Mn       SOYOMBO SUBJOINER
 11C3F         ; Diacritic # Mn       BHAIKSUKI SIGN VIRAMA
 11D42         ; Diacritic # Mn       MASARAM GONDI SIGN NUKTA
 11D44..11D45  ; Diacritic # Mn   [2] MASARAM GONDI SIGN HALANTA..MASARAM GONDI VIRAMA
+11D97         ; Diacritic # Mn       GUNJALA GONDI VIRAMA
 16AF0..16AF4  ; Diacritic # Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
 16F8F..16F92  ; Diacritic # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
 16F93..16F9F  ; Diacritic # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
@@ -991,7 +1011,7 @@
 1E944..1E946  ; Diacritic # Mn   [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
 1E948..1E94A  ; Diacritic # Mn   [3] ADLAM CONSONANT MODIFIER..ADLAM NUKTA
 
-# Total code points: 798
+# Total code points: 818
 
 # ================================================
 
@@ -1137,7 +1157,7 @@
 # ================================================
 
 3400..4DB5    ; Unified_Ideograph # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
-4E00..9FEA    ; Unified_Ideograph # Lo [20971] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEA
+4E00..9FEF    ; Unified_Ideograph # Lo [20976] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEF
 FA0E..FA0F    ; Unified_Ideograph # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F
 FA11          ; Unified_Ideograph # Lo       CJK COMPATIBILITY IDEOGRAPH-FA11
 FA13..FA14    ; Unified_Ideograph # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14
@@ -1151,7 +1171,7 @@
 2B820..2CEA1  ; Unified_Ideograph # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
 2CEB0..2EBE0  ; Unified_Ideograph # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
 
-# Total code points: 87882
+# Total code points: 87887
 
 # ================================================
 
@@ -1255,10 +1275,13 @@
 002E          ; Sentence_Terminal # Po       FULL STOP
 003F          ; Sentence_Terminal # Po       QUESTION MARK
 0589          ; Sentence_Terminal # Po       ARMENIAN FULL STOP
-061F          ; Sentence_Terminal # Po       ARABIC QUESTION MARK
+061E..061F    ; Sentence_Terminal # Po   [2] ARABIC TRIPLE DOT PUNCTUATION MARK..ARABIC QUESTION MARK
 06D4          ; Sentence_Terminal # Po       ARABIC FULL STOP
 0700..0702    ; Sentence_Terminal # Po   [3] SYRIAC END OF PARAGRAPH..SYRIAC SUBLINEAR FULL STOP
 07F9          ; Sentence_Terminal # Po       NKO EXCLAMATION MARK
+0837          ; Sentence_Terminal # Po       SAMARITAN PUNCTUATION MELODIC QITSA
+0839          ; Sentence_Terminal # Po       SAMARITAN PUNCTUATION QITSA
+083D..083E    ; Sentence_Terminal # Po   [2] SAMARITAN PUNCTUATION SOF MASHFAAT..SAMARITAN PUNCTUATION ANNAAU
 0964..0965    ; Sentence_Terminal # Po   [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
 104A..104B    ; Sentence_Terminal # Po   [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION
 1362          ; Sentence_Terminal # Po       ETHIOPIC FULL STOP
@@ -1296,6 +1319,7 @@
 FF1F          ; Sentence_Terminal # Po       FULLWIDTH QUESTION MARK
 FF61          ; Sentence_Terminal # Po       HALFWIDTH IDEOGRAPHIC FULL STOP
 10A56..10A57  ; Sentence_Terminal # Po   [2] KHAROSHTHI PUNCTUATION DANDA..KHAROSHTHI PUNCTUATION DOUBLE DANDA
+10F55..10F59  ; Sentence_Terminal # Po   [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
 11047..11048  ; Sentence_Terminal # Po   [2] BRAHMI DANDA..BRAHMI DOUBLE DANDA
 110BE..110C1  ; Sentence_Terminal # Po   [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA
 11141..11143  ; Sentence_Terminal # Po   [3] CHAKMA DANDA..CHAKMA QUESTION MARK
@@ -1313,14 +1337,16 @@
 11A42..11A43  ; Sentence_Terminal # Po   [2] ZANABAZAR SQUARE MARK SHAD..ZANABAZAR SQUARE MARK DOUBLE SHAD
 11A9B..11A9C  ; Sentence_Terminal # Po   [2] SOYOMBO MARK SHAD..SOYOMBO MARK DOUBLE SHAD
 11C41..11C42  ; Sentence_Terminal # Po   [2] BHAIKSUKI DANDA..BHAIKSUKI DOUBLE DANDA
+11EF7..11EF8  ; Sentence_Terminal # Po   [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION
 16A6E..16A6F  ; Sentence_Terminal # Po   [2] MRO DANDA..MRO DOUBLE DANDA
 16AF5         ; Sentence_Terminal # Po       BASSA VAH FULL STOP
 16B37..16B38  ; Sentence_Terminal # Po   [2] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS TSHAB CEEB
 16B44         ; Sentence_Terminal # Po       PAHAWH HMONG SIGN XAUS
+16E98         ; Sentence_Terminal # Po       MEDEFAIDRIN FULL STOP
 1BC9F         ; Sentence_Terminal # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
 1DA88         ; Sentence_Terminal # Po       SIGNWRITING FULL STOP
 
-# Total code points: 128
+# Total code points: 141
 
 # ================================================
 
@@ -1521,14 +1547,10 @@
 2B74..2B75    ; Pattern_Syntax # Cn   [2] <reserved-2B74>..<reserved-2B75>
 2B76..2B95    ; Pattern_Syntax # So  [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW
 2B96..2B97    ; Pattern_Syntax # Cn   [2] <reserved-2B96>..<reserved-2B97>
-2B98..2BB9    ; Pattern_Syntax # So  [34] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..UP ARROWHEAD IN A RECTANGLE BOX
-2BBA..2BBC    ; Pattern_Syntax # Cn   [3] <reserved-2BBA>..<reserved-2BBC>
-2BBD..2BC8    ; Pattern_Syntax # So  [12] BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED
+2B98..2BC8    ; Pattern_Syntax # So  [49] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED
 2BC9          ; Pattern_Syntax # Cn       <reserved-2BC9>
-2BCA..2BD2    ; Pattern_Syntax # So   [9] TOP HALF BLACK CIRCLE..GROUP MARK
-2BD3..2BEB    ; Pattern_Syntax # Cn  [25] <reserved-2BD3>..<reserved-2BEB>
-2BEC..2BEF    ; Pattern_Syntax # So   [4] LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
-2BF0..2BFF    ; Pattern_Syntax # Cn  [16] <reserved-2BF0>..<reserved-2BFF>
+2BCA..2BFE    ; Pattern_Syntax # So  [53] TOP HALF BLACK CIRCLE..REVERSED RIGHT ANGLE
+2BFF          ; Pattern_Syntax # Cn       <reserved-2BFF>
 2E00..2E01    ; Pattern_Syntax # Po   [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
 2E02          ; Pattern_Syntax # Pi       LEFT SUBSTITUTION BRACKET
 2E03          ; Pattern_Syntax # Pf       RIGHT SUBSTITUTION BRACKET
@@ -1566,8 +1588,8 @@
 2E40          ; Pattern_Syntax # Pd       DOUBLE HYPHEN
 2E41          ; Pattern_Syntax # Po       REVERSED COMMA
 2E42          ; Pattern_Syntax # Ps       DOUBLE LOW-REVERSED-9 QUOTATION MARK
-2E43..2E49    ; Pattern_Syntax # Po   [7] DASH WITH LEFT UPTURN..DOUBLE STACKED COMMA
-2E4A..2E7F    ; Pattern_Syntax # Cn  [54] <reserved-2E4A>..<reserved-2E7F>
+2E43..2E4E    ; Pattern_Syntax # Po  [12] DASH WITH LEFT UPTURN..PUNCTUS ELEVATUS MARK
+2E4F..2E7F    ; Pattern_Syntax # Cn  [49] <reserved-2E4F>..<reserved-2E7F>
 3001..3003    ; Pattern_Syntax # Po   [3] IDEOGRAPHIC COMMA..DITTO MARK
 3008          ; Pattern_Syntax # Ps       LEFT ANGLE BRACKET
 3009          ; Pattern_Syntax # Pe       RIGHT ANGLE BRACKET
@@ -1606,8 +1628,9 @@
 070F          ; Prepended_Concatenation_Mark # Cf       SYRIAC ABBREVIATION MARK
 08E2          ; Prepended_Concatenation_Mark # Cf       ARABIC DISPUTED END OF AYAH
 110BD         ; Prepended_Concatenation_Mark # Cf       KAITHI NUMBER SIGN
+110CD         ; Prepended_Concatenation_Mark # Cf       KAITHI NUMBER SIGN ABOVE
 
-# Total code points: 10
+# Total code points: 11
 
 # ================================================
 
--- a/make/data/unicodedata/Scripts.txt	Wed Nov 21 13:20:52 2018 -0500
+++ b/make/data/unicodedata/Scripts.txt	Wed Nov 21 13:53:17 2018 -0500
@@ -1,6 +1,6 @@
-# Scripts-10.0.0.txt
-# Date: 2017-03-11, 06:40:37 GMT
-# Copyright (c) 2017 Unicode, Inc.
+# Scripts-11.0.0.txt
+# Date: 2018-02-21, 05:34:31 GMT
+# Copyright (c) 2018 Unicode, Inc.
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
@@ -308,10 +308,8 @@
 2B47..2B4C    ; Common # Sm   [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
 2B4D..2B73    ; Common # So  [39] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR
 2B76..2B95    ; Common # So  [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW
-2B98..2BB9    ; Common # So  [34] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..UP ARROWHEAD IN A RECTANGLE BOX
-2BBD..2BC8    ; Common # So  [12] BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED
-2BCA..2BD2    ; Common # So   [9] TOP HALF BLACK CIRCLE..GROUP MARK
-2BEC..2BEF    ; Common # So   [4] LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
+2B98..2BC8    ; Common # So  [49] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED
+2BCA..2BFE    ; Common # So  [53] TOP HALF BLACK CIRCLE..REVERSED RIGHT ANGLE
 2E00..2E01    ; Common # Po   [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
 2E02          ; Common # Pi       LEFT SUBSTITUTION BRACKET
 2E03          ; Common # Pf       RIGHT SUBSTITUTION BRACKET
@@ -349,7 +347,7 @@
 2E40          ; Common # Pd       DOUBLE HYPHEN
 2E41          ; Common # Po       REVERSED COMMA
 2E42          ; Common # Ps       DOUBLE LOW-REVERSED-9 QUOTATION MARK
-2E43..2E49    ; Common # Po   [7] DASH WITH LEFT UPTURN..DOUBLE STACKED COMMA
+2E43..2E4E    ; Common # Po  [12] DASH WITH LEFT UPTURN..PUNCTUS ELEVATUS MARK
 2FF0..2FFB    ; Common # So  [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
 3000          ; Common # Zs       IDEOGRAPHIC SPACE
 3001..3003    ; Common # Po   [3] IDEOGRAPHIC COMMA..DITTO MARK
@@ -522,8 +520,9 @@
 1D183..1D184  ; Common # So   [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN
 1D18C..1D1A9  ; Common # So  [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH
 1D1AE..1D1E8  ; Common # So  [59] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KIEVAN FLAT SIGN
+1D2E0..1D2F3  ; Common # No  [20] MAYAN NUMERAL ZERO..MAYAN NUMERAL NINETEEN
 1D300..1D356  ; Common # So  [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
-1D360..1D371  ; Common # No  [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
+1D360..1D378  ; Common # No  [25] COUNTING ROD UNIT DIGIT ONE..TALLY MARK FIVE
 1D400..1D454  ; Common # L&  [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
 1D456..1D49C  ; Common # L&  [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
 1D49E..1D49F  ; Common # L&   [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
@@ -565,6 +564,11 @@
 1D7C3         ; Common # Sm       MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
 1D7C4..1D7CB  ; Common # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
 1D7CE..1D7FF  ; Common # Nd  [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+1EC71..1ECAB  ; Common # No  [59] INDIC SIYAQ NUMBER ONE..INDIC SIYAQ NUMBER PREFIXED NINE
+1ECAC         ; Common # So       INDIC SIYAQ PLACEHOLDER
+1ECAD..1ECAF  ; Common # No   [3] INDIC SIYAQ FRACTION ONE QUARTER..INDIC SIYAQ FRACTION THREE QUARTERS
+1ECB0         ; Common # Sc       INDIC SIYAQ RUPEE MARK
+1ECB1..1ECB4  ; Common # No   [4] INDIC SIYAQ NUMBER ALTERNATE ONE..INDIC SIYAQ ALTERNATE LAKH MARK
 1F000..1F02B  ; Common # So  [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK
 1F030..1F093  ; Common # So [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06
 1F0A0..1F0AE  ; Common # So  [15] PLAYING CARD BACK..PLAYING CARD KING OF SPADES
@@ -572,8 +576,7 @@
 1F0C1..1F0CF  ; Common # So  [15] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER
 1F0D1..1F0F5  ; Common # So  [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21
 1F100..1F10C  ; Common # No  [13] DIGIT ZERO FULL STOP..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
-1F110..1F12E  ; Common # So  [31] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED WZ
-1F130..1F16B  ; Common # So  [60] SQUARED LATIN CAPITAL LETTER A..RAISED MD SIGN
+1F110..1F16B  ; Common # So  [92] PARENTHESIZED LATIN CAPITAL LETTER A..RAISED MD SIGN
 1F170..1F1AC  ; Common # So  [61] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VOD
 1F1E6..1F1FF  ; Common # So  [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
 1F201..1F202  ; Common # So   [2] SQUARED KATAKANA KOKO..SQUARED KATAKANA SA
@@ -585,9 +588,9 @@
 1F3FB..1F3FF  ; Common # Sk   [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
 1F400..1F6D4  ; Common # So [725] RAT..PAGODA
 1F6E0..1F6EC  ; Common # So  [13] HAMMER AND WRENCH..AIRPLANE ARRIVING
-1F6F0..1F6F8  ; Common # So   [9] SATELLITE..FLYING SAUCER
+1F6F0..1F6F9  ; Common # So  [10] SATELLITE..SKATEBOARD
 1F700..1F773  ; Common # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
-1F780..1F7D4  ; Common # So  [85] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR
+1F780..1F7D8  ; Common # So  [89] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..NEGATIVE CIRCLED SQUARE
 1F800..1F80B  ; Common # So  [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
 1F810..1F847  ; Common # So  [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW
 1F850..1F859  ; Common # So  [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
@@ -595,15 +598,18 @@
 1F890..1F8AD  ; Common # So  [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
 1F900..1F90B  ; Common # So  [12] CIRCLED CROSS FORMEE WITH FOUR DOTS..DOWNWARD FACING NOTCHED HOOK WITH DOT
 1F910..1F93E  ; Common # So  [47] ZIPPER-MOUTH FACE..HANDBALL
-1F940..1F94C  ; Common # So  [13] WILTED FLOWER..CURLING STONE
-1F950..1F96B  ; Common # So  [28] CROISSANT..CANNED FOOD
-1F980..1F997  ; Common # So  [24] CRAB..CRICKET
-1F9C0         ; Common # So       CHEESE WEDGE
-1F9D0..1F9E6  ; Common # So  [23] FACE WITH MONOCLE..SOCKS
+1F940..1F970  ; Common # So  [49] WILTED FLOWER..SMILING FACE WITH SMILING EYES AND THREE HEARTS
+1F973..1F976  ; Common # So   [4] FACE WITH PARTY HORN AND PARTY HAT..FREEZING FACE
+1F97A         ; Common # So       FACE WITH PLEADING EYES
+1F97C..1F9A2  ; Common # So  [39] LAB COAT..SWAN
+1F9B0..1F9B9  ; Common # So  [10] EMOJI COMPONENT RED HAIR..SUPERVILLAIN
+1F9C0..1F9C2  ; Common # So   [3] CHEESE WEDGE..SALT SHAKER
+1F9D0..1F9FF  ; Common # So  [48] FACE WITH MONOCLE..NAZAR AMULET
+1FA60..1FA6D  ; Common # So  [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER
 E0001         ; Common # Cf       LANGUAGE TAG
 E0020..E007F  ; Common # Cf  [96] TAG SPACE..CANCEL TAG
 
-# Total code points: 7363
+# Total code points: 7591
 
 # ================================================
 
@@ -646,8 +652,7 @@
 A771..A787    ; Latin # L&  [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
 A78B..A78E    ; Latin # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
 A78F          ; Latin # Lo       LATIN LETTER SINOLOGICAL DOT
-A790..A7AE    ; Latin # L&  [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I
-A7B0..A7B7    ; Latin # L&   [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA
+A790..A7B9    ; Latin # L&  [42] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER U WITH STROKE
 A7F7          ; Latin # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
 A7F8..A7F9    ; Latin # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
 A7FA          ; Latin # L&       LATIN LETTER SMALL CAPITAL TURNED M
@@ -659,7 +664,7 @@
 FF21..FF3A    ; Latin # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
 FF41..FF5A    ; Latin # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
 
-# Total code points: 1350
+# Total code points: 1353
 
 # ================================================
 
@@ -753,13 +758,13 @@
 0531..0556    ; Armenian # L&  [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
 0559          ; Armenian # Lm       ARMENIAN MODIFIER LETTER LEFT HALF RING
 055A..055F    ; Armenian # Po   [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK
-0561..0587    ; Armenian # L&  [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
+0560..0588    ; Armenian # L&  [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE
 058A          ; Armenian # Pd       ARMENIAN HYPHEN
 058D..058E    ; Armenian # So   [2] RIGHT-FACING ARMENIAN ETERNITY SIGN..LEFT-FACING ARMENIAN ETERNITY SIGN
 058F          ; Armenian # Sc       ARMENIAN DRAM SIGN
 FB13..FB17    ; Armenian # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
 
-# Total code points: 93
+# Total code points: 95
 
 # ================================================
 
@@ -773,7 +778,7 @@
 05C6          ; Hebrew # Po       HEBREW PUNCTUATION NUN HAFUKHA
 05C7          ; Hebrew # Mn       HEBREW POINT QAMATS QATAN
 05D0..05EA    ; Hebrew # Lo  [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
-05F0..05F2    ; Hebrew # Lo   [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD
+05EF..05F2    ; Hebrew # Lo   [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD
 05F3..05F4    ; Hebrew # Po   [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM
 FB1D          ; Hebrew # Lo       HEBREW LETTER YOD WITH HIRIQ
 FB1E          ; Hebrew # Mn       HEBREW POINT JUDEO-SPANISH VARIKA
@@ -786,7 +791,7 @@
 FB43..FB44    ; Hebrew # Lo   [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
 FB46..FB4F    ; Hebrew # Lo  [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED
 
-# Total code points: 133
+# Total code points: 134
 
 # ================================================
 
@@ -823,7 +828,7 @@
 0750..077F    ; Arabic # Lo  [48] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE
 08A0..08B4    ; Arabic # Lo  [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
 08B6..08BD    ; Arabic # Lo   [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
-08D4..08E1    ; Arabic # Mn  [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
+08D3..08E1    ; Arabic # Mn  [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA
 08E3..08FF    ; Arabic # Mn  [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA
 FB50..FBB1    ; Arabic # Lo  [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
 FBB2..FBC1    ; Arabic # Sk  [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW
@@ -871,7 +876,7 @@
 1EEAB..1EEBB  ; Arabic # Lo  [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
 1EEF0..1EEF1  ; Arabic # Sm   [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL
 
-# Total code points: 1280
+# Total code points: 1281
 
 # ================================================
 
@@ -921,9 +926,10 @@
 A8F8..A8FA    ; Devanagari # Po   [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET
 A8FB          ; Devanagari # Lo       DEVANAGARI HEADSTROKE
 A8FC          ; Devanagari # Po       DEVANAGARI SIGN SIDDHAM
-A8FD          ; Devanagari # Lo       DEVANAGARI JAIN OM
-
-# Total code points: 154
+A8FD..A8FE    ; Devanagari # Lo   [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY
+A8FF          ; Devanagari # Mn       DEVANAGARI VOWEL SIGN AY
+
+# Total code points: 156
 
 # ================================================
 
@@ -956,8 +962,9 @@
 09FB          ; Bengali # Sc       BENGALI GANDA MARK
 09FC          ; Bengali # Lo       BENGALI LETTER VEDIC ANUSVARA
 09FD          ; Bengali # Po       BENGALI ABBREVIATION SIGN
-
-# Total code points: 95
+09FE          ; Bengali # Mn       BENGALI SANDHI MARK
+
+# Total code points: 96
 
 # ================================================
 
@@ -982,8 +989,9 @@
 0A70..0A71    ; Gurmukhi # Mn   [2] GURMUKHI TIPPI..GURMUKHI ADDAK
 0A72..0A74    ; Gurmukhi # Lo   [3] GURMUKHI IRI..GURMUKHI EK ONKAR
 0A75          ; Gurmukhi # Mn       GURMUKHI SIGN YAKASH
-
-# Total code points: 79
+0A76          ; Gurmukhi # Po       GURMUKHI ABBREVIATION SIGN
+
+# Total code points: 80
 
 # ================================================
 
@@ -1078,6 +1086,7 @@
 
 0C00          ; Telugu # Mn       TELUGU SIGN COMBINING CANDRABINDU ABOVE
 0C01..0C03    ; Telugu # Mc   [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
+0C04          ; Telugu # Mn       TELUGU SIGN COMBINING ANUSVARA ABOVE
 0C05..0C0C    ; Telugu # Lo   [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
 0C0E..0C10    ; Telugu # Lo   [3] TELUGU LETTER E..TELUGU LETTER AI
 0C12..0C28    ; Telugu # Lo  [23] TELUGU LETTER O..TELUGU LETTER NA
@@ -1095,13 +1104,14 @@
 0C78..0C7E    ; Telugu # No   [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
 0C7F          ; Telugu # So       TELUGU SIGN TUUMU
 
-# Total code points: 96
+# Total code points: 97
 
 # ================================================
 
 0C80          ; Kannada # Lo       KANNADA SIGN SPACING CANDRABINDU
 0C81          ; Kannada # Mn       KANNADA SIGN CANDRABINDU
 0C82..0C83    ; Kannada # Mc   [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
+0C84          ; Kannada # Po       KANNADA SIGN SIDDHAM
 0C85..0C8C    ; Kannada # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
 0C8E..0C90    ; Kannada # Lo   [3] KANNADA LETTER E..KANNADA LETTER AI
 0C92..0CA8    ; Kannada # Lo  [23] KANNADA LETTER O..KANNADA LETTER NA
@@ -1123,7 +1133,7 @@
 0CE6..0CEF    ; Kannada # Nd  [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
 0CF1..0CF2    ; Kannada # Lo   [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
 
-# Total code points: 88
+# Total code points: 89
 
 # ================================================
 
@@ -1317,14 +1327,16 @@
 10A0..10C5    ; Georgian # L&  [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
 10C7          ; Georgian # L&       GEORGIAN CAPITAL LETTER YN
 10CD          ; Georgian # L&       GEORGIAN CAPITAL LETTER AEN
-10D0..10FA    ; Georgian # Lo  [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+10D0..10FA    ; Georgian # L&  [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
 10FC          ; Georgian # Lm       MODIFIER LETTER GEORGIAN NAR
-10FD..10FF    ; Georgian # Lo   [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
+10FD..10FF    ; Georgian # L&   [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
+1C90..1CBA    ; Georgian # L&  [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
+1CBD..1CBF    ; Georgian # L&   [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
 2D00..2D25    ; Georgian # L&  [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
 2D27          ; Georgian # L&       GEORGIAN SMALL LETTER YN
 2D2D          ; Georgian # L&       GEORGIAN SMALL LETTER AEN
 
-# Total code points: 127
+# Total code points: 173
 
 # ================================================
 
@@ -1453,7 +1465,7 @@
 1810..1819    ; Mongolian # Nd  [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
 1820..1842    ; Mongolian # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
 1843          ; Mongolian # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
-1844..1877    ; Mongolian # Lo  [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
+1844..1878    ; Mongolian # Lo  [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS
 1880..1884    ; Mongolian # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
 1885..1886    ; Mongolian # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
 1887..18A8    ; Mongolian # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
@@ -1461,7 +1473,7 @@
 18AA          ; Mongolian # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
 11660..1166C  ; Mongolian # Po  [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
 
-# Total code points: 166
+# Total code points: 167
 
 # ================================================
 
@@ -1490,10 +1502,10 @@
 # ================================================
 
 02EA..02EB    ; Bopomofo # Sk   [2] MODIFIER LETTER YIN DEPARTING TONE MARK..MODIFIER LETTER YANG DEPARTING TONE MARK
-3105..312E    ; Bopomofo # Lo  [42] BOPOMOFO LETTER B..BOPOMOFO LETTER O WITH DOT ABOVE
+3105..312F    ; Bopomofo # Lo  [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN
 31A0..31BA    ; Bopomofo # Lo  [27] BOPOMOFO LETTER BU..BOPOMOFO LETTER ZY
 
-# Total code points: 71
+# Total code points: 72
 
 # ================================================
 
@@ -1506,7 +1518,7 @@
 3038..303A    ; Han # Nl   [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
 303B          ; Han # Lm       VERTICAL IDEOGRAPHIC ITERATION MARK
 3400..4DB5    ; Han # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
-4E00..9FEA    ; Han # Lo [20971] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEA
+4E00..9FEF    ; Han # Lo [20976] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEF
 F900..FA6D    ; Han # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
 FA70..FAD9    ; Han # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
 20000..2A6D6  ; Han # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
@@ -1516,7 +1528,7 @@
 2CEB0..2EBE0  ; Han # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
 2F800..2FA1D  ; Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
 
-# Total code points: 89228
+# Total code points: 89233
 
 # ================================================
 
@@ -1579,13 +1591,14 @@
 FE20..FE2D    ; Inherited # Mn  [14] COMBINING LIGATURE LEFT HALF..COMBINING CONJOINING MACRON BELOW
 101FD         ; Inherited # Mn       PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
 102E0         ; Inherited # Mn       COPTIC EPACT THOUSANDS MARK
+1133B         ; Inherited # Mn       COMBINING BINDU BELOW
 1D167..1D169  ; Inherited # Mn   [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
 1D17B..1D182  ; Inherited # Mn   [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
 1D185..1D18B  ; Inherited # Mn   [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
 1D1AA..1D1AD  ; Inherited # Mn   [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
 E0100..E01EF  ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
 
-# Total code points: 568
+# Total code points: 569
 
 # ================================================
 
@@ -1778,13 +1791,13 @@
 10A0C..10A0F  ; Kharoshthi # Mn   [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
 10A10..10A13  ; Kharoshthi # Lo   [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA
 10A15..10A17  ; Kharoshthi # Lo   [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
-10A19..10A33  ; Kharoshthi # Lo  [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA
+10A19..10A35  ; Kharoshthi # Lo  [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA
 10A38..10A3A  ; Kharoshthi # Mn   [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
 10A3F         ; Kharoshthi # Mn       KHAROSHTHI VIRAMA
-10A40..10A47  ; Kharoshthi # No   [8] KHAROSHTHI DIGIT ONE..KHAROSHTHI NUMBER ONE THOUSAND
+10A40..10A48  ; Kharoshthi # No   [9] KHAROSHTHI DIGIT ONE..KHAROSHTHI FRACTION ONE HALF
 10A50..10A58  ; Kharoshthi # Po   [9] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES
 
-# Total code points: 65
+# Total code points: 68
 
 # ================================================
 
@@ -1841,8 +1854,10 @@
 07F6          ; Nko # So       NKO SYMBOL OO DENNEN
 07F7..07F9    ; Nko # Po   [3] NKO SYMBOL GBAKURUNEN..NKO EXCLAMATION MARK
 07FA          ; Nko # Lm       NKO LAJANYALAN
-
-# Total code points: 59
+07FD          ; Nko # Mn       NKO DANTAYALAN
+07FE..07FF    ; Nko # Sc   [2] NKO DOROME SIGN..NKO TAMAN SIGN
+
+# Total code points: 62
 
 # ================================================
 
@@ -2137,8 +2152,9 @@
 110BB..110BC  ; Kaithi # Po   [2] KAITHI ABBREVIATION SIGN..KAITHI ENUMERATION SIGN
 110BD         ; Kaithi # Cf       KAITHI NUMBER SIGN
 110BE..110C1  ; Kaithi # Po   [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA
-
-# Total code points: 66
+110CD         ; Kaithi # Cf       KAITHI NUMBER SIGN ABOVE
+
+# Total code points: 67
 
 # ================================================
 
@@ -2186,8 +2202,10 @@
 1112D..11134  ; Chakma # Mn   [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA
 11136..1113F  ; Chakma # Nd  [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE
 11140..11143  ; Chakma # Po   [4] CHAKMA SECTION MARK..CHAKMA QUESTION MARK
-
-# Total code points: 67
+11144         ; Chakma # Lo       CHAKMA LETTER LHAA
+11145..11146  ; Chakma # Mc   [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI
+
+# Total code points: 70
 
 # ================================================
 
@@ -2224,8 +2242,8 @@
 111B6..111BE  ; Sharada # Mn   [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
 111BF..111C0  ; Sharada # Mc   [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA
 111C1..111C4  ; Sharada # Lo   [4] SHARADA SIGN AVAGRAHA..SHARADA OM
-111C5..111C9  ; Sharada # Po   [5] SHARADA DANDA..SHARADA SANDHI MARK
-111CA..111CC  ; Sharada # Mn   [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK
+111C5..111C8  ; Sharada # Po   [4] SHARADA DANDA..SHARADA SEPARATOR
+111C9..111CC  ; Sharada # Mn   [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK
 111CD         ; Sharada # Po       SHARADA SUTRA MARK
 111D0..111D9  ; Sharada # Nd  [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE
 111DA         ; Sharada # Lo       SHARADA EKAM
@@ -2502,7 +2520,7 @@
 
 # ================================================
 
-11700..11719  ; Ahom # Lo  [26] AHOM LETTER KA..AHOM LETTER JHA
+11700..1171A  ; Ahom # Lo  [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA
 1171D..1171F  ; Ahom # Mn   [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
 11720..11721  ; Ahom # Mc   [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
 11722..11725  ; Ahom # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
@@ -2513,7 +2531,7 @@
 1173C..1173E  ; Ahom # Po   [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
 1173F         ; Ahom # So       AHOM SYMBOL VI
 
-# Total code points: 57
+# Total code points: 58
 
 # ================================================
 
@@ -2618,8 +2636,9 @@
 11450..11459  ; Newa # Nd  [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
 1145B         ; Newa # Po       NEWA PLACEHOLDER MARK
 1145D         ; Newa # Po       NEWA INSERTION SIGN
-
-# Total code points: 92
+1145E         ; Newa # Mn       NEWA SANDHI MARK
+
+# Total code points: 93
 
 # ================================================
 
@@ -2631,10 +2650,10 @@
 # ================================================
 
 16FE0         ; Tangut # Lm       TANGUT ITERATION MARK
-17000..187EC  ; Tangut # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+17000..187F1  ; Tangut # Lo [6130] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F1
 18800..18AF2  ; Tangut # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
 
-# Total code points: 6881
+# Total code points: 6886
 
 # ================================================
 
@@ -2670,16 +2689,15 @@
 11A97         ; Soyombo # Mc       SOYOMBO SIGN VISARGA
 11A98..11A99  ; Soyombo # Mn   [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER
 11A9A..11A9C  ; Soyombo # Po   [3] SOYOMBO MARK TSHEG..SOYOMBO MARK DOUBLE SHAD
+11A9D         ; Soyombo # Lo       SOYOMBO MARK PLUTA
 11A9E..11AA2  ; Soyombo # Po   [5] SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME..SOYOMBO TERMINAL MARK-2
 
-# Total code points: 80
+# Total code points: 81
 
 # ================================================
 
 11A00         ; Zanabazar_Square # Lo       ZANABAZAR SQUARE LETTER A
-11A01..11A06  ; Zanabazar_Square # Mn   [6] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL SIGN O
-11A07..11A08  ; Zanabazar_Square # Mc   [2] ZANABAZAR SQUARE VOWEL SIGN AI..ZANABAZAR SQUARE VOWEL SIGN AU
-11A09..11A0A  ; Zanabazar_Square # Mn   [2] ZANABAZAR SQUARE VOWEL SIGN REVERSED I..ZANABAZAR SQUARE VOWEL LENGTH MARK
+11A01..11A0A  ; Zanabazar_Square # Mn  [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK
 11A0B..11A32  ; Zanabazar_Square # Lo  [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA
 11A33..11A38  ; Zanabazar_Square # Mn   [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA
 11A39         ; Zanabazar_Square # Mc       ZANABAZAR SQUARE SIGN VISARGA
@@ -2690,4 +2708,73 @@
 
 # Total code points: 72
 
+# ================================================
+
+11800..1182B  ; Dogra # Lo  [44] DOGRA LETTER A..DOGRA LETTER RRA
+1182C..1182E  ; Dogra # Mc   [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II
+1182F..11837  ; Dogra # Mn   [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
+11838         ; Dogra # Mc       DOGRA SIGN VISARGA
+11839..1183A  ; Dogra # Mn   [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
+1183B         ; Dogra # Po       DOGRA ABBREVIATION SIGN
+
+# Total code points: 60
+
+# ================================================
+
+11D60..11D65  ; Gunjala_Gondi # Lo   [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU
+11D67..11D68  ; Gunjala_Gondi # Lo   [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI
+11D6A..11D89  ; Gunjala_Gondi # Lo  [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA
+11D8A..11D8E  ; Gunjala_Gondi # Mc   [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU
+11D90..11D91  ; Gunjala_Gondi # Mn   [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI
+11D93..11D94  ; Gunjala_Gondi # Mc   [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU
+11D95         ; Gunjala_Gondi # Mn       GUNJALA GONDI SIGN ANUSVARA
+11D96         ; Gunjala_Gondi # Mc       GUNJALA GONDI SIGN VISARGA
+11D97         ; Gunjala_Gondi # Mn       GUNJALA GONDI VIRAMA
+11D98         ; Gunjala_Gondi # Lo       GUNJALA GONDI OM
+11DA0..11DA9  ; Gunjala_Gondi # Nd  [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE
+
+# Total code points: 63
+
+# ================================================
+
+11EE0..11EF2  ; Makasar # Lo  [19] MAKASAR LETTER KA..MAKASAR ANGKA
+11EF3..11EF4  ; Makasar # Mn   [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
+11EF5..11EF6  ; Makasar # Mc   [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O
+11EF7..11EF8  ; Makasar # Po   [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION
+
+# Total code points: 25
+
+# ================================================
+
+16E40..16E7F  ; Medefaidrin # L&  [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
+16E80..16E96  ; Medefaidrin # No  [23] MEDEFAIDRIN DIGIT ZERO..MEDEFAIDRIN DIGIT THREE ALTERNATE FORM
+16E97..16E9A  ; Medefaidrin # Po   [4] MEDEFAIDRIN COMMA..MEDEFAIDRIN EXCLAMATION OH
+
+# Total code points: 91
+
+# ================================================
+
+10D00..10D23  ; Hanifi_Rohingya # Lo  [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
+10D24..10D27  ; Hanifi_Rohingya # Mn   [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+10D30..10D39  ; Hanifi_Rohingya # Nd  [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE
+
+# Total code points: 50
+
+# ================================================
+
+10F30..10F45  ; Sogdian # Lo  [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN
+10F46..10F50  ; Sogdian # Mn  [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
+10F51..10F54  ; Sogdian # No   [4] SOGDIAN NUMBER ONE..SOGDIAN NUMBER ONE HUNDRED
+10F55..10F59  ; Sogdian # Po   [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
+
+# Total code points: 42
+
+# ================================================
+
+10F00..10F1C  ; Old_Sogdian # Lo  [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
+10F1D..10F26  ; Old_Sogdian # No  [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF
+10F27         ; Old_Sogdian # Lo       OLD SOGDIAN LIGATURE AYIN-DALETH
+
+# Total code points: 40
+
 # EOF
--- a/make/data/unicodedata/SpecialCasing.txt	Wed Nov 21 13:20:52 2018 -0500
+++ b/make/data/unicodedata/SpecialCasing.txt	Wed Nov 21 13:53:17 2018 -0500
@@ -1,6 +1,6 @@
-# SpecialCasing-10.0.0.txt
-# Date: 2017-04-14, 05:40:43 GMT
-# Copyright (c) 2017 Unicode, Inc.
+# SpecialCasing-11.0.0.txt
+# Date: 2018-02-22, 06:16:47 GMT
+# Copyright (c) 2018 Unicode, Inc.
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
@@ -121,7 +121,7 @@
 
 # The following cases are already in the UnicodeData.txt file, so are only commented here.
 
-# 0345; 0345; 0345; 0399; # COMBINING GREEK YPOGEGRAMMENI
+# 0345; 0345; 0399; 0399; # COMBINING GREEK YPOGEGRAMMENI
 
 # All letters with YPOGEGRAMMENI (iota-subscript) or PROSGEGRAMMENI (iota adscript)
 # have special uppercases.
--- a/make/data/unicodedata/UnicodeData.txt	Wed Nov 21 13:20:52 2018 -0500
+++ b/make/data/unicodedata/UnicodeData.txt	Wed Nov 21 13:53:17 2018 -0500
@@ -1362,6 +1362,7 @@
 055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
 055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
 055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
+0560;ARMENIAN SMALL LETTER TURNED AYB;Ll;0;L;;;;;N;;;;;
 0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
 0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
 0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
@@ -1401,6 +1402,7 @@
 0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
 0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
 0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
+0588;ARMENIAN SMALL LETTER YI WITH STROKE;Ll;0;L;;;;;N;;;;;
 0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
 058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;;
 058D;RIGHT-FACING ARMENIAN ETERNITY SIGN;So;0;ON;;;;;N;;;;;
@@ -1488,6 +1490,7 @@
 05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
 05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
 05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
+05EF;HEBREW YOD TRIANGLE;Lo;0;R;;;;;N;;;;;
 05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
 05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
 05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
@@ -1982,6 +1985,9 @@
 07F8;NKO COMMA;Po;0;ON;;;;;N;;;;;
 07F9;NKO EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
 07FA;NKO LAJANYALAN;Lm;0;R;;;;;N;;;;;
+07FD;NKO DANTAYALAN;Mn;220;NSM;;;;;N;;;;;
+07FE;NKO DOROME SIGN;Sc;0;R;;;;;N;;;;;
+07FF;NKO TAMAN SIGN;Sc;0;R;;;;;N;;;;;
 0800;SAMARITAN LETTER ALAF;Lo;0;R;;;;;N;;;;;
 0801;SAMARITAN LETTER BIT;Lo;0;R;;;;;N;;;;;
 0802;SAMARITAN LETTER GAMAN;Lo;0;R;;;;;N;;;;;
@@ -2112,6 +2118,7 @@
 08BB;ARABIC LETTER AFRICAN FEH;Lo;0;AL;;;;;N;;;;;
 08BC;ARABIC LETTER AFRICAN QAF;Lo;0;AL;;;;;N;;;;;
 08BD;ARABIC LETTER AFRICAN NOON;Lo;0;AL;;;;;N;;;;;
+08D3;ARABIC SMALL LOW WAW;Mn;220;NSM;;;;;N;;;;;
 08D4;ARABIC SMALL HIGH WORD AR-RUB;Mn;230;NSM;;;;;N;;;;;
 08D5;ARABIC SMALL HIGH SAD;Mn;230;NSM;;;;;N;;;;;
 08D6;ARABIC SMALL HIGH AIN;Mn;230;NSM;;;;;N;;;;;
@@ -2379,6 +2386,7 @@
 09FB;BENGALI GANDA MARK;Sc;0;ET;;;;;N;;;;;
 09FC;BENGALI LETTER VEDIC ANUSVARA;Lo;0;L;;;;;N;;;;;
 09FD;BENGALI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+09FE;BENGALI SANDHI MARK;Mn;230;NSM;;;;;N;;;;;
 0A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;;
 0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;;
 0A03;GURMUKHI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
@@ -2458,6 +2466,7 @@
 0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
 0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
 0A75;GURMUKHI SIGN YAKASH;Mn;0;NSM;;;;;N;;;;;
+0A76;GURMUKHI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
 0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
 0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
 0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
@@ -2715,6 +2724,7 @@
 0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
 0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
 0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C04;TELUGU SIGN COMBINING ANUSVARA ABOVE;Mn;0;NSM;;;;;N;;;;;
 0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
 0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
 0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
@@ -2811,6 +2821,7 @@
 0C81;KANNADA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
 0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
 0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C84;KANNADA SIGN SIDDHAM;Po;0;L;;;;;N;;;;;
 0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
 0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
 0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
@@ -3667,54 +3678,54 @@
 10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;;;2D25;
 10C7;GEORGIAN CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;2D27;
 10CD;GEORGIAN CAPITAL LETTER AEN;Lu;0;L;;;;;N;;;;2D2D;
-10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
-10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
-10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
-10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
-10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
-10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
-10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
-10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
-10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
-10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
-10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
-10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
-10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
-10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
-10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
-10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
-10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
-10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
-10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
-10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
-10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
-10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
-10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
-10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
-10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
-10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
-10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
-10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
-10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
-10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
-10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
-10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
-10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
-10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
-10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
-10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
-10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
-10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
-10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
-10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;;
-10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;;
-10F9;GEORGIAN LETTER TURNED GAN;Lo;0;L;;;;;N;;;;;
-10FA;GEORGIAN LETTER AIN;Lo;0;L;;;;;N;;;;;
+10D0;GEORGIAN LETTER AN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;1C90;;10D0
+10D1;GEORGIAN LETTER BAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;1C91;;10D1
+10D2;GEORGIAN LETTER GAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;1C92;;10D2
+10D3;GEORGIAN LETTER DON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;1C93;;10D3
+10D4;GEORGIAN LETTER EN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;1C94;;10D4
+10D5;GEORGIAN LETTER VIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;1C95;;10D5
+10D6;GEORGIAN LETTER ZEN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;1C96;;10D6
+10D7;GEORGIAN LETTER TAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;1C97;;10D7
+10D8;GEORGIAN LETTER IN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;1C98;;10D8
+10D9;GEORGIAN LETTER KAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;1C99;;10D9
+10DA;GEORGIAN LETTER LAS;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;1C9A;;10DA
+10DB;GEORGIAN LETTER MAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;1C9B;;10DB
+10DC;GEORGIAN LETTER NAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;1C9C;;10DC
+10DD;GEORGIAN LETTER ON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;1C9D;;10DD
+10DE;GEORGIAN LETTER PAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;1C9E;;10DE
+10DF;GEORGIAN LETTER ZHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;1C9F;;10DF
+10E0;GEORGIAN LETTER RAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;1CA0;;10E0
+10E1;GEORGIAN LETTER SAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;1CA1;;10E1
+10E2;GEORGIAN LETTER TAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;1CA2;;10E2
+10E3;GEORGIAN LETTER UN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;1CA3;;10E3
+10E4;GEORGIAN LETTER PHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;1CA4;;10E4
+10E5;GEORGIAN LETTER KHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;1CA5;;10E5
+10E6;GEORGIAN LETTER GHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;1CA6;;10E6
+10E7;GEORGIAN LETTER QAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;1CA7;;10E7
+10E8;GEORGIAN LETTER SHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;1CA8;;10E8
+10E9;GEORGIAN LETTER CHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;1CA9;;10E9
+10EA;GEORGIAN LETTER CAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;1CAA;;10EA
+10EB;GEORGIAN LETTER JIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;1CAB;;10EB
+10EC;GEORGIAN LETTER CIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;1CAC;;10EC
+10ED;GEORGIAN LETTER CHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;1CAD;;10ED
+10EE;GEORGIAN LETTER XAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;1CAE;;10EE
+10EF;GEORGIAN LETTER JHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;1CAF;;10EF
+10F0;GEORGIAN LETTER HAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;1CB0;;10F0
+10F1;GEORGIAN LETTER HE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;1CB1;;10F1
+10F2;GEORGIAN LETTER HIE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;1CB2;;10F2
+10F3;GEORGIAN LETTER WE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;1CB3;;10F3
+10F4;GEORGIAN LETTER HAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;1CB4;;10F4
+10F5;GEORGIAN LETTER HOE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;1CB5;;10F5
+10F6;GEORGIAN LETTER FI;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;1CB6;;10F6
+10F7;GEORGIAN LETTER YN;Ll;0;L;;;;;N;;;1CB7;;10F7
+10F8;GEORGIAN LETTER ELIFI;Ll;0;L;;;;;N;;;1CB8;;10F8
+10F9;GEORGIAN LETTER TURNED GAN;Ll;0;L;;;;;N;;;1CB9;;10F9
+10FA;GEORGIAN LETTER AIN;Ll;0;L;;;;;N;;;1CBA;;10FA
 10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
 10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L;<super> 10DC;;;;N;;;;;
-10FD;GEORGIAN LETTER AEN;Lo;0;L;;;;;N;;;;;
-10FE;GEORGIAN LETTER HARD SIGN;Lo;0;L;;;;;N;;;;;
-10FF;GEORGIAN LETTER LABIAL SIGN;Lo;0;L;;;;;N;;;;;
+10FD;GEORGIAN LETTER AEN;Ll;0;L;;;;;N;;;1CBD;;10FD
+10FE;GEORGIAN LETTER HARD SIGN;Ll;0;L;;;;;N;;;1CBE;;10FE
+10FF;GEORGIAN LETTER LABIAL SIGN;Ll;0;L;;;;;N;;;1CBF;;10FF
 1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
 1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
 1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;;;;
@@ -5513,6 +5524,7 @@
 1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;;
 1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;;
 1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;;
+1878;MONGOLIAN LETTER CHA WITH TWO DOTS;Lo;0;L;;;;;N;;;;;
 1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;;
 1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;;
 1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;;
@@ -6388,6 +6400,52 @@
 1C86;CYRILLIC SMALL LETTER TALL HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
 1C87;CYRILLIC SMALL LETTER TALL YAT;Ll;0;L;;;;;N;;;0462;;0462
 1C88;CYRILLIC SMALL LETTER UNBLENDED UK;Ll;0;L;;;;;N;;;A64A;;A64A
+1C90;GEORGIAN MTAVRULI CAPITAL LETTER AN;Lu;0;L;;;;;N;;;;10D0;
+1C91;GEORGIAN MTAVRULI CAPITAL LETTER BAN;Lu;0;L;;;;;N;;;;10D1;
+1C92;GEORGIAN MTAVRULI CAPITAL LETTER GAN;Lu;0;L;;;;;N;;;;10D2;
+1C93;GEORGIAN MTAVRULI CAPITAL LETTER DON;Lu;0;L;;;;;N;;;;10D3;
+1C94;GEORGIAN MTAVRULI CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;10D4;
+1C95;GEORGIAN MTAVRULI CAPITAL LETTER VIN;Lu;0;L;;;;;N;;;;10D5;
+1C96;GEORGIAN MTAVRULI CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;;;10D6;
+1C97;GEORGIAN MTAVRULI CAPITAL LETTER TAN;Lu;0;L;;;;;N;;;;10D7;
+1C98;GEORGIAN MTAVRULI CAPITAL LETTER IN;Lu;0;L;;;;;N;;;;10D8;
+1C99;GEORGIAN MTAVRULI CAPITAL LETTER KAN;Lu;0;L;;;;;N;;;;10D9;
+1C9A;GEORGIAN MTAVRULI CAPITAL LETTER LAS;Lu;0;L;;;;;N;;;;10DA;
+1C9B;GEORGIAN MTAVRULI CAPITAL LETTER MAN;Lu;0;L;;;;;N;;;;10DB;
+1C9C;GEORGIAN MTAVRULI CAPITAL LETTER NAR;Lu;0;L;;;;;N;;;;10DC;
+1C9D;GEORGIAN MTAVRULI CAPITAL LETTER ON;Lu;0;L;;;;;N;;;;10DD;
+1C9E;GEORGIAN MTAVRULI CAPITAL LETTER PAR;Lu;0;L;;;;;N;;;;10DE;
+1C9F;GEORGIAN MTAVRULI CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;;;10DF;
+1CA0;GEORGIAN MTAVRULI CAPITAL LETTER RAE;Lu;0;L;;;;;N;;;;10E0;
+1CA1;GEORGIAN MTAVRULI CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;10E1;
+1CA2;GEORGIAN MTAVRULI CAPITAL LETTER TAR;Lu;0;L;;;;;N;;;;10E2;
+1CA3;GEORGIAN MTAVRULI CAPITAL LETTER UN;Lu;0;L;;;;;N;;;;10E3;
+1CA4;GEORGIAN MTAVRULI CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;;;10E4;
+1CA5;GEORGIAN MTAVRULI CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;;;10E5;
+1CA6;GEORGIAN MTAVRULI CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;;;10E6;
+1CA7;GEORGIAN MTAVRULI CAPITAL LETTER QAR;Lu;0;L;;;;;N;;;;10E7;
+1CA8;GEORGIAN MTAVRULI CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;;;10E8;
+1CA9;GEORGIAN MTAVRULI CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;;;10E9;
+1CAA;GEORGIAN MTAVRULI CAPITAL LETTER CAN;Lu;0;L;;;;;N;;;;10EA;
+1CAB;GEORGIAN MTAVRULI CAPITAL LETTER JIL;Lu;0;L;;;;;N;;;;10EB;
+1CAC;GEORGIAN MTAVRULI CAPITAL LETTER CIL;Lu;0;L;;;;;N;;;;10EC;
+1CAD;GEORGIAN MTAVRULI CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;;;10ED;
+1CAE;GEORGIAN MTAVRULI CAPITAL LETTER XAN;Lu;0;L;;;;;N;;;;10EE;
+1CAF;GEORGIAN MTAVRULI CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;;;10EF;
+1CB0;GEORGIAN MTAVRULI CAPITAL LETTER HAE;Lu;0;L;;;;;N;;;;10F0;
+1CB1;GEORGIAN MTAVRULI CAPITAL LETTER HE;Lu;0;L;;;;;N;;;;10F1;
+1CB2;GEORGIAN MTAVRULI CAPITAL LETTER HIE;Lu;0;L;;;;;N;;;;10F2;
+1CB3;GEORGIAN MTAVRULI CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;10F3;
+1CB4;GEORGIAN MTAVRULI CAPITAL LETTER HAR;Lu;0;L;;;;;N;;;;10F4;
+1CB5;GEORGIAN MTAVRULI CAPITAL LETTER HOE;Lu;0;L;;;;;N;;;;10F5;
+1CB6;GEORGIAN MTAVRULI CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;10F6;
+1CB7;GEORGIAN MTAVRULI CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;10F7;
+1CB8;GEORGIAN MTAVRULI CAPITAL LETTER ELIFI;Lu;0;L;;;;;N;;;;10F8;
+1CB9;GEORGIAN MTAVRULI CAPITAL LETTER TURNED GAN;Lu;0;L;;;;;N;;;;10F9;
+1CBA;GEORGIAN MTAVRULI CAPITAL LETTER AIN;Lu;0;L;;;;;N;;;;10FA;
+1CBD;GEORGIAN MTAVRULI CAPITAL LETTER AEN;Lu;0;L;;;;;N;;;;10FD;
+1CBE;GEORGIAN MTAVRULI CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;10FE;
+1CBF;GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN;Lu;0;L;;;;;N;;;;10FF;
 1CC0;SUNDANESE PUNCTUATION BINDU SURYA;Po;0;L;;;;;N;;;;;
 1CC1;SUNDANESE PUNCTUATION BINDU PANGLONG;Po;0;L;;;;;N;;;;;
 1CC2;SUNDANESE PUNCTUATION BINDU PURNAMA;Po;0;L;;;;;N;;;;;
@@ -9559,7 +9617,7 @@
 299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;;
 299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;;
 29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
-29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
+29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;N;;;;;
 29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;;
 29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;;
 29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
@@ -10092,6 +10150,9 @@
 2BB7;RIBBON ARROW RIGHT DOWN;So;0;ON;;;;;N;;;;;
 2BB8;UPWARDS WHITE ARROW FROM BAR WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
 2BB9;UP ARROWHEAD IN A RECTANGLE BOX;So;0;ON;;;;;N;;;;;
+2BBA;OVERLAPPING WHITE SQUARES;So;0;ON;;;;;N;;;;;
+2BBB;OVERLAPPING WHITE AND BLACK SQUARES;So;0;ON;;;;;N;;;;;
+2BBC;OVERLAPPING BLACK SQUARES;So;0;ON;;;;;N;;;;;
 2BBD;BALLOT BOX WITH LIGHT X;So;0;ON;;;;;N;;;;;
 2BBE;CIRCLED X;So;0;ON;;;;;N;;;;;
 2BBF;CIRCLED BOLD X;So;0;ON;;;;;N;;;;;
@@ -10113,10 +10174,50 @@
 2BD0;SQUARE POSITION INDICATOR;So;0;ON;;;;;N;;;;;
 2BD1;UNCERTAINTY SIGN;So;0;ON;;;;;N;;;;;
 2BD2;GROUP MARK;So;0;ON;;;;;N;;;;;
+2BD3;PLUTO FORM TWO;So;0;ON;;;;;N;;;;;
+2BD4;PLUTO FORM THREE;So;0;ON;;;;;N;;;;;
+2BD5;PLUTO FORM FOUR;So;0;ON;;;;;N;;;;;
+2BD6;PLUTO FORM FIVE;So;0;ON;;;;;N;;;;;
+2BD7;TRANSPLUTO;So;0;ON;;;;;N;;;;;
+2BD8;PROSERPINA;So;0;ON;;;;;N;;;;;
+2BD9;ASTRAEA;So;0;ON;;;;;N;;;;;
+2BDA;HYGIEA;So;0;ON;;;;;N;;;;;
+2BDB;PHOLUS;So;0;ON;;;;;N;;;;;
+2BDC;NESSUS;So;0;ON;;;;;N;;;;;
+2BDD;WHITE MOON SELENA;So;0;ON;;;;;N;;;;;
+2BDE;BLACK DIAMOND ON CROSS;So;0;ON;;;;;N;;;;;
+2BDF;TRUE LIGHT MOON ARTA;So;0;ON;;;;;N;;;;;
+2BE0;CUPIDO;So;0;ON;;;;;N;;;;;
+2BE1;HADES;So;0;ON;;;;;N;;;;;
+2BE2;ZEUS;So;0;ON;;;;;N;;;;;
+2BE3;KRONOS;So;0;ON;;;;;N;;;;;
+2BE4;APOLLON;So;0;ON;;;;;N;;;;;
+2BE5;ADMETOS;So;0;ON;;;;;N;;;;;
+2BE6;VULCANUS;So;0;ON;;;;;N;;;;;
+2BE7;POSEIDON;So;0;ON;;;;;N;;;;;
+2BE8;LEFT HALF BLACK STAR;So;0;ON;;;;;N;;;;;
+2BE9;RIGHT HALF BLACK STAR;So;0;ON;;;;;N;;;;;
+2BEA;STAR WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+2BEB;STAR WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
 2BEC;LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;;
 2BED;UPWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;;
 2BEE;RIGHTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;;
 2BEF;DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;;
+2BF0;ERIS FORM ONE;So;0;ON;;;;;N;;;;;
+2BF1;ERIS FORM TWO;So;0;ON;;;;;N;;;;;
+2BF2;SEDNA;So;0;ON;;;;;N;;;;;
+2BF3;RUSSIAN ASTROLOGICAL SYMBOL VIGINTILE;So;0;ON;;;;;N;;;;;
+2BF4;RUSSIAN ASTROLOGICAL SYMBOL NOVILE;So;0;ON;;;;;N;;;;;
+2BF5;RUSSIAN ASTROLOGICAL SYMBOL QUINTILE;So;0;ON;;;;;N;;;;;
+2BF6;RUSSIAN ASTROLOGICAL SYMBOL BINOVILE;So;0;ON;;;;;N;;;;;
+2BF7;RUSSIAN ASTROLOGICAL SYMBOL SENTAGON;So;0;ON;;;;;N;;;;;
+2BF8;RUSSIAN ASTROLOGICAL SYMBOL TREDECILE;So;0;ON;;;;;N;;;;;
+2BF9;EQUALS SIGN WITH INFINITY BELOW;So;0;ON;;;;;N;;;;;
+2BFA;UNITED SYMBOL;So;0;ON;;;;;N;;;;;
+2BFB;SEPARATED SYMBOL;So;0;ON;;;;;N;;;;;
+2BFC;DOUBLED SYMBOL;So;0;ON;;;;;N;;;;;
+2BFD;PASSED SYMBOL;So;0;ON;;;;;N;;;;;
+2BFE;REVERSED RIGHT ANGLE;So;0;ON;;;;;Y;;;;;
 2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30;
 2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31;
 2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32;
@@ -10650,6 +10751,11 @@
 2E47;LOW KAVYKA;Po;0;ON;;;;;N;;;;;
 2E48;LOW KAVYKA WITH DOT;Po;0;ON;;;;;N;;;;;
 2E49;DOUBLE STACKED COMMA;Po;0;ON;;;;;N;;;;;
+2E4A;DOTTED SOLIDUS;Po;0;ON;;;;;N;;;;;
+2E4B;TRIPLE DAGGER;Po;0;ON;;;;;N;;;;;
+2E4C;MEDIEVAL COMMA;Po;0;ON;;;;;N;;;;;
+2E4D;PARAGRAPHUS MARK;Po;0;ON;;;;;N;;;;;
+2E4E;PUNCTUS ELEVATUS MARK;Po;0;ON;;;;;N;;;;;
 2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
 2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
 2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
@@ -11286,6 +11392,7 @@
 312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
 312D;BOPOMOFO LETTER IH;Lo;0;L;;;;;N;;;;;
 312E;BOPOMOFO LETTER O WITH DOT ABOVE;Lo;0;L;;;;;N;;;;;
+312F;BOPOMOFO LETTER NN;Lo;0;L;;;;;N;;;;;
 3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
 3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
 3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
@@ -12053,7 +12160,7 @@
 4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;;
 4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;;
 4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
-9FEA;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+9FEF;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
 A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
 A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
 A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
@@ -13981,6 +14088,7 @@
 A7AC;LATIN CAPITAL LETTER SCRIPT G;Lu;0;L;;;;;N;;;;0261;
 A7AD;LATIN CAPITAL LETTER L WITH BELT;Lu;0;L;;;;;N;;;;026C;
 A7AE;LATIN CAPITAL LETTER SMALL CAPITAL I;Lu;0;L;;;;;N;;;;026A;
+A7AF;LATIN LETTER SMALL CAPITAL Q;Ll;0;L;;;;;N;;;;;
 A7B0;LATIN CAPITAL LETTER TURNED K;Lu;0;L;;;;;N;;;;029E;
 A7B1;LATIN CAPITAL LETTER TURNED T;Lu;0;L;;;;;N;;;;0287;
 A7B2;LATIN CAPITAL LETTER J WITH CROSSED-TAIL;Lu;0;L;;;;;N;;;;029D;
@@ -13989,6 +14097,8 @@
 A7B5;LATIN SMALL LETTER BETA;Ll;0;L;;;;;N;;;A7B4;;A7B4
 A7B6;LATIN CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;A7B7;
 A7B7;LATIN SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;A7B6;;A7B6
+A7B8;LATIN CAPITAL LETTER U WITH STROKE;Lu;0;L;;;;;N;;;;A7B9;
+A7B9;LATIN SMALL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;A7B8;;A7B8
 A7F7;LATIN EPIGRAPHIC LETTER SIDEWAYS I;Lo;0;L;;;;;N;;;;;
 A7F8;MODIFIER LETTER CAPITAL H WITH STROKE;Lm;0;L;<super> 0126;;;;N;;;;;
 A7F9;MODIFIER LETTER SMALL LIGATURE OE;Lm;0;L;<super> 0153;;;;N;;;;;
@@ -14220,6 +14330,8 @@
 A8FB;DEVANAGARI HEADSTROKE;Lo;0;L;;;;;N;;;;;
 A8FC;DEVANAGARI SIGN SIDDHAM;Po;0;L;;;;;N;;;;;
 A8FD;DEVANAGARI JAIN OM;Lo;0;L;;;;;N;;;;;
+A8FE;DEVANAGARI LETTER AY;Lo;0;L;;;;;N;;;;;
+A8FF;DEVANAGARI VOWEL SIGN AY;Mn;0;NSM;;;;;N;;;;;
 A900;KAYAH LI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
 A901;KAYAH LI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
 A902;KAYAH LI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
@@ -18364,6 +18476,8 @@
 10A31;KHAROSHTHI LETTER HA;Lo;0;R;;;;;N;;;;;
 10A32;KHAROSHTHI LETTER KKA;Lo;0;R;;;;;N;;;;;
 10A33;KHAROSHTHI LETTER TTTHA;Lo;0;R;;;;;N;;;;;
+10A34;KHAROSHTHI LETTER TTTA;Lo;0;R;;;;;N;;;;;
+10A35;KHAROSHTHI LETTER VHA;Lo;0;R;;;;;N;;;;;
 10A38;KHAROSHTHI SIGN BAR ABOVE;Mn;230;NSM;;;;;N;;;;;
 10A39;KHAROSHTHI SIGN CAUDA;Mn;1;NSM;;;;;N;;;;;
 10A3A;KHAROSHTHI SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;;
@@ -18376,6 +18490,7 @@
 10A45;KHAROSHTHI NUMBER TWENTY;No;0;R;;;;20;N;;;;;
 10A46;KHAROSHTHI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
 10A47;KHAROSHTHI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
+10A48;KHAROSHTHI FRACTION ONE HALF;No;0;R;;;;1/2;N;;;;;
 10A50;KHAROSHTHI PUNCTUATION DOT;Po;0;R;;;;;N;;;;;
 10A51;KHAROSHTHI PUNCTUATION SMALL CIRCLE;Po;0;R;;;;;N;;;;;
 10A52;KHAROSHTHI PUNCTUATION CIRCLE;Po;0;R;;;;;N;;;;;
@@ -18828,6 +18943,56 @@
 10CFD;OLD HUNGARIAN NUMBER FIFTY;No;0;R;;;;50;N;;;;;
 10CFE;OLD HUNGARIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
 10CFF;OLD HUNGARIAN NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
+10D00;HANIFI ROHINGYA LETTER A;Lo;0;AL;;;;;N;;;;;
+10D01;HANIFI ROHINGYA LETTER BA;Lo;0;AL;;;;;N;;;;;
+10D02;HANIFI ROHINGYA LETTER PA;Lo;0;AL;;;;;N;;;;;
+10D03;HANIFI ROHINGYA LETTER TA;Lo;0;AL;;;;;N;;;;;
+10D04;HANIFI ROHINGYA LETTER TTA;Lo;0;AL;;;;;N;;;;;
+10D05;HANIFI ROHINGYA LETTER JA;Lo;0;AL;;;;;N;;;;;
+10D06;HANIFI ROHINGYA LETTER CA;Lo;0;AL;;;;;N;;;;;
+10D07;HANIFI ROHINGYA LETTER HA;Lo;0;AL;;;;;N;;;;;
+10D08;HANIFI ROHINGYA LETTER KHA;Lo;0;AL;;;;;N;;;;;
+10D09;HANIFI ROHINGYA LETTER FA;Lo;0;AL;;;;;N;;;;;
+10D0A;HANIFI ROHINGYA LETTER DA;Lo;0;AL;;;;;N;;;;;
+10D0B;HANIFI ROHINGYA LETTER DDA;Lo;0;AL;;;;;N;;;;;
+10D0C;HANIFI ROHINGYA LETTER RA;Lo;0;AL;;;;;N;;;;;
+10D0D;HANIFI ROHINGYA LETTER RRA;Lo;0;AL;;;;;N;;;;;
+10D0E;HANIFI ROHINGYA LETTER ZA;Lo;0;AL;;;;;N;;;;;
+10D0F;HANIFI ROHINGYA LETTER SA;Lo;0;AL;;;;;N;;;;;
+10D10;HANIFI ROHINGYA LETTER SHA;Lo;0;AL;;;;;N;;;;;
+10D11;HANIFI ROHINGYA LETTER KA;Lo;0;AL;;;;;N;;;;;
+10D12;HANIFI ROHINGYA LETTER GA;Lo;0;AL;;;;;N;;;;;
+10D13;HANIFI ROHINGYA LETTER LA;Lo;0;AL;;;;;N;;;;;
+10D14;HANIFI ROHINGYA LETTER MA;Lo;0;AL;;;;;N;;;;;
+10D15;HANIFI ROHINGYA LETTER NA;Lo;0;AL;;;;;N;;;;;
+10D16;HANIFI ROHINGYA LETTER WA;Lo;0;AL;;;;;N;;;;;
+10D17;HANIFI ROHINGYA LETTER KINNA WA;Lo;0;AL;;;;;N;;;;;
+10D18;HANIFI ROHINGYA LETTER YA;Lo;0;AL;;;;;N;;;;;
+10D19;HANIFI ROHINGYA LETTER KINNA YA;Lo;0;AL;;;;;N;;;;;
+10D1A;HANIFI ROHINGYA LETTER NGA;Lo;0;AL;;;;;N;;;;;
+10D1B;HANIFI ROHINGYA LETTER NYA;Lo;0;AL;;;;;N;;;;;
+10D1C;HANIFI ROHINGYA LETTER VA;Lo;0;AL;;;;;N;;;;;
+10D1D;HANIFI ROHINGYA VOWEL A;Lo;0;AL;;;;;N;;;;;
+10D1E;HANIFI ROHINGYA VOWEL I;Lo;0;AL;;;;;N;;;;;
+10D1F;HANIFI ROHINGYA VOWEL U;Lo;0;AL;;;;;N;;;;;
+10D20;HANIFI ROHINGYA VOWEL E;Lo;0;AL;;;;;N;;;;;
+10D21;HANIFI ROHINGYA VOWEL O;Lo;0;AL;;;;;N;;;;;
+10D22;HANIFI ROHINGYA MARK SAKIN;Lo;0;AL;;;;;N;;;;;
+10D23;HANIFI ROHINGYA MARK NA KHONNA;Lo;0;AL;;;;;N;;;;;
+10D24;HANIFI ROHINGYA SIGN HARBAHAY;Mn;230;NSM;;;;;N;;;;;
+10D25;HANIFI ROHINGYA SIGN TAHALA;Mn;230;NSM;;;;;N;;;;;
+10D26;HANIFI ROHINGYA SIGN TANA;Mn;230;NSM;;;;;N;;;;;
+10D27;HANIFI ROHINGYA SIGN TASSI;Mn;230;NSM;;;;;N;;;;;
+10D30;HANIFI ROHINGYA DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+10D31;HANIFI ROHINGYA DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+10D32;HANIFI ROHINGYA DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+10D33;HANIFI ROHINGYA DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+10D34;HANIFI ROHINGYA DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+10D35;HANIFI ROHINGYA DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+10D36;HANIFI ROHINGYA DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+10D37;HANIFI ROHINGYA DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+10D38;HANIFI ROHINGYA DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+10D39;HANIFI ROHINGYA DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
 10E60;RUMI DIGIT ONE;No;0;AN;;;1;1;N;;;;;
 10E61;RUMI DIGIT TWO;No;0;AN;;;2;2;N;;;;;
 10E62;RUMI DIGIT THREE;No;0;AN;;;3;3;N;;;;;
@@ -18859,6 +19024,88 @@
 10E7C;RUMI FRACTION ONE QUARTER;No;0;AN;;;;1/4;N;;;;;
 10E7D;RUMI FRACTION ONE THIRD;No;0;AN;;;;1/3;N;;;;;
 10E7E;RUMI FRACTION TWO THIRDS;No;0;AN;;;;2/3;N;;;;;
+10F00;OLD SOGDIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;;
+10F01;OLD SOGDIAN LETTER FINAL ALEPH;Lo;0;R;;;;;N;;;;;
+10F02;OLD SOGDIAN LETTER BETH;Lo;0;R;;;;;N;;;;;
+10F03;OLD SOGDIAN LETTER FINAL BETH;Lo;0;R;;;;;N;;;;;
+10F04;OLD SOGDIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+10F05;OLD SOGDIAN LETTER HE;Lo;0;R;;;;;N;;;;;
+10F06;OLD SOGDIAN LETTER FINAL HE;Lo;0;R;;;;;N;;;;;
+10F07;OLD SOGDIAN LETTER WAW;Lo;0;R;;;;;N;;;;;
+10F08;OLD SOGDIAN LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+10F09;OLD SOGDIAN LETTER HETH;Lo;0;R;;;;;N;;;;;
+10F0A;OLD SOGDIAN LETTER YODH;Lo;0;R;;;;;N;;;;;
+10F0B;OLD SOGDIAN LETTER KAPH;Lo;0;R;;;;;N;;;;;
+10F0C;OLD SOGDIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;;
+10F0D;OLD SOGDIAN LETTER MEM;Lo;0;R;;;;;N;;;;;
+10F0E;OLD SOGDIAN LETTER NUN;Lo;0;R;;;;;N;;;;;
+10F0F;OLD SOGDIAN LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
+10F10;OLD SOGDIAN LETTER FINAL NUN WITH VERTICAL TAIL;Lo;0;R;;;;;N;;;;;
+10F11;OLD SOGDIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+10F12;OLD SOGDIAN LETTER AYIN;Lo;0;R;;;;;N;;;;;
+10F13;OLD SOGDIAN LETTER ALTERNATE AYIN;Lo;0;R;;;;;N;;;;;
+10F14;OLD SOGDIAN LETTER PE;Lo;0;R;;;;;N;;;;;
+10F15;OLD SOGDIAN LETTER SADHE;Lo;0;R;;;;;N;;;;;
+10F16;OLD SOGDIAN LETTER FINAL SADHE;Lo;0;R;;;;;N;;;;;
+10F17;OLD SOGDIAN LETTER FINAL SADHE WITH VERTICAL TAIL;Lo;0;R;;;;;N;;;;;
+10F18;OLD SOGDIAN LETTER RESH-AYIN-DALETH;Lo;0;R;;;;;N;;;;;
+10F19;OLD SOGDIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;
+10F1A;OLD SOGDIAN LETTER TAW;Lo;0;R;;;;;N;;;;;
+10F1B;OLD SOGDIAN LETTER FINAL TAW;Lo;0;R;;;;;N;;;;;
+10F1C;OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL;Lo;0;R;;;;;N;;;;;
+10F1D;OLD SOGDIAN NUMBER ONE;No;0;R;;;;1;N;;;;;
+10F1E;OLD SOGDIAN NUMBER TWO;No;0;R;;;;2;N;;;;;
+10F1F;OLD SOGDIAN NUMBER THREE;No;0;R;;;;3;N;;;;;
+10F20;OLD SOGDIAN NUMBER FOUR;No;0;R;;;;4;N;;;;;
+10F21;OLD SOGDIAN NUMBER FIVE;No;0;R;;;;5;N;;;;;
+10F22;OLD SOGDIAN NUMBER TEN;No;0;R;;;;10;N;;;;;
+10F23;OLD SOGDIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;
+10F24;OLD SOGDIAN NUMBER THIRTY;No;0;R;;;;30;N;;;;;
+10F25;OLD SOGDIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
+10F26;OLD SOGDIAN FRACTION ONE HALF;No;0;R;;;;1/2;N;;;;;
+10F27;OLD SOGDIAN LIGATURE AYIN-DALETH;Lo;0;R;;;;;N;;;;;
+10F30;SOGDIAN LETTER ALEPH;Lo;0;AL;;;;;N;;;;;
+10F31;SOGDIAN LETTER BETH;Lo;0;AL;;;;;N;;;;;
+10F32;SOGDIAN LETTER GIMEL;Lo;0;AL;;;;;N;;;;;
+10F33;SOGDIAN LETTER HE;Lo;0;AL;;;;;N;;;;;
+10F34;SOGDIAN LETTER WAW;Lo;0;AL;;;;;N;;;;;
+10F35;SOGDIAN LETTER ZAYIN;Lo;0;AL;;;;;N;;;;;
+10F36;SOGDIAN LETTER HETH;Lo;0;AL;;;;;N;;;;;
+10F37;SOGDIAN LETTER YODH;Lo;0;AL;;;;;N;;;;;
+10F38;SOGDIAN LETTER KAPH;Lo;0;AL;;;;;N;;;;;
+10F39;SOGDIAN LETTER LAMEDH;Lo;0;AL;;;;;N;;;;;
+10F3A;SOGDIAN LETTER MEM;Lo;0;AL;;;;;N;;;;;
+10F3B;SOGDIAN LETTER NUN;Lo;0;AL;;;;;N;;;;;
+10F3C;SOGDIAN LETTER SAMEKH;Lo;0;AL;;;;;N;;;;;
+10F3D;SOGDIAN LETTER AYIN;Lo;0;AL;;;;;N;;;;;
+10F3E;SOGDIAN LETTER PE;Lo;0;AL;;;;;N;;;;;
+10F3F;SOGDIAN LETTER SADHE;Lo;0;AL;;;;;N;;;;;
+10F40;SOGDIAN LETTER RESH-AYIN;Lo;0;AL;;;;;N;;;;;
+10F41;SOGDIAN LETTER SHIN;Lo;0;AL;;;;;N;;;;;
+10F42;SOGDIAN LETTER TAW;Lo;0;AL;;;;;N;;;;;
+10F43;SOGDIAN LETTER FETH;Lo;0;AL;;;;;N;;;;;
+10F44;SOGDIAN LETTER LESH;Lo;0;AL;;;;;N;;;;;
+10F45;SOGDIAN INDEPENDENT SHIN;Lo;0;AL;;;;;N;;;;;
+10F46;SOGDIAN COMBINING DOT BELOW;Mn;220;NSM;;;;;N;;;;;
+10F47;SOGDIAN COMBINING TWO DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+10F48;SOGDIAN COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;;;;;
+10F49;SOGDIAN COMBINING TWO DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+10F4A;SOGDIAN COMBINING CURVE ABOVE;Mn;230;NSM;;;;;N;;;;;
+10F4B;SOGDIAN COMBINING CURVE BELOW;Mn;220;NSM;;;;;N;;;;;
+10F4C;SOGDIAN COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;;;;;
+10F4D;SOGDIAN COMBINING HOOK BELOW;Mn;220;NSM;;;;;N;;;;;
+10F4E;SOGDIAN COMBINING LONG HOOK BELOW;Mn;220;NSM;;;;;N;;;;;
+10F4F;SOGDIAN COMBINING RESH BELOW;Mn;220;NSM;;;;;N;;;;;
+10F50;SOGDIAN COMBINING STROKE BELOW;Mn;220;NSM;;;;;N;;;;;
+10F51;SOGDIAN NUMBER ONE;No;0;AL;;;;1;N;;;;;
+10F52;SOGDIAN NUMBER TEN;No;0;AL;;;;10;N;;;;;
+10F53;SOGDIAN NUMBER TWENTY;No;0;AL;;;;20;N;;;;;
+10F54;SOGDIAN NUMBER ONE HUNDRED;No;0;AL;;;;100;N;;;;;
+10F55;SOGDIAN PUNCTUATION TWO VERTICAL BARS;Po;0;AL;;;;;N;;;;;
+10F56;SOGDIAN PUNCTUATION TWO VERTICAL BARS WITH DOTS;Po;0;AL;;;;;N;;;;;
+10F57;SOGDIAN PUNCTUATION CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;;
+10F58;SOGDIAN PUNCTUATION TWO CIRCLES WITH DOTS;Po;0;AL;;;;;N;;;;;
+10F59;SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;;
 11000;BRAHMI SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
 11001;BRAHMI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
 11002;BRAHMI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
@@ -19034,6 +19281,7 @@
 110BF;KAITHI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;;
 110C0;KAITHI DANDA;Po;0;L;;;;;N;;;;;
 110C1;KAITHI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+110CD;KAITHI NUMBER SIGN ABOVE;Cf;0;L;;;;;N;;;;;
 110D0;SORA SOMPENG LETTER SAH;Lo;0;L;;;;;N;;;;;
 110D1;SORA SOMPENG LETTER TAH;Lo;0;L;;;;;N;;;;;
 110D2;SORA SOMPENG LETTER BAH;Lo;0;L;;;;;N;;;;;
@@ -19136,6 +19384,9 @@
 11141;CHAKMA DANDA;Po;0;L;;;;;N;;;;;
 11142;CHAKMA DOUBLE DANDA;Po;0;L;;;;;N;;;;;
 11143;CHAKMA QUESTION MARK;Po;0;L;;;;;N;;;;;
+11144;CHAKMA LETTER LHAA;Lo;0;L;;;;;N;;;;;
+11145;CHAKMA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+11146;CHAKMA VOWEL SIGN EI;Mc;0;L;;;;;N;;;;;
 11150;MAHAJANI LETTER A;Lo;0;L;;;;;N;;;;;
 11151;MAHAJANI LETTER I;Lo;0;L;;;;;N;;;;;
 11152;MAHAJANI LETTER U;Lo;0;L;;;;;N;;;;;
@@ -19248,7 +19499,7 @@
 111C6;SHARADA DOUBLE DANDA;Po;0;L;;;;;N;;;;;
 111C7;SHARADA ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
 111C8;SHARADA SEPARATOR;Po;0;L;;;;;N;;;;;
-111C9;SHARADA SANDHI MARK;Po;0;L;;;;;N;;;;;
+111C9;SHARADA SANDHI MARK;Mn;0;NSM;;;;;N;;;;;
 111CA;SHARADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
 111CB;SHARADA VOWEL MODIFIER MARK;Mn;0;NSM;;;;;N;;;;;
 111CC;SHARADA EXTRA SHORT VOWEL MARK;Mn;0;NSM;;;;;N;;;;;
@@ -19508,6 +19759,7 @@
 11337;GRANTHA LETTER SSA;Lo;0;L;;;;;N;;;;;
 11338;GRANTHA LETTER SA;Lo;0;L;;;;;N;;;;;
 11339;GRANTHA LETTER HA;Lo;0;L;;;;;N;;;;;
+1133B;COMBINING BINDU BELOW;Mn;7;NSM;;;;;N;;;;;
 1133C;GRANTHA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
 1133D;GRANTHA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
 1133E;GRANTHA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
@@ -19635,6 +19887,7 @@
 11459;NEWA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
 1145B;NEWA PLACEHOLDER MARK;Po;0;L;;;;;N;;;;;
 1145D;NEWA INSERTION SIGN;Po;0;L;;;;;N;;;;;
+1145E;NEWA SANDHI MARK;Mn;230;NSM;;;;;N;;;;;
 11480;TIRHUTA ANJI;Lo;0;L;;;;;N;;;;;
 11481;TIRHUTA LETTER A;Lo;0;L;;;;;N;;;;;
 11482;TIRHUTA LETTER AA;Lo;0;L;;;;;N;;;;;
@@ -19993,6 +20246,7 @@
 11717;AHOM LETTER GHA;Lo;0;L;;;;;N;;;;;
 11718;AHOM LETTER BHA;Lo;0;L;;;;;N;;;;;
 11719;AHOM LETTER JHA;Lo;0;L;;;;;N;;;;;
+1171A;AHOM LETTER ALTERNATE BA;Lo;0;L;;;;;N;;;;;
 1171D;AHOM CONSONANT SIGN MEDIAL LA;Mn;0;NSM;;;;;N;;;;;
 1171E;AHOM CONSONANT SIGN MEDIAL RA;Mn;0;NSM;;;;;N;;;;;
 1171F;AHOM CONSONANT SIGN MEDIAL LIGATING RA;Mn;0;NSM;;;;;N;;;;;
@@ -20024,6 +20278,66 @@
 1173D;AHOM SIGN SECTION;Po;0;L;;;;;N;;;;;
 1173E;AHOM SIGN RULAI;Po;0;L;;;;;N;;;;;
 1173F;AHOM SYMBOL VI;So;0;L;;;;;N;;;;;
+11800;DOGRA LETTER A;Lo;0;L;;;;;N;;;;;
+11801;DOGRA LETTER AA;Lo;0;L;;;;;N;;;;;
+11802;DOGRA LETTER I;Lo;0;L;;;;;N;;;;;
+11803;DOGRA LETTER II;Lo;0;L;;;;;N;;;;;
+11804;DOGRA LETTER U;Lo;0;L;;;;;N;;;;;
+11805;DOGRA LETTER UU;Lo;0;L;;;;;N;;;;;
+11806;DOGRA LETTER E;Lo;0;L;;;;;N;;;;;
+11807;DOGRA LETTER AI;Lo;0;L;;;;;N;;;;;
+11808;DOGRA LETTER O;Lo;0;L;;;;;N;;;;;
+11809;DOGRA LETTER AU;Lo;0;L;;;;;N;;;;;
+1180A;DOGRA LETTER KA;Lo;0;L;;;;;N;;;;;
+1180B;DOGRA LETTER KHA;Lo;0;L;;;;;N;;;;;
+1180C;DOGRA LETTER GA;Lo;0;L;;;;;N;;;;;
+1180D;DOGRA LETTER GHA;Lo;0;L;;;;;N;;;;;
+1180E;DOGRA LETTER NGA;Lo;0;L;;;;;N;;;;;
+1180F;DOGRA LETTER CA;Lo;0;L;;;;;N;;;;;
+11810;DOGRA LETTER CHA;Lo;0;L;;;;;N;;;;;
+11811;DOGRA LETTER JA;Lo;0;L;;;;;N;;;;;
+11812;DOGRA LETTER JHA;Lo;0;L;;;;;N;;;;;
+11813;DOGRA LETTER NYA;Lo;0;L;;;;;N;;;;;
+11814;DOGRA LETTER TTA;Lo;0;L;;;;;N;;;;;
+11815;DOGRA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+11816;DOGRA LETTER DDA;Lo;0;L;;;;;N;;;;;
+11817;DOGRA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+11818;DOGRA LETTER NNA;Lo;0;L;;;;;N;;;;;
+11819;DOGRA LETTER TA;Lo;0;L;;;;;N;;;;;
+1181A;DOGRA LETTER THA;Lo;0;L;;;;;N;;;;;
+1181B;DOGRA LETTER DA;Lo;0;L;;;;;N;;;;;
+1181C;DOGRA LETTER DHA;Lo;0;L;;;;;N;;;;;
+1181D;DOGRA LETTER NA;Lo;0;L;;;;;N;;;;;
+1181E;DOGRA LETTER PA;Lo;0;L;;;;;N;;;;;
+1181F;DOGRA LETTER PHA;Lo;0;L;;;;;N;;;;;
+11820;DOGRA LETTER BA;Lo;0;L;;;;;N;;;;;
+11821;DOGRA LETTER BHA;Lo;0;L;;;;;N;;;;;
+11822;DOGRA LETTER MA;Lo;0;L;;;;;N;;;;;
+11823;DOGRA LETTER YA;Lo;0;L;;;;;N;;;;;
+11824;DOGRA LETTER RA;Lo;0;L;;;;;N;;;;;
+11825;DOGRA LETTER LA;Lo;0;L;;;;;N;;;;;
+11826;DOGRA LETTER VA;Lo;0;L;;;;;N;;;;;
+11827;DOGRA LETTER SHA;Lo;0;L;;;;;N;;;;;
+11828;DOGRA LETTER SSA;Lo;0;L;;;;;N;;;;;
+11829;DOGRA LETTER SA;Lo;0;L;;;;;N;;;;;
+1182A;DOGRA LETTER HA;Lo;0;L;;;;;N;;;;;
+1182B;DOGRA LETTER RRA;Lo;0;L;;;;;N;;;;;
+1182C;DOGRA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+1182D;DOGRA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+1182E;DOGRA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+1182F;DOGRA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+11830;DOGRA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+11831;DOGRA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+11832;DOGRA VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+11833;DOGRA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+11834;DOGRA VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+11835;DOGRA VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+11836;DOGRA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+11837;DOGRA SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+11838;DOGRA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+11839;DOGRA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+1183A;DOGRA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+1183B;DOGRA ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
 118A0;WARANG CITI CAPITAL LETTER NGAA;Lu;0;L;;;;;N;;;;118C0;
 118A1;WARANG CITI CAPITAL LETTER A;Lu;0;L;;;;;N;;;;118C1;
 118A2;WARANG CITI CAPITAL LETTER WI;Lu;0;L;;;;;N;;;;118C2;
@@ -20115,8 +20429,8 @@
 11A04;ZANABAZAR SQUARE VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
 11A05;ZANABAZAR SQUARE VOWEL SIGN OE;Mn;0;NSM;;;;;N;;;;;
 11A06;ZANABAZAR SQUARE VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
-11A07;ZANABAZAR SQUARE VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-11A08;ZANABAZAR SQUARE VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+11A07;ZANABAZAR SQUARE VOWEL SIGN AI;Mn;0;L;;;;;N;;;;;
+11A08;ZANABAZAR SQUARE VOWEL SIGN AU;Mn;0;L;;;;;N;;;;;
 11A09;ZANABAZAR SQUARE VOWEL SIGN REVERSED I;Mn;0;NSM;;;;;N;;;;;
 11A0A;ZANABAZAR SQUARE VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
 11A0B;ZANABAZAR SQUARE LETTER KA;Lo;0;L;;;;;N;;;;;
@@ -20255,6 +20569,7 @@
 11A9A;SOYOMBO MARK TSHEG;Po;0;L;;;;;N;;;;;
 11A9B;SOYOMBO MARK SHAD;Po;0;L;;;;;N;;;;;
 11A9C;SOYOMBO MARK DOUBLE SHAD;Po;0;L;;;;;N;;;;;
+11A9D;SOYOMBO MARK PLUTA;Lo;0;L;;;;;N;;;;;
 11A9E;SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME;Po;0;L;;;;;N;;;;;
 11A9F;SOYOMBO HEAD MARK WITH MOON AND SUN AND FLAME;Po;0;L;;;;;N;;;;;
 11AA0;SOYOMBO HEAD MARK WITH MOON AND SUN;Po;0;L;;;;;N;;;;;
@@ -20557,6 +20872,94 @@
 11D57;MASARAM GONDI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
 11D58;MASARAM GONDI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
 11D59;MASARAM GONDI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+11D60;GUNJALA GONDI LETTER A;Lo;0;L;;;;;N;;;;;
+11D61;GUNJALA GONDI LETTER AA;Lo;0;L;;;;;N;;;;;
+11D62;GUNJALA GONDI LETTER I;Lo;0;L;;;;;N;;;;;
+11D63;GUNJALA GONDI LETTER II;Lo;0;L;;;;;N;;;;;
+11D64;GUNJALA GONDI LETTER U;Lo;0;L;;;;;N;;;;;
+11D65;GUNJALA GONDI LETTER UU;Lo;0;L;;;;;N;;;;;
+11D67;GUNJALA GONDI LETTER EE;Lo;0;L;;;;;N;;;;;
+11D68;GUNJALA GONDI LETTER AI;Lo;0;L;;;;;N;;;;;
+11D6A;GUNJALA GONDI LETTER OO;Lo;0;L;;;;;N;;;;;
+11D6B;GUNJALA GONDI LETTER AU;Lo;0;L;;;;;N;;;;;
+11D6C;GUNJALA GONDI LETTER YA;Lo;0;L;;;;;N;;;;;
+11D6D;GUNJALA GONDI LETTER VA;Lo;0;L;;;;;N;;;;;
+11D6E;GUNJALA GONDI LETTER BA;Lo;0;L;;;;;N;;;;;
+11D6F;GUNJALA GONDI LETTER BHA;Lo;0;L;;;;;N;;;;;
+11D70;GUNJALA GONDI LETTER MA;Lo;0;L;;;;;N;;;;;
+11D71;GUNJALA GONDI LETTER KA;Lo;0;L;;;;;N;;;;;
+11D72;GUNJALA GONDI LETTER KHA;Lo;0;L;;;;;N;;;;;
+11D73;GUNJALA GONDI LETTER TA;Lo;0;L;;;;;N;;;;;
+11D74;GUNJALA GONDI LETTER THA;Lo;0;L;;;;;N;;;;;
+11D75;GUNJALA GONDI LETTER LA;Lo;0;L;;;;;N;;;;;
+11D76;GUNJALA GONDI LETTER GA;Lo;0;L;;;;;N;;;;;
+11D77;GUNJALA GONDI LETTER GHA;Lo;0;L;;;;;N;;;;;
+11D78;GUNJALA GONDI LETTER DA;Lo;0;L;;;;;N;;;;;
+11D79;GUNJALA GONDI LETTER DHA;Lo;0;L;;;;;N;;;;;
+11D7A;GUNJALA GONDI LETTER NA;Lo;0;L;;;;;N;;;;;
+11D7B;GUNJALA GONDI LETTER CA;Lo;0;L;;;;;N;;;;;
+11D7C;GUNJALA GONDI LETTER CHA;Lo;0;L;;;;;N;;;;;
+11D7D;GUNJALA GONDI LETTER TTA;Lo;0;L;;;;;N;;;;;
+11D7E;GUNJALA GONDI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+11D7F;GUNJALA GONDI LETTER LLA;Lo;0;L;;;;;N;;;;;
+11D80;GUNJALA GONDI LETTER JA;Lo;0;L;;;;;N;;;;;
+11D81;GUNJALA GONDI LETTER JHA;Lo;0;L;;;;;N;;;;;
+11D82;GUNJALA GONDI LETTER DDA;Lo;0;L;;;;;N;;;;;
+11D83;GUNJALA GONDI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+11D84;GUNJALA GONDI LETTER NGA;Lo;0;L;;;;;N;;;;;
+11D85;GUNJALA GONDI LETTER PA;Lo;0;L;;;;;N;;;;;
+11D86;GUNJALA GONDI LETTER PHA;Lo;0;L;;;;;N;;;;;
+11D87;GUNJALA GONDI LETTER HA;Lo;0;L;;;;;N;;;;;
+11D88;GUNJALA GONDI LETTER RA;Lo;0;L;;;;;N;;;;;
+11D89;GUNJALA GONDI LETTER SA;Lo;0;L;;;;;N;;;;;
+11D8A;GUNJALA GONDI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+11D8B;GUNJALA GONDI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+11D8C;GUNJALA GONDI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+11D8D;GUNJALA GONDI VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+11D8E;GUNJALA GONDI VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+11D90;GUNJALA GONDI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+11D91;GUNJALA GONDI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+11D93;GUNJALA GONDI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+11D94;GUNJALA GONDI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+11D95;GUNJALA GONDI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+11D96;GUNJALA GONDI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+11D97;GUNJALA GONDI VIRAMA;Mn;9;NSM;;;;;N;;;;;
+11D98;GUNJALA GONDI OM;Lo;0;L;;;;;N;;;;;
+11DA0;GUNJALA GONDI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+11DA1;GUNJALA GONDI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+11DA2;GUNJALA GONDI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+11DA3;GUNJALA GONDI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+11DA4;GUNJALA GONDI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+11DA5;GUNJALA GONDI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+11DA6;GUNJALA GONDI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+11DA7;GUNJALA GONDI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+11DA8;GUNJALA GONDI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+11DA9;GUNJALA GONDI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+11EE0;MAKASAR LETTER KA;Lo;0;L;;;;;N;;;;;
+11EE1;MAKASAR LETTER GA;Lo;0;L;;;;;N;;;;;
+11EE2;MAKASAR LETTER NGA;Lo;0;L;;;;;N;;;;;
+11EE3;MAKASAR LETTER PA;Lo;0;L;;;;;N;;;;;
+11EE4;MAKASAR LETTER BA;Lo;0;L;;;;;N;;;;;
+11EE5;MAKASAR LETTER MA;Lo;0;L;;;;;N;;;;;
+11EE6;MAKASAR LETTER TA;Lo;0;L;;;;;N;;;;;
+11EE7;MAKASAR LETTER DA;Lo;0;L;;;;;N;;;;;
+11EE8;MAKASAR LETTER NA;Lo;0;L;;;;;N;;;;;
+11EE9;MAKASAR LETTER CA;Lo;0;L;;;;;N;;;;;
+11EEA;MAKASAR LETTER JA;Lo;0;L;;;;;N;;;;;
+11EEB;MAKASAR LETTER NYA;Lo;0;L;;;;;N;;;;;
+11EEC;MAKASAR LETTER YA;Lo;0;L;;;;;N;;;;;
+11EED;MAKASAR LETTER RA;Lo;0;L;;;;;N;;;;;
+11EEE;MAKASAR LETTER LA;Lo;0;L;;;;;N;;;;;
+11EEF;MAKASAR LETTER VA;Lo;0;L;;;;;N;;;;;
+11EF0;MAKASAR LETTER SA;Lo;0;L;;;;;N;;;;;
+11EF1;MAKASAR LETTER A;Lo;0;L;;;;;N;;;;;
+11EF2;MAKASAR ANGKA;Lo;0;L;;;;;N;;;;;
+11EF3;MAKASAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+11EF4;MAKASAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+11EF5;MAKASAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+11EF6;MAKASAR VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+11EF7;MAKASAR PASSIMBANG;Po;0;L;;;;;N;;;;;
+11EF8;MAKASAR END OF SECTION;Po;0;L;;;;;N;;;;;
 12000;CUNEIFORM SIGN A;Lo;0;L;;;;;N;;;;;
 12001;CUNEIFORM SIGN A TIMES A;Lo;0;L;;;;;N;;;;;
 12002;CUNEIFORM SIGN A TIMES BAD;Lo;0;L;;;;;N;;;;;
@@ -24220,6 +24623,97 @@
 16B8D;PAHAWH HMONG CLAN SIGN TSWB;Lo;0;L;;;;;N;;;;;
 16B8E;PAHAWH HMONG CLAN SIGN KWM;Lo;0;L;;;;;N;;;;;
 16B8F;PAHAWH HMONG CLAN SIGN VWJ;Lo;0;L;;;;;N;;;;;
+16E40;MEDEFAIDRIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;16E60;
+16E41;MEDEFAIDRIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;16E61;
+16E42;MEDEFAIDRIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;16E62;
+16E43;MEDEFAIDRIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;16E63;
+16E44;MEDEFAIDRIN CAPITAL LETTER ATIU;Lu;0;L;;;;;N;;;;16E64;
+16E45;MEDEFAIDRIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;16E65;
+16E46;MEDEFAIDRIN CAPITAL LETTER KP;Lu;0;L;;;;;N;;;;16E66;
+16E47;MEDEFAIDRIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;16E67;
+16E48;MEDEFAIDRIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;16E68;
+16E49;MEDEFAIDRIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;16E69;
+16E4A;MEDEFAIDRIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;16E6A;
+16E4B;MEDEFAIDRIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;16E6B;
+16E4C;MEDEFAIDRIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;16E6C;
+16E4D;MEDEFAIDRIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;16E6D;
+16E4E;MEDEFAIDRIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;16E6E;
+16E4F;MEDEFAIDRIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;16E6F;
+16E50;MEDEFAIDRIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;16E70;
+16E51;MEDEFAIDRIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;16E71;
+16E52;MEDEFAIDRIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;16E72;
+16E53;MEDEFAIDRIN CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;16E73;
+16E54;MEDEFAIDRIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;16E74;
+16E55;MEDEFAIDRIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;16E75;
+16E56;MEDEFAIDRIN CAPITAL LETTER HP;Lu;0;L;;;;;N;;;;16E76;
+16E57;MEDEFAIDRIN CAPITAL LETTER NY;Lu;0;L;;;;;N;;;;16E77;
+16E58;MEDEFAIDRIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;16E78;
+16E59;MEDEFAIDRIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;16E79;
+16E5A;MEDEFAIDRIN CAPITAL LETTER OE;Lu;0;L;;;;;N;;;;16E7A;
+16E5B;MEDEFAIDRIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;16E7B;
+16E5C;MEDEFAIDRIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;16E7C;
+16E5D;MEDEFAIDRIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;16E7D;
+16E5E;MEDEFAIDRIN CAPITAL LETTER AI;Lu;0;L;;;;;N;;;;16E7E;
+16E5F;MEDEFAIDRIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;16E7F;
+16E60;MEDEFAIDRIN SMALL LETTER M;Ll;0;L;;;;;N;;;16E40;;16E40
+16E61;MEDEFAIDRIN SMALL LETTER S;Ll;0;L;;;;;N;;;16E41;;16E41
+16E62;MEDEFAIDRIN SMALL LETTER V;Ll;0;L;;;;;N;;;16E42;;16E42
+16E63;MEDEFAIDRIN SMALL LETTER W;Ll;0;L;;;;;N;;;16E43;;16E43
+16E64;MEDEFAIDRIN SMALL LETTER ATIU;Ll;0;L;;;;;N;;;16E44;;16E44
+16E65;MEDEFAIDRIN SMALL LETTER Z;Ll;0;L;;;;;N;;;16E45;;16E45
+16E66;MEDEFAIDRIN SMALL LETTER KP;Ll;0;L;;;;;N;;;16E46;;16E46
+16E67;MEDEFAIDRIN SMALL LETTER P;Ll;0;L;;;;;N;;;16E47;;16E47
+16E68;MEDEFAIDRIN SMALL LETTER T;Ll;0;L;;;;;N;;;16E48;;16E48
+16E69;MEDEFAIDRIN SMALL LETTER G;Ll;0;L;;;;;N;;;16E49;;16E49
+16E6A;MEDEFAIDRIN SMALL LETTER F;Ll;0;L;;;;;N;;;16E4A;;16E4A
+16E6B;MEDEFAIDRIN SMALL LETTER I;Ll;0;L;;;;;N;;;16E4B;;16E4B
+16E6C;MEDEFAIDRIN SMALL LETTER K;Ll;0;L;;;;;N;;;16E4C;;16E4C
+16E6D;MEDEFAIDRIN SMALL LETTER A;Ll;0;L;;;;;N;;;16E4D;;16E4D
+16E6E;MEDEFAIDRIN SMALL LETTER J;Ll;0;L;;;;;N;;;16E4E;;16E4E
+16E6F;MEDEFAIDRIN SMALL LETTER E;Ll;0;L;;;;;N;;;16E4F;;16E4F
+16E70;MEDEFAIDRIN SMALL LETTER B;Ll;0;L;;;;;N;;;16E50;;16E50
+16E71;MEDEFAIDRIN SMALL LETTER C;Ll;0;L;;;;;N;;;16E51;;16E51
+16E72;MEDEFAIDRIN SMALL LETTER U;Ll;0;L;;;;;N;;;16E52;;16E52
+16E73;MEDEFAIDRIN SMALL LETTER YU;Ll;0;L;;;;;N;;;16E53;;16E53
+16E74;MEDEFAIDRIN SMALL LETTER L;Ll;0;L;;;;;N;;;16E54;;16E54
+16E75;MEDEFAIDRIN SMALL LETTER Q;Ll;0;L;;;;;N;;;16E55;;16E55
+16E76;MEDEFAIDRIN SMALL LETTER HP;Ll;0;L;;;;;N;;;16E56;;16E56
+16E77;MEDEFAIDRIN SMALL LETTER NY;Ll;0;L;;;;;N;;;16E57;;16E57
+16E78;MEDEFAIDRIN SMALL LETTER X;Ll;0;L;;;;;N;;;16E58;;16E58
+16E79;MEDEFAIDRIN SMALL LETTER D;Ll;0;L;;;;;N;;;16E59;;16E59
+16E7A;MEDEFAIDRIN SMALL LETTER OE;Ll;0;L;;;;;N;;;16E5A;;16E5A
+16E7B;MEDEFAIDRIN SMALL LETTER N;Ll;0;L;;;;;N;;;16E5B;;16E5B
+16E7C;MEDEFAIDRIN SMALL LETTER R;Ll;0;L;;;;;N;;;16E5C;;16E5C
+16E7D;MEDEFAIDRIN SMALL LETTER O;Ll;0;L;;;;;N;;;16E5D;;16E5D
+16E7E;MEDEFAIDRIN SMALL LETTER AI;Ll;0;L;;;;;N;;;16E5E;;16E5E
+16E7F;MEDEFAIDRIN SMALL LETTER Y;Ll;0;L;;;;;N;;;16E5F;;16E5F
+16E80;MEDEFAIDRIN DIGIT ZERO;No;0;L;;;;0;N;;;;;
+16E81;MEDEFAIDRIN DIGIT ONE;No;0;L;;;;1;N;;;;;
+16E82;MEDEFAIDRIN DIGIT TWO;No;0;L;;;;2;N;;;;;
+16E83;MEDEFAIDRIN DIGIT THREE;No;0;L;;;;3;N;;;;;
+16E84;MEDEFAIDRIN DIGIT FOUR;No;0;L;;;;4;N;;;;;
+16E85;MEDEFAIDRIN DIGIT FIVE;No;0;L;;;;5;N;;;;;
+16E86;MEDEFAIDRIN DIGIT SIX;No;0;L;;;;6;N;;;;;
+16E87;MEDEFAIDRIN DIGIT SEVEN;No;0;L;;;;7;N;;;;;
+16E88;MEDEFAIDRIN DIGIT EIGHT;No;0;L;;;;8;N;;;;;
+16E89;MEDEFAIDRIN DIGIT NINE;No;0;L;;;;9;N;;;;;
+16E8A;MEDEFAIDRIN NUMBER TEN;No;0;L;;;;10;N;;;;;
+16E8B;MEDEFAIDRIN NUMBER ELEVEN;No;0;L;;;;11;N;;;;;
+16E8C;MEDEFAIDRIN NUMBER TWELVE;No;0;L;;;;12;N;;;;;
+16E8D;MEDEFAIDRIN NUMBER THIRTEEN;No;0;L;;;;13;N;;;;;
+16E8E;MEDEFAIDRIN NUMBER FOURTEEN;No;0;L;;;;14;N;;;;;
+16E8F;MEDEFAIDRIN NUMBER FIFTEEN;No;0;L;;;;15;N;;;;;
+16E90;MEDEFAIDRIN NUMBER SIXTEEN;No;0;L;;;;16;N;;;;;
+16E91;MEDEFAIDRIN NUMBER SEVENTEEN;No;0;L;;;;17;N;;;;;
+16E92;MEDEFAIDRIN NUMBER EIGHTEEN;No;0;L;;;;18;N;;;;;
+16E93;MEDEFAIDRIN NUMBER NINETEEN;No;0;L;;;;19;N;;;;;
+16E94;MEDEFAIDRIN DIGIT ONE ALTERNATE FORM;No;0;L;;;;1;N;;;;;
+16E95;MEDEFAIDRIN DIGIT TWO ALTERNATE FORM;No;0;L;;;;2;N;;;;;
+16E96;MEDEFAIDRIN DIGIT THREE ALTERNATE FORM;No;0;L;;;;3;N;;;;;
+16E97;MEDEFAIDRIN COMMA;Po;0;L;;;;;N;;;;;
+16E98;MEDEFAIDRIN FULL STOP;Po;0;L;;;;;N;;;;;
+16E99;MEDEFAIDRIN SYMBOL AIVA;Po;0;L;;;;;N;;;;;
+16E9A;MEDEFAIDRIN EXCLAMATION OH;Po;0;L;;;;;N;;;;;
 16F00;MIAO LETTER PA;Lo;0;L;;;;;N;;;;;
 16F01;MIAO LETTER BA;Lo;0;L;;;;;N;;;;;
 16F02;MIAO LETTER YI PA;Lo;0;L;;;;;N;;;;;
@@ -24356,7 +24850,7 @@
 16FE0;TANGUT ITERATION MARK;Lm;0;L;;;;;N;;;;;
 16FE1;NUSHU ITERATION MARK;Lm;0;L;;;;;N;;;;;
 17000;<Tangut Ideograph, First>;Lo;0;L;;;;;N;;;;;
-187EC;<Tangut Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+187F1;<Tangut Ideograph, Last>;Lo;0;L;;;;;N;;;;;
 18800;TANGUT COMPONENT-001;Lo;0;L;;;;;N;;;;;
 18801;TANGUT COMPONENT-002;Lo;0;L;;;;;N;;;;;
 18802;TANGUT COMPONENT-003;Lo;0;L;;;;;N;;;;;
@@ -26489,6 +26983,26 @@
 1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;;
 1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;;
 1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;;
+1D2E0;MAYAN NUMERAL ZERO;No;0;L;;;;0;N;;;;;
+1D2E1;MAYAN NUMERAL ONE;No;0;L;;;;1;N;;;;;
+1D2E2;MAYAN NUMERAL TWO;No;0;L;;;;2;N;;;;;
+1D2E3;MAYAN NUMERAL THREE;No;0;L;;;;3;N;;;;;
+1D2E4;MAYAN NUMERAL FOUR;No;0;L;;;;4;N;;;;;
+1D2E5;MAYAN NUMERAL FIVE;No;0;L;;;;5;N;;;;;
+1D2E6;MAYAN NUMERAL SIX;No;0;L;;;;6;N;;;;;
+1D2E7;MAYAN NUMERAL SEVEN;No;0;L;;;;7;N;;;;;
+1D2E8;MAYAN NUMERAL EIGHT;No;0;L;;;;8;N;;;;;
+1D2E9;MAYAN NUMERAL NINE;No;0;L;;;;9;N;;;;;
+1D2EA;MAYAN NUMERAL TEN;No;0;L;;;;10;N;;;;;
+1D2EB;MAYAN NUMERAL ELEVEN;No;0;L;;;;11;N;;;;;
+1D2EC;MAYAN NUMERAL TWELVE;No;0;L;;;;12;N;;;;;
+1D2ED;MAYAN NUMERAL THIRTEEN;No;0;L;;;;13;N;;;;;
+1D2EE;MAYAN NUMERAL FOURTEEN;No;0;L;;;;14;N;;;;;
+1D2EF;MAYAN NUMERAL FIFTEEN;No;0;L;;;;15;N;;;;;
+1D2F0;MAYAN NUMERAL SIXTEEN;No;0;L;;;;16;N;;;;;
+1D2F1;MAYAN NUMERAL SEVENTEEN;No;0;L;;;;17;N;;;;;
+1D2F2;MAYAN NUMERAL EIGHTEEN;No;0;L;;;;18;N;;;;;
+1D2F3;MAYAN NUMERAL NINETEEN;No;0;L;;;;19;N;;;;;
 1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
 1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;;;;
 1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;;;;
@@ -26594,6 +27108,13 @@
 1D36F;COUNTING ROD TENS DIGIT SEVEN;No;0;L;;;;70;N;;;;;
 1D370;COUNTING ROD TENS DIGIT EIGHT;No;0;L;;;;80;N;;;;;
 1D371;COUNTING ROD TENS DIGIT NINE;No;0;L;;;;90;N;;;;;
+1D372;IDEOGRAPHIC TALLY MARK ONE;No;0;L;;;;1;N;;;;;
+1D373;IDEOGRAPHIC TALLY MARK TWO;No;0;L;;;;2;N;;;;;
+1D374;IDEOGRAPHIC TALLY MARK THREE;No;0;L;;;;3;N;;;;;
+1D375;IDEOGRAPHIC TALLY MARK FOUR;No;0;L;;;;4;N;;;;;
+1D376;IDEOGRAPHIC TALLY MARK FIVE;No;0;L;;;;5;N;;;;;
+1D377;TALLY MARK ONE;No;0;L;;;;1;N;;;;;
+1D378;TALLY MARK FIVE;No;0;L;;;;5;N;;;;;
 1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
 1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
 1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
@@ -28600,6 +29121,74 @@
 1E959;ADLAM DIGIT NINE;Nd;0;R;;9;9;9;N;;;;;
 1E95E;ADLAM INITIAL EXCLAMATION MARK;Po;0;R;;;;;N;;;;;
 1E95F;ADLAM INITIAL QUESTION MARK;Po;0;R;;;;;N;;;;;
+1EC71;INDIC SIYAQ NUMBER ONE;No;0;AL;;;;1;N;;;;;
+1EC72;INDIC SIYAQ NUMBER TWO;No;0;AL;;;;2;N;;;;;
+1EC73;INDIC SIYAQ NUMBER THREE;No;0;AL;;;;3;N;;;;;
+1EC74;INDIC SIYAQ NUMBER FOUR;No;0;AL;;;;4;N;;;;;
+1EC75;INDIC SIYAQ NUMBER FIVE;No;0;AL;;;;5;N;;;;;
+1EC76;INDIC SIYAQ NUMBER SIX;No;0;AL;;;;6;N;;;;;
+1EC77;INDIC SIYAQ NUMBER SEVEN;No;0;AL;;;;7;N;;;;;
+1EC78;INDIC SIYAQ NUMBER EIGHT;No;0;AL;;;;8;N;;;;;
+1EC79;INDIC SIYAQ NUMBER NINE;No;0;AL;;;;9;N;;;;;
+1EC7A;INDIC SIYAQ NUMBER TEN;No;0;AL;;;;10;N;;;;;
+1EC7B;INDIC SIYAQ NUMBER TWENTY;No;0;AL;;;;20;N;;;;;
+1EC7C;INDIC SIYAQ NUMBER THIRTY;No;0;AL;;;;30;N;;;;;
+1EC7D;INDIC SIYAQ NUMBER FORTY;No;0;AL;;;;40;N;;;;;
+1EC7E;INDIC SIYAQ NUMBER FIFTY;No;0;AL;;;;50;N;;;;;
+1EC7F;INDIC SIYAQ NUMBER SIXTY;No;0;AL;;;;60;N;;;;;
+1EC80;INDIC SIYAQ NUMBER SEVENTY;No;0;AL;;;;70;N;;;;;
+1EC81;INDIC SIYAQ NUMBER EIGHTY;No;0;AL;;;;80;N;;;;;
+1EC82;INDIC SIYAQ NUMBER NINETY;No;0;AL;;;;90;N;;;;;
+1EC83;INDIC SIYAQ NUMBER ONE HUNDRED;No;0;AL;;;;100;N;;;;;
+1EC84;INDIC SIYAQ NUMBER TWO HUNDRED;No;0;AL;;;;200;N;;;;;
+1EC85;INDIC SIYAQ NUMBER THREE HUNDRED;No;0;AL;;;;300;N;;;;;
+1EC86;INDIC SIYAQ NUMBER FOUR HUNDRED;No;0;AL;;;;400;N;;;;;
+1EC87;INDIC SIYAQ NUMBER FIVE HUNDRED;No;0;AL;;;;500;N;;;;;
+1EC88;INDIC SIYAQ NUMBER SIX HUNDRED;No;0;AL;;;;600;N;;;;;
+1EC89;INDIC SIYAQ NUMBER SEVEN HUNDRED;No;0;AL;;;;700;N;;;;;
+1EC8A;INDIC SIYAQ NUMBER EIGHT HUNDRED;No;0;AL;;;;800;N;;;;;
+1EC8B;INDIC SIYAQ NUMBER NINE HUNDRED;No;0;AL;;;;900;N;;;;;
+1EC8C;INDIC SIYAQ NUMBER ONE THOUSAND;No;0;AL;;;;1000;N;;;;;
+1EC8D;INDIC SIYAQ NUMBER TWO THOUSAND;No;0;AL;;;;2000;N;;;;;
+1EC8E;INDIC SIYAQ NUMBER THREE THOUSAND;No;0;AL;;;;3000;N;;;;;
+1EC8F;INDIC SIYAQ NUMBER FOUR THOUSAND;No;0;AL;;;;4000;N;;;;;
+1EC90;INDIC SIYAQ NUMBER FIVE THOUSAND;No;0;AL;;;;5000;N;;;;;
+1EC91;INDIC SIYAQ NUMBER SIX THOUSAND;No;0;AL;;;;6000;N;;;;;
+1EC92;INDIC SIYAQ NUMBER SEVEN THOUSAND;No;0;AL;;;;7000;N;;;;;
+1EC93;INDIC SIYAQ NUMBER EIGHT THOUSAND;No;0;AL;;;;8000;N;;;;;
+1EC94;INDIC SIYAQ NUMBER NINE THOUSAND;No;0;AL;;;;9000;N;;;;;
+1EC95;INDIC SIYAQ NUMBER TEN THOUSAND;No;0;AL;;;;10000;N;;;;;
+1EC96;INDIC SIYAQ NUMBER TWENTY THOUSAND;No;0;AL;;;;20000;N;;;;;
+1EC97;INDIC SIYAQ NUMBER THIRTY THOUSAND;No;0;AL;;;;30000;N;;;;;
+1EC98;INDIC SIYAQ NUMBER FORTY THOUSAND;No;0;AL;;;;40000;N;;;;;
+1EC99;INDIC SIYAQ NUMBER FIFTY THOUSAND;No;0;AL;;;;50000;N;;;;;
+1EC9A;INDIC SIYAQ NUMBER SIXTY THOUSAND;No;0;AL;;;;60000;N;;;;;
+1EC9B;INDIC SIYAQ NUMBER SEVENTY THOUSAND;No;0;AL;;;;70000;N;;;;;
+1EC9C;INDIC SIYAQ NUMBER EIGHTY THOUSAND;No;0;AL;;;;80000;N;;;;;
+1EC9D;INDIC SIYAQ NUMBER NINETY THOUSAND;No;0;AL;;;;90000;N;;;;;
+1EC9E;INDIC SIYAQ NUMBER LAKH;No;0;AL;;;;100000;N;;;;;
+1EC9F;INDIC SIYAQ NUMBER LAKHAN;No;0;AL;;;;200000;N;;;;;
+1ECA0;INDIC SIYAQ LAKH MARK;No;0;AL;;;;100000;N;;;;;
+1ECA1;INDIC SIYAQ NUMBER KAROR;No;0;AL;;;;10000000;N;;;;;
+1ECA2;INDIC SIYAQ NUMBER KARORAN;No;0;AL;;;;20000000;N;;;;;
+1ECA3;INDIC SIYAQ NUMBER PREFIXED ONE;No;0;AL;;;;1;N;;;;;
+1ECA4;INDIC SIYAQ NUMBER PREFIXED TWO;No;0;AL;;;;2;N;;;;;
+1ECA5;INDIC SIYAQ NUMBER PREFIXED THREE;No;0;AL;;;;3;N;;;;;
+1ECA6;INDIC SIYAQ NUMBER PREFIXED FOUR;No;0;AL;;;;4;N;;;;;
+1ECA7;INDIC SIYAQ NUMBER PREFIXED FIVE;No;0;AL;;;;5;N;;;;;
+1ECA8;INDIC SIYAQ NUMBER PREFIXED SIX;No;0;AL;;;;6;N;;;;;
+1ECA9;INDIC SIYAQ NUMBER PREFIXED SEVEN;No;0;AL;;;;7;N;;;;;
+1ECAA;INDIC SIYAQ NUMBER PREFIXED EIGHT;No;0;AL;;;;8;N;;;;;
+1ECAB;INDIC SIYAQ NUMBER PREFIXED NINE;No;0;AL;;;;9;N;;;;;
+1ECAC;INDIC SIYAQ PLACEHOLDER;So;0;AL;;;;;N;;;;;
+1ECAD;INDIC SIYAQ FRACTION ONE QUARTER;No;0;AL;;;;1/4;N;;;;;
+1ECAE;INDIC SIYAQ FRACTION ONE HALF;No;0;AL;;;;1/2;N;;;;;
+1ECAF;INDIC SIYAQ FRACTION THREE QUARTERS;No;0;AL;;;;3/4;N;;;;;
+1ECB0;INDIC SIYAQ RUPEE MARK;Sc;0;AL;;;;;N;;;;;
+1ECB1;INDIC SIYAQ NUMBER ALTERNATE ONE;No;0;AL;;;;1;N;;;;;
+1ECB2;INDIC SIYAQ NUMBER ALTERNATE TWO;No;0;AL;;;;2;N;;;;;
+1ECB3;INDIC SIYAQ NUMBER ALTERNATE TEN THOUSAND;No;0;AL;;;;10000;N;;;;;
+1ECB4;INDIC SIYAQ ALTERNATE LAKH MARK;No;0;AL;;;;100000;N;;;;;
 1EE00;ARABIC MATHEMATICAL ALEF;Lo;0;AL;<font> 0627;;;;N;;;;;
 1EE01;ARABIC MATHEMATICAL BEH;Lo;0;AL;<font> 0628;;;;N;;;;;
 1EE02;ARABIC MATHEMATICAL JEEM;Lo;0;AL;<font> 062C;;;;N;;;;;
@@ -29013,6 +29602,7 @@
 1F12C;CIRCLED ITALIC LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;;
 1F12D;CIRCLED CD;So;0;L;<circle> 0043 0044;;;;N;;;;;
 1F12E;CIRCLED WZ;So;0;L;<circle> 0057 005A;;;;N;;;;;
+1F12F;COPYLEFT SYMBOL;So;0;ON;;;;;N;;;;;
 1F130;SQUARED LATIN CAPITAL LETTER A;So;0;L;<square> 0041;;;;N;;;;;
 1F131;SQUARED LATIN CAPITAL LETTER B;So;0;L;<square> 0042;;;;N;;;;;
 1F132;SQUARED LATIN CAPITAL LETTER C;So;0;L;<square> 0043;;;;N;;;;;
@@ -30227,6 +30817,7 @@
 1F6F6;CANOE;So;0;ON;;;;;N;;;;;
 1F6F7;SLED;So;0;ON;;;;;N;;;;;
 1F6F8;FLYING SAUCER;So;0;ON;;;;;N;;;;;
+1F6F9;SKATEBOARD;So;0;ON;;;;;N;;;;;
 1F700;ALCHEMICAL SYMBOL FOR QUINTESSENCE;So;0;ON;;;;;N;;;;;
 1F701;ALCHEMICAL SYMBOL FOR AIR;So;0;ON;;;;;N;;;;;
 1F702;ALCHEMICAL SYMBOL FOR FIRE;So;0;ON;;;;;N;;;;;
@@ -30428,6 +31019,10 @@
 1F7D2;LIGHT TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
 1F7D3;HEAVY TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
 1F7D4;HEAVY TWELVE POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+1F7D5;CIRCLED TRIANGLE;So;0;ON;;;;;N;;;;;
+1F7D6;NEGATIVE CIRCLED TRIANGLE;So;0;ON;;;;;N;;;;;
+1F7D7;CIRCLED SQUARE;So;0;ON;;;;;N;;;;;
+1F7D8;NEGATIVE CIRCLED SQUARE;So;0;ON;;;;;N;;;;;
 1F800;LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;
 1F801;UPWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;
 1F802;RIGHTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;
@@ -30648,6 +31243,9 @@
 1F94A;BOXING GLOVE;So;0;ON;;;;;N;;;;;
 1F94B;MARTIAL ARTS UNIFORM;So;0;ON;;;;;N;;;;;
 1F94C;CURLING STONE;So;0;ON;;;;;N;;;;;
+1F94D;LACROSSE STICK AND BALL;So;0;ON;;;;;N;;;;;
+1F94E;SOFTBALL;So;0;ON;;;;;N;;;;;
+1F94F;FLYING DISC;So;0;ON;;;;;N;;;;;
 1F950;CROISSANT;So;0;ON;;;;;N;;;;;
 1F951;AVOCADO;So;0;ON;;;;;N;;;;;
 1F952;CUCUMBER;So;0;ON;;;;;N;;;;;
@@ -30676,6 +31274,20 @@
 1F969;CUT OF MEAT;So;0;ON;;;;;N;;;;;
 1F96A;SANDWICH;So;0;ON;;;;;N;;;;;
 1F96B;CANNED FOOD;So;0;ON;;;;;N;;;;;
+1F96C;LEAFY GREEN;So;0;ON;;;;;N;;;;;
+1F96D;MANGO;So;0;ON;;;;;N;;;;;
+1F96E;MOON CAKE;So;0;ON;;;;;N;;;;;
+1F96F;BAGEL;So;0;ON;;;;;N;;;;;
+1F970;SMILING FACE WITH SMILING EYES AND THREE HEARTS;So;0;ON;;;;;N;;;;;
+1F973;FACE WITH PARTY HORN AND PARTY HAT;So;0;ON;;;;;N;;;;;
+1F974;FACE WITH UNEVEN EYES AND WAVY MOUTH;So;0;ON;;;;;N;;;;;
+1F975;OVERHEATED FACE;So;0;ON;;;;;N;;;;;
+1F976;FREEZING FACE;So;0;ON;;;;;N;;;;;
+1F97A;FACE WITH PLEADING EYES;So;0;ON;;;;;N;;;;;
+1F97C;LAB COAT;So;0;ON;;;;;N;;;;;
+1F97D;GOGGLES;So;0;ON;;;;;N;;;;;
+1F97E;HIKING BOOT;So;0;ON;;;;;N;;;;;
+1F97F;FLAT SHOE;So;0;ON;;;;;N;;;;;
 1F980;CRAB;So;0;ON;;;;;N;;;;;
 1F981;LION FACE;So;0;ON;;;;;N;;;;;
 1F982;SCORPION;So;0;ON;;;;;N;;;;;
@@ -30700,7 +31312,30 @@
 1F995;SAUROPOD;So;0;ON;;;;;N;;;;;
 1F996;T-REX;So;0;ON;;;;;N;;;;;
 1F997;CRICKET;So;0;ON;;;;;N;;;;;
+1F998;KANGAROO;So;0;ON;;;;;N;;;;;
+1F999;LLAMA;So;0;ON;;;;;N;;;;;
+1F99A;PEACOCK;So;0;ON;;;;;N;;;;;
+1F99B;HIPPOPOTAMUS;So;0;ON;;;;;N;;;;;
+1F99C;PARROT;So;0;ON;;;;;N;;;;;
+1F99D;RACCOON;So;0;ON;;;;;N;;;;;
+1F99E;LOBSTER;So;0;ON;;;;;N;;;;;
+1F99F;MOSQUITO;So;0;ON;;;;;N;;;;;
+1F9A0;MICROBE;So;0;ON;;;;;N;;;;;
+1F9A1;BADGER;So;0;ON;;;;;N;;;;;
+1F9A2;SWAN;So;0;ON;;;;;N;;;;;
+1F9B0;EMOJI COMPONENT RED HAIR;So;0;ON;;;;;N;;;;;
+1F9B1;EMOJI COMPONENT CURLY HAIR;So;0;ON;;;;;N;;;;;
+1F9B2;EMOJI COMPONENT BALD;So;0;ON;;;;;N;;;;;
+1F9B3;EMOJI COMPONENT WHITE HAIR;So;0;ON;;;;;N;;;;;
+1F9B4;BONE;So;0;ON;;;;;N;;;;;
+1F9B5;LEG;So;0;ON;;;;;N;;;;;
+1F9B6;FOOT;So;0;ON;;;;;N;;;;;
+1F9B7;TOOTH;So;0;ON;;;;;N;;;;;
+1F9B8;SUPERHERO;So;0;ON;;;;;N;;;;;
+1F9B9;SUPERVILLAIN;So;0;ON;;;;;N;;;;;
 1F9C0;CHEESE WEDGE;So;0;ON;;;;;N;;;;;
+1F9C1;CUPCAKE;So;0;ON;;;;;N;;;;;
+1F9C2;SALT SHAKER;So;0;ON;;;;;N;;;;;
 1F9D0;FACE WITH MONOCLE;So;0;ON;;;;;N;;;;;
 1F9D1;ADULT;So;0;ON;;;;;N;;;;;
 1F9D2;CHILD;So;0;ON;;;;;N;;;;;
@@ -30724,6 +31359,45 @@
 1F9E4;GLOVES;So;0;ON;;;;;N;;;;;
 1F9E5;COAT;So;0;ON;;;;;N;;;;;
 1F9E6;SOCKS;So;0;ON;;;;;N;;;;;
+1F9E7;RED GIFT ENVELOPE;So;0;ON;;;;;N;;;;;
+1F9E8;FIRECRACKER;So;0;ON;;;;;N;;;;;
+1F9E9;JIGSAW PUZZLE PIECE;So;0;ON;;;;;N;;;;;
+1F9EA;TEST TUBE;So;0;ON;;;;;N;;;;;
+1F9EB;PETRI DISH;So;0;ON;;;;;N;;;;;
+1F9EC;DNA DOUBLE HELIX;So;0;ON;;;;;N;;;;;
+1F9ED;COMPASS;So;0;ON;;;;;N;;;;;
+1F9EE;ABACUS;So;0;ON;;;;;N;;;;;
+1F9EF;FIRE EXTINGUISHER;So;0;ON;;;;;N;;;;;
+1F9F0;TOOLBOX;So;0;ON;;;;;N;;;;;
+1F9F1;BRICK;So;0;ON;;;;;N;;;;;
+1F9F2;MAGNET;So;0;ON;;;;;N;;;;;
+1F9F3;LUGGAGE;So;0;ON;;;;;N;;;;;
+1F9F4;LOTION BOTTLE;So;0;ON;;;;;N;;;;;
+1F9F5;SPOOL OF THREAD;So;0;ON;;;;;N;;;;;
+1F9F6;BALL OF YARN;So;0;ON;;;;;N;;;;;
+1F9F7;SAFETY PIN;So;0;ON;;;;;N;;;;;
+1F9F8;TEDDY BEAR;So;0;ON;;;;;N;;;;;
+1F9F9;BROOM;So;0;ON;;;;;N;;;;;
+1F9FA;BASKET;So;0;ON;;;;;N;;;;;
+1F9FB;ROLL OF PAPER;So;0;ON;;;;;N;;;;;
+1F9FC;BAR OF SOAP;So;0;ON;;;;;N;;;;;
+1F9FD;SPONGE;So;0;ON;;;;;N;;;;;
+1F9FE;RECEIPT;So;0;ON;;;;;N;;;;;
+1F9FF;NAZAR AMULET;So;0;ON;;;;;N;;;;;
+1FA60;XIANGQI RED GENERAL;So;0;ON;;;;;N;;;;;
+1FA61;XIANGQI RED MANDARIN;So;0;ON;;;;;N;;;;;
+1FA62;XIANGQI RED ELEPHANT;So;0;ON;;;;;N;;;;;
+1FA63;XIANGQI RED HORSE;So;0;ON;;;;;N;;;;;
+1FA64;XIANGQI RED CHARIOT;So;0;ON;;;;;N;;;;;
+1FA65;XIANGQI RED CANNON;So;0;ON;;;;;N;;;;;
+1FA66;XIANGQI RED SOLDIER;So;0;ON;;;;;N;;;;;
+1FA67;XIANGQI BLACK GENERAL;So;0;ON;;;;;N;;;;;
+1FA68;XIANGQI BLACK MANDARIN;So;0;ON;;;;;N;;;;;
+1FA69;XIANGQI BLACK ELEPHANT;So;0;ON;;;;;N;;;;;
+1FA6A;XIANGQI BLACK HORSE;So;0;ON;;;;;N;;;;;
+1FA6B;XIANGQI BLACK CHARIOT;So;0;ON;;;;;N;;;;;
+1FA6C;XIANGQI BLACK CANNON;So;0;ON;;;;;N;;;;;
+1FA6D;XIANGQI BLACK SOLDIER;So;0;ON;;;;;N;;;;;
 20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
 2A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
 2A700;<CJK Ideograph Extension C, First>;Lo;0;L;;;;;N;;;;;
--- a/make/data/unicodedata/VERSION	Wed Nov 21 13:20:52 2018 -0500
+++ b/make/data/unicodedata/VERSION	Wed Nov 21 13:53:17 2018 -0500
@@ -1,1 +1,1 @@
-10.0.0
+11.0.0
--- a/make/lib/Awt2dLibraries.gmk	Wed Nov 21 13:20:52 2018 -0500
+++ b/make/lib/Awt2dLibraries.gmk	Wed Nov 21 13:53:17 2018 -0500
@@ -280,7 +280,7 @@
         common/font \
         #
 
-    LIBAWT_XAWT_EXCLUDES := medialib
+    LIBAWT_XAWT_EXCLUDES := medialib debug
 
     LIBAWT_XAWT_EXTRA_HEADER_DIRS := \
         $(LIBAWT_DEFAULT_HEADER_DIRS) \
--- a/src/hotspot/cpu/aarch64/assembler_aarch64.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/cpu/aarch64/assembler_aarch64.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -317,29 +317,6 @@
   enum operation { uxtb, uxth, uxtw, uxtx, sxtb, sxth, sxtw, sxtx };
 };
 
-// abs methods which cannot overflow and so are well-defined across
-// the entire domain of integer types.
-static inline unsigned int uabs(unsigned int n) {
-  union {
-    unsigned int result;
-    int value;
-  };
-  result = n;
-  if (value < 0) result = -result;
-  return result;
-}
-static inline unsigned long uabs(unsigned long n) {
-  union {
-    unsigned long result;
-    long value;
-  };
-  result = n;
-  if (value < 0) result = -result;
-  return result;
-}
-static inline unsigned long uabs(long n) { return uabs((unsigned long)n); }
-static inline unsigned long uabs(int n) { return uabs((unsigned int)n); }
-
 // Addressing modes
 class Address {
  public:
--- a/src/hotspot/cpu/x86/vm_version_x86.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/cpu/x86/vm_version_x86.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -1042,9 +1042,7 @@
     }
   }
 #endif // COMPILER2 && ASSERT
-#endif // COMPILER2_OR_JVMCI
 
-#ifdef COMPILER2
 #ifdef _LP64
   if (FLAG_IS_DEFAULT(UseMultiplyToLenIntrinsic)) {
     UseMultiplyToLenIntrinsic = true;
@@ -1092,8 +1090,8 @@
     }
     FLAG_SET_DEFAULT(UseMulAddIntrinsic, false);
   }
-#endif
-#endif // COMPILER2
+#endif // _LP64
+#endif // COMPILER2_OR_JVMCI
 
   // On new cpus instructions which update whole XMM register should be used
   // to prevent partial register stall due to dependencies on high half.
--- a/src/hotspot/share/classfile/classListParser.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/classfile/classListParser.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -389,8 +389,8 @@
     InstanceKlass* ik = InstanceKlass::cast(klass);
     int id = this->id();
     SystemDictionaryShared::update_shared_entry(ik, id);
-    InstanceKlass* old = table()->lookup(id);
-    if (old != NULL && old != ik) {
+    InstanceKlass** old_ptr = table()->lookup(id);
+    if (old_ptr != NULL) {
       error("Duplicated ID %d for class %s", id, _class_name);
     }
     table()->add(id, ik);
@@ -404,11 +404,12 @@
 }
 
 InstanceKlass* ClassListParser::lookup_class_by_id(int id) {
-  InstanceKlass* klass = table()->lookup(id);
-  if (klass == NULL) {
+  InstanceKlass** klass_ptr = table()->lookup(id);
+  if (klass_ptr == NULL) {
     error("Class ID %d has not been defined", id);
   }
-  return klass;
+  assert(*klass_ptr != NULL, "must be");
+  return *klass_ptr;
 }
 
 
--- a/src/hotspot/share/classfile/classListParser.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/classfile/classListParser.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,30 +27,12 @@
 
 #include "utilities/exceptions.hpp"
 #include "utilities/globalDefinitions.hpp"
-#include "utilities/hashtable.hpp"
+#include "utilities/growableArray.hpp"
+#include "utilities/hashtable.inline.hpp"
 
-class CDSClassInfo;
-
-// Look up from ID -> InstanceKlass*
-class ID2KlassTable : public Hashtable<InstanceKlass*, mtClass> {
+class ID2KlassTable : public KVHashtable<int, InstanceKlass*, mtInternal> {
 public:
-  ID2KlassTable() : Hashtable<InstanceKlass*, mtClass>(1987, sizeof(HashtableEntry<InstanceKlass*, mtClass>)) { }
-  void add(int id, InstanceKlass* klass) {
-    unsigned int hash = (unsigned int)id;
-    HashtableEntry<InstanceKlass*, mtClass>* entry = new_entry(hash, klass);
-    add_entry(hash_to_index(hash), entry);
-  }
-
-  InstanceKlass* lookup(int id) {
-    unsigned int hash = (unsigned int)id;
-    int index = hash_to_index(id);
-    for (HashtableEntry<InstanceKlass*, mtClass>* e = bucket(index); e != NULL; e = e->next()) {
-      if (e->hash() == hash) {
-        return e->literal();
-      }
-    }
-    return NULL;
-  }
+  ID2KlassTable() : KVHashtable<int, InstanceKlass*, mtInternal>(1987) {}
 };
 
 class ClassListParser : public StackObj {
--- a/src/hotspot/share/classfile/classLoaderExt.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/classfile/classLoaderExt.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -25,7 +25,6 @@
 #include "precompiled.hpp"
 #include "classfile/classFileParser.hpp"
 #include "classfile/classFileStream.hpp"
-#include "classfile/classListParser.hpp"
 #include "classfile/classLoader.inline.hpp"
 #include "classfile/classLoaderExt.hpp"
 #include "classfile/classLoaderData.inline.hpp"
@@ -257,7 +256,6 @@
 // the "source:" in the class list file (see classListParser.cpp), and can be a directory or
 // a JAR file.
 InstanceKlass* ClassLoaderExt::load_class(Symbol* name, const char* path, TRAPS) {
-
   assert(name != NULL, "invariant");
   assert(DumpSharedSpaces, "this function is only used with -Xshare:dump");
   ResourceMark rm(THREAD);
--- a/src/hotspot/share/classfile/compactHashtable.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/classfile/compactHashtable.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -27,7 +27,7 @@
 
 #include "oops/array.hpp"
 #include "oops/symbol.hpp"
-#include "utilities/hashtable.hpp"
+#include "utilities/growableArray.hpp"
 
 
 template <
--- a/src/hotspot/share/classfile/dictionary.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/classfile/dictionary.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -67,7 +67,6 @@
   }
   assert(number_of_entries() == 0, "should have removed all entries");
   assert(new_entry_free_list() == NULL, "entry present on Dictionary's free list");
-  free_buckets();
 }
 
 DictionaryEntry* Dictionary::new_entry(unsigned int hash, InstanceKlass* klass) {
--- a/src/hotspot/share/classfile/moduleEntry.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/classfile/moduleEntry.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -352,7 +352,6 @@
   }
   assert(number_of_entries() == 0, "should have removed all entries");
   assert(new_entry_free_list() == NULL, "entry present on ModuleEntryTable's free list");
-  free_buckets();
 }
 
 ModuleEntry* ModuleEntryTable::new_entry(unsigned int hash, Handle module_handle,
--- a/src/hotspot/share/classfile/packageEntry.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/classfile/packageEntry.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -191,7 +191,6 @@
   }
   assert(number_of_entries() == 0, "should have removed all entries");
   assert(new_entry_free_list() == NULL, "entry present on PackageEntryTable's free list");
-  free_buckets();
 }
 
 PackageEntry* PackageEntryTable::new_entry(unsigned int hash, Symbol* name, ModuleEntry* module) {
--- a/src/hotspot/share/compiler/compileBroker.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/compiler/compileBroker.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -1946,7 +1946,8 @@
   }
 }
 
-void CompileBroker::post_compile(CompilerThread* thread, CompileTask* task, bool success, ciEnv* ci_env) {
+void CompileBroker::post_compile(CompilerThread* thread, CompileTask* task, bool success, ciEnv* ci_env,
+                                 int compilable, const char* failure_reason) {
   if (success) {
     task->mark_success();
     if (ci_env != NULL) {
@@ -1958,6 +1959,13 @@
         _compilation_log->log_nmethod(thread, code);
       }
     }
+  } else if (AbortVMOnCompilationFailure) {
+    if (compilable == ciEnv::MethodCompilable_not_at_tier) {
+      fatal("Not compilable at tier %d: %s", task->comp_level(), failure_reason);
+    }
+    if (compilable == ciEnv::MethodCompilable_never) {
+      fatal("Never compilable: %s", failure_reason);
+    }
   }
   // simulate crash during compilation
   assert(task->compile_id() != CICrashAt, "just as planned");
@@ -2068,7 +2076,7 @@
           compilable = ciEnv::MethodCompilable_not_at_tier;
         }
     }
-    post_compile(thread, task, task->code() != NULL, NULL);
+    post_compile(thread, task, task->code() != NULL, NULL, compilable, failure_reason);
     if (event.should_commit()) {
       post_compilation_event(&event, task);
     }
@@ -2128,7 +2136,7 @@
       ci_env.report_failure(failure_reason);
     }
 
-    post_compile(thread, task, !ci_env.failing(), &ci_env);
+    post_compile(thread, task, !ci_env.failing(), &ci_env, compilable, failure_reason);
     if (event.should_commit()) {
       post_compilation_event(&event, task);
     }
--- a/src/hotspot/share/compiler/compileBroker.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/compiler/compileBroker.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -252,7 +252,8 @@
 #endif
 
   static void invoke_compiler_on_method(CompileTask* task);
-  static void post_compile(CompilerThread* thread, CompileTask* task, bool success, ciEnv* ci_env);
+  static void post_compile(CompilerThread* thread, CompileTask* task, bool success, ciEnv* ci_env,
+                           int compilable, const char* failure_reason);
   static void set_last_compile(CompilerThread *thread, const methodHandle& method, bool is_osr, int comp_level);
   static void push_jni_handle_block();
   static void pop_jni_handle_block();
--- a/src/hotspot/share/gc/g1/g1CodeCacheRemSet.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/gc/g1/g1CodeCacheRemSet.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -76,7 +76,9 @@
     }
   }
   assert(number_of_entries() == 0, "should have removed all entries");
-  free_buckets();
+  // Each of the entries in new_entry_free_list() have been allocated in
+  // G1CodeRootSetTable::new_entry(). We never call the block allocator
+  // in BasicHashtable::new_entry().
   for (BasicHashtableEntry<mtGC>* e = new_entry_free_list(); e != NULL; e = new_entry_free_list()) {
     FREE_C_HEAP_ARRAY(char, e);
   }
--- a/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -28,6 +28,7 @@
 #include "memory/allocation.hpp"
 #include "oops/accessDecorators.hpp"
 #include "opto/loopnode.hpp"
+#include "opto/matcher.hpp"
 #include "opto/memnode.hpp"
 #include "utilities/globalDefinitions.hpp"
 
@@ -298,6 +299,10 @@
   virtual bool escape_add_final_edges(ConnectionGraph* conn_graph, PhaseGVN* gvn, Node* n, uint opcode) const { return false; }
   virtual bool escape_has_out_with_unsafe_object(Node* n) const { return false; }
   virtual bool escape_is_barrier_node(Node* n) const { return false; }
+
+  virtual bool matcher_find_shared_visit(Matcher* matcher, Matcher::MStack& mstack, Node* n, uint opcode, bool& mem_op, int& mem_addr_idx) const { return false; };
+  virtual bool matcher_find_shared_post_visit(Matcher* matcher, Node* n, uint opcode) const { return false; };
+  virtual bool matcher_is_store_load_barrier(Node* x, uint xop) const { return false; }
 };
 
 #endif // SHARE_GC_SHARED_C2_BARRIERSETC2_HPP
--- a/src/hotspot/share/gc/shared/ptrQueue.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/gc/shared/ptrQueue.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -74,12 +74,6 @@
   _buf[index()] = ptr;
 }
 
-void PtrQueue::locking_enqueue_completed_buffer(BufferNode* node) {
-  assert(_lock->owned_by_self(), "Required.");
-  qset()->enqueue_complete_buffer(node);
-}
-
-
 BufferNode* BufferNode::allocate(size_t size) {
   size_t byte_size = size * sizeof(void*);
   void* data = NEW_C_HEAP_ARRAY(char, buffer_offset() + byte_size, mtGC);
@@ -222,7 +216,7 @@
       BufferNode* node = BufferNode::make_node_from_buffer(_buf, index());
       _buf = NULL;         // clear shared _buf field
 
-      locking_enqueue_completed_buffer(node); // enqueue completed buffer
+      qset()->enqueue_complete_buffer(node);
       assert(_buf == NULL, "multiple enqueuers appear to be racing");
     } else {
       BufferNode* node = BufferNode::make_node_from_buffer(_buf, index());
--- a/src/hotspot/share/gc/shared/ptrQueue.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/gc/shared/ptrQueue.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -154,7 +154,6 @@
   // get into an infinite loop).
   virtual bool should_enqueue_buffer() { return true; }
   void handle_zero_index();
-  void locking_enqueue_completed_buffer(BufferNode* node);
 
   void enqueue_known_active(void* ptr);
 
--- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -1459,6 +1459,17 @@
   return handled;
 }
 
+bool ZBarrierSetC2::matcher_find_shared_visit(Matcher* matcher, Matcher::MStack& mstack, Node* n, uint opcode, bool& mem_op, int& mem_addr_idx) const {
+  if (opcode == Op_CallLeaf &&
+      (n->as_Call()->entry_point() == ZBarrierSetRuntime::load_barrier_on_oop_field_preloaded_addr() ||
+       n->as_Call()->entry_point() == ZBarrierSetRuntime::load_barrier_on_weak_oop_field_preloaded_addr())) {
+    mem_op = true;
+    mem_addr_idx = TypeFunc::Parms + 1;
+    return true;
+  }
+  return false;
+}
+
 // == Verification ==
 
 #ifdef ASSERT
--- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -209,6 +209,8 @@
 
   virtual bool final_graph_reshaping(Compile* compile, Node* n, uint opcode) const;
 
+  virtual bool matcher_find_shared_visit(Matcher* matcher, Matcher::MStack& mstack, Node* n, uint opcode, bool& mem_op, int& mem_addr_idx) const;
+
 #ifdef ASSERT
   virtual void verify_gc_barriers(Compile* compile, CompilePhase phase) const;
 #endif
--- a/src/hotspot/share/gc/z/zHeapIterator.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/gc/z/zHeapIterator.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -59,11 +59,9 @@
       _iter(iter) {}
 
   virtual void do_oop(oop* p) {
-    // Load barrier needed here for the same reason we
-    // need fixup_partial_loads() in ZHeap::mark_end().
-    // This barrier is also needed here in case we're
-    // treating the JVMTI weak tag map as strong roots.
-    const oop obj = ZBarrier::load_barrier_on_oop_field(p);
+    // Load barrier needed here, even on non-concurrent strong roots,
+    // for the same reason we need fixup_partial_loads() in ZHeap::mark_end().
+    const oop obj = NativeAccess<AS_NO_KEEPALIVE>::oop_load(p);
     _iter->push(obj);
   }
 
@@ -80,9 +78,9 @@
 
   oop load_oop(oop* p) const {
     if (_visit_referents) {
-      return HeapAccess<ON_UNKNOWN_OOP_REF>::oop_load_at(_base, _base->field_offset(p));
+      return HeapAccess<ON_UNKNOWN_OOP_REF | AS_NO_KEEPALIVE>::oop_load_at(_base, _base->field_offset(p));
     } else {
-      return HeapAccess<>::oop_load(p);
+      return HeapAccess<AS_NO_KEEPALIVE>::oop_load(p);
     }
   }
 
@@ -164,18 +162,36 @@
 }
 
 void ZHeapIterator::objects_do(ObjectClosure* cl) {
-  // Push roots onto stack
+  // Note that the heap iterator visits all reachable objects, including
+  // objects that might be unreachable from the application, such as a
+  // not yet cleared JNIWeakGloablRef. However, also note that visiting
+  // the JVMTI tag map is a requirement to make sure we visit all tagged
+  // objects, even those that might now have become phantom reachable.
+  // If we didn't do this the application would have expected to see
+  // ObjectFree events for phantom reachable objects in the tag map.
+
+  ZHeapIteratorRootOopClosure root_cl(this);
+
+  // Push strong roots onto stack
   {
-    // Note that we also visit the JVMTI weak tag map as if they were
-    // strong roots to make sure we visit all tagged objects, even
-    // those that might now have become unreachable. If we didn't do
-    // this the user would have expected to see ObjectFree events for
-    // unreachable objects in the tag map.
     ZRootsIterator roots;
-    ZConcurrentRootsIterator concurrent_roots(false /* marking */);
-    ZHeapIteratorRootOopClosure root_cl(this);
-    roots.oops_do(&root_cl, true /* visit_jvmti_weak_export */);
-    concurrent_roots.oops_do(&root_cl);
+    roots.oops_do(&root_cl);
+  }
+
+  {
+    ZConcurrentRootsIterator roots;
+    roots.oops_do(&root_cl);
+  }
+
+  // Push weak roots onto stack
+  {
+    ZWeakRootsIterator roots;
+    roots.oops_do(&root_cl);
+  }
+
+  {
+    ZConcurrentWeakRootsIterator roots;
+    roots.oops_do(&root_cl);
   }
 
   // Drain stack
--- a/src/hotspot/share/gc/z/zRootsIterator.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/gc/z/zRootsIterator.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -124,7 +124,7 @@
   ZParallelOopsDo<ZConcurrentRootsIterator, &ZConcurrentRootsIterator::do_class_loader_data_graph> _class_loader_data_graph;
 
 public:
-  ZConcurrentRootsIterator(bool marking);
+  ZConcurrentRootsIterator(bool marking = false);
   ~ZConcurrentRootsIterator();
 
   void oops_do(ZRootsIteratorClosure* cl);
--- a/src/hotspot/share/jvmci/jvmci_globals.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/jvmci/jvmci_globals.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -98,7 +98,22 @@
           "Number of methods to record in call profile")                    \
                                                                             \
   develop(bool, TraceUncollectedSpeculations, false,                        \
-          "Print message when a failed speculation was not collected")
+          "Print message when a failed speculation was not collected")      \
+                                                                            \
+  NOT_COMPILER2(diagnostic(bool, UseMultiplyToLenIntrinsic, false,          \
+          "Enables intrinsification of BigInteger.multiplyToLen()"))        \
+                                                                            \
+  NOT_COMPILER2(diagnostic(bool, UseSquareToLenIntrinsic, false,            \
+          "Enables intrinsification of BigInteger.squareToLen()"))          \
+                                                                            \
+  NOT_COMPILER2(diagnostic(bool, UseMulAddIntrinsic, false,                 \
+          "Enables intrinsification of BigInteger.mulAdd()"))               \
+                                                                            \
+  NOT_COMPILER2(diagnostic(bool, UseMontgomeryMultiplyIntrinsic, false,     \
+          "Enables intrinsification of BigInteger.montgomeryMultiply()"))   \
+                                                                            \
+  NOT_COMPILER2(diagnostic(bool, UseMontgomerySquareIntrinsic, false,       \
+          "Enables intrinsification of BigInteger.montgomerySquare()"))
 
 
 // Read default values for JVMCI globals
--- a/src/hotspot/share/memory/heapShared.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/memory/heapShared.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -64,6 +64,10 @@
 // assigned at runtime.
 static ArchivableStaticFieldInfo closed_archive_subgraph_entry_fields[] = {
   {"java/lang/Integer$IntegerCache",           "archivedCache"},
+  {"java/lang/Long$LongCache",                 "archivedCache"},
+  {"java/lang/Byte$ByteCache",                 "archivedCache"},
+  {"java/lang/Short$ShortCache",               "archivedCache"},
+  {"java/lang/Character$CharacterCache",       "archivedCache"},
 };
 // Entry fields for subgraphs archived in the open archive heap region.
 static ArchivableStaticFieldInfo open_archive_subgraph_entry_fields[] = {
--- a/src/hotspot/share/memory/metaspaceClosure.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/memory/metaspaceClosure.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -55,13 +55,15 @@
 }
 
 bool UniqueMetaspaceClosure::do_ref(MetaspaceClosure::Ref* ref, bool read_only) {
-  bool* found = _has_been_visited.get(ref->obj());
+  bool* found = _has_been_visited.lookup(ref->obj());
   if (found != NULL) {
     assert(*found == read_only, "must be");
     return false; // Already visited: no need to iterate embedded pointers.
   } else {
-    bool isnew = _has_been_visited.put(ref->obj(), read_only);
-    assert(isnew, "sanity");
+    _has_been_visited.add(ref->obj(), read_only);
+    if (_has_been_visited.maybe_grow(MAX_TABLE_SIZE)) {
+      log_info(cds, hashtables)("Expanded _has_been_visited table to %d", _has_been_visited.table_size());
+    }
     do_unique_ref(ref, read_only);
     return true;  // Saw this for the first time: iterate the embedded pointers.
   }
--- a/src/hotspot/share/memory/metaspaceClosure.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/memory/metaspaceClosure.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,7 @@
 #include "memory/allocation.hpp"
 #include "oops/array.hpp"
 #include "utilities/growableArray.hpp"
-#include "utilities/resourceHash.hpp"
+#include "utilities/hashtable.inline.hpp"
 
 // The metadata hierarchy is separate from the oop hierarchy
   class MetaspaceObj;        // no C++ vtable
@@ -258,25 +258,19 @@
 
 // This is a special MetaspaceClosure that visits each unique MetaspaceObj once.
 class UniqueMetaspaceClosure : public MetaspaceClosure {
+  static const int INITIAL_TABLE_SIZE = 15889;
+  static const int MAX_TABLE_SIZE     = 1000000;
+
   // Do not override. Returns true if we are discovering ref->obj() for the first time.
   virtual bool do_ref(Ref* ref, bool read_only);
 
 public:
   // Gets called the first time we discover an object.
   virtual void do_unique_ref(Ref* ref, bool read_only) = 0;
+  UniqueMetaspaceClosure() : _has_been_visited(INITIAL_TABLE_SIZE) {}
+
 private:
-  static unsigned my_hash(const address& a) {
-    return primitive_hash<address>(a);
-  }
-  static bool my_equals(const address& a0, const address& a1) {
-    return primitive_equals<address>(a0, a1);
-  }
-  ResourceHashtable<
-      address, bool,
-      UniqueMetaspaceClosure::my_hash,   // solaris compiler doesn't like: primitive_hash<address>
-      UniqueMetaspaceClosure::my_equals, // solaris compiler doesn't like: primitive_equals<address>
-      15889,                             // prime number
-      ResourceObj::C_HEAP> _has_been_visited;
+  KVHashtable<address, bool, mtInternal> _has_been_visited;
 };
 
 #endif // SHARE_VM_MEMORY_METASPACE_ITERATOR_HPP
--- a/src/hotspot/share/memory/metaspaceShared.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/memory/metaspaceShared.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -64,6 +64,7 @@
 #include "utilities/align.hpp"
 #include "utilities/bitMap.hpp"
 #include "utilities/defaultStream.hpp"
+#include "utilities/hashtable.inline.hpp"
 #if INCLUDE_G1GC
 #include "gc/g1/g1CollectedHeap.hpp"
 #endif
@@ -1067,26 +1068,19 @@
 // metaspace data into their final location in the shared regions.
 
 class ArchiveCompactor : AllStatic {
+  static const int INITIAL_TABLE_SIZE = 8087;
+  static const int MAX_TABLE_SIZE     = 1000000;
+
   static DumpAllocStats* _alloc_stats;
   static SortedSymbolClosure* _ssc;
 
-  static unsigned my_hash(const address& a) {
-    return primitive_hash<address>(a);
-  }
-  static bool my_equals(const address& a0, const address& a1) {
-    return primitive_equals<address>(a0, a1);
-  }
-  typedef ResourceHashtable<
-      address, address,
-      ArchiveCompactor::my_hash,   // solaris compiler doesn't like: primitive_hash<address>
-      ArchiveCompactor::my_equals, // solaris compiler doesn't like: primitive_equals<address>
-      16384, ResourceObj::C_HEAP> RelocationTable;
+  typedef KVHashtable<address, address, mtInternal> RelocationTable;
   static RelocationTable* _new_loc_table;
 
 public:
   static void initialize() {
     _alloc_stats = new(ResourceObj::C_HEAP, mtInternal)DumpAllocStats;
-    _new_loc_table = new(ResourceObj::C_HEAP, mtInternal)RelocationTable;
+    _new_loc_table = new RelocationTable(INITIAL_TABLE_SIZE);
   }
   static DumpAllocStats* alloc_stats() {
     return _alloc_stats;
@@ -1136,15 +1130,17 @@
       newtop = _rw_region.top();
     }
     memcpy(p, obj, bytes);
-    bool isnew = _new_loc_table->put(obj, (address)p);
+    assert(_new_loc_table->lookup(obj) == NULL, "each object can be relocated at most once");
+    _new_loc_table->add(obj, (address)p);
     log_trace(cds)("Copy: " PTR_FORMAT " ==> " PTR_FORMAT " %d", p2i(obj), p2i(p), bytes);
-    assert(isnew, "must be");
-
+    if (_new_loc_table->maybe_grow(MAX_TABLE_SIZE)) {
+      log_info(cds, hashtables)("Expanded _new_loc_table to %d", _new_loc_table->table_size());
+    }
     _alloc_stats->record(ref->msotype(), int(newtop - oldtop), read_only);
   }
 
   static address get_new_loc(MetaspaceClosure::Ref* ref) {
-    address* pp = _new_loc_table->get(ref->obj());
+    address* pp = _new_loc_table->lookup(ref->obj());
     assert(pp != NULL, "must be");
     return *pp;
   }
@@ -1288,7 +1284,7 @@
 
   static Klass* get_relocated_klass(Klass* orig_klass) {
     assert(DumpSharedSpaces, "dump time only");
-    address* pp = _new_loc_table->get((address)orig_klass);
+    address* pp = _new_loc_table->lookup((address)orig_klass);
     assert(pp != NULL, "must be");
     Klass* klass = (Klass*)(*pp);
     assert(klass->is_klass(), "must be");
--- a/src/hotspot/share/oops/instanceKlass.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/oops/instanceKlass.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -1282,7 +1282,6 @@
     JavaThread *jt = (JavaThread *)THREAD;
     {
       // Atomic creation of array_klasses
-      MutexLocker mc(Compile_lock, THREAD);   // for vtables
       MutexLocker ma(MultiArray_lock, THREAD);
 
       // Check if update has already taken place
--- a/src/hotspot/share/oops/klass.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/oops/klass.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -59,6 +59,10 @@
   return _java_mirror.resolve();
 }
 
+oop Klass::java_mirror_no_keepalive() const {
+  return _java_mirror.peek();
+}
+
 bool Klass::is_cloneable() const {
   return _access_flags.is_cloneable_fast() ||
          is_subtype_of(SystemDictionary::Cloneable_klass());
@@ -746,8 +750,8 @@
     }
   }
 
-  if (java_mirror() != NULL) {
-    guarantee(oopDesc::is_oop(java_mirror()), "should be instance");
+  if (java_mirror_no_keepalive() != NULL) {
+    guarantee(oopDesc::is_oop(java_mirror_no_keepalive()), "should be instance");
   }
 }
 
--- a/src/hotspot/share/oops/klass.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/oops/klass.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -257,6 +257,7 @@
 
   // java mirror
   oop java_mirror() const;
+  oop java_mirror_no_keepalive() const;
   void set_java_mirror(Handle m);
 
   oop archived_java_mirror_raw() NOT_CDS_JAVA_HEAP_RETURN_(NULL); // no GC barrier
--- a/src/hotspot/share/oops/objArrayKlass.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/oops/objArrayKlass.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -80,7 +80,6 @@
         Klass* ek = NULL;
         {
           MutexUnlocker mu(MultiArray_lock);
-          MutexUnlocker mc(Compile_lock);   // for vtables
           super_klass = element_super->array_klass(CHECK_0);
           for( int i = element_supers->length()-1; i >= 0; i-- ) {
             Klass* elem_super = element_supers->at(i);
@@ -332,7 +331,6 @@
     ResourceMark rm;
     JavaThread *jt = (JavaThread *)THREAD;
     {
-      MutexLocker mc(Compile_lock, THREAD);   // for vtables
       // Ensure atomic creation of higher dimensions
       MutexLocker mu(MultiArray_lock, THREAD);
 
--- a/src/hotspot/share/oops/oopHandle.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/oops/oopHandle.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -44,6 +44,7 @@
   OopHandle(oop* w) : _obj(w) {}
 
   inline oop resolve() const;
+  inline oop peek() const;
 
   // Used only for removing handle.
   oop* ptr_raw() const { return _obj; }
--- a/src/hotspot/share/oops/oopHandle.inline.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/oops/oopHandle.inline.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -32,5 +32,8 @@
   return (_obj == NULL) ? (oop)NULL : NativeAccess<>::oop_load(_obj);
 }
 
+inline oop OopHandle::peek() const {
+  return (_obj == NULL) ? (oop)NULL : NativeAccess<AS_NO_KEEPALIVE>::oop_load(_obj);
+}
+
 #endif //  SHARE_VM_OOPS_OOPHANDLE_INLINE_HPP
-
--- a/src/hotspot/share/oops/typeArrayKlass.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/oops/typeArrayKlass.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -195,7 +195,6 @@
     ResourceMark rm;
     JavaThread *jt = (JavaThread *)THREAD;
     {
-      MutexLocker mc(Compile_lock, THREAD);   // for vtables
       // Atomic create higher dimension and link into list
       MutexLocker mu(MultiArray_lock, THREAD);
 
--- a/src/hotspot/share/opto/doCall.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/opto/doCall.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -470,7 +470,7 @@
   // Push appendix argument (MethodType, CallSite, etc.), if one.
   if (iter().has_appendix()) {
     ciObject* appendix_arg = iter().get_appendix();
-    const TypeOopPtr* appendix_arg_type = TypeOopPtr::make_from_constant(appendix_arg);
+    const TypeOopPtr* appendix_arg_type = TypeOopPtr::make_from_constant(appendix_arg, /* require_const= */ true);
     Node* appendix_arg_node = _gvn.makecon(appendix_arg_type);
     push(appendix_arg_node);
   }
--- a/src/hotspot/share/opto/ifnode.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/opto/ifnode.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -1551,7 +1551,6 @@
   // Search up the dominator tree for an If with an identical test
   while (dom->Opcode() != op    ||  // Not same opcode?
          dom->in(1)    != in(1) ||  // Not same input 1?
-         (req() == 3 && dom->in(2) != in(2)) || // Not same input 2?
          prev_dom->in(0) != dom) {  // One path of test does not dominate?
     if (dist < 0) return NULL;
 
--- a/src/hotspot/share/opto/loopPredicate.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/opto/loopPredicate.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -370,9 +370,9 @@
 
 // Clone loop predicates to cloned loops (peeled, unswitched, split_if).
 Node* PhaseIdealLoop::clone_loop_predicates(Node* old_entry, Node* new_entry,
-                                                bool clone_limit_check,
-                                                PhaseIdealLoop* loop_phase,
-                                                PhaseIterGVN* igvn) {
+                                            bool clone_limit_check,
+                                            PhaseIdealLoop* loop_phase,
+                                            PhaseIterGVN* igvn) {
 #ifdef ASSERT
   if (new_entry == NULL || !(new_entry->is_Proj() || new_entry->is_Region() || new_entry->is_SafePoint())) {
     if (new_entry != NULL)
@@ -385,7 +385,7 @@
   ProjNode* limit_check_proj = NULL;
   limit_check_proj = find_predicate_insertion_point(entry, Deoptimization::Reason_loop_limit_check);
   if (limit_check_proj != NULL) {
-    entry = entry->in(0)->in(0);
+    entry = skip_loop_predicates(entry);
   }
   ProjNode* profile_predicate_proj = NULL;
   ProjNode* predicate_proj = NULL;
@@ -467,7 +467,7 @@
   Node* predicate = NULL;
   predicate = find_predicate_insertion_point(entry, Deoptimization::Reason_loop_limit_check);
   if (predicate != NULL) {
-    entry = entry->in(0)->in(0);
+    entry = skip_loop_predicates(entry);
   }
   if (UseProfiledLoopPredicate) {
     predicate = find_predicate_insertion_point(entry, Deoptimization::Reason_profile_predicate);
@@ -1363,7 +1363,7 @@
   // Loop limit check predicate should be near the loop.
   loop_limit_proj = find_predicate_insertion_point(entry, Deoptimization::Reason_loop_limit_check);
   if (loop_limit_proj != NULL) {
-    entry = loop_limit_proj->in(0)->in(0);
+    entry = skip_loop_predicates(loop_limit_proj);
   }
   bool has_profile_predicates = false;
   profile_predicate_proj = find_predicate_insertion_point(entry, Deoptimization::Reason_profile_predicate);
--- a/src/hotspot/share/opto/loopTransform.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/opto/loopTransform.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -1200,7 +1200,7 @@
     Node* predicate = NULL;
     predicate = find_predicate_insertion_point(entry, Deoptimization::Reason_loop_limit_check);
     if (predicate != NULL) {
-      entry = entry->in(0)->in(0);
+      entry = skip_loop_predicates(entry);
     }
     Node* profile_predicate = NULL;
     if (UseProfiledLoopPredicate) {
--- a/src/hotspot/share/opto/loopnode.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/opto/loopnode.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -324,6 +324,31 @@
   return outer_ilt;
 }
 
+void PhaseIdealLoop::insert_loop_limit_check(ProjNode* limit_check_proj, Node* cmp_limit, Node* bol) {
+  Node* new_predicate_proj = create_new_if_for_predicate(limit_check_proj, NULL,
+                                                         Deoptimization::Reason_loop_limit_check,
+                                                         Op_If);
+  Node* iff = new_predicate_proj->in(0);
+  assert(iff->Opcode() == Op_If, "bad graph shape");
+  Node* conv = iff->in(1);
+  assert(conv->Opcode() == Op_Conv2B, "bad graph shape");
+  Node* opaq = conv->in(1);
+  assert(opaq->Opcode() == Op_Opaque1, "bad graph shape");
+  cmp_limit = _igvn.register_new_node_with_optimizer(cmp_limit);
+  bol = _igvn.register_new_node_with_optimizer(bol);
+  set_subtree_ctrl(bol);
+  _igvn.replace_input_of(iff, 1, bol);
+
+#ifndef PRODUCT
+  // report that the loop predication has been actually performed
+  // for this loop
+  if (TraceLoopLimitCheck) {
+    tty->print_cr("Counted Loop Limit Check generated:");
+    debug_only( bol->dump(2); )
+  }
+#endif
+}
+
 //------------------------------is_counted_loop--------------------------------
 bool PhaseIdealLoop::is_counted_loop(Node* x, IdealLoopTree*& loop) {
   PhaseGVN *gvn = &_igvn;
@@ -540,7 +565,7 @@
       return false; // cyclic loop or this loop trips only once
   }
 
-  if (phi_incr != NULL) {
+  if (phi_incr != NULL && bt != BoolTest::ne) {
     // check if there is a possiblity of IV overflowing after the first increment
     if (stride_con > 0) {
       if (init_t->_hi > max_jint - stride_con) {
@@ -631,28 +656,60 @@
       cmp_limit = new CmpINode(limit, _igvn.intcon(min_jint - stride_m));
       bol = new BoolNode(cmp_limit, BoolTest::ge);
     }
-    cmp_limit = _igvn.register_new_node_with_optimizer(cmp_limit);
-    bol = _igvn.register_new_node_with_optimizer(bol);
-    set_subtree_ctrl(bol);
-
-    // Replace condition in original predicate but preserve Opaque node
-    // so that previous predicates could be found.
-    assert(check_iff->in(1)->Opcode() == Op_Conv2B &&
-           check_iff->in(1)->in(1)->Opcode() == Op_Opaque1, "");
-    Node* opq = check_iff->in(1)->in(1);
-    _igvn.replace_input_of(opq, 1, bol);
-    // Update ctrl.
-    set_ctrl(opq, check_iff->in(0));
-    set_ctrl(check_iff->in(1), check_iff->in(0));
-
-#ifndef PRODUCT
-    // report that the loop predication has been actually performed
-    // for this loop
-    if (TraceLoopLimitCheck) {
-      tty->print_cr("Counted Loop Limit Check generated:");
-      debug_only( bol->dump(2); )
+
+    insert_loop_limit_check(limit_check_proj, cmp_limit, bol);
+  }
+
+  // Now we need to canonicalize loop condition.
+  if (bt == BoolTest::ne) {
+    assert(stride_con == 1 || stride_con == -1, "simple increment only");
+    if (stride_con > 0 && init_t->_hi < limit_t->_lo) {
+      // 'ne' can be replaced with 'lt' only when init < limit.
+      bt = BoolTest::lt;
+    } else if (stride_con < 0 && init_t->_lo > limit_t->_hi) {
+      // 'ne' can be replaced with 'gt' only when init > limit.
+      bt = BoolTest::gt;
+    } else {
+      ProjNode *limit_check_proj = find_predicate_insertion_point(init_control, Deoptimization::Reason_loop_limit_check);
+      if (!limit_check_proj) {
+        // The limit check predicate is not generated if this method trapped here before.
+#ifdef ASSERT
+        if (TraceLoopLimitCheck) {
+          tty->print("missing loop limit check:");
+          loop->dump_head();
+          x->dump(1);
+        }
+#endif
+        return false;
+      }
+      IfNode* check_iff = limit_check_proj->in(0)->as_If();
+
+      if (!is_dominator(get_ctrl(limit), check_iff->in(0)) ||
+          !is_dominator(get_ctrl(init_trip), check_iff->in(0))) {
+        return false;
+      }
+
+      Node* cmp_limit;
+      Node* bol;
+
+      if (stride_con > 0) {
+        cmp_limit = new CmpINode(init_trip, limit);
+        bol = new BoolNode(cmp_limit, BoolTest::lt);
+      } else {
+        cmp_limit = new CmpINode(init_trip, limit);
+        bol = new BoolNode(cmp_limit, BoolTest::gt);
+      }
+
+      insert_loop_limit_check(limit_check_proj, cmp_limit, bol);
+
+      if (stride_con > 0) {
+        // 'ne' can be replaced with 'lt' only when init < limit.
+        bt = BoolTest::lt;
+      } else if (stride_con < 0) {
+        // 'ne' can be replaced with 'gt' only when init > limit.
+        bt = BoolTest::gt;
+      }
     }
-#endif
   }
 
   if (phi_incr != NULL) {
@@ -668,17 +725,6 @@
     limit = gvn->transform(new AddINode(limit, stride));
   }
 
-  // Now we need to canonicalize loop condition.
-  if (bt == BoolTest::ne) {
-    assert(stride_con == 1 || stride_con == -1, "simple increment only");
-    // 'ne' can be replaced with 'lt' only when init < limit.
-    if (stride_con > 0 && init_t->_hi < limit_t->_lo)
-      bt = BoolTest::lt;
-    // 'ne' can be replaced with 'gt' only when init > limit.
-    if (stride_con < 0 && init_t->_lo > limit_t->_hi)
-      bt = BoolTest::gt;
-  }
-
   if (incl_limit) {
     // The limit check guaranties that 'limit <= (max_jint - stride)' so
     // we can convert 'i <= limit' to 'i < limit+1' since stride != 0.
@@ -2404,7 +2450,7 @@
   Node* predicate = PhaseIdealLoop::find_predicate_insertion_point(entry, Deoptimization::Reason_loop_limit_check);
   if (predicate != NULL ) {
     tty->print(" limit_check");
-    entry = entry->in(0)->in(0);
+    entry = PhaseIdealLoop::skip_loop_predicates(entry);
   }
   if (UseLoopPredicate) {
     entry = PhaseIdealLoop::find_predicate_insertion_point(entry, Deoptimization::Reason_predicate);
@@ -3910,7 +3956,8 @@
     }
     while(worklist.size() != 0 && LCA != early) {
       Node* s = worklist.pop();
-      if (s->is_Load() || s->Opcode() == Op_SafePoint) {
+      if (s->is_Load() || s->Opcode() == Op_SafePoint ||
+          (s->is_CallStaticJava() && s->as_CallStaticJava()->uncommon_trap_request() != 0)) {
         continue;
       } else if (s->is_MergeMem()) {
         for (DUIterator_Fast imax, i = s->fast_outs(imax); i < imax; i++) {
--- a/src/hotspot/share/opto/loopnode.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/opto/loopnode.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -749,6 +749,7 @@
                             LoopNode* outer_main_head, uint dd_main_head);
   Node* update_skeleton_predicate(Node* iff, Node* value, Node* predicate = NULL, Node* uncommon_proj = NULL,
                                   Node* current_proj = NULL, IdealLoopTree* outer_loop = NULL, Node* prev_proj = NULL);
+  void insert_loop_limit_check(ProjNode* limit_check_proj, Node* cmp_limit, Node* bol);
 
 public:
 
--- a/src/hotspot/share/opto/matcher.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/opto/matcher.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -23,6 +23,8 @@
  */
 
 #include "precompiled.hpp"
+#include "gc/shared/barrierSet.hpp"
+#include "gc/shared/c2/barrierSetC2.hpp"
 #include "memory/allocation.inline.hpp"
 #include "memory/resourceArea.hpp"
 #include "opto/ad.hpp"
@@ -41,9 +43,6 @@
 #include "runtime/os.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "utilities/align.hpp"
-#if INCLUDE_ZGC
-#include "gc/z/zBarrierSetRuntime.hpp"
-#endif // INCLUDE_ZGC
 
 OptoReg::Name OptoReg::c_frame_pointer;
 
@@ -2071,122 +2070,12 @@
       set_visited(n);   // Flag as visited now
       bool mem_op = false;
       int mem_addr_idx = MemNode::Address;
-
-      switch( nop ) {  // Handle some opcodes special
-      case Op_Phi:             // Treat Phis as shared roots
-      case Op_Parm:
-      case Op_Proj:            // All handled specially during matching
-      case Op_SafePointScalarObject:
-        set_shared(n);
-        set_dontcare(n);
-        break;
-      case Op_If:
-      case Op_CountedLoopEnd:
-        mstack.set_state(Alt_Post_Visit); // Alternative way
-        // Convert (If (Bool (CmpX A B))) into (If (Bool) (CmpX A B)).  Helps
-        // with matching cmp/branch in 1 instruction.  The Matcher needs the
-        // Bool and CmpX side-by-side, because it can only get at constants
-        // that are at the leaves of Match trees, and the Bool's condition acts
-        // as a constant here.
-        mstack.push(n->in(1), Visit);         // Clone the Bool
-        mstack.push(n->in(0), Pre_Visit);     // Visit control input
-        continue; // while (mstack.is_nonempty())
-      case Op_ConvI2D:         // These forms efficiently match with a prior
-      case Op_ConvI2F:         //   Load but not a following Store
-        if( n->in(1)->is_Load() &&        // Prior load
-            n->outcnt() == 1 &&           // Not already shared
-            n->unique_out()->is_Store() ) // Following store
-          set_shared(n);       // Force it to be a root
-        break;
-      case Op_ReverseBytesI:
-      case Op_ReverseBytesL:
-        if( n->in(1)->is_Load() &&        // Prior load
-            n->outcnt() == 1 )            // Not already shared
-          set_shared(n);                  // Force it to be a root
-        break;
-      case Op_BoxLock:         // Cant match until we get stack-regs in ADLC
-      case Op_IfFalse:
-      case Op_IfTrue:
-      case Op_MachProj:
-      case Op_MergeMem:
-      case Op_Catch:
-      case Op_CatchProj:
-      case Op_CProj:
-      case Op_JumpProj:
-      case Op_JProj:
-      case Op_NeverBranch:
-        set_dontcare(n);
-        break;
-      case Op_Jump:
-        mstack.push(n->in(1), Pre_Visit);     // Switch Value (could be shared)
-        mstack.push(n->in(0), Pre_Visit);     // Visit Control input
-        continue;                             // while (mstack.is_nonempty())
-      case Op_StrComp:
-      case Op_StrEquals:
-      case Op_StrIndexOf:
-      case Op_StrIndexOfChar:
-      case Op_AryEq:
-      case Op_HasNegatives:
-      case Op_StrInflatedCopy:
-      case Op_StrCompressedCopy:
-      case Op_EncodeISOArray:
-      case Op_FmaD:
-      case Op_FmaF:
-      case Op_FmaVD:
-      case Op_FmaVF:
-        set_shared(n); // Force result into register (it will be anyways)
-        break;
-      case Op_ConP: {  // Convert pointers above the centerline to NUL
-        TypeNode *tn = n->as_Type(); // Constants derive from type nodes
-        const TypePtr* tp = tn->type()->is_ptr();
-        if (tp->_ptr == TypePtr::AnyNull) {
-          tn->set_type(TypePtr::NULL_PTR);
+      bool gc_handled = BarrierSet::barrier_set()->barrier_set_c2()->matcher_find_shared_visit(this, mstack, n, nop, mem_op, mem_addr_idx);
+      if (!gc_handled) {
+        if (find_shared_visit(mstack, n, nop, mem_op, mem_addr_idx)) {
+          continue;
         }
-        break;
       }
-      case Op_ConN: {  // Convert narrow pointers above the centerline to NUL
-        TypeNode *tn = n->as_Type(); // Constants derive from type nodes
-        const TypePtr* tp = tn->type()->make_ptr();
-        if (tp && tp->_ptr == TypePtr::AnyNull) {
-          tn->set_type(TypeNarrowOop::NULL_PTR);
-        }
-        break;
-      }
-      case Op_Binary:         // These are introduced in the Post_Visit state.
-        ShouldNotReachHere();
-        break;
-      case Op_ClearArray:
-      case Op_SafePoint:
-        mem_op = true;
-        break;
-#if INCLUDE_ZGC
-      case Op_CallLeaf:
-        if (UseZGC) {
-          if (n->as_Call()->entry_point() == ZBarrierSetRuntime::load_barrier_on_oop_field_preloaded_addr() ||
-              n->as_Call()->entry_point() == ZBarrierSetRuntime::load_barrier_on_weak_oop_field_preloaded_addr()) {
-            mem_op = true;
-            mem_addr_idx = TypeFunc::Parms+1;
-          }
-          break;
-        }
-#endif
-      default:
-        if( n->is_Store() ) {
-          // Do match stores, despite no ideal reg
-          mem_op = true;
-          break;
-        }
-        if( n->is_Mem() ) { // Loads and LoadStores
-          mem_op = true;
-          // Loads must be root of match tree due to prior load conflict
-          if( C->subsume_loads() == false )
-            set_shared(n);
-        }
-        // Fall into default case
-        if( !n->ideal_reg() )
-          set_dontcare(n);  // Unmatchable Nodes
-      } // end_switch
-
       for(int i = n->req() - 1; i >= 0; --i) { // For my children
         Node *m = n->in(i); // Get ith input
         if (m == NULL) continue;  // Ignore NULLs
@@ -2252,101 +2141,10 @@
       mstack.pop(); // Remove node from stack
 
       // Now hack a few special opcodes
-      switch( n->Opcode() ) {       // Handle some opcodes special
-      case Op_StorePConditional:
-      case Op_StoreIConditional:
-      case Op_StoreLConditional:
-      case Op_CompareAndExchangeB:
-      case Op_CompareAndExchangeS:
-      case Op_CompareAndExchangeI:
-      case Op_CompareAndExchangeL:
-      case Op_CompareAndExchangeP:
-      case Op_CompareAndExchangeN:
-      case Op_WeakCompareAndSwapB:
-      case Op_WeakCompareAndSwapS:
-      case Op_WeakCompareAndSwapI:
-      case Op_WeakCompareAndSwapL:
-      case Op_WeakCompareAndSwapP:
-      case Op_WeakCompareAndSwapN:
-      case Op_CompareAndSwapB:
-      case Op_CompareAndSwapS:
-      case Op_CompareAndSwapI:
-      case Op_CompareAndSwapL:
-      case Op_CompareAndSwapP:
-      case Op_CompareAndSwapN: {   // Convert trinary to binary-tree
-        Node *newval = n->in(MemNode::ValueIn );
-        Node *oldval  = n->in(LoadStoreConditionalNode::ExpectedIn);
-        Node *pair = new BinaryNode( oldval, newval );
-        n->set_req(MemNode::ValueIn,pair);
-        n->del_req(LoadStoreConditionalNode::ExpectedIn);
-        break;
-      }
-      case Op_CMoveD:              // Convert trinary to binary-tree
-      case Op_CMoveF:
-      case Op_CMoveI:
-      case Op_CMoveL:
-      case Op_CMoveN:
-      case Op_CMoveP:
-      case Op_CMoveVF:
-      case Op_CMoveVD:  {
-        // Restructure into a binary tree for Matching.  It's possible that
-        // we could move this code up next to the graph reshaping for IfNodes
-        // or vice-versa, but I do not want to debug this for Ladybird.
-        // 10/2/2000 CNC.
-        Node *pair1 = new BinaryNode(n->in(1),n->in(1)->in(1));
-        n->set_req(1,pair1);
-        Node *pair2 = new BinaryNode(n->in(2),n->in(3));
-        n->set_req(2,pair2);
-        n->del_req(3);
-        break;
-      }
-      case Op_LoopLimit: {
-        Node *pair1 = new BinaryNode(n->in(1),n->in(2));
-        n->set_req(1,pair1);
-        n->set_req(2,n->in(3));
-        n->del_req(3);
-        break;
-      }
-      case Op_StrEquals:
-      case Op_StrIndexOfChar: {
-        Node *pair1 = new BinaryNode(n->in(2),n->in(3));
-        n->set_req(2,pair1);
-        n->set_req(3,n->in(4));
-        n->del_req(4);
-        break;
-      }
-      case Op_StrComp:
-      case Op_StrIndexOf: {
-        Node *pair1 = new BinaryNode(n->in(2),n->in(3));
-        n->set_req(2,pair1);
-        Node *pair2 = new BinaryNode(n->in(4),n->in(5));
-        n->set_req(3,pair2);
-        n->del_req(5);
-        n->del_req(4);
-        break;
-      }
-      case Op_StrCompressedCopy:
-      case Op_StrInflatedCopy:
-      case Op_EncodeISOArray: {
-        // Restructure into a binary tree for Matching.
-        Node* pair = new BinaryNode(n->in(3), n->in(4));
-        n->set_req(3, pair);
-        n->del_req(4);
-        break;
-      }
-      case Op_FmaD:
-      case Op_FmaF:
-      case Op_FmaVD:
-      case Op_FmaVF: {
-        // Restructure into a binary tree for Matching.
-        Node* pair = new BinaryNode(n->in(1), n->in(2));
-        n->set_req(2, pair);
-        n->set_req(1, n->in(3));
-        n->del_req(3);
-        break;
-      }
-      default:
-        break;
+      uint opcode = n->Opcode();
+      bool gc_handled = BarrierSet::barrier_set()->barrier_set_c2()->matcher_find_shared_post_visit(this, n, opcode);
+      if (!gc_handled) {
+        find_shared_post_visit(n, opcode);
       }
     }
     else {
@@ -2355,6 +2153,212 @@
   } // end of while (mstack.is_nonempty())
 }
 
+bool Matcher::find_shared_visit(MStack& mstack, Node* n, uint opcode, bool& mem_op, int& mem_addr_idx) {
+  switch(opcode) {  // Handle some opcodes special
+    case Op_Phi:             // Treat Phis as shared roots
+    case Op_Parm:
+    case Op_Proj:            // All handled specially during matching
+    case Op_SafePointScalarObject:
+      set_shared(n);
+      set_dontcare(n);
+      break;
+    case Op_If:
+    case Op_CountedLoopEnd:
+      mstack.set_state(Alt_Post_Visit); // Alternative way
+      // Convert (If (Bool (CmpX A B))) into (If (Bool) (CmpX A B)).  Helps
+      // with matching cmp/branch in 1 instruction.  The Matcher needs the
+      // Bool and CmpX side-by-side, because it can only get at constants
+      // that are at the leaves of Match trees, and the Bool's condition acts
+      // as a constant here.
+      mstack.push(n->in(1), Visit);         // Clone the Bool
+      mstack.push(n->in(0), Pre_Visit);     // Visit control input
+      return true; // while (mstack.is_nonempty())
+    case Op_ConvI2D:         // These forms efficiently match with a prior
+    case Op_ConvI2F:         //   Load but not a following Store
+      if( n->in(1)->is_Load() &&        // Prior load
+          n->outcnt() == 1 &&           // Not already shared
+          n->unique_out()->is_Store() ) // Following store
+        set_shared(n);       // Force it to be a root
+      break;
+    case Op_ReverseBytesI:
+    case Op_ReverseBytesL:
+      if( n->in(1)->is_Load() &&        // Prior load
+          n->outcnt() == 1 )            // Not already shared
+        set_shared(n);                  // Force it to be a root
+      break;
+    case Op_BoxLock:         // Cant match until we get stack-regs in ADLC
+    case Op_IfFalse:
+    case Op_IfTrue:
+    case Op_MachProj:
+    case Op_MergeMem:
+    case Op_Catch:
+    case Op_CatchProj:
+    case Op_CProj:
+    case Op_JumpProj:
+    case Op_JProj:
+    case Op_NeverBranch:
+      set_dontcare(n);
+      break;
+    case Op_Jump:
+      mstack.push(n->in(1), Pre_Visit);     // Switch Value (could be shared)
+      mstack.push(n->in(0), Pre_Visit);     // Visit Control input
+      return true;                             // while (mstack.is_nonempty())
+    case Op_StrComp:
+    case Op_StrEquals:
+    case Op_StrIndexOf:
+    case Op_StrIndexOfChar:
+    case Op_AryEq:
+    case Op_HasNegatives:
+    case Op_StrInflatedCopy:
+    case Op_StrCompressedCopy:
+    case Op_EncodeISOArray:
+    case Op_FmaD:
+    case Op_FmaF:
+    case Op_FmaVD:
+    case Op_FmaVF:
+      set_shared(n); // Force result into register (it will be anyways)
+      break;
+    case Op_ConP: {  // Convert pointers above the centerline to NUL
+      TypeNode *tn = n->as_Type(); // Constants derive from type nodes
+      const TypePtr* tp = tn->type()->is_ptr();
+      if (tp->_ptr == TypePtr::AnyNull) {
+        tn->set_type(TypePtr::NULL_PTR);
+      }
+      break;
+    }
+    case Op_ConN: {  // Convert narrow pointers above the centerline to NUL
+      TypeNode *tn = n->as_Type(); // Constants derive from type nodes
+      const TypePtr* tp = tn->type()->make_ptr();
+      if (tp && tp->_ptr == TypePtr::AnyNull) {
+        tn->set_type(TypeNarrowOop::NULL_PTR);
+      }
+      break;
+    }
+    case Op_Binary:         // These are introduced in the Post_Visit state.
+      ShouldNotReachHere();
+      break;
+    case Op_ClearArray:
+    case Op_SafePoint:
+      mem_op = true;
+      break;
+    default:
+      if( n->is_Store() ) {
+        // Do match stores, despite no ideal reg
+        mem_op = true;
+        break;
+      }
+      if( n->is_Mem() ) { // Loads and LoadStores
+        mem_op = true;
+        // Loads must be root of match tree due to prior load conflict
+        if( C->subsume_loads() == false )
+          set_shared(n);
+      }
+      // Fall into default case
+      if( !n->ideal_reg() )
+        set_dontcare(n);  // Unmatchable Nodes
+  } // end_switch
+  return false;
+}
+
+void Matcher::find_shared_post_visit(Node* n, uint opcode) {
+  switch(opcode) {       // Handle some opcodes special
+    case Op_StorePConditional:
+    case Op_StoreIConditional:
+    case Op_StoreLConditional:
+    case Op_CompareAndExchangeB:
+    case Op_CompareAndExchangeS:
+    case Op_CompareAndExchangeI:
+    case Op_CompareAndExchangeL:
+    case Op_CompareAndExchangeP:
+    case Op_CompareAndExchangeN:
+    case Op_WeakCompareAndSwapB:
+    case Op_WeakCompareAndSwapS:
+    case Op_WeakCompareAndSwapI:
+    case Op_WeakCompareAndSwapL:
+    case Op_WeakCompareAndSwapP:
+    case Op_WeakCompareAndSwapN:
+    case Op_CompareAndSwapB:
+    case Op_CompareAndSwapS:
+    case Op_CompareAndSwapI:
+    case Op_CompareAndSwapL:
+    case Op_CompareAndSwapP:
+    case Op_CompareAndSwapN: {   // Convert trinary to binary-tree
+      Node* newval = n->in(MemNode::ValueIn);
+      Node* oldval = n->in(LoadStoreConditionalNode::ExpectedIn);
+      Node* pair = new BinaryNode(oldval, newval);
+      n->set_req(MemNode::ValueIn, pair);
+      n->del_req(LoadStoreConditionalNode::ExpectedIn);
+      break;
+    }
+    case Op_CMoveD:              // Convert trinary to binary-tree
+    case Op_CMoveF:
+    case Op_CMoveI:
+    case Op_CMoveL:
+    case Op_CMoveN:
+    case Op_CMoveP:
+    case Op_CMoveVF:
+    case Op_CMoveVD:  {
+      // Restructure into a binary tree for Matching.  It's possible that
+      // we could move this code up next to the graph reshaping for IfNodes
+      // or vice-versa, but I do not want to debug this for Ladybird.
+      // 10/2/2000 CNC.
+      Node* pair1 = new BinaryNode(n->in(1), n->in(1)->in(1));
+      n->set_req(1, pair1);
+      Node* pair2 = new BinaryNode(n->in(2), n->in(3));
+      n->set_req(2, pair2);
+      n->del_req(3);
+      break;
+    }
+    case Op_LoopLimit: {
+      Node* pair1 = new BinaryNode(n->in(1), n->in(2));
+      n->set_req(1, pair1);
+      n->set_req(2, n->in(3));
+      n->del_req(3);
+      break;
+    }
+    case Op_StrEquals:
+    case Op_StrIndexOfChar: {
+      Node* pair1 = new BinaryNode(n->in(2), n->in(3));
+      n->set_req(2, pair1);
+      n->set_req(3, n->in(4));
+      n->del_req(4);
+      break;
+    }
+    case Op_StrComp:
+    case Op_StrIndexOf: {
+      Node* pair1 = new BinaryNode(n->in(2), n->in(3));
+      n->set_req(2, pair1);
+      Node* pair2 = new BinaryNode(n->in(4),n->in(5));
+      n->set_req(3, pair2);
+      n->del_req(5);
+      n->del_req(4);
+      break;
+    }
+    case Op_StrCompressedCopy:
+    case Op_StrInflatedCopy:
+    case Op_EncodeISOArray: {
+      // Restructure into a binary tree for Matching.
+      Node* pair = new BinaryNode(n->in(3), n->in(4));
+      n->set_req(3, pair);
+      n->del_req(4);
+      break;
+    }
+    case Op_FmaD:
+    case Op_FmaF:
+    case Op_FmaVD:
+    case Op_FmaVF: {
+      // Restructure into a binary tree for Matching.
+      Node* pair = new BinaryNode(n->in(1), n->in(2));
+      n->set_req(2, pair);
+      n->set_req(1, n->in(3));
+      n->del_req(3);
+      break;
+    }
+    default:
+      break;
+  }
+}
+
 #ifdef ASSERT
 // machine-independent root to machine-dependent root
 void Matcher::dump_old2new_map() {
@@ -2516,7 +2520,8 @@
         xop == Op_CompareAndSwapL ||
         xop == Op_CompareAndSwapP ||
         xop == Op_CompareAndSwapN ||
-        xop == Op_CompareAndSwapI) {
+        xop == Op_CompareAndSwapI ||
+        BarrierSet::barrier_set()->barrier_set_c2()->matcher_is_store_load_barrier(x, xop)) {
       return true;
     }
 
--- a/src/hotspot/share/opto/matcher.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/opto/matcher.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -118,6 +118,9 @@
 
   // Find shared Nodes, or Nodes that otherwise are Matcher roots
   void find_shared( Node *n );
+  bool find_shared_visit(MStack& mstack, Node* n, uint opcode, bool& mem_op, int& mem_addr_idx);
+  void find_shared_post_visit(Node* n, uint opcode);
+
 #ifdef X86
   bool is_bmi_pattern(Node *n, Node *m);
 #endif
--- a/src/hotspot/share/opto/mulnode.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/opto/mulnode.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -170,7 +170,6 @@
   return mul_ring(t1,t2);            // Local flavor of type multiplication
 }
 
-
 //=============================================================================
 //------------------------------Ideal------------------------------------------
 // Check for power-of-2 multiply, then try the regular MulNode::Ideal
@@ -185,42 +184,43 @@
   }
 
   // Now we have a constant Node on the right and the constant in con
-  if( con == 0 ) return NULL;   // By zero is handled by Value call
-  if( con == 1 ) return NULL;   // By one  is handled by Identity call
+  if (con == 0) return NULL;   // By zero is handled by Value call
+  if (con == 1) return NULL;   // By one  is handled by Identity call
 
   // Check for negative constant; if so negate the final result
   bool sign_flip = false;
-  if( con < 0 ) {
-    con = -con;
+
+  unsigned int abs_con = uabs(con);
+  if (abs_con != (unsigned int)con) {
     sign_flip = true;
   }
 
   // Get low bit; check for being the only bit
   Node *res = NULL;
-  jint bit1 = con & -con;       // Extract low bit
-  if( bit1 == con ) {           // Found a power of 2?
-    res = new LShiftINode( in(1), phase->intcon(log2_intptr(bit1)) );
+  unsigned int bit1 = abs_con & (0-abs_con);       // Extract low bit
+  if (bit1 == abs_con) {           // Found a power of 2?
+    res = new LShiftINode(in(1), phase->intcon(log2_intptr(bit1)));
   } else {
 
     // Check for constant with 2 bits set
-    jint bit2 = con-bit1;
-    bit2 = bit2 & -bit2;          // Extract 2nd bit
-    if( bit2 + bit1 == con ) {    // Found all bits in con?
-      Node *n1 = phase->transform( new LShiftINode( in(1), phase->intcon(log2_intptr(bit1)) ) );
-      Node *n2 = phase->transform( new LShiftINode( in(1), phase->intcon(log2_intptr(bit2)) ) );
-      res = new AddINode( n2, n1 );
+    unsigned int bit2 = abs_con-bit1;
+    bit2 = bit2 & (0-bit2);          // Extract 2nd bit
+    if (bit2 + bit1 == abs_con) {    // Found all bits in con?
+      Node *n1 = phase->transform( new LShiftINode(in(1), phase->intcon(log2_intptr(bit1))));
+      Node *n2 = phase->transform( new LShiftINode(in(1), phase->intcon(log2_intptr(bit2))));
+      res = new AddINode(n2, n1);
 
-    } else if (is_power_of_2(con+1)) {
+    } else if (is_power_of_2(abs_con+1)) {
       // Sleezy: power-of-2 -1.  Next time be generic.
-      jint temp = (jint) (con + 1);
-      Node *n1 = phase->transform( new LShiftINode( in(1), phase->intcon(log2_intptr(temp)) ) );
-      res = new SubINode( n1, in(1) );
+      unsigned int temp = abs_con + 1;
+      Node *n1 = phase->transform(new LShiftINode(in(1), phase->intcon(log2_intptr(temp))));
+      res = new SubINode(n1, in(1));
     } else {
       return MulNode::Ideal(phase, can_reshape);
     }
   }
 
-  if( sign_flip ) {             // Need to negate result?
+  if (sign_flip) {             // Need to negate result?
     res = phase->transform(res);// Transform, before making the zero con
     res = new SubINode(phase->intcon(0),res);
   }
@@ -281,42 +281,42 @@
   }
 
   // Now we have a constant Node on the right and the constant in con
-  if( con == CONST64(0) ) return NULL;  // By zero is handled by Value call
-  if( con == CONST64(1) ) return NULL;  // By one  is handled by Identity call
+  if (con == CONST64(0)) return NULL;  // By zero is handled by Value call
+  if (con == CONST64(1)) return NULL;  // By one  is handled by Identity call
 
   // Check for negative constant; if so negate the final result
   bool sign_flip = false;
-  if( con < 0 ) {
-    con = -con;
+  unsigned long abs_con = uabs(con);
+  if (abs_con != (unsigned long)con) {
     sign_flip = true;
   }
 
   // Get low bit; check for being the only bit
   Node *res = NULL;
-  jlong bit1 = con & -con;      // Extract low bit
-  if( bit1 == con ) {           // Found a power of 2?
-    res = new LShiftLNode( in(1), phase->intcon(log2_long(bit1)) );
+  unsigned long bit1 = abs_con & (0-abs_con);      // Extract low bit
+  if (bit1 == abs_con) {           // Found a power of 2?
+    res = new LShiftLNode(in(1), phase->intcon(log2_long(bit1)));
   } else {
 
     // Check for constant with 2 bits set
-    jlong bit2 = con-bit1;
-    bit2 = bit2 & -bit2;          // Extract 2nd bit
-    if( bit2 + bit1 == con ) {    // Found all bits in con?
-      Node *n1 = phase->transform( new LShiftLNode( in(1), phase->intcon(log2_long(bit1)) ) );
-      Node *n2 = phase->transform( new LShiftLNode( in(1), phase->intcon(log2_long(bit2)) ) );
-      res = new AddLNode( n2, n1 );
+    unsigned long bit2 = abs_con-bit1;
+    bit2 = bit2 & (0-bit2);          // Extract 2nd bit
+    if (bit2 + bit1 == abs_con) {    // Found all bits in con?
+      Node *n1 = phase->transform(new LShiftLNode(in(1), phase->intcon(log2_long(bit1))));
+      Node *n2 = phase->transform(new LShiftLNode(in(1), phase->intcon(log2_long(bit2))));
+      res = new AddLNode(n2, n1);
 
-    } else if (is_power_of_2_long(con+1)) {
+    } else if (is_power_of_2_long(abs_con+1)) {
       // Sleezy: power-of-2 -1.  Next time be generic.
-      jlong temp = (jlong) (con + 1);
-      Node *n1 = phase->transform( new LShiftLNode( in(1), phase->intcon(log2_long(temp)) ) );
-      res = new SubLNode( n1, in(1) );
+      unsigned long temp = abs_con + 1;
+      Node *n1 = phase->transform( new LShiftLNode(in(1), phase->intcon(log2_long(temp))));
+      res = new SubLNode(n1, in(1));
     } else {
       return MulNode::Ideal(phase, can_reshape);
     }
   }
 
-  if( sign_flip ) {             // Need to negate result?
+  if (sign_flip) {             // Need to negate result?
     res = phase->transform(res);// Transform, before making the zero con
     res = new SubLNode(phase->longcon(0),res);
   }
--- a/src/hotspot/share/prims/jvmtiExport.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/prims/jvmtiExport.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -2944,8 +2944,7 @@
     return false;
   }
 
-  if (Compile_lock->owner() == thread ||
-      MultiArray_lock->owner() == thread) {
+  if (MultiArray_lock->owner() == thread) {
     return false;
   }
   return true;
--- a/src/hotspot/share/runtime/globals.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/runtime/globals.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -498,8 +498,8 @@
           "Time out and warn or fail after SafepointTimeoutDelay "          \
           "milliseconds if failed to reach safepoint")                      \
                                                                             \
-  develop(bool, DieOnSafepointTimeout, false,                               \
-          "Die upon failure to reach safepoint (see SafepointTimeout)")     \
+  diagnostic(bool, AbortVMOnSafepointTimeout, false,                        \
+          "Abort upon failure to reach safepoint (see SafepointTimeout)")   \
                                                                             \
   /* 50 retries * (5 * current_retry_count) millis = ~6.375 seconds */      \
   /* typically, at most a few retries are needed                    */      \
@@ -2016,6 +2016,9 @@
   notproduct(bool, CIObjectFactoryVerify, false,                            \
           "enable potentially expensive verification in ciObjectFactory")   \
                                                                             \
+  diagnostic(bool, AbortVMOnCompilationFailure, false,                      \
+          "Abort VM when method had failed to compile.")                    \
+                                                                            \
   /* Priorities */                                                          \
   product_pd(bool, UseThreadPriorities,  "Use native thread priorities")    \
                                                                             \
--- a/src/hotspot/share/runtime/safepoint.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/runtime/safepoint.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -978,9 +978,9 @@
     }
   }
 
-  // To debug the long safepoint, specify both DieOnSafepointTimeout &
+  // To debug the long safepoint, specify both AbortVMOnSafepointTimeout &
   // ShowMessageBoxOnError.
-  if (DieOnSafepointTimeout) {
+  if (AbortVMOnSafepointTimeout) {
     fatal("Safepoint sync time longer than " INTX_FORMAT "ms detected when executing %s.",
           SafepointTimeoutDelay, VMThread::vm_safepoint_description());
   }
--- a/src/hotspot/share/utilities/globalDefinitions.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/utilities/globalDefinitions.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -1034,10 +1034,10 @@
 // Returns largest i such that 2^i <= x.
 // If x < 0, the function returns 31 on a 32-bit machine and 63 on a 64-bit machine.
 // If x == 0, the function returns -1.
-inline int log2_intptr(intptr_t x) {
+inline int log2_intptr(uintptr_t x) {
   int i = -1;
   uintptr_t p = 1;
-  while (p != 0 && p <= (uintptr_t)x) {
+  while (p != 0 && p <= x) {
     // p = 2^(i+1) && p <= x (i.e., 2^(i+1) <= x)
     i++; p *= 2;
   }
@@ -1048,10 +1048,10 @@
 
 //* largest i such that 2^i <= x
 //  A negative value of 'x' will return '63'
-inline int log2_long(jlong x) {
+inline int log2_long(unsigned long x) {
   int i = -1;
   julong p =  1;
-  while (p != 0 && p <= (julong)x) {
+  while (p != 0 && p <= x) {
     // p = 2^(i+1) && p <= x (i.e., 2^(i+1) <= x)
     i++; p *= 2;
   }
@@ -1060,6 +1060,22 @@
   return i;
 }
 
+inline int log2_intptr(intptr_t x) {
+  return log2_intptr((uintptr_t)x);
+}
+
+inline int log2_intptr(int x) {
+  return log2_intptr((uintptr_t)x);
+}
+
+inline int log2_intptr(uint x) {
+  return log2_intptr((uintptr_t)x);
+}
+
+inline int log2_long(jlong x) {
+  return log2_long((unsigned long)x);
+}
+
 //* the argument must be exactly a power of 2
 inline int exact_log2(intptr_t x) {
   assert(is_power_of_2(x), "x must be a power of 2: " INTPTR_FORMAT, x);
@@ -1075,6 +1091,29 @@
 inline bool is_odd (intx x) { return x & 1;      }
 inline bool is_even(intx x) { return !is_odd(x); }
 
+// abs methods which cannot overflow and so are well-defined across
+// the entire domain of integer types.
+static inline unsigned int uabs(unsigned int n) {
+  union {
+    unsigned int result;
+    int value;
+  };
+  result = n;
+  if (value < 0) result = 0-result;
+  return result;
+}
+static inline unsigned long uabs(unsigned long n) {
+  union {
+    unsigned long result;
+    long value;
+  };
+  result = n;
+  if (value < 0) result = 0-result;
+  return result;
+}
+static inline unsigned long uabs(jlong n) { return uabs((unsigned long)n); }
+static inline unsigned int uabs(int n) { return uabs((unsigned int)n); }
+
 // "to" should be greater than "from."
 inline intx byte_size(void* from, void* to) {
   return (address)to - (address)from;
@@ -1261,4 +1300,17 @@
 typedef const char* ccstr;
 typedef const char* ccstrlist;   // represents string arguments which accumulate
 
+//----------------------------------------------------------------------------------------------------
+// Default hash/equals functions used by ResourceHashtable and KVHashtable
+
+template<typename K> unsigned primitive_hash(const K& k) {
+  unsigned hash = (unsigned)((uintptr_t)k);
+  return hash ^ (hash >> 3); // just in case we're dealing with aligned ptrs
+}
+
+template<typename K> bool primitive_equals(const K& k0, const K& k1) {
+  return k0 == k1;
+}
+
+
 #endif // SHARE_VM_UTILITIES_GLOBALDEFINITIONS_HPP
--- a/src/hotspot/share/utilities/hashtable.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/utilities/hashtable.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -65,6 +65,7 @@
       len = 1 << log2_intptr(len); // round down to power of 2
       assert(len >= _entry_size, "");
       _first_free_entry = NEW_C_HEAP_ARRAY2(char, len, F, CURRENT_PC);
+      _entry_blocks->append(_first_free_entry);
       _end_block = _first_free_entry + len;
     }
     entry = (BasicHashtableEntry<F>*)_first_free_entry;
@@ -86,7 +87,9 @@
 }
 
 // Version of hashtable entry allocation that allocates in the C heap directly.
-// The allocator in blocks is preferable but doesn't have free semantics.
+// The block allocator in BasicHashtable has less fragmentation, but the memory is not freed until
+// the whole table is freed. Use allocate_new_entry() if you want to individually free the memory
+// used by each entry
 template <class T, MEMFLAGS F> HashtableEntry<T, F>* Hashtable<T, F>::allocate_new_entry(unsigned int hashValue, T obj) {
   HashtableEntry<T, F>* entry = (HashtableEntry<T, F>*) NEW_C_HEAP_ARRAY(char, this->entry_size(), F);
 
@@ -203,6 +206,20 @@
   return true;
 }
 
+template <MEMFLAGS F> bool BasicHashtable<F>::maybe_grow(int max_size, int load_factor) {
+  assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
+
+  if (table_size() >= max_size) {
+    return false;
+  }
+  if (number_of_entries() / table_size() > load_factor) {
+    resize(MIN2<int>(table_size() * 2, max_size));
+    return true;
+  } else {
+    return false;
+  }
+}
+
 // Dump footprint and bucket length statistics
 //
 // Note: if you create a new subclass of Hashtable<MyNewType, F>, you will need to
--- a/src/hotspot/share/utilities/hashtable.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/utilities/hashtable.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -25,11 +25,11 @@
 #ifndef SHARE_VM_UTILITIES_HASHTABLE_HPP
 #define SHARE_VM_UTILITIES_HASHTABLE_HPP
 
-#include "classfile/classLoaderData.hpp"
 #include "memory/allocation.hpp"
 #include "oops/oop.hpp"
 #include "oops/symbol.hpp"
 #include "runtime/handles.hpp"
+#include "utilities/growableArray.hpp"
 
 // This is a generic hashtable, designed to be used for the symbol
 // and string tables.
@@ -146,6 +146,7 @@
   BasicHashtable(int table_size, int entry_size);
   BasicHashtable(int table_size, int entry_size,
                  HashtableBucket<F>* buckets, int number_of_entries);
+  ~BasicHashtable();
 
   // Bucket handling
   int hash_to_index(unsigned int full_hash) const {
@@ -163,6 +164,7 @@
   char*             _end_block;
   int               _entry_size;
   volatile int      _number_of_entries;
+  GrowableArray<char*>* _entry_blocks;
 
 protected:
 
@@ -233,6 +235,9 @@
 
   bool resize(int new_size);
 
+  // Grow the number of buckets if the average entries per bucket is over the load_factor
+  bool maybe_grow(int max_size, int load_factor = 8);
+
   template <class T> void verify_table(const char* table_name) PRODUCT_RETURN;
 };
 
@@ -279,4 +284,55 @@
   }
 };
 
+// A subclass of BasicHashtable that allows you to do a simple K -> V mapping
+// without using tons of boilerplate code.
+template<
+    typename K, typename V, MEMFLAGS F,
+    unsigned (*HASH)  (K const&)           = primitive_hash<K>,
+    bool     (*EQUALS)(K const&, K const&) = primitive_equals<K>
+    >
+class KVHashtable : public BasicHashtable<F> {
+  class KVHashtableEntry : public BasicHashtableEntry<F> {
+  public:
+    K _key;
+    V _value;
+    KVHashtableEntry* next() {
+      return (KVHashtableEntry*)BasicHashtableEntry<F>::next();
+    }
+  };
+
+protected:
+  KVHashtableEntry* bucket(int i) const {
+    return (KVHashtableEntry*)BasicHashtable<F>::bucket(i);
+  }
+
+  KVHashtableEntry* new_entry(unsigned int hashValue, K key, V value) {
+    KVHashtableEntry* entry = (KVHashtableEntry*)BasicHashtable<F>::new_entry(hashValue);
+    entry->_key   = key;
+    entry->_value = value;
+    return entry;
+  }
+
+public:
+  KVHashtable(int table_size) : BasicHashtable<F>(table_size, sizeof(KVHashtableEntry)) {}
+
+  void add(K key, V value) {
+    unsigned int hash = HASH(key);
+    KVHashtableEntry* entry = new_entry(hash, key, value);
+    BasicHashtable<F>::add_entry(BasicHashtable<F>::hash_to_index(hash), entry);
+  }
+
+  V* lookup(K key) {
+    unsigned int hash = HASH(key);
+    int index = BasicHashtable<F>::hash_to_index(hash);
+    for (KVHashtableEntry* e = bucket(index); e != NULL; e = e->next()) {
+      if (e->hash() == hash && e->_key == key) {
+        return &(e->_value);
+      }
+    }
+    return NULL;
+  }
+};
+
+
 #endif // SHARE_VM_UTILITIES_HASHTABLE_HPP
--- a/src/hotspot/share/utilities/hashtable.inline.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/utilities/hashtable.inline.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -54,6 +54,13 @@
   _buckets = buckets;
 }
 
+template <MEMFLAGS F> inline BasicHashtable<F>::~BasicHashtable() {
+  for (int i = 0; i < _entry_blocks->length(); i++) {
+    FREE_C_HEAP_ARRAY(char, _entry_blocks->at(i));
+  }
+  delete _entry_blocks;
+  free_buckets();
+}
 
 template <MEMFLAGS F> inline void BasicHashtable<F>::initialize(int table_size, int entry_size,
                                        int number_of_entries) {
@@ -64,6 +71,7 @@
   _first_free_entry = NULL;
   _end_block = NULL;
   _number_of_entries = number_of_entries;
+  _entry_blocks = new(ResourceObj::C_HEAP, F) GrowableArray<char*>(4, true, F);
 }
 
 
--- a/src/hotspot/share/utilities/resourceHash.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/hotspot/share/utilities/resourceHash.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -32,15 +32,6 @@
     typedef bool (*equals_fn)(K const&, K const&);
 };
 
-template<typename K> unsigned primitive_hash(const K& k) {
-  unsigned hash = (unsigned)((uintptr_t)k);
-  return hash ^ (hash >> 3); // just in case we're dealing with aligned ptrs
-}
-
-template<typename K> bool primitive_equals(const K& k0, const K& k1) {
-  return k0 == k1;
-}
-
 template<
     typename K, typename V,
     // xlC does not compile this:
--- a/src/java.base/share/classes/java/lang/Byte.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.base/share/classes/java/lang/Byte.java	Wed Nov 21 13:53:17 2018 -0500
@@ -26,6 +26,7 @@
 package java.lang;
 
 import jdk.internal.HotSpotIntrinsicCandidate;
+import jdk.internal.misc.VM;
 
 /**
  *
@@ -77,13 +78,25 @@
     }
 
     private static class ByteCache {
-        private ByteCache(){}
+        private ByteCache() {}
 
-        static final Byte cache[] = new Byte[-(-128) + 127 + 1];
+        static final Byte[] cache;
+        static Byte[] archivedCache;
 
         static {
-            for(int i = 0; i < cache.length; i++)
-                cache[i] = new Byte((byte)(i - 128));
+            final int size = -(-128) + 127 + 1;
+
+            // Load and use the archived cache if it exists
+            VM.initializeFromArchive(ByteCache.class);
+            if (archivedCache == null || archivedCache.length != size) {
+                Byte[] c = new Byte[size];
+                byte value = (byte)-128;
+                for(int i = 0; i < size; i++) {
+                    c[i] = new Byte(value++);
+                }
+                archivedCache = c;
+            }
+            cache = archivedCache;
         }
     }
 
--- a/src/java.base/share/classes/java/lang/Character.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.base/share/classes/java/lang/Character.java	Wed Nov 21 13:53:17 2018 -0500
@@ -31,6 +31,7 @@
 import java.util.Locale;
 
 import jdk.internal.HotSpotIntrinsicCandidate;
+import jdk.internal.misc.VM;
 
 /**
  * The {@code Character} class wraps a value of the primitive
@@ -42,7 +43,7 @@
  * a character's category (lowercase letter, digit, etc.) and for converting
  * characters from uppercase to lowercase and vice versa.
  * <p>
- * Character information is based on the Unicode Standard, version 10.0.0.
+ * Character information is based on the Unicode Standard, version 11.0.0.
  * <p>
  * The methods and data of class {@code Character} are defined by
  * the information in the <i>UnicodeData</i> file that is part of the
@@ -680,11 +681,11 @@
      */
     public static final class UnicodeBlock extends Subset {
         /**
-         * 638  - the expected number of entities
+         * 649  - the expected number of entities
          * 0.75 - the default load factor of HashMap
          */
         private static Map<String, UnicodeBlock> map =
-                new HashMap<>((int)(638 / 0.75f + 1.0f));
+                new HashMap<>((int)(649 / 0.75f + 1.0f));
 
         /**
          * Creates a UnicodeBlock with the given identifier name.
@@ -3106,6 +3107,108 @@
             new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F",
                              "CJK UNIFIED IDEOGRAPHS EXTENSION F",
                              "CJKUNIFIEDIDEOGRAPHSEXTENSIONF");
+        /**
+         * Constant for the "Georgian Extended" Unicode
+         * character block.
+         * @since 12
+         */
+        public static final UnicodeBlock GEORGIAN_EXTENDED =
+            new UnicodeBlock("GEORGIAN_EXTENDED",
+                             "GEORGIAN EXTENDED",
+                             "GEORGIANEXTENDED");
+
+        /**
+         * Constant for the "Hanifi Rohingya" Unicode
+         * character block.
+         * @since 12
+         */
+        public static final UnicodeBlock HANIFI_ROHINGYA =
+            new UnicodeBlock("HANIFI_ROHINGYA",
+                             "HANIFI ROHINGYA",
+                             "HANIFIROHINGYA");
+
+        /**
+         * Constant for the "Old Sogdian" Unicode
+         * character block.
+         * @since 12
+         */
+        public static final UnicodeBlock OLD_SOGDIAN =
+            new UnicodeBlock("OLD_SOGDIAN",
+                             "OLD SOGDIAN",
+                             "OLDSOGDIAN");
+
+        /**
+         * Constant for the "Sogdian" Unicode
+         * character block.
+         * @since 12
+         */
+        public static final UnicodeBlock SOGDIAN =
+            new UnicodeBlock("SOGDIAN");
+
+        /**
+         * Constant for the "Dogra" Unicode
+         * character block.
+         * @since 12
+         */
+        public static final UnicodeBlock DOGRA =
+            new UnicodeBlock("DOGRA");
+
+        /**
+         * Constant for the "Gunjala Gondi" Unicode
+         * character block.
+         * @since 12
+         */
+        public static final UnicodeBlock GUNJALA_GONDI =
+            new UnicodeBlock("GUNJALA_GONDI",
+                             "GUNJALA GONDI",
+                             "GUNJALAGONDI");
+
+        /**
+         * Constant for the "Makasar" Unicode
+         * character block.
+         * @since 12
+         */
+        public static final UnicodeBlock MAKASAR =
+            new UnicodeBlock("MAKASAR");
+
+        /**
+         * Constant for the "Medefaidrin" Unicode
+         * character block.
+         * @since 12
+         */
+        public static final UnicodeBlock MEDEFAIDRIN =
+            new UnicodeBlock("MEDEFAIDRIN");
+
+        /**
+         * Constant for the "Mayan Numerals" Unicode
+         * character block.
+         * @since 12
+         */
+        public static final UnicodeBlock MAYAN_NUMERALS =
+            new UnicodeBlock("MAYAN_NUMERALS",
+                             "MAYAN NUMERALS",
+                             "MAYANNUMERALS");
+
+       /**
+         * Constant for the "Indic Siyaq Numbers" Unicode
+         * character block.
+         * @since 12
+         */
+        public static final UnicodeBlock INDIC_SIYAQ_NUMBERS =
+            new UnicodeBlock("INDIC_SIYAQ_NUMBERS",
+                             "INDIC SIYAQ NUMBERS",
+                             "INDICSIYAQNUMBERS");
+
+        /**
+         * Constant for the "Chess Symbols" Unicode
+         * character block.
+         * @since 12
+         */
+        public static final UnicodeBlock CHESS_SYMBOLS =
+            new UnicodeBlock("CHESS_SYMBOLS",
+                             "CHESS SYMBOLS",
+                             "CHESSSYMBOLS");
+
 
         private static final int blockStarts[] = {
             0x0000,   // 0000..007F; Basic Latin
@@ -3172,7 +3275,7 @@
             0x1C00,   // 1C00..1C4F; Lepcha
             0x1C50,   // 1C50..1C7F; Ol Chiki
             0x1C80,   // 1C80..1C8F; Cyrillic Extended-C
-            0x1C90,   //             unassigned
+            0x1C90,   // 1C90..1CBF; Georgian Extended
             0x1CC0,   // 1CC0..1CCF; Sundanese Supplement
             0x1CD0,   // 1CD0..1CFF; Vedic Extensions
             0x1D00,   // 1D00..1D7F; Phonetic Extensions
@@ -3322,9 +3425,13 @@
             0x10C00,  // 10C00..10C4F; Old Turkic
             0x10C50,  //               unassigned
             0x10C80,  // 10C80..10CFF; Old Hungarian
-            0x10D00,  //               unassigned
+            0x10D00,  // 10D00..10D3F; Hanifi Rohingya
+            0x10D40,  //               unassigned
             0x10E60,  // 10E60..10E7F; Rumi Numeral Symbols
             0x10E80,  //               unassigned
+            0x10F00,  // 10F00..10F2F; Old Sogdian
+            0x10F30,  // 10F30..10F6F; Sogdian
+            0x10F70,  //               unassigned
             0x11000,  // 11000..1107F; Brahmi
             0x11080,  // 11080..110CF; Kaithi
             0x110D0,  // 110D0..110FF; Sora Sompeng
@@ -3348,6 +3455,8 @@
             0x116D0,  //               unassigned
             0x11700,  // 11700..1173F; Ahom
             0x11740,  //               unassigned
+            0x11800,  // 11800..1184F; Dogra
+            0x11850,  //               unassigned
             0x118A0,  // 118A0..118FF; Warang Citi
             0x11900,  //               unassigned
             0x11A00,  // 11A00..11A4F; Zanabazar Square
@@ -3359,7 +3468,10 @@
             0x11C70,  // 11C70..11CBF; Marchen
             0x11CC0,  //               unassigned
             0x11D00,  // 11D00..11D5F; Masaram Gondi
-            0x11D60,  //               unassigned
+            0x11D60,  // 11D60..11DAF; Gunjala Gondi
+            0x11DB0,  //               unassigned
+            0x11EE0,  // 11EE0..11EFF; Makasar
+            0x11F00,  //               unassigned
             0x12000,  // 12000..123FF; Cuneiform
             0x12400,  // 12400..1247F; Cuneiform Numbers and Punctuation
             0x12480,  // 12480..1254F; Early Dynastic Cuneiform
@@ -3374,6 +3486,8 @@
             0x16AD0,  // 16AD0..16AFF; Bassa Vah
             0x16B00,  // 16B00..16B8F; Pahawh Hmong
             0x16B90,  //               unassigned
+            0x16E40,  // 16E40..16E9F; Medefaidrin
+            0x16EA0,  //               unassigned
             0x16F00,  // 16F00..16F9F; Miao
             0x16FA0,  //               unassigned
             0x16FE0,  // 16FE0..16FFF; Ideographic Symbols and Punctuation
@@ -3392,6 +3506,7 @@
             0x1D100,  // 1D100..1D1FF; Musical Symbols
             0x1D200,  // 1D200..1D24F; Ancient Greek Musical Notation
             0x1D250,  //               unassigned
+            0x1D2E0,  // 1D2E0..1D2FF; Mayan Numerals
             0x1D300,  // 1D300..1D35F; Tai Xuan Jing Symbols
             0x1D360,  // 1D360..1D37F; Counting Rod Numerals
             0x1D380,  //               unassigned
@@ -3404,6 +3519,8 @@
             0x1E8E0,  //               unassigned
             0x1E900,  // 1E900..1E95F; Adlam
             0x1E960,  //               unassigned
+            0x1EC70,  // 1EC70..1ECBF; Indic Siyaq Numbers
+            0x1ECC0,  //               unassigned
             0x1EE00,  // 1EE00..1EEFF; Arabic Mathematical Alphabetic Symbols
             0x1EF00,  //               unassigned
             0x1F000,  // 1F000..1F02F; Mahjong Tiles
@@ -3419,7 +3536,8 @@
             0x1F780,  // 1F780..1F7FF; Geometric Shapes Extended
             0x1F800,  // 1F800..1F8FF; Supplemental Arrows-C
             0x1F900,  // 1F900..1F9FF; Supplemental Symbols and Pictographs
-            0x1FA00,  //               unassigned
+            0x1FA00,  // 1FA00..1FA6F; Chess Symbols
+            0x1FA70,  //               unassigned
             0x20000,  // 20000..2A6DF; CJK Unified Ideographs Extension B
             0x2A6E0,  //               unassigned
             0x2A700,  // 2A700..2B73F; CJK Unified Ideographs Extension C
@@ -3502,7 +3620,7 @@
             LEPCHA,
             OL_CHIKI,
             CYRILLIC_EXTENDED_C,
-            null,
+            GEORGIAN_EXTENDED,
             SUNDANESE_SUPPLEMENT,
             VEDIC_EXTENSIONS,
             PHONETIC_EXTENSIONS,
@@ -3652,9 +3770,13 @@
             OLD_TURKIC,
             null,
             OLD_HUNGARIAN,
+            HANIFI_ROHINGYA,
             null,
             RUMI_NUMERAL_SYMBOLS,
             null,
+            OLD_SOGDIAN,
+            SOGDIAN,
+            null,
             BRAHMI,
             KAITHI,
             SORA_SOMPENG,
@@ -3678,6 +3800,8 @@
             null,
             AHOM,
             null,
+            DOGRA,
+            null,
             WARANG_CITI,
             null,
             ZANABAZAR_SQUARE,
@@ -3689,6 +3813,9 @@
             MARCHEN,
             null,
             MASARAM_GONDI,
+            GUNJALA_GONDI,
+            null,
+            MAKASAR,
             null,
             CUNEIFORM,
             CUNEIFORM_NUMBERS_AND_PUNCTUATION,
@@ -3704,6 +3831,8 @@
             BASSA_VAH,
             PAHAWH_HMONG,
             null,
+            MEDEFAIDRIN,
+            null,
             MIAO,
             null,
             IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION,
@@ -3722,6 +3851,7 @@
             MUSICAL_SYMBOLS,
             ANCIENT_GREEK_MUSICAL_NOTATION,
             null,
+            MAYAN_NUMERALS,
             TAI_XUAN_JING_SYMBOLS,
             COUNTING_ROD_NUMERALS,
             null,
@@ -3734,6 +3864,8 @@
             null,
             ADLAM,
             null,
+            INDIC_SIYAQ_NUMBERS,
+            null,
             ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS,
             null,
             MAHJONG_TILES,
@@ -3749,6 +3881,7 @@
             GEOMETRIC_SHAPES_EXTENDED,
             SUPPLEMENTAL_ARROWS_C,
             SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS,
+            CHESS_SYMBOLS,
             null,
             CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B,
             null,
@@ -4640,6 +4773,48 @@
         ZANABAZAR_SQUARE,
 
         /**
+          * Unicode script "Hanifi Rohingya".
+          * @since 12
+          */
+        HANIFI_ROHINGYA,
+
+        /**
+          * Unicode script "Old Sogdian".
+          * @since 12
+          */
+        OLD_SOGDIAN,
+
+        /**
+          * Unicode script "Sogdian".
+          * @since 12
+          */
+        SOGDIAN,
+
+        /**
+          * Unicode script "Dogra".
+          * @since 12
+          */
+        DOGRA,
+
+        /**
+          * Unicode script "Gunjala Gondi".
+          * @since 12
+          */
+        GUNJALA_GONDI,
+
+        /**
+          * Unicode script "Makasar".
+          * @since 12
+          */
+        MAKASAR,
+
+        /**
+          * Unicode script "Medefaidrin".
+          * @since 12
+          */
+        MEDEFAIDRIN,
+
+        /**
          * Unicode script "Unknown".
          */
         UNKNOWN;
@@ -4692,10 +4867,7 @@
             0x0530,   // 0530      ; UNKNOWN
             0x0531,   // 0531..0556; ARMENIAN
             0x0557,   // 0557..0558; UNKNOWN
-            0x0559,   // 0559..055F; ARMENIAN
-            0x0560,   // 0560      ; UNKNOWN
-            0x0561,   // 0561..0587; ARMENIAN
-            0x0588,   // 0588      ; UNKNOWN
+            0x0559,   // 0559..0588; ARMENIAN
             0x0589,   // 0589      ; COMMON
             0x058A,   // 058A      ; ARMENIAN
             0x058B,   // 058B..058C; UNKNOWN
@@ -4704,8 +4876,8 @@
             0x0591,   // 0591..05C7; HEBREW
             0x05C8,   // 05C8..05CF; UNKNOWN
             0x05D0,   // 05D0..05EA; HEBREW
-            0x05EB,   // 05EB..05EF; UNKNOWN
-            0x05F0,   // 05F0..05F4; HEBREW
+            0x05EB,   // 05EB..05EE; UNKNOWN
+            0x05EF,   // 05EF..05F4; HEBREW
             0x05F5,   // 05F5..05FF; UNKNOWN
             0x0600,   // 0600..0604; ARABIC
             0x0605,   // 0605      ; COMMON
@@ -4735,7 +4907,8 @@
             0x0780,   // 0780..07B1; THAANA
             0x07B2,   // 07B2..07BF; UNKNOWN
             0x07C0,   // 07C0..07FA; NKO
-            0x07FB,   // 07FB..07FF; UNKNOWN
+            0x07FB,   // 07FB..07FC; UNKNOWN
+            0X07FD,   // 07FD..07FF; NKO
             0x0800,   // 0800..082D; SAMARITAN
             0x082E,   // 082E..082F; UNKNOWN
             0x0830,   // 0830..083E; SAMARITAN
@@ -4749,8 +4922,8 @@
             0x08A0,   // 08A0..08B4; ARABIC
             0x08B5,   // 08B5      ; UNKNOWN
             0x08B6,   // 08B6..08BD; ARABIC
-            0x08BE,   // 08BE..08D3; UNKNOWN
-            0x08D4,   // 08D4..08E1; ARABIC
+            0x08BE,   // 08BE..08D2; UNKNOWN
+            0x08D3,   // 08D3..08E1; ARABIC
             0x08E2,   // 08E2      ; COMMON
             0x08E3,   // 08E3..08FF; ARABIC
             0x0900,   // 0900..0950; DEVANAGARI
@@ -4784,8 +4957,8 @@
             0x09DE,   // 09DE      ; UNKNOWN
             0x09DF,   // 09DF..09E3; BENGALI
             0x09E4,   // 09E4..09E5; UNKNOWN
-            0x09E6,   // 09E6..09FD; BENGALI
-            0x09FE,   // 09FE..0A00; UNKNOWN
+            0x09E6,   // 09E6..09FE; BENGALI
+            0x09FF,   // 09FF..0A00; UNKNOWN
             0x0A01,   // 0A01..0A03; GURMUKHI
             0x0A04,   // 0A04      ; UNKNOWN
             0x0A05,   // 0A05..0A0A; GURMUKHI
@@ -4816,8 +4989,8 @@
             0x0A5D,   // 0A5D      ; UNKNOWN
             0x0A5E,   // 0A5E      ; GURMUKHI
             0x0A5F,   // 0A5F..0A65; UNKNOWN
-            0x0A66,   // 0A66..0A75; GURMUKHI
-            0x0A76,   // 0A76..0A80; UNKNOWN
+            0x0A66,   // 0A66..0A76; GURMUKHI
+            0x0A77,   // 0A77..0A80; UNKNOWN
             0x0A81,   // 0A81..0A83; GUJARATI
             0x0A84,   // 0A84      ; UNKNOWN
             0x0A85,   // 0A85..0A8D; GUJARATI
@@ -4906,9 +5079,7 @@
             0x0BD8,   // 0BD8..0BE5; UNKNOWN
             0x0BE6,   // 0BE6..0BFA; TAMIL
             0x0BFB,   // 0BFB..0BFF; UNKNOWN
-            0x0C00,   // 0C00..0C03; TELUGU
-            0x0C04,   // 0C04      ; UNKNOWN
-            0x0C05,   // 0C05..0C0C; TELUGU
+            0x0C00,   // 0C00..0C0C; TELUGU
             0x0C0D,   // 0C0D      ; UNKNOWN
             0x0C0E,   // 0C0E..0C10; TELUGU
             0x0C11,   // 0C11      ; UNKNOWN
@@ -4931,9 +5102,7 @@
             0x0C66,   // 0C66..0C6F; TELUGU
             0x0C70,   // 0C70..0C77; UNKNOWN
             0x0C78,   // 0C78..0C7F; TELUGU
-            0x0C80,   // 0C80..0C83; KANNADA
-            0x0C84,   // 0C84      ; UNKNOWN
-            0x0C85,   // 0C85..0C8C; KANNADA
+            0x0C80,   // 0C80..0C8C; KANNADA
             0x0C8D,   // 0C8D      ; UNKNOWN
             0x0C8E,   // 0C8E..0C90; KANNADA
             0x0C91,   // 0C91      ; UNKNOWN
@@ -5141,8 +5310,8 @@
             0x180F,   // 180F      ; UNKNOWN
             0x1810,   // 1810..1819; MONGOLIAN
             0x181A,   // 181A..181F; UNKNOWN
-            0x1820,   // 1820..1877; MONGOLIAN
-            0x1878,   // 1878..187F; UNKNOWN
+            0x1820,   // 1820..1878; MONGOLIAN
+            0x1879,   // 1879..187F; UNKNOWN
             0x1880,   // 1880..18AA; MONGOLIAN
             0x18AB,   // 18AB..18AF; UNKNOWN
             0x18B0,   // 18B0..18F5; CANADIAN_ABORIGINAL
@@ -5198,7 +5367,10 @@
             0x1C4D,   // 1C4D..1C4F; LEPCHA
             0x1C50,   // 1C50..1C7F; OL_CHIKI
             0x1C80,   // 1C80..1C88; CYRILLIC
-            0x1C89,   // 1C89..1CBF; UNKNOWN
+            0x1C89,   // 1C89      ; UNKNOWN
+            0x1C90,   // 1C90..1CBA; GEORGIAN
+            0x1CBB,   // 1CBB..1CBC; UNKNOWN
+            0x1CBD,   // 1CBD..1CBF; GEORGIAN
             0x1CC0,   // 1CC0..1CC7; SUNDANESE
             0x1CC8,   // 1CC8..1CCF; UNKNOWN
             0x1CD0,   // 1CD0..1CD2; INHERITED
@@ -5299,14 +5471,10 @@
             0x2B74,   // 2B74..2B75; UNKNOWN
             0x2B76,   // 2B76..2B95; COMMON
             0x2B96,   // 2B96..2B97; UNKNOWN
-            0x2B98,   // 2B98..2BB9; COMMON
-            0x2BBA,   // 2BBA..2BBC; UNKNOWN
-            0x2BBD,   // 2BBD..2BC8; COMMON
+            0x2B98,   // 2B98..2BC8; COMMON
             0x2BC9,   // 2BC9      ; UNKNOWN
-            0x2BCA,   // 2BCA..2BD2; COMMON
-            0x2BD3,   // 2BD3..2BEB; UNKNOWN
-            0x2BEC,   // 2BEC..2BEF; COMMON
-            0x2BF0,   // 2BF0..2BFF; UNKNOWN
+            0x2BCA,   // 2BCA..2BFE; COMMON
+            0x2BFF,   // 2BFF;       UNKNOWN
             0x2C00,   // 2C00..2C2E; GLAGOLITIC
             0x2C2F,   // 2C2F      ; UNKNOWN
             0x2C30,   // 2C30..2C5E; GLAGOLITIC
@@ -5345,8 +5513,8 @@
             0x2DD8,   // 2DD8..2DDE; ETHIOPIC
             0x2DDF,   // 2DDF      ; UNKNOWN
             0x2DE0,   // 2DE0..2DFF; CYRILLIC
-            0x2E00,   // 2E00..2E49; COMMON
-            0x2E50,   // 2E50..2E7F; UNKNOWN
+            0x2E00,   // 2E00..2E4E; COMMON
+            0x2E4F,   // 2E4F..2E7F; UNKNOWN
             0x2E80,   // 2E80..2E99; HAN
             0x2E9A,   // 2E9A      ; UNKNOWN
             0x2E9B,   // 2E9B..2EF3; HAN
@@ -5377,8 +5545,8 @@
             0x30FB,   // 30FB..30FC; COMMON
             0x30FD,   // 30FD..30FF; KATAKANA
             0x3100,   // 3100..3104; UNKNOWN
-            0x3105,   // 3105..312E; BOPOMOFO
-            0x312F,   // 312F..3130; UNKNOWN
+            0x3105,   // 3105..312F; BOPOMOFO
+            0x3130,   // 3130;       UNKNOWN
             0x3131,   // 3131..318E; HANGUL
             0x318F,   // 318F      ; UNKNOWN
             0x3190,   // 3190..319F; COMMON
@@ -5399,8 +5567,8 @@
             0x3400,   // 3400..4DB5; HAN
             0x4DB6,   // 4DB6..4DBF; UNKNOWN
             0x4DC0,   // 4DC0..4DFF; COMMON
-            0x4E00,   // 4E00..9FEA; HAN
-            0x9FEB,   // 9FEB..9FFF; UNKNOWN
+            0x4E00,   // 4E00..9FEF; HAN
+            0x9FF0,   // 9FF0..9FFF; UNKNOWN
             0xA000,   // A000..A48C; YI
             0xA48D,   // A48D..A48F; UNKNOWN
             0xA490,   // A490..A4C6; YI
@@ -5414,10 +5582,8 @@
             0xA700,   // A700..A721; COMMON
             0xA722,   // A722..A787; LATIN
             0xA788,   // A788..A78A; COMMON
-            0xA78B,   // A78B..A7AE; LATIN
-            0xA7AF,   // A7AF      ; UNKNOWN
-            0xA7B0,   // A7B0..A7B7; LATIN
-            0xA7B8,   // A7B8..A7F6; UNKNOWN
+            0xA78B,   // A78B..A7B9; LATIN
+            0xA7C0,   // A7C0..A7F6; UNKNOWN
             0xA7F7,   // A7F7..A7FF; LATIN
             0xA800,   // A800..A82B; SYLOTI_NAGRI
             0xA82C,   // A82C..A82F; UNKNOWN
@@ -5429,8 +5595,7 @@
             0xA8C6,   // A8C6..A8CD; UNKNOWN
             0xA8CE,   // A8CE..A8D9; SAURASHTRA
             0xA8DA,   // A8DA..A8DF; UNKNOWN
-            0xA8E0,   // A8E0..A8FD; DEVANAGARI
-            0xA8FE,   // A8FE..A8FF; UNKNOWN
+            0xA8E0,   // A8E0..A8FF; DEVANAGARI
             0xA900,   // A900..A92D; KAYAH_LI
             0xA92E,   // A92E      ; COMMON
             0xA92F,   // A92F      ; KAYAH_LI
@@ -5674,12 +5839,12 @@
             0x10A14,  // 10A14       ; UNKNOWN
             0x10A15,  // 10A15..10A17; KHAROSHTHI
             0x10A18,  // 10A18       ; UNKNOWN
-            0x10A19,  // 10A19..10A33; KHAROSHTHI
-            0x10A34,  // 10A34..10A37; UNKNOWN
+            0x10A19,  // 10A19..10A35; KHAROSHTHI
+            0x10A36,  // 10A36..10A37; UNKNOWN
             0x10A38,  // 10A38..10A3A; KHAROSHTHI
             0x10A3B,  // 10A3B..10A3E; UNKNOWN
-            0x10A3F,  // 10A3F..10A47; KHAROSHTHI
-            0x10A48,  // 10A48..10A4F; UNKNOWN
+            0x10A3F,  // 10A3F..10A48; KHAROSHTHI
+            0x10A49,  // 10A49..10A4F; UNKNOWN
             0x10A50,  // 10A50..10A58; KHAROSHTHI
             0x10A59,  // 10A59..10A5F; UNKNOWN
             0x10A60,  // 10A60..10A7F; OLD_SOUTH_ARABIAN
@@ -5711,24 +5876,33 @@
             0x10CC0,  // 10CC0..10CF2; OLD_HUNGARIAN
             0x10CF3,  // 10CF3..10CF9; UNKNOWN
             0x10CFA,  // 10CFA..10CFF; OLD_HUNGARIAN
-            0x10D00,  // 10D00..10E5F; UNKNOWN
+            0x10D00,  // 10D00..10D27; HANIFI ROHINGYA
+            0x10D28,  // 10D28..10D29; UNKNOWN
+            0x10D30,  // 10D30..10D39; HANIFI ROHINGYA
+            0x10D3A,  // 10D3A..10E5F; UNKNOWN
             0x10E60,  // 10E60..10E7E; ARABIC
-            0x10E7F,  // 10E7F..10FFF; UNKNOWN
+            0x10E7F,  // 10E7F..10EFF; UNKNOWN
+            0x10F00,  // 10F00..10F27; OLD SOGDIAN
+            0x10F28,  // 10F28..10F2F; UNKNOWN
+            0x10F30,  // 10F30..10F59; SOGDIAN
+            0x10F5A,  // 10F5A..10FFF; UNKNOWN
             0x11000,  // 11000..1104D; BRAHMI
             0x1104E,  // 1104E..11051; UNKNOWN
             0x11052,  // 11052..1106F; BRAHMI
             0x11070,  // 11070..1107E; UNKNOWN
             0x1107F,  // 1107F       ; BRAHMI
             0x11080,  // 11080..110C1; KAITHI
-            0x110C2,  // 110C2..110CF; UNKNOWN
+            0x110C2,  // 110C2..110CC; UNKNOWN
+            0x110CD,  // 110CD       ; KAITHI
+            0x110CE,  // 110CE..110CF; UNKNOWN
             0x110D0,  // 110D0..110E8; SORA_SOMPENG
             0x110E9,  // 110E9..110EF; UNKNOWN
             0x110F0,  // 110F0..110F9; SORA_SOMPENG
             0x110FA,  // 110FA..110FF; UNKNOWN
             0x11100,  // 11100..11134; CHAKMA
             0x11135,  // 11135       ; UNKNOWN
-            0x11136,  // 11136..11143; CHAKMA
-            0x11144,  // 11144..1114F; UNKNOWN
+            0x11136,  // 11136..11146; CHAKMA
+            0x11147,  // 11147..1114F; UNKNOWN
             0x11150,  // 11150..11176; MAHAJANI
             0x11177,  // 11177..1117F; UNKNOWN
             0x11180,  // 11180..111CD; SHARADA
@@ -5768,7 +5942,8 @@
             0x11332,  // 11332..11333; GRANTHA
             0x11334,  // 11334       ; UNKNOWN
             0x11335,  // 11335..11339; GRANTHA
-            0x1133A,  // 1133A..1133B; UNKNOWN
+            0x1133A,  // 1133A       ; UNKNOWN
+            0x1133B,  // 1133B       ; INHERITED
             0x1133C,  // 1133C..11344; GRANTHA
             0x11345,  // 11345..11346; UNKNOWN
             0x11347,  // 11347..11348; GRANTHA
@@ -5789,8 +5964,8 @@
             0x1145A,  // 1145A       ; UNKNOWN
             0x1145B,  // 1145B       ; NEWA
             0x1145C,  // 1145C       ; UNKNOWN
-            0x1145D,  // 1145D       ; NEWA
-            0x1145E,  // 1145E..1147F; UNKNOWN
+            0x1145D,  // 1145D..1145E; NEWA
+            0x1145F,  // 1145F..1147F; UNKNOWN
             0x11480,  // 11480..114C7; TIRHUTA
             0x114C8,  // 114C8..114CF; UNKNOWN
             0x114D0,  // 114D0..114D9; TIRHUTA
@@ -5809,12 +5984,14 @@
             0x116B8,  // 116B8..116BF; UNKNOWN
             0x116C0,  // 116C0..116C9; TAKRI
             0x116CA,  // 116CA..116FF; UNKNOWN
-            0x11700,  // 11700..11719; AHOM
-            0x1171A,  // 1171A..1171C; UNKNOWN
+            0x11700,  // 11700..1171A; AHOM
+            0x1171B,  // 1171B..1171C; UNKNOWN
             0x1171D,  // 1171D..1172B; AHOM
             0x1172C,  // 1172C..1172F; UNKNOWN
             0x11730,  // 11730..1173F; AHOM
-            0x11740,  // 11740..1189F; UNKNOWN
+            0x11740,  // 11740..117FF; UNKNOWN
+            0x11800,  // 11800..1183B; DOGRA
+            0x1183C,  // 1183C..1189F; UNKNOWN
             0x118A0,  // 118A0..118F2; WARANG_CITI
             0x118F3,  // 118F3..118FE; UNKNOWN
             0x118FF,  // 118FF       ; WARANG_CITI
@@ -5823,9 +6000,7 @@
             0X11A48,  // 11A48..11A4F; UNKNOWN
             0x11A50,  // 11A50..11A83; SOYOMBO
             0x11A84,  // 11A84..11A85; UNKNOWN
-            0x11A86,  // 11A86..11A9C; SOYOMBO
-            0x11A9D,  // 11A9D       ; UNKNOWN
-            0x11A9E,  // 11A9E..11AA2; SOYOMBO
+            0x11A86,  // 11A86..11AA2; SOYOMBO
             0x11AA3,  // 11AA3..11ABF; UNKNOWN
             0x11AC0,  // 11AC0..11AF8; PAU_CIN_HAU
             0x11AF9,  // 11AF9..11BFF; UNKNOWN
@@ -5856,7 +6031,19 @@
             0x11D3F,  // 11D3F..11D47; MASARAM_GONDI
             0x11D48,  // 11D48..11D49, UNKNOWN
             0x11D50,  // 11D50..11D59; MASARAM_GONDI
-            0x11D5A,  // 11D5A..1AFFF; UNKNOWN
+            0x11D5A,  // 11D5A..11D5F; UNKNOWN
+            0x11D60,  // 11D60..11D68; GUNJALA GONDI
+            0x11D69,  //             ; UNKNOWN
+            0x11D6A,  // 11D6A..11D8E; GUNJALA GONDI
+            0x11D8F,  //             ; UNKNOWN
+            0x11D90,  // 11D90..11D91; GUNJALA GONDI
+            0x11D92,  //             ; UNKNOWN
+            0x11D93,  // 11D93..11D98; GUNJALA GONDI
+            0x11D99,  // 11D99       ; UNKNOWN
+            0x11DA0,  // 11DA0..11DA9; GUNJALA GONDI
+            0x11DAA,  // 11DAA..11DFF; UNKNOWN
+            0x11EE0,  // 11EE0..11EF8; MAKASAR
+            0x11EF9,  // 11EF9..11FFF; UNKNOWN
             0x12000,  // 12000..12399; CUNEIFORM
             0x1239A,  // 1239A..123FF; UNKNOWN
             0x12400,  // 12400..1246E; CUNEIFORM
@@ -5890,7 +6077,9 @@
             0x16B63,  // 16B63..16B77; PAHAWH_HMONG
             0x16B78,  // 16B78..16B7C; UNKNOWN
             0x16B7D,  // 16B7D..16B8F; PAHAWH_HMONG
-            0x16B90,  // 16B90..16EFF; UNKNOWN
+            0x16B90,  // 16B90..16E3F; UNKNOWN
+            0x16E40,  // 16E40..16E9A; MEDEFAIDRIN
+            0x16E9B,  // 16E9B..16EFF; UNKNOWN
             0x16F00,  // 16F00..16F44; MIAO
             0x16F45,  // 16F45..16F4F; UNKNOWN
             0x16F50,  // 16F50..16F7E; MIAO
@@ -5900,8 +6089,8 @@
             0x16FE0,  // 16FE0       ; TANGUT
             0x16FE1,  // 16FE1       ; NUSHU
             0x16FE2,  // 16FE2..16FFF; UNKNOWN
-            0x17000,  // 17000..187EC; TANGUT
-            0x187ED,  // 187ED..187FF; UNKNOWN
+            0x17000,  // 17000..187F1; TANGUT
+            0x187F2,  // 187F2..187FF; UNKNOWN
             0x18800,  // 18800..18AF2; TANGUT
             0x18AF3,  // 18AF3..1AFFF; UNKNOWN
             0x1B000,  // 1B000       ; KATAKANA
@@ -5935,11 +6124,13 @@
             0x1D1AE,  // 1D1AE..1D1E8; COMMON
             0x1D1E9,  // 1D1E9..1D1FF; UNKNOWN
             0x1D200,  // 1D200..1D245; GREEK
-            0x1D246,  // 1D246..1D2FF; UNKNOWN
+            0x1D246,  // 1D246..1D2DF; UNKNOWN
+            0x1D2E0,  // 1D2E0..1D2F3; COMMON
+            0x1D2F4,  // 1D2F4..1D2FF; UNKNOWN
             0x1D300,  // 1D300..1D356; COMMON
             0x1D357,  // 1D357..1D35F; UNKNOWN
-            0x1D360,  // 1D360..1D371; COMMON
-            0x1D372,  // 1D372..1D3FF; UNKNOWN
+            0x1D360,  // 1D360..1D378; COMMON
+            0x1D379,  // 1D379..1D3FF; UNKNOWN
             0x1D400,  // 1D400..1D454; COMMON
             0x1D455,  // 1D455       ; UNKNOWN
             0x1D456,  // 1D456..1D49C; COMMON
@@ -6006,7 +6197,9 @@
             0x1E950,  // 1E950..1E959; ADLAM
             0x1E95A,  // 1E95A..1E95D; UNKNOWN
             0x1E95E,  // 1E95E..1E95F; ADLAM
-            0x1E960,  // 1E960..1EDFF; UNKNOWN
+            0x1E960,  // 1E960..1EC70; UNKNOWN
+            0x1EC71,  // 1EC71..1ECB4; COMMON
+            0x1ECB5,  // 1ECB5..1EDFF; UNKNOWN
             0x1EE00,  // 1EE00..1EE03; ARABIC
             0x1EE04,  // 1EE04       ; UNKNOWN
             0x1EE05,  // 1EE05..1EE1F; ARABIC
@@ -6089,9 +6282,7 @@
             0x1F0F6,  // 1F0F6..1F0FF; UNKNOWN
             0x1F100,  // 1F100..1F10C; COMMON
             0x1F10D,  // 1F10D..1F10F; UNKNOWN
-            0x1F110,  // 1F110..1F12E; COMMON
-            0x1F12F,  // 1F12F       ; UNKNOWN
-            0x1F130,  // 1F130..1F16B; COMMON
+            0x1F110,  // 1F110..1F16B; COMMON
             0x1F16C,  // 1F16C..1F16F; UNKNOWN
             0x1F170,  // 1F170..1F1AC; COMMON
             0x1F1AD,  // 1F1AD..1F1E5; UNKNOWN
@@ -6111,12 +6302,12 @@
             0x1F6D5,  // 1F6D5..1F6DF; UNKNOWN
             0x1F6E0,  // 1F6E0..1F6EC; COMMON
             0x1F6ED,  // 1F6ED..1F6EF; UNKNOWN
-            0x1F6F0,  // 1F6F0..1F6F8; COMMON
-            0x1F6F9,  // 1F6F9..1F6FF; UNKNOWN
+            0x1F6F0,  // 1F6F0..1F6F9; COMMON
+            0x1F6FA,  // 1F6FA..1F6FF; UNKNOWN
             0x1F700,  // 1F700..1F773; COMMON
             0x1F774,  // 1F774..1F77F; UNKNOWN
-            0x1F780,  // 1F780..1F7D4; COMMON
-            0x1F7D5,  // 1F7D5..1F7FF; UNKNOWN
+            0x1F780,  // 1F780..1F7D8; COMMON
+            0x1F7D9,  // 1F7D9..1F7FF; UNKNOWN
             0x1F800,  // 1F800..1F80B; COMMON
             0x1F80C,  // 1F80C..1F80F; UNKNOWN
             0x1F810,  // 1F810..1F847; COMMON
@@ -6131,16 +6322,22 @@
             0x1F90C,  // 1F90C..1F90F; UNKNOWN
             0x1F910,  // 1F910..1F93E; COMMON
             0x1F93F,  // 1F93F       ; UNKNOWN
-            0x1F940,  // 1F940..1F94C; COMMON
-            0x1F94D,  // 1F94D..1F94F; UNKNOWN
-            0x1F950,  // 1F950..1F96B; COMMON
-            0x1F96C,  // 1F96C..1F97F; UNKNOWN
-            0x1F980,  // 1F980..1F997; COMMON
-            0x1F998,  // 1F998..1F9BF; UNKNOWN
-            0x1F9C0,  // 1F9C0       ; COMMON
-            0x1F9C1,  // 1F9C1..1F9CF; UNKNOWN
-            0x1F9D0,  // 1F9D0..1F9E6; COMMON
-            0x1F9E7,  // 1F9E7..1FFFF; UNKNOWN
+            0x1F940,  // 1F940..1F970; COMMON
+            0x1F971,  // 1F971..1F972; UNKNOWN
+            0x1F973,  // 1F973..1F976; COMMON
+            0x1F977,  // 1F977..1F979; UNKNOWN
+            0x1F97A,  // 1F97A       ; COMMON
+            0x1F97B,  // 1F97B       ; UNKNOWN
+            0x1F97C,  // 1F97C..1F9A2; COMMON
+            0x1F9A3,  // 1F9A3..1F9AF; UNKNOWN
+            0x1F9B0,  // 1F9B0..1F9B9; COMMON
+            0x1F9BA,  // 1F9BA..1F9BF; UNKNOWN
+            0x1F9C0,  // 1F9C0..1F9C2; COMMON
+            0x1F9C3,  // 1F9C3..1F9CF; UNKNOWN
+            0x1F9D0,  // 1F9D0..1F9FF; COMMON
+            0x1FA00,  // 1FA00..1FA5F; UNKNOWN
+            0x1FA60,  // 1FA60..1FA6D; COMMON
+            0x1FA6E,  // 1FA6E..1FFFF; UNKNOWN
             0x20000,  // 20000..2A6D6; HAN
             0x2A6D7,  // 2A6D7..2A6FF; UNKNOWN
             0x2A700,  // 2A700..2B734; HAN
@@ -6209,10 +6406,7 @@
             UNKNOWN,                  // 0530
             ARMENIAN,                 // 0531..0556
             UNKNOWN,                  // 0557..0558
-            ARMENIAN,                 // 0559..055F
-            UNKNOWN,                  // 0560
-            ARMENIAN,                 // 0561..0587
-            UNKNOWN,                  // 0588
+            ARMENIAN,                 // 0559..0588
             COMMON,                   // 0589
             ARMENIAN,                 // 058A
             UNKNOWN,                  // 058B..058C
@@ -6221,8 +6415,8 @@
             HEBREW,                   // 0591..05C7
             UNKNOWN,                  // 05C8..05CF
             HEBREW,                   // 05D0..05EA
-            UNKNOWN,                  // 05EB..05EF
-            HEBREW,                   // 05F0..05F4
+            UNKNOWN,                  // 05EB..05EE
+            HEBREW,                   // 05EF..05F4
             UNKNOWN,                  // 05F5..05FF
             ARABIC,                   // 0600..0604
             COMMON,                   // 0605
@@ -6252,7 +6446,8 @@
             THAANA,                   // 0780..07B1
             UNKNOWN,                  // 07B2..07BF
             NKO,                      // 07C0..07FA
-            UNKNOWN,                  // 07FB..07FF
+            UNKNOWN,                  // 07FB..07FC
+            NKO,                      // 07FD..07FF
             SAMARITAN,                // 0800..082D
             UNKNOWN,                  // 082E..082F
             SAMARITAN,                // 0830..083E
@@ -6266,8 +6461,8 @@
             ARABIC,                   // 08A0..08B4
             UNKNOWN,                  // 08B5
             ARABIC,                   // 08B6..08BD
-            UNKNOWN,                  // 08BE..08D3
-            ARABIC,                   // 08D4..08E1
+            UNKNOWN,                  // 08BE..08D2
+            ARABIC,                   // 08D3..08E1
             COMMON,                   // 08E2
             ARABIC,                   // 08E3..08FF
             DEVANAGARI,               // 0900..0950
@@ -6301,8 +6496,8 @@
             UNKNOWN,                  // 09DE
             BENGALI,                  // 09DF..09E3
             UNKNOWN,                  // 09E4..09E5
-            BENGALI,                  // 09E6..09FD
-            UNKNOWN,                  // 09FE..0A00
+            BENGALI,                  // 09E6..09FE
+            UNKNOWN,                  // 09FF..0A00
             GURMUKHI,                 // 0A01..0A03
             UNKNOWN,                  // 0A04
             GURMUKHI,                 // 0A05..0A0A
@@ -6333,8 +6528,8 @@
             UNKNOWN,                  // 0A5D
             GURMUKHI,                 // 0A5E
             UNKNOWN,                  // 0A5F..0A65
-            GURMUKHI,                 // 0A66..0A75
-            UNKNOWN,                  // 0A76..0A80
+            GURMUKHI,                 // 0A66..0A76
+            UNKNOWN,                  // 0A77..0A80
             GUJARATI,                 // 0A81..0A83
             UNKNOWN,                  // 0A84
             GUJARATI,                 // 0A85..0A8D
@@ -6423,9 +6618,7 @@
             UNKNOWN,                  // 0BD8..0BE5
             TAMIL,                    // 0BE6..0BFA
             UNKNOWN,                  // 0BFB..0BFF
-            TELUGU,                   // 0C00..0C03
-            UNKNOWN,                  // 0C04
-            TELUGU,                   // 0C05..0C0C
+            TELUGU,                   // 0C00..0C0C
             UNKNOWN,                  // 0C0D
             TELUGU,                   // 0C0E..0C10
             UNKNOWN,                  // 0C11
@@ -6448,9 +6641,7 @@
             TELUGU,                   // 0C66..0C6F
             UNKNOWN,                  // 0C70..0C77
             TELUGU,                   // 0C78..0C7F
-            KANNADA,                  // 0C80..0C83
-            UNKNOWN,                  // 0C84
-            KANNADA,                  // 0C85..0C8C
+            KANNADA,                  // 0C80..0C8C
             UNKNOWN,                  // 0C8D
             KANNADA,                  // 0C8E..0C90
             UNKNOWN,                  // 0C91
@@ -6658,8 +6849,8 @@
             UNKNOWN,                  // 180F
             MONGOLIAN,                // 1810..1819
             UNKNOWN,                  // 181A..181F
-            MONGOLIAN,                // 1820..1877
-            UNKNOWN,                  // 1878..187F
+            MONGOLIAN,                // 1820..1878
+            UNKNOWN,                  // 1879..187F
             MONGOLIAN,                // 1880..18AA
             UNKNOWN,                  // 18AB..18AF
             CANADIAN_ABORIGINAL,      // 18B0..18F5
@@ -6715,7 +6906,10 @@
             LEPCHA,                   // 1C4D..1C4F
             OL_CHIKI,                 // 1C50..1C7F
             CYRILLIC,                 // 1C80..1C88
-            UNKNOWN,                  // 1C89..1CBF
+            UNKNOWN,                  // 1C89
+            GEORGIAN,                 // 1C90..1CBA
+            UNKNOWN,                  // 1CBB..1CBC
+            GEORGIAN,                 // 1CBD..1CBF
             SUNDANESE,                // 1CC0..1CC7
             UNKNOWN,                  // 1CC8..1CCF
             INHERITED,                // 1CD0..1CD2
@@ -6816,14 +7010,10 @@
             UNKNOWN,                  // 2B74..2B75
             COMMON,                   // 2B76..2B95
             UNKNOWN,                  // 2B96..2B97
-            COMMON,                   // 2B98..2BB9
-            UNKNOWN,                  // 2BBA..2BBC
-            COMMON,                   // 2BBD..2BC8
+            COMMON,                   // 2B98..2BC8
             UNKNOWN,                  // 2BC9
-            COMMON,                   // 2BCA..2BD2
-            UNKNOWN,                  // 2BD3..2BEB
-            COMMON,                   // 2BEC..2BEF
-            UNKNOWN,                  // 2BF0..2BFF
+            COMMON,                   // 2BCA..2BFE
+            UNKNOWN,                  // 0x2BFF
             GLAGOLITIC,               // 2C00..2C2E
             UNKNOWN,                  // 2C2F
             GLAGOLITIC,               // 2C30..2C5E
@@ -6862,8 +7052,8 @@
             ETHIOPIC,                 // 2DD8..2DDE
             UNKNOWN,                  // 2DDF
             CYRILLIC,                 // 2DE0..2DFF
-            COMMON,                   // 2E00..2E49
-            UNKNOWN,                  // 2E50..2E7F
+            COMMON,                   // 2E00..2E4E
+            UNKNOWN,                  // 2E4F..2E7F
             HAN,                      // 2E80..2E99
             UNKNOWN,                  // 2E9A
             HAN,                      // 2E9B..2EF3
@@ -6894,8 +7084,8 @@
             COMMON,                   // 30FB..30FC
             KATAKANA,                 // 30FD..30FF
             UNKNOWN,                  // 3100..3104
-            BOPOMOFO,                 // 3105..312E
-            UNKNOWN,                  // 312F..3130
+            BOPOMOFO,                 // 3105..312F
+            UNKNOWN,                  // 3130
             HANGUL,                   // 3131..318E
             UNKNOWN,                  // 318F
             COMMON,                   // 3190..319F
@@ -6916,8 +7106,8 @@
             HAN,                      // 3400..4DB5
             UNKNOWN,                  // 4DB6..4DBF
             COMMON,                   // 4DC0..4DFF
-            HAN,                      // 4E00..9FEA
-            UNKNOWN,                  // 9FEB..9FFF
+            HAN,                      // 4E00..9FEF
+            UNKNOWN,                  // 9FF0..9FFF
             YI,                       // A000..A48C
             UNKNOWN,                  // A48D..A48F
             YI,                       // A490..A4C6
@@ -6931,10 +7121,8 @@
             COMMON,                   // A700..A721
             LATIN,                    // A722..A787
             COMMON,                   // A788..A78A
-            LATIN,                    // A78B..A7AE
-            UNKNOWN,                  // A7AF
-            LATIN,                    // A7B0..A7B7
-            UNKNOWN,                  // A7B8..A7F6
+            LATIN,                    // A78B..A7B9
+            UNKNOWN,                  // A7C0..A7F6
             LATIN,                    // A7F7..A7FF
             SYLOTI_NAGRI,             // A800..A82B
             UNKNOWN,                  // A82C..A82F
@@ -6946,8 +7134,7 @@
             UNKNOWN,                  // A8C6..A8CD
             SAURASHTRA,               // A8CE..A8D9
             UNKNOWN,                  // A8DA..A8DF
-            DEVANAGARI,               // A8E0..A8FD
-            UNKNOWN,                  // A8FE..A8FF
+            DEVANAGARI,               // A8E0..A8FF
             KAYAH_LI,                 // A900..A92D
             COMMON,                   // A92E
             KAYAH_LI,                 // A92F
@@ -7191,12 +7378,12 @@
             UNKNOWN,                  // 10A14
             KHAROSHTHI,               // 10A15..10A17
             UNKNOWN,                  // 10A18
-            KHAROSHTHI,               // 10A19..10A33
-            UNKNOWN,                  // 10A34..10A37
+            KHAROSHTHI,               // 10A19..10A35
+            UNKNOWN,                  // 10A36..10A37
             KHAROSHTHI,               // 10A38..10A3A
             UNKNOWN,                  // 10A3B..10A3E
-            KHAROSHTHI,               // 10A3F..10A47
-            UNKNOWN,                  // 10A48..10A4F
+            KHAROSHTHI,               // 10A3F..10A48
+            UNKNOWN,                  // 10A49..10A4F
             KHAROSHTHI,               // 10A50..10A58
             UNKNOWN,                  // 10A59..10A5F
             OLD_SOUTH_ARABIAN,        // 10A60..10A7F
@@ -7228,24 +7415,33 @@
             OLD_HUNGARIAN,            // 10CC0..10CF2
             UNKNOWN,                  // 10CF3..10CF9
             OLD_HUNGARIAN,            // 10CFA..10CFF
-            UNKNOWN,                  // 10D00..10E5F
+            HANIFI_ROHINGYA,          // 10D00..10D27
+            UNKNOWN,                  // 10D28..10D29
+            HANIFI_ROHINGYA,          // 10D30..10D39
+            UNKNOWN,                  // 10D3A..10E5F
             ARABIC,                   // 10E60..10E7E
-            UNKNOWN,                  // 10E7F..10FFF
+            UNKNOWN,                  // 10E7F..10EFF
+            OLD_SOGDIAN,              // 10F00..10F27
+            UNKNOWN,                  // 10F28..10F2F
+            SOGDIAN,                  // 10F30..10F59
+            UNKNOWN,                  // 10F5A..10FFF
             BRAHMI,                   // 11000..1104D
             UNKNOWN,                  // 1104E..11051
             BRAHMI,                   // 11052..1106F
             UNKNOWN,                  // 11070..1107E
             BRAHMI,                   // 1107F
             KAITHI,                   // 11080..110C1
-            UNKNOWN,                  // 110C2..110CF
+            UNKNOWN,                  // 110C2..110CC
+            KAITHI,                   // 110CD
+            UNKNOWN,                  // 110CE..110CF
             SORA_SOMPENG,             // 110D0..110E8
             UNKNOWN,                  // 110E9..110EF
             SORA_SOMPENG,             // 110F0..110F9
             UNKNOWN,                  // 110FA..110FF
             CHAKMA,                   // 11100..11134
             UNKNOWN,                  // 11135
-            CHAKMA,                   // 11136..11143
-            UNKNOWN,                  // 11144..1114F
+            CHAKMA,                   // 11136..11146
+            UNKNOWN,                  // 11147..1114F
             MAHAJANI,                 // 11150..11176
             UNKNOWN,                  // 11177..1117F
             SHARADA,                  // 11180..111CD
@@ -7285,7 +7481,8 @@
             GRANTHA,                  // 11332..11333
             UNKNOWN,                  // 11334
             GRANTHA,                  // 11335..11339
-            UNKNOWN,                  // 1133A..1133B
+            UNKNOWN,                  // 1133A
+            INHERITED,                // 1133B
             GRANTHA,                  // 1133C..11344
             UNKNOWN,                  // 11345..11346
             GRANTHA,                  // 11347..11348
@@ -7306,8 +7503,8 @@
             UNKNOWN,                  // 1145A
             NEWA,                     // 1145B
             UNKNOWN,                  // 1145C
-            NEWA,                     // 1145D
-            UNKNOWN,                  // 1145E..1147F
+            NEWA,                     // 1145D..1145E
+            UNKNOWN,                  // 1145F..1147F
             TIRHUTA,                  // 11480..114C7
             UNKNOWN,                  // 114C8..114CF
             TIRHUTA,                  // 114D0..114D9
@@ -7326,12 +7523,14 @@
             UNKNOWN,                  // 116B8..116BF
             TAKRI,                    // 116C0..116C9
             UNKNOWN,                  // 116CA..116FF
-            AHOM,                     // 11700..11719
-            UNKNOWN,                  // 1171A..1171C
+            AHOM,                     // 11700..1171A
+            UNKNOWN,                  // 1171B..1171C
             AHOM,                     // 1171D..1172B
             UNKNOWN,                  // 1172C..1172F
             AHOM,                     // 11730..1173F
-            UNKNOWN,                  // 11740..1189F
+            UNKNOWN,                  // 11740..117FF
+            DOGRA,                    // 11800..1183B
+            UNKNOWN,                  // 1183C..1189F
             WARANG_CITI,              // 118A0..118F2
             UNKNOWN,                  // 118F3..118FE
             WARANG_CITI,              // 118FF
@@ -7340,9 +7539,7 @@
             UNKNOWN,                  // 11A48..11A4F
             SOYOMBO,                  // 11A50..11A83
             UNKNOWN,                  // 11A84..11A85
-            SOYOMBO,                  // 11A86..11A9C
-            UNKNOWN,                  // 11A9D
-            SOYOMBO,                  // 11A9E..11AA2
+            SOYOMBO,                  // 11A86..11AA2
             UNKNOWN,                  // 11AA3..11ABF
             PAU_CIN_HAU,              // 11AC0..11AF8
             UNKNOWN,                  // 11AF9..11BFF
@@ -7373,7 +7570,19 @@
             MASARAM_GONDI,            // 11D3F..11D47
             UNKNOWN,                  // 11D48..11D49
             MASARAM_GONDI,            // 11D50..11D59
-            UNKNOWN,                  // 11D5A..1AFFF;
+            UNKNOWN,                  // 11D5A..11D5F
+            GUNJALA_GONDI,            // 11D60..11D68
+            UNKNOWN,                  // 11D69
+            GUNJALA_GONDI,            // 11D6A..11D8E
+            UNKNOWN,                  // 11D8F
+            GUNJALA_GONDI,            // 11D90..11D91
+            UNKNOWN,                  // 11D92
+            GUNJALA_GONDI,            // 11D93..11D98
+            UNKNOWN,                  // 11D99
+            GUNJALA_GONDI,            // 11DA0..11DA9
+            UNKNOWN,                  // 11DAA..11DFF
+            MAKASAR,                  // 11EE0..11EF8
+            UNKNOWN,                  // 11EF9..11FFF
             CUNEIFORM,                // 12000..12399
             UNKNOWN,                  // 1239A..123FF
             CUNEIFORM,                // 12400..1246E
@@ -7407,7 +7616,9 @@
             PAHAWH_HMONG,             // 16B63..16B77
             UNKNOWN,                  // 16B78..16B7C
             PAHAWH_HMONG,             // 16B7D..16B8F
-            UNKNOWN,                  // 16B90..16EFF
+            UNKNOWN,                  // 16B90..16E3F
+            MEDEFAIDRIN,              // 16E40..16E9A
+            UNKNOWN,                  // 16E9B..16EFF
             MIAO,                     // 16F00..16F44
             UNKNOWN,                  // 16F45..16F4F
             MIAO,                     // 16F50..16F7E
@@ -7417,8 +7628,8 @@
             TANGUT,                   // 16FE0
             NUSHU,                    // 16FE1
             UNKNOWN,                  // 16FE2..16FFF
-            TANGUT,                   // 17000..187EC
-            UNKNOWN,                  // 187ED..187FF
+            TANGUT,                   // 17000..187F1
+            UNKNOWN,                  // 187F2..187FF
             TANGUT,                   // 18800..18AF2
             UNKNOWN,                  // 18AF3..1AFFF
             KATAKANA,                 // 1B000
@@ -7452,11 +7663,13 @@
             COMMON,                   // 1D1AE..1D1E8
             UNKNOWN,                  // 1D1E9..1D1FF
             GREEK,                    // 1D200..1D245
-            UNKNOWN,                  // 1D246..1D2FF
+            UNKNOWN,                  // 1D246..1D2DF
+            COMMON,                   // 1D2E0..1D2F3
+            UNKNOWN,                  // 1D2F4..1D2FF
             COMMON,                   // 1D300..1D356
             UNKNOWN,                  // 1D357..1D35F
-            COMMON,                   // 1D360..1D371
-            UNKNOWN,                  // 1D372..1D3FF
+            COMMON,                   // 1D360..1D378
+            UNKNOWN,                  // 1D379..1D3FF
             COMMON,                   // 1D400..1D454
             UNKNOWN,                  // 1D455
             COMMON,                   // 1D456..1D49C
@@ -7523,7 +7736,9 @@
             ADLAM,                    // 1E950..1E959
             UNKNOWN,                  // 1E95A..1E95D
             ADLAM,                    // 1E95E..1E95F
-            UNKNOWN,                  // 1E960..1EDFF
+            UNKNOWN,                  // 1E960..1EC70
+            COMMON,                   // 1EC71..1ECB4
+            UNKNOWN,                  // 1ECB5..1EDFF
             ARABIC,                   // 1EE00..1EE03
             UNKNOWN,                  // 1EE04
             ARABIC,                   // 1EE05..1EE1F
@@ -7606,9 +7821,7 @@
             UNKNOWN,                  // 1F0F6..1F0FF
             COMMON,                   // 1F100..1F10C
             UNKNOWN,                  // 1F10D..1F10F
-            COMMON,                   // 1F110..1F12E
-            UNKNOWN,                  // 1F12F
-            COMMON,                   // 1F130..1F16B
+            COMMON,                   // 1F110..1F16B
             UNKNOWN,                  // 1F16C..1F16F
             COMMON,                   // 1F170..1F1AC
             UNKNOWN,                  // 1F1AD..1F1E5
@@ -7628,12 +7841,12 @@
             UNKNOWN,                  // 1F6D5..1F6DF
             COMMON,                   // 1F6E0..1F6EC
             UNKNOWN,                  // 1F6ED..1F6EF
-            COMMON,                   // 1F6F0..1F6F8
-            UNKNOWN,                  // 1F6F9..1F6FF
+            COMMON,                   // 1F6F0..1F6F9
+            UNKNOWN,                  // 1F6FA..1F6FF
             COMMON,                   // 1F700..1F773
             UNKNOWN,                  // 1F774..1F77F
-            COMMON,                   // 1F780..1F7D4
-            UNKNOWN,                  // 1F7D5..1F7FF
+            COMMON,                   // 1F780..1F7D8
+            UNKNOWN,                  // 1F7D9..1F7FF
             COMMON,                   // 1F800..1F80B
             UNKNOWN,                  // 1F80C..1F80F
             COMMON,                   // 1F810..1F847
@@ -7648,16 +7861,22 @@
             UNKNOWN,                  // 1F90C..1F90F
             COMMON,                   // 1F910..1F93E
             UNKNOWN,                  // 1F93F
-            COMMON,                   // 1F940..1F94C
-            UNKNOWN,                  // 1F94D..1F94F
-            COMMON,                   // 1F950..1F96B
-            UNKNOWN,                  // 1F96C..1F97F
-            COMMON,                   // 1F980..1F997
-            UNKNOWN,                  // 1F998..1F9BF
-            COMMON,                   // 1F9C0
-            UNKNOWN,                  // 1F9C1..1F9CF
-            COMMON,                   // 1F9D0..1F9E6
-            UNKNOWN,                  // 1F9E7..1FFFF
+            COMMON,                   // 1F940..1F970
+            UNKNOWN,                  // 1F971..1F972
+            COMMON,                   // 1F973..1F976
+            UNKNOWN,                  // 1F977..1F979
+            COMMON,                   // 1F97A
+            UNKNOWN,                  // 1F97B
+            COMMON,                   // 1F97C..1F9A2
+            UNKNOWN,                  // 1F9A3..1F9AF
+            COMMON,                   // 1F9B0..1F9B9
+            UNKNOWN,                  // 1F9BA..1F9BF
+            COMMON,                   // 1F9C0..1F9C2
+            UNKNOWN,                  // 1F9C3..1F9CF
+            COMMON,                   // 1F9D0..1F9FF
+            UNKNOWN,                  // 1FA00..1FA5F
+            COMMON,                   // 1FA60..1FA6D
+            UNKNOWN,                  // 1FA6E..1FFFF
             HAN,                      // 20000..2A6D6
             UNKNOWN,                  // 2A6D7..2A6FF
             HAN,                      // 2A700..2B734
@@ -7680,7 +7899,7 @@
 
         private static HashMap<String, Character.UnicodeScript> aliases;
         static {
-            aliases = new HashMap<>((int)(142 / 0.75f + 1.0f));
+            aliases = new HashMap<>((int)(149 / 0.75f + 1.0f));
             aliases.put("ADLM", ADLAM);
             aliases.put("AGHB", CAUCASIAN_ALBANIAN);
             aliases.put("AHOM", AHOM);
@@ -7708,6 +7927,7 @@
             aliases.put("CPRT", CYPRIOT);
             aliases.put("CYRL", CYRILLIC);
             aliases.put("DEVA", DEVANAGARI);
+            aliases.put("DOGR", DOGRA);
             aliases.put("DSRT", DESERET);
             aliases.put("DUPL", DUPLOYAN);
             aliases.put("EGYP", EGYPTIAN_HIEROGLYPHS);
@@ -7717,6 +7937,7 @@
             aliases.put("GLAG", GLAGOLITIC);
             aliases.put("GONM", MASARAM_GONDI);
             aliases.put("GOTH", GOTHIC);
+            aliases.put("GONG", GUNJALA_GONDI);
             aliases.put("GRAN", GRANTHA);
             aliases.put("GREK", GREEK);
             aliases.put("GUJR", GUJARATI);
@@ -7752,9 +7973,11 @@
             aliases.put("LYCI", LYCIAN);
             aliases.put("LYDI", LYDIAN);
             aliases.put("MAHJ", MAHAJANI);
+            aliases.put("MAKA", MAKASAR);
             aliases.put("MARC", MARCHEN);
             aliases.put("MAND", MANDAIC);
             aliases.put("MANI", MANICHAEAN);
+            aliases.put("MEDF", MEDEFAIDRIN);
             aliases.put("MEND", MENDE_KIKAKUI);
             aliases.put("MERC", MEROITIC_CURSIVE);
             aliases.put("MERO", MEROITIC_HIEROGLYPHS);
@@ -7786,6 +8009,7 @@
             aliases.put("PLRD", MIAO);
             aliases.put("PRTI", INSCRIPTIONAL_PARTHIAN);
             aliases.put("RJNG", REJANG);
+            aliases.put("ROHG", HANIFI_ROHINGYA);
             aliases.put("RUNR", RUNIC);
             aliases.put("SAMR", SAMARITAN);
             aliases.put("SARB", OLD_SOUTH_ARABIAN);
@@ -7796,6 +8020,8 @@
             aliases.put("SIDD", SIDDHAM);
             aliases.put("SIND", KHUDAWADI);
             aliases.put("SINH", SINHALA);
+            aliases.put("SOGD", SOGDIAN);
+            aliases.put("SOGO", OLD_SOGDIAN);
             aliases.put("SORA", SORA_SOMPENG);
             aliases.put("SOYO", SOYOMBO);
             aliases.put("SUND", SUNDANESE);
@@ -7914,11 +8140,22 @@
     private static class CharacterCache {
         private CharacterCache(){}
 
-        static final Character cache[] = new Character[127 + 1];
+        static final Character[] cache;
+        static Character[] archivedCache;
 
         static {
-            for (int i = 0; i < cache.length; i++)
-                cache[i] = new Character((char)i);
+            int size = 127 + 1;
+
+            // Load and use the archived cache if it exists
+            VM.initializeFromArchive(CharacterCache.class);
+            if (archivedCache == null || archivedCache.length != size) {
+                Character[] c = new Character[size];
+                for (int i = 0; i < size; i++) {
+                    c[i] = new Character((char) i);
+                }
+                archivedCache = c;
+            }
+            cache = archivedCache;
         }
     }
 
--- a/src/java.base/share/classes/java/lang/Integer.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.base/share/classes/java/lang/Integer.java	Wed Nov 21 13:53:17 2018 -0500
@@ -1013,10 +1013,9 @@
                 VM.getSavedProperty("java.lang.Integer.IntegerCache.high");
             if (integerCacheHighPropValue != null) {
                 try {
-                    int i = parseInt(integerCacheHighPropValue);
-                    i = Math.max(i, 127);
+                    h = Math.max(parseInt(integerCacheHighPropValue), 127);
                     // Maximum array size is Integer.MAX_VALUE
-                    h = Math.min(i, Integer.MAX_VALUE - (-low) -1);
+                    h = Math.min(h, Integer.MAX_VALUE - (-low) -1);
                 } catch( NumberFormatException nfe) {
                     // If the property cannot be parsed into an int, ignore it.
                 }
@@ -1031,8 +1030,9 @@
             if (archivedCache == null || size > archivedCache.length) {
                 Integer[] c = new Integer[size];
                 int j = low;
-                for(int k = 0; k < c.length; k++)
-                    c[k] = new Integer(j++);
+                for(int i = 0; i < c.length; i++) {
+                    c[i] = new Integer(j++);
+                }
                 archivedCache = c;
             }
             cache = archivedCache;
--- a/src/java.base/share/classes/java/lang/Long.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.base/share/classes/java/lang/Long.java	Wed Nov 21 13:53:17 2018 -0500
@@ -29,6 +29,7 @@
 import java.math.*;
 import java.util.Objects;
 import jdk.internal.HotSpotIntrinsicCandidate;
+import jdk.internal.misc.VM;
 
 import static java.lang.String.COMPACT_STRINGS;
 import static java.lang.String.LATIN1;
@@ -1145,13 +1146,25 @@
     }
 
     private static class LongCache {
-        private LongCache(){}
+        private LongCache() {}
 
-        static final Long cache[] = new Long[-(-128) + 127 + 1];
+        static final Long[] cache;
+        static Long[] archivedCache;
 
         static {
-            for(int i = 0; i < cache.length; i++)
-                cache[i] = new Long(i - 128);
+            int size = -(-128) + 127 + 1;
+
+            // Load and use the archived cache if it exists
+            VM.initializeFromArchive(LongCache.class);
+            if (archivedCache == null || archivedCache.length != size) {
+                Long[] c = new Long[size];
+                long value = -128;
+                for(int i = 0; i < size; i++) {
+                    c[i] = new Long(value++);
+                }
+                archivedCache = c;
+            }
+            cache = archivedCache;
         }
     }
 
--- a/src/java.base/share/classes/java/lang/Short.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.base/share/classes/java/lang/Short.java	Wed Nov 21 13:53:17 2018 -0500
@@ -26,6 +26,7 @@
 package java.lang;
 
 import jdk.internal.HotSpotIntrinsicCandidate;
+import jdk.internal.misc.VM;
 
 /**
  * The {@code Short} class wraps a value of primitive type {@code
@@ -203,13 +204,25 @@
     }
 
     private static class ShortCache {
-        private ShortCache(){}
+        private ShortCache() {}
 
-        static final Short cache[] = new Short[-(-128) + 127 + 1];
+        static final Short[] cache;
+        static Short[] archivedCache;
 
         static {
-            for(int i = 0; i < cache.length; i++)
-                cache[i] = new Short((short)(i - 128));
+            int size = -(-128) + 127 + 1;
+
+            // Load and use the archived cache if it exists
+            VM.initializeFromArchive(ShortCache.class);
+            if (archivedCache == null || archivedCache.length != size) {
+                Short[] c = new Short[size];
+                short value = -128;
+                for(int i = 0; i < size; i++) {
+                    c[i] = new Short(value++);
+                }
+                archivedCache = c;
+            }
+            cache = archivedCache;
         }
     }
 
--- a/src/java.base/share/classes/java/lang/System.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.base/share/classes/java/lang/System.java	Wed Nov 21 13:53:17 2018 -0500
@@ -627,72 +627,72 @@
      *     <th scope="col">Description of Associated Value</th></tr>
      * </thead>
      * <tbody>
-     * <tr><th scope="row">{@code java.version}</th>
+     * <tr><th scope="row">{@systemProperty java.version}</th>
      *     <td>Java Runtime Environment version, which may be interpreted
      *     as a {@link Runtime.Version}</td></tr>
-     * <tr><th scope="row">{@code java.version.date}</th>
+     * <tr><th scope="row">{@systemProperty java.version.date}</th>
      *     <td>Java Runtime Environment version date, in ISO-8601 YYYY-MM-DD
      *     format, which may be interpreted as a {@link
      *     java.time.LocalDate}</td></tr>
-     * <tr><th scope="row">{@code java.vendor}</th>
+     * <tr><th scope="row">{@systemProperty java.vendor}</th>
      *     <td>Java Runtime Environment vendor</td></tr>
-     * <tr><th scope="row">{@code java.vendor.url}</th>
+     * <tr><th scope="row">{@systemProperty java.vendor.url}</th>
      *     <td>Java vendor URL</td></tr>
-     * <tr><th scope="row">{@code java.vendor.version}</th>
+     * <tr><th scope="row">{@systemProperty java.vendor.version}</th>
      *     <td>Java vendor version</td></tr>
-     * <tr><th scope="row">{@code java.home}</th>
+     * <tr><th scope="row">{@systemProperty java.home}</th>
      *     <td>Java installation directory</td></tr>
-     * <tr><th scope="row">{@code java.vm.specification.version}</th>
+     * <tr><th scope="row">{@systemProperty java.vm.specification.version}</th>
      *     <td>Java Virtual Machine specification version, whose value is the
      *     {@linkplain Runtime.Version#feature feature} element of the
      *     {@linkplain Runtime#version() runtime version}</td></tr>
-     * <tr><th scope="row">{@code java.vm.specification.vendor}</th>
+     * <tr><th scope="row">{@systemProperty java.vm.specification.vendor}</th>
      *     <td>Java Virtual Machine specification vendor</td></tr>
-     * <tr><th scope="row">{@code java.vm.specification.name}</th>
+     * <tr><th scope="row">{@systemProperty java.vm.specification.name}</th>
      *     <td>Java Virtual Machine specification name</td></tr>
-     * <tr><th scope="row">{@code java.vm.version}</th>
+     * <tr><th scope="row">{@systemProperty java.vm.version}</th>
      *     <td>Java Virtual Machine implementation version which may be
      *     interpreted as a {@link Runtime.Version}</td></tr>
-     * <tr><th scope="row">{@code java.vm.vendor}</th>
+     * <tr><th scope="row">{@systemProperty java.vm.vendor}</th>
      *     <td>Java Virtual Machine implementation vendor</td></tr>
-     * <tr><th scope="row">{@code java.vm.name}</th>
+     * <tr><th scope="row">{@systemProperty java.vm.name}</th>
      *     <td>Java Virtual Machine implementation name</td></tr>
-     * <tr><th scope="row">{@code java.specification.version}</th>
+     * <tr><th scope="row">{@systemProperty java.specification.version}</th>
      *     <td>Java Runtime Environment specification version, whose value is
      *     the {@linkplain Runtime.Version#feature feature} element of the
      *     {@linkplain Runtime#version() runtime version}</td></tr>
-     * <tr><th scope="row">{@code java.specification.vendor}</th>
+     * <tr><th scope="row">{@systemProperty java.specification.vendor}</th>
      *     <td>Java Runtime Environment specification  vendor</td></tr>
-     * <tr><th scope="row">{@code java.specification.name}</th>
+     * <tr><th scope="row">{@systemProperty java.specification.name}</th>
      *     <td>Java Runtime Environment specification  name</td></tr>
-     * <tr><th scope="row">{@code java.class.version}</th>
+     * <tr><th scope="row">{@systemProperty java.class.version}</th>
      *     <td>Java class format version number</td></tr>
-     * <tr><th scope="row">{@code java.class.path}</th>
+     * <tr><th scope="row">{@systemProperty java.class.path}</th>
      *     <td>Java class path  (refer to
      *        {@link ClassLoader#getSystemClassLoader()} for details)</td></tr>
-     * <tr><th scope="row">{@code java.library.path}</th>
+     * <tr><th scope="row">{@systemProperty java.library.path}</th>
      *     <td>List of paths to search when loading libraries</td></tr>
-     * <tr><th scope="row">{@code java.io.tmpdir}</th>
+     * <tr><th scope="row">{@systemProperty java.io.tmpdir}</th>
      *     <td>Default temp file path</td></tr>
-     * <tr><th scope="row">{@code java.compiler}</th>
+     * <tr><th scope="row">{@systemProperty java.compiler}</th>
      *     <td>Name of JIT compiler to use</td></tr>
-     * <tr><th scope="row">{@code os.name}</th>
+     * <tr><th scope="row">{@systemProperty os.name}</th>
      *     <td>Operating system name</td></tr>
-     * <tr><th scope="row">{@code os.arch}</th>
+     * <tr><th scope="row">{@systemProperty os.arch}</th>
      *     <td>Operating system architecture</td></tr>
-     * <tr><th scope="row">{@code os.version}</th>
+     * <tr><th scope="row">{@systemProperty os.version}</th>
      *     <td>Operating system version</td></tr>
-     * <tr><th scope="row">{@code file.separator}</th>
+     * <tr><th scope="row">{@systemProperty file.separator}</th>
      *     <td>File separator ("/" on UNIX)</td></tr>
-     * <tr><th scope="row">{@code path.separator}</th>
+     * <tr><th scope="row">{@systemProperty path.separator}</th>
      *     <td>Path separator (":" on UNIX)</td></tr>
-     * <tr><th scope="row">{@code line.separator}</th>
+     * <tr><th scope="row">{@systemProperty line.separator}</th>
      *     <td>Line separator ("\n" on UNIX)</td></tr>
-     * <tr><th scope="row">{@code user.name}</th>
+     * <tr><th scope="row">{@systemProperty user.name}</th>
      *     <td>User's account name</td></tr>
-     * <tr><th scope="row">{@code user.home}</th>
+     * <tr><th scope="row">{@systemProperty user.home}</th>
      *     <td>User's home directory</td></tr>
-     * <tr><th scope="row">{@code user.dir}</th>
+     * <tr><th scope="row">{@systemProperty user.dir}</th>
      *     <td>User's current working directory</td></tr>
      * </tbody>
      * </table>
@@ -722,13 +722,13 @@
      *     <th scope="col">Description of Associated Value</th></tr>
      * </thead>
      * <tbody>
-     * <tr><th scope="row">{@code jdk.module.path}</th>
+     * <tr><th scope="row">{@systemProperty jdk.module.path}</th>
      *     <td>The application module path</td></tr>
-     * <tr><th scope="row">{@code jdk.module.upgrade.path}</th>
+     * <tr><th scope="row">{@systemProperty jdk.module.upgrade.path}</th>
      *     <td>The upgrade module path</td></tr>
-     * <tr><th scope="row">{@code jdk.module.main}</th>
+     * <tr><th scope="row">{@systemProperty jdk.module.main}</th>
      *     <td>The module name of the initial/main module</td></tr>
-     * <tr><th scope="row">{@code jdk.module.main.class}</th>
+     * <tr><th scope="row">{@systemProperty jdk.module.main.class}</th>
      *     <td>The main class name of the initial module</td></tr>
      * </tbody>
      * </table>
--- a/src/java.base/share/classes/java/net/URL.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.base/share/classes/java/net/URL.java	Wed Nov 21 13:53:17 2018 -0500
@@ -1393,39 +1393,39 @@
             }
         }
 
-        synchronized (streamHandlerLock) {
-            if (handler == null) {
-                // Try the built-in protocol handler
-                handler = defaultFactory.createURLStreamHandler(protocol);
-            } else {
-                URLStreamHandler handler2 = null;
-
-                // Check again with hashtable just in case another
-                // thread created a handler since we last checked
-                handler2 = handlers.get(protocol);
+        if (handler == null) {
+            // Try the built-in protocol handler
+            handler = defaultFactory.createURLStreamHandler(protocol);
+        }
 
-                if (handler2 != null) {
-                    return handler2;
-                }
+        synchronized (streamHandlerLock) {
+            URLStreamHandler handler2 = null;
 
-                // Check with factory if another thread set a
-                // factory since our last check
-                if (!checkedWithFactory && (fac = factory) != null) {
-                    handler2 = fac.createURLStreamHandler(protocol);
-                }
+            // Check again with hashtable just in case another
+            // thread created a handler since we last checked
+            handler2 = handlers.get(protocol);
 
-                if (handler2 != null) {
-                    // The handler from the factory must be given more
-                    // importance. Discard the default handler that
-                    // this thread created.
-                    handler = handler2;
-                }
+            if (handler2 != null) {
+                return handler2;
             }
 
-            // Insert this handler into the hashtable
-            if (handler != null) {
-                handlers.put(protocol, handler);
+            // Check with factory if another thread set a
+            // factory since our last check
+            if (!checkedWithFactory && (fac = factory) != null) {
+                handler2 = fac.createURLStreamHandler(protocol);
             }
+
+            if (handler2 != null) {
+                // The handler from the factory must be given more
+                // importance. Discard the default handler that
+                // this thread created.
+                handler = handler2;
+            }
+        }
+
+        // Insert this handler into the hashtable
+        if (handler != null) {
+            handlers.put(protocol, handler);
         }
 
         return handler;
--- a/src/java.base/share/classes/java/security/Security.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.base/share/classes/java/security/Security.java	Wed Nov 21 13:53:17 2018 -0500
@@ -30,6 +30,8 @@
 import java.io.*;
 import java.net.URL;
 
+import jdk.internal.event.EventHelper;
+import jdk.internal.event.SecurityPropertyModificationEvent;
 import jdk.internal.access.SharedSecrets;
 import jdk.internal.util.StaticProperty;
 import sun.security.util.Debug;
@@ -792,9 +794,19 @@
      * @see java.security.SecurityPermission
      */
     public static void setProperty(String key, String datum) {
-        check("setProperty."+key);
+        check("setProperty." + key);
         props.put(key, datum);
         invalidateSMCache(key);  /* See below. */
+
+        SecurityPropertyModificationEvent spe = new SecurityPropertyModificationEvent();
+        // following is a no-op if event is disabled
+        spe.key = key;
+        spe.value = datum;
+        spe.commit();
+
+        if (EventHelper.isLoggingSecurity()) {
+            EventHelper.logSecurityPropertyEvent(key, datum);
+        }
     }
 
     /*
--- a/src/java.base/share/classes/javax/crypto/Cipher.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.base/share/classes/javax/crypto/Cipher.java	Wed Nov 21 13:53:17 2018 -0500
@@ -1183,21 +1183,6 @@
         }
     }
 
-    private static String getOpmodeString(int opmode) {
-        switch (opmode) {
-            case ENCRYPT_MODE:
-                return "encryption";
-            case DECRYPT_MODE:
-                return "decryption";
-            case WRAP_MODE:
-                return "key wrapping";
-            case UNWRAP_MODE:
-                return "key unwrapping";
-            default:
-                return "";
-        }
-    }
-
     /**
      * Initializes this cipher with a key.
      *
@@ -1325,9 +1310,7 @@
         this.opmode = opmode;
 
         if (!skipDebug && pdebug != null) {
-            pdebug.println("Cipher." + transformation + " " +
-                getOpmodeString(opmode) + " algorithm from: " +
-                getProviderName());
+            pdebug.println(this.toString());
         }
     }
 
@@ -1468,9 +1451,7 @@
         this.opmode = opmode;
 
         if (!skipDebug && pdebug != null) {
-            pdebug.println("Cipher." + transformation + " " +
-                getOpmodeString(opmode) + " algorithm from: " +
-                getProviderName());
+            pdebug.println(this.toString());
         }
     }
 
@@ -1611,9 +1592,7 @@
         this.opmode = opmode;
 
         if (!skipDebug && pdebug != null) {
-            pdebug.println("Cipher." + transformation + " " +
-                getOpmodeString(opmode) + " algorithm from: " +
-                getProviderName());
+            pdebug.println(this.toString());
         }
     }
 
@@ -1688,8 +1667,7 @@
 
     /**
      * Initializes this cipher with the public key from the given certificate
-     * and
-     * a source of randomness.
+     * and a source of randomness.
      *
      * <p>The cipher is initialized for one of the following four operations:
      * encryption, decryption, key wrapping
@@ -1757,8 +1735,7 @@
         initialized = false;
         checkOpmode(opmode);
 
-        // Check key usage if the certificate is of
-        // type X.509.
+        // Check key usage if the certificate is of type X.509.
         if (certificate instanceof java.security.cert.X509Certificate) {
             // Check whether the cert has a key usage extension
             // marked as a critical extension.
@@ -1801,9 +1778,7 @@
         this.opmode = opmode;
 
         if (!skipDebug && pdebug != null) {
-            pdebug.println("Cipher." + transformation + " " +
-                getOpmodeString(opmode) + " algorithm from: " +
-                getProviderName());
+            pdebug.println(this.toString());
         }
     }
 
@@ -2825,4 +2800,44 @@
         }
         spi.engineUpdateAAD(src);
     }
-}
+
+    /**
+     * Returns a String representation of this Cipher.
+     *
+     * @implNote
+     * This implementation returns a String containing the transformation,
+     * mode, and provider of this Cipher.
+     * The exact format of the String is unspecified and is subject to change.
+     *
+     * @return a String describing this Cipher
+     */
+    @Override
+    public String toString() {
+        final StringBuilder sb = new StringBuilder();
+        sb.append("Cipher.")
+                .append(transformation)
+                .append(", mode: ");
+        switch (opmode) {
+            case 0:
+                sb.append("not initialized");
+                break;
+            case ENCRYPT_MODE:
+                sb.append("encryption");
+                break;
+            case DECRYPT_MODE:
+                sb.append("decryption");
+                break;
+            case WRAP_MODE:
+                sb.append("key wrapping");
+                break;
+            case UNWRAP_MODE:
+                sb.append("key unwrapping");
+                break;
+            default:
+                // should never happen
+                sb.append("error:").append(Integer.toString(opmode));
+        }
+        sb.append(", algorithm from: ").append(getProviderName());
+        return sb.toString();
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.base/share/classes/jdk/internal/event/EventHelper.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.internal.event;
+
+import java.time.Duration;
+import java.time.Instant;
+import java.util.Date;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
+/**
+ * A helper class to have events logged to a JDK Event Logger.
+ */
+
+public final class EventHelper {
+
+    private static final System.Logger.Level LOG_LEVEL = System.Logger.Level.DEBUG;
+
+    // helper class used for logging security related events for now
+    private static final String SECURITY_LOGGER_NAME = "jdk.event.security";
+    private static final System.Logger SECURITY_LOGGER =
+            System.getLogger(SECURITY_LOGGER_NAME);
+    private static final boolean LOGGING_SECURITY =
+            SECURITY_LOGGER.isLoggable(LOG_LEVEL);
+
+    public static void logTLSHandshakeEvent(Instant start,
+                                            String peerHost,
+                                            int peerPort,
+                                            String cipherSuite,
+                                            String protocolVersion,
+                                            long peerCertId) {
+        String prepend = getDurationString(start);
+        SECURITY_LOGGER.log(LOG_LEVEL, prepend +
+        " TLSHandshake: {0}:{1,number,#}, {2}, {3}, {4,number,#}",
+        peerHost, peerPort, protocolVersion, cipherSuite, peerCertId);
+    }
+
+    public static void logSecurityPropertyEvent(String key,
+                                                String value) {
+
+        if (isLoggingSecurity()) {
+            SECURITY_LOGGER.log(LOG_LEVEL,
+                "SecurityPropertyModification: key:{0}, value:{1}", key, value);
+        }
+    }
+
+    public static void logX509ValidationEvent(int anchorCertId,
+                                         int[] certIds) {
+        String codes = IntStream.of(certIds)
+                .mapToObj(Integer::toString)
+                .collect(Collectors.joining(", "));
+        SECURITY_LOGGER.log(LOG_LEVEL,
+                "ValidationChain: {0,number,#}, {1}", anchorCertId, codes);
+    }
+
+    public static void logX509CertificateEvent(String algId,
+                                               String serialNum,
+                                               String subject,
+                                               String issuer,
+                                               String keyType,
+                                               int length,
+                                               long certId,
+                                               long beginDate,
+                                               long endDate) {
+        SECURITY_LOGGER.log(LOG_LEVEL, "X509Certificate: Alg:{0}, Serial:{1}" +
+            ", Subject:{2}, Issuer:{3}, Key type:{4}, Length:{5,number,#}" +
+            ", Cert Id:{6,number,#}, Valid from:{7}, Valid until:{8}",
+            algId, serialNum, subject, issuer, keyType, length,
+            certId, new Date(beginDate), new Date(endDate));
+    }
+
+    /**
+     * Method to calculate a duration timestamp for events which measure
+     * the start and end times of certain operations.
+     * @param start Instant indicating when event started recording
+     * @return A string representing duraction from start time to
+     * time of this method call. Empty string is start is null.
+     */
+    private static String getDurationString(Instant start) {
+        if (start != null) {
+            Duration duration = Duration.between(start, Instant.now());
+            long micros = duration.toNanos() / 1_000;
+            if (micros < 1_000_000) {
+                return "duration = " + (micros / 1_000.0) + " ms:";
+            } else {
+                return "duration = " + ((micros / 1_000) / 1_000.0) + " s:";
+            }
+        } else {
+            return "";
+        }
+    }
+
+    /**
+     * Helper to determine if security events are being logged
+     * at a preconfigured logging level. The configuration value
+     * is read once at class initialization.
+     *
+     * @return boolean indicating whether an event should be logged
+     */
+    public static boolean isLoggingSecurity() {
+        return LOGGING_SECURITY;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.base/share/classes/jdk/internal/event/SecurityPropertyModificationEvent.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.internal.event;
+
+/**
+ * Event details relating to the modification of a Security property.
+ */
+
+public final class SecurityPropertyModificationEvent extends Event {
+    public String key;
+    public String value;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.base/share/classes/jdk/internal/event/TLSHandshakeEvent.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.internal.event;
+
+/**
+ * Event recording details of successful TLS handshakes.
+ */
+
+public final class TLSHandshakeEvent extends Event {
+    public String peerHost;
+    public int peerPort;
+    public String protocolVersion;
+    public String cipherSuite;
+    public long certificateId;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.base/share/classes/jdk/internal/event/X509CertificateEvent.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.internal.event;
+
+
+/**
+ * Event recording details of X.509 Certificate.
+ */
+
+public final class X509CertificateEvent extends Event {
+    public String algorithm;
+    public String serialNumber;
+    public String subject;
+    public String issuer;
+    public String keyType;
+    public int keyLength;
+    public long certificateId;
+    public long validFrom;
+    public long validUntil;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.base/share/classes/jdk/internal/event/X509ValidationEvent.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.internal.event;
+
+/**
+ * Event recording details of X.509 Certificate serial numbers
+ * used in X509 cert path validation.
+ */
+
+public final class X509ValidationEvent extends Event {
+    public long certificateId;
+    public int certificatePosition;
+    public long validationCounter;
+}
--- a/src/java.base/share/classes/sun/security/provider/X509Factory.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.base/share/classes/sun/security/provider/X509Factory.java	Wed Nov 21 13:53:17 2018 -0500
@@ -26,12 +26,15 @@
 package sun.security.provider;
 
 import java.io.*;
+import java.security.PublicKey;
 import java.util.*;
 import java.security.cert.*;
 
+import jdk.internal.event.EventHelper;
+import jdk.internal.event.X509CertificateEvent;
+import sun.security.util.KeyUtil;
 import sun.security.util.Pem;
-import sun.security.x509.X509CertImpl;
-import sun.security.x509.X509CRLImpl;
+import sun.security.x509.*;
 import sun.security.pkcs.PKCS7;
 import sun.security.provider.certpath.X509CertPath;
 import sun.security.provider.certpath.X509CertificatePair;
@@ -101,6 +104,8 @@
                 }
                 cert = new X509CertImpl(encoding);
                 addToCache(certCache, cert.getEncodedInternal(), cert);
+                // record cert details if necessary
+                commitEvent(cert);
                 return cert;
             } else {
                 throw new IOException("Empty input");
@@ -762,4 +767,43 @@
         }
         return tag;
     }
+
+    private void commitEvent(X509CertImpl info) {
+        X509CertificateEvent xce = new X509CertificateEvent();
+        if (xce.shouldCommit() || EventHelper.isLoggingSecurity()) {
+            PublicKey pKey = info.getPublicKey();
+            String algId = info.getSigAlgName();
+            String serNum = info.getSerialNumber().toString(16);
+            String subject = info.getSubjectDN().getName();
+            String issuer = info.getIssuerDN().getName();
+            String keyType = pKey.getAlgorithm();
+            int length = KeyUtil.getKeySize(pKey);
+            int hashCode = info.hashCode();
+            long beginDate = info.getNotBefore().getTime();
+            long endDate = info.getNotAfter().getTime();
+            if (xce.shouldCommit()) {
+                xce.algorithm = algId;
+                xce.serialNumber = serNum;
+                xce.subject = subject;
+                xce.issuer = issuer;
+                xce.keyType = keyType;
+                xce.keyLength = length;
+                xce.certificateId = hashCode;
+                xce.validFrom = beginDate;
+                xce.validUntil = endDate;
+                xce.commit();
+            }
+            if (EventHelper.isLoggingSecurity()) {
+                EventHelper.logX509CertificateEvent(algId,
+                        serNum,
+                        subject,
+                        issuer,
+                        keyType,
+                        length,
+                        hashCode,
+                        beginDate,
+                        endDate);
+            }
+        }
+    }
 }
--- a/src/java.base/share/classes/sun/security/provider/certpath/PKIXCertPathValidator.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.base/share/classes/sun/security/provider/certpath/PKIXCertPathValidator.java	Wed Nov 21 13:53:17 2018 -0500
@@ -29,7 +29,10 @@
 import java.security.InvalidAlgorithmParameterException;
 import java.security.cert.*;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicLong;
 
+import jdk.internal.event.X509ValidationEvent;
+import jdk.internal.event.EventHelper;
 import sun.security.provider.certpath.PKIX.ValidatorParams;
 import sun.security.validator.Validator;
 import sun.security.x509.X509CertImpl;
@@ -47,6 +50,7 @@
 public final class PKIXCertPathValidator extends CertPathValidatorSpi {
 
     private static final Debug debug = Debug.getInstance("certpath");
+    private static final AtomicLong validationCounter = new AtomicLong();
 
     /**
      * Default constructor.
@@ -234,7 +238,33 @@
                                              params.certificates(),
                                              certPathCheckers);
 
+        X509ValidationEvent xve = new X509ValidationEvent();
+        if (xve.shouldCommit() || EventHelper.isLoggingSecurity()) {
+            int[] certIds = params.certificates().stream()
+                    .mapToInt(x -> x.hashCode())
+                    .toArray();
+            int anchorCertId =
+                    anchor.getTrustedCert().hashCode();
+            if (xve.shouldCommit()) {
+                xve.certificateId = anchorCertId;
+                int certificatePos = 1; //anchor cert
+                xve.certificatePosition = certificatePos;
+                xve.validationCounter = validationCounter.incrementAndGet();
+                xve.commit();
+                // now, iterate through remaining
+                for (int id : certIds) {
+                    xve.certificateId = id;
+                    xve.certificatePosition = ++certificatePos;
+                    xve.commit();
+
+                }
+            }
+            if (EventHelper.isLoggingSecurity()) {
+                EventHelper.logX509ValidationEvent(anchorCertId, certIds);
+            }
+        }
         return new PKIXCertPathValidatorResult(anchor, pc.getPolicyTree(),
                                                bc.getPublicKey());
     }
+
 }
--- a/src/java.base/share/classes/sun/security/ssl/Finished.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.base/share/classes/sun/security/ssl/Finished.java	Wed Nov 21 13:53:17 2018 -0500
@@ -40,6 +40,10 @@
 import javax.crypto.SecretKey;
 import javax.crypto.spec.IvParameterSpec;
 import javax.crypto.spec.SecretKeySpec;
+import javax.net.ssl.SSLPeerUnverifiedException;
+
+import jdk.internal.event.EventHelper;
+import jdk.internal.event.TLSHandshakeEvent;
 import sun.security.internal.spec.TlsPrfParameterSpec;
 import sun.security.ssl.CipherSuite.HashAlg;
 import static sun.security.ssl.CipherSuite.HashAlg.H_NONE;
@@ -548,6 +552,7 @@
 
                 // handshake context cleanup.
                 chc.handshakeFinished = true;
+                recordEvent(chc.conContext.conSession);
 
                 // May need to retransmit the last flight for DTLS.
                 if (!chc.sslContext.isDTLS()) {
@@ -597,6 +602,7 @@
 
                 // handshake context cleanup.
                 shc.handshakeFinished = true;
+                recordEvent(shc.conContext.conSession);
 
                 // May need to retransmit the last flight for DTLS.
                 if (!shc.sslContext.isDTLS()) {
@@ -730,6 +736,8 @@
             // handshake context cleanup.
             chc.handshakeFinished = true;
             chc.conContext.finishHandshake();
+            recordEvent(chc.conContext.conSession);
+
 
             // The handshake message has been delivered.
             return null;
@@ -1063,6 +1071,7 @@
             if (!shc.sslContext.isDTLS()) {
                 shc.conContext.finishHandshake();
             }
+            recordEvent(shc.conContext.conSession);
 
             //
             // produce
@@ -1074,4 +1083,35 @@
 
         }
     }
+
+    private static void recordEvent(SSLSessionImpl session) {
+        TLSHandshakeEvent event = new TLSHandshakeEvent();
+        if (event.shouldCommit() || EventHelper.isLoggingSecurity()) {
+            int peerCertificateId = 0;
+            try {
+                // use hash code for Id
+                peerCertificateId = session
+                        .getCertificateChain()[0]
+                        .hashCode();
+            } catch (SSLPeerUnverifiedException e) {
+                 // not verified msg
+            }
+            if (event.shouldCommit()) {
+                event.peerHost = session.getPeerHost();
+                event.peerPort = session.getPeerPort();
+                event.cipherSuite = session.getCipherSuite();
+                event.protocolVersion = session.getProtocol();
+                event.certificateId = peerCertificateId;
+                event.commit();
+            }
+            if (EventHelper.isLoggingSecurity()) {
+                EventHelper.logTLSHandshakeEvent(null,
+                                session.getPeerHost(),
+                                session.getPeerPort(),
+                                session.getCipherSuite(),
+                                session.getProtocol(),
+                                peerCertificateId);
+            }
+        }
+    }
 }
--- a/src/java.base/share/classes/sun/text/normalizer/ICUBinary.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.base/share/classes/sun/text/normalizer/ICUBinary.java	Wed Nov 21 13:53:17 2018 -0500
@@ -86,12 +86,47 @@
                 }
             })) {
 
-            BufferedInputStream b=new BufferedInputStream(is, 4096 /* data buffer size */);
-            DataInputStream inputStream = new DataInputStream(b);
-            byte[] bb = new byte[130000];
-            int n = inputStream.read(bb);
-            ByteBuffer bytes = ByteBuffer.wrap(bb, 0, n);
-            return bytes;
+            // is.available() may return 0, or 1, or the total number of bytes in the stream,
+            // or some other number.
+            // Do not try to use is.available() == 0 to find the end of the stream!
+            byte[] bytes;
+            int avail = is.available();
+            if (avail > 32) {
+                // There are more bytes available than just the ICU data header length.
+                // With luck, it is the total number of bytes.
+                bytes = new byte[avail];
+            } else {
+                bytes = new byte[128];  // empty .res files are even smaller
+            }
+            // Call is.read(...) until one returns a negative value.
+            int length = 0;
+            for(;;) {
+                if (length < bytes.length) {
+                    int numRead = is.read(bytes, length, bytes.length - length);
+                    if (numRead < 0) {
+                        break;  // end of stream
+                    }
+                    length += numRead;
+                } else {
+                    // See if we are at the end of the stream before we grow the array.
+                    int nextByte = is.read();
+                    if (nextByte < 0) {
+                        break;
+                    }
+                    int capacity = 2 * bytes.length;
+                    if (capacity < 128) {
+                        capacity = 128;
+                    } else if (capacity < 0x4000) {
+                        capacity *= 2;  // Grow faster until we reach 16kB.
+                    }
+                    // TODO Java 6 replace new byte[] and arraycopy(): bytes = Arrays.copyOf(bytes, capacity);
+                    byte[] newBytes = new byte[capacity];
+                    System.arraycopy(bytes, 0, newBytes, 0, length);
+                    bytes = newBytes;
+                    bytes[length++] = (byte) nextByte;
+                }
+           }
+            return ByteBuffer.wrap(bytes, 0, length);
         }
         catch (IOException e) {
             throw new UncheckedIOException(e);
Binary file src/java.base/share/classes/sun/text/resources/nfc.icu has changed
Binary file src/java.base/share/classes/sun/text/resources/nfkc.icu has changed
Binary file src/java.base/share/classes/sun/text/resources/nfkc_cf.icu has changed
Binary file src/java.base/share/classes/sun/text/resources/ubidi.icu has changed
Binary file src/java.base/share/classes/sun/text/resources/uprops.icu has changed
--- a/src/java.base/share/legal/icu.md	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.base/share/legal/icu.md	Wed Nov 21 13:53:17 2018 -0500
@@ -1,4 +1,4 @@
-## International Components for Unicode (ICU4J) v60.2
+## International Components for Unicode (ICU4J) v62.1
 
 ### ICU4J License
 
--- a/src/java.base/share/legal/unicode.md	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.base/share/legal/unicode.md	Wed Nov 21 13:53:17 2018 -0500
@@ -1,4 +1,4 @@
-## The Unicode Standard, Unicode Character Database, Version 10.0.0
+## The Unicode Standard, Unicode Character Database, Version 11.0.0
 
 ### Unicode Character Database
 
--- a/src/java.desktop/share/classes/java/awt/font/NumericShaper.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.desktop/share/classes/java/awt/font/NumericShaper.java	Wed Nov 21 13:53:17 2018 -0500
@@ -649,8 +649,6 @@
         0x0483, 0x048a,
         0x0530, 0x0531,
         0x0557, 0x0559,
-        0x0560, 0x0561,
-        0x0588, 0x0589,
         0x058a, 0x0590,
         0x0591, 0x05be,
         0x05bf, 0x05c0,
@@ -671,6 +669,7 @@
         0x07a6, 0x07b1,
         0x07eb, 0x07f4,
         0x07f6, 0x07fa,
+        0x07fd, 0x07fe,
         0x0816, 0x081a,
         0x081b, 0x0824,
         0x0825, 0x0828,
@@ -713,7 +712,8 @@
         0x0a5d, 0x0a5e,
         0x0a5f, 0x0a66,
         0x0a70, 0x0a72,
-        0x0a75, 0x0a83,
+        0x0a75, 0x0a76,
+        0x0a73, 0x0a83,
         0x0a84, 0x0a85,
         0x0a8e, 0x0a8f,
         0x0a92, 0x0a93,
@@ -771,7 +771,6 @@
         0x0c62, 0x0c66,
         0x0c70, 0x0c7f,
         0x0c81, 0x0c82,
-        0x0c84, 0x0c85,
         0x0c8d, 0x0c8e,
         0x0c91, 0x0c92,
         0x0ca9, 0x0caa,
@@ -890,7 +889,7 @@
         0x17dd, 0x17e0,
         0x17ea, 0x1810,
         0x181a, 0x1820,
-        0x1878, 0x1884,
+        0x1879, 0x1884,
         0x1885, 0x1887,
         0x18a9, 0x18aa,
         0x18ab, 0x18b0,
@@ -933,6 +932,8 @@
         0x1c2c, 0x1c34,
         0x1c36, 0x1c3b,
         0x1c4a, 0x1c4d,
+        0x1c89, 0x1c90,
+        0x1cbb, 0x1cbd,
         0x1cc8, 0x1cd3,
         0x1cd4, 0x1ce1,
         0x1ce2, 0x1ce9,
@@ -1010,7 +1011,7 @@
         0x30a0, 0x30a1,
         0x30fb, 0x30fc,
         0x3100, 0x3105,
-        0x312f, 0x3131,
+        0x3130, 0x3131,
         0x318f, 0x3190,
         0x31bb, 0x31f0,
         0x321d, 0x3220,
@@ -1023,7 +1024,7 @@
         0x33de, 0x33e0,
         0x33ff, 0x3400,
         0x4db6, 0x4e00,
-        0x9feb, 0xa000,
+        0x9ff0, 0xa000,
         0xa48d, 0xa4d0,
         0xa60d, 0xa610,
         0xa62c, 0xa640,
@@ -1032,8 +1033,7 @@
         0xa6f0, 0xa6f2,
         0xa6f8, 0xa722,
         0xa788, 0xa789,
-        0xa7af, 0xa7b0,
-        0xa7b8, 0xa7f7,
+        0xa7ba, 0xa7f7,
         0xa802, 0xa803,
         0xa806, 0xa807,
         0xa80b, 0xa80c,
@@ -1043,7 +1043,7 @@
         0xa874, 0xa880,
         0xa8c4, 0xa8ce,
         0xa8da, 0xa8f2,
-        0xa8fe, 0xa900,
+        0xa8ff, 0xa900,
         0xa926, 0xa92e,
         0xa947, 0xa952,
         0xa954, 0xa95f,
@@ -1141,23 +1141,26 @@
         0x10a3f, 0x10a40,
         0x10ae5, 0x10ae7,
         0x10b39, 0x10b40,
+        0x10d00, 0x10d40,
         0x10e60, 0x10e7f,
+        0x10f30, 0x10f70,
         0x11001, 0x11002,
         0x11038, 0x11047,
         0x1104e, 0x11066,
         0x11070, 0x11082,
         0x110b3, 0x110b7,
         0x110b9, 0x110bb,
-        0x110c2, 0x110d0,
+        0x110c2, 0x110cd,
+        0x110ce, 0x110d0,
         0x110e9, 0x110f0,
         0x110fa, 0x11103,
         0x11127, 0x1112c,
         0x1112d, 0x11136,
-        0x11144, 0x11150,
+        0x11147, 0x11150,
         0x11173, 0x11174,
         0x11177, 0x11182,
         0x111b6, 0x111bf,
-        0x111ca, 0x111cd,
+        0x111c9, 0x111cd,
         0x111ce, 0x111d0,
         0x111e0, 0x111e1,
         0x111f5, 0x11200,
@@ -1214,10 +1217,12 @@
         0x116b0, 0x116b6,
         0x116b7, 0x116c0,
         0x116ca, 0x11700,
-        0x1171a, 0x11720,
+        0x1171b, 0x11720,
         0x11722, 0x11726,
         0x11727, 0x11730,
-        0x11740, 0x118a0,
+        0x1182f, 0x11838,
+        0x11839, 0x1183b,
+        0x1183c, 0x118a0,
         0x118f3, 0x118ff,
         0x11900, 0x11a00,
         0x11a01, 0x11a07,
@@ -1230,10 +1235,9 @@
         0x11a84, 0x11a86,
         0x11a8a, 0x11a97,
         0x11a98, 0x11a9a,
-        0x11a9d, 0x11a9e,
         0x11aa3, 0x11ac0,
-        0x11af9, 0x11C00,
-        0x11C09, 0x11c0a,
+        0x11af9, 0x11c00,
+        0x11c09, 0x11c0a,
         0x11c30, 0x11c3e,
         0x11c46, 0x11c50,
         0x11c6d, 0x11c70,
@@ -1245,7 +1249,16 @@
         0x11d0a, 0x11d0b,
         0x11d31, 0x11d46,
         0x11d47, 0x11d50,
-        0x11d5a, 0x12000,
+        0x11d5a, 0x11d60,
+        0x11d66, 0x11d67,
+        0x11d69, 0x11d6a,
+        0x11d8f, 0x11d93,
+        0x11d95, 0x11d96,
+        0x11d97, 0x11d98,
+        0x11d99, 0x11da0,
+        0x11daa, 0x11ee0,
+        0x11ef3, 0x11ef5,
+        0x11ef9, 0x12000,
         0x1239a, 0x12400,
         0x1246f, 0x12470,
         0x12475, 0x12480,
@@ -1263,12 +1276,13 @@
         0x16b5a, 0x16b5b,
         0x16b62, 0x16b63,
         0x16b78, 0x16b7d,
-        0x16b90, 0x16f00,
+        0x16b90, 0x16e40,
+        0x16e9b, 0x16f00,
         0x16f45, 0x16f50,
         0x16f7f, 0x16f93,
         0x16fa0, 0x16fe0,
         0x16fe2, 0x17000,
-        0x187ed, 0x18800,
+        0x187f2, 0x18800,
         0x18af3, 0x1b000,
         0x1b11f, 0x1b170,
         0x1b2fc, 0x1bc00,
@@ -1284,8 +1298,9 @@
         0x1d173, 0x1d183,
         0x1d185, 0x1d18c,
         0x1d1aa, 0x1d1ae,
-        0x1d1e9, 0x1d360,
-        0x1d372, 0x1d400,
+        0x1d1e9, 0x1d2e0,
+        0x1d2f4, 0x1d360,
+        0x1d379, 0x1d400,
         0x1d455, 0x1d456,
         0x1d49d, 0x1d49e,
         0x1d4a0, 0x1d4a2,
@@ -1318,7 +1333,8 @@
         0x1da8c, 0x1e800,
         0x1e8d0, 0x1e8d7,
         0x1e944, 0x1e94b,
-        0x1eef0, 0x1eef2,
+        0x1ec70, 0x1ecc0,
+        0x1ee00, 0x1ef00,
         0x1f000, 0x1f110,
         0x1f12f, 0x1f130,
         0x1f16a, 0x1f170,
--- a/src/java.desktop/share/native/common/awt/debug/debug_assert.c	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.desktop/share/native/common/awt/debug/debug_assert.c	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,7 +33,9 @@
 
 static DASSERT_CALLBACK PfnAssertCallback = NULL;
 
-void DAssert_Impl(const char *msg, const char * filename, int linenumber) {
+/* JNIEXPORT because this function is also called from libawt_xawt */
+JNIEXPORT void JNICALL
+DAssert_Impl(const char *msg, const char * filename, int linenumber) {
     if (PfnAssertCallback != NULL) {
         (*PfnAssertCallback)(msg, filename, linenumber);
     } else {
--- a/src/java.desktop/share/native/common/awt/debug/debug_assert.h	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.desktop/share/native/common/awt/debug/debug_assert.h	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -54,7 +54,8 @@
 /* prototype for assert function */
 typedef void (*DASSERT_CALLBACK)(const char * msg, const char * file, int line);
 
-extern void DAssert_Impl(const char * msg, const char * file, int line);
+/* JNIEXPORT because this function is also called from libawt_xawt */
+JNIEXPORT void JNICALL DAssert_Impl(const char * msg, const char * file, int line);
 extern void DAssert_SetCallback( DASSERT_CALLBACK pfn );
 
 #else /* DEBUG not defined */
--- a/src/java.desktop/share/native/common/awt/debug/debug_trace.c	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.desktop/share/native/common/awt/debug/debug_trace.c	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -237,16 +237,20 @@
 
 /*
  * Called via DTRACE_PRINT macro. Outputs printf style formatted text.
+ * JNIEXPORT because these functions are also called from libawt_xawt.
  */
-void DTrace_VPrint( const char * file, int line, int argc, const char * fmt, va_list arglist ) {
+JNIEXPORT void JNICALL
+DTrace_VPrint( const char * file, int line, int argc, const char * fmt, va_list arglist ) {
     DASSERT(fmt != NULL);
     DTrace_VPrintImpl(fmt, arglist);
 }
 
 /*
  * Called via DTRACE_PRINTLN macro. Outputs printf style formatted text with an automatic newline.
+ * JNIEXPORT because these functions are also called from libawt_xawt.
  */
-void DTrace_VPrintln( const char * file, int line, int argc, const char * fmt, va_list arglist ) {
+JNIEXPORT void JNICALL
+DTrace_VPrintln( const char * file, int line, int argc, const char * fmt, va_list arglist ) {
     DTrace_VPrintImpl(fmt, arglist);
     DTrace_PrintImpl("\n");
 }
@@ -254,10 +258,12 @@
 /*
  * Called via DTRACE_ macros. If tracing is enabled at the given location, it enters
  * the trace mutex and invokes the callback function to output the trace.
+ * JNIEXPORT because these functions are also called from libawt_xawt.
  */
-void DTrace_PrintFunction( DTRACE_PRINT_CALLBACK pfn, dtrace_id * pFileTraceId, dtrace_id * pLineTraceId,
-                           const char * file, int line,
-                           int argc, const char * fmt, ... ) {
+JNIEXPORT void JNICALL
+DTrace_PrintFunction( DTRACE_PRINT_CALLBACK pfn, dtrace_id * pFileTraceId, dtrace_id * pLineTraceId,
+                      const char * file, int line,
+                      int argc, const char * fmt, ... ) {
     va_list     arglist;
 
     DASSERT(file != NULL);
--- a/src/java.desktop/share/native/common/awt/debug/debug_trace.h	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/java.desktop/share/native/common/awt/debug/debug_trace.h	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -59,11 +59,12 @@
 void DTrace_DisableMutex();
 extern void DTrace_VPrintImpl(const char * fmt, va_list arglist);
 extern void DTrace_PrintImpl(const char * fmt, ...);
-extern void DTrace_PrintFunction(DTRACE_PRINT_CALLBACK pfn, dtrace_id * pFileTraceId, dtrace_id * pTraceId, const char * file, int line, int argc, const char * fmt, ...);
+/* JNIEXPORT because these functions are also called from libawt_xawt */
+JNIEXPORT void JNICALL DTrace_PrintFunction(DTRACE_PRINT_CALLBACK pfn, dtrace_id * pFileTraceId, dtrace_id * pTraceId, const char * file, int line, int argc, const char * fmt, ...);
 
 /* these functions are exported only for use in macros-- do not call them directly!!! */
-extern void DTrace_VPrint(const char * file, int line, int argc, const char * fmt, va_list arglist);
-extern void DTrace_VPrintln(const char * file, int line, int argc, const char * fmt, va_list arglist);
+JNIEXPORT void JNICALL DTrace_VPrint(const char * file, int line, int argc, const char * fmt, va_list arglist);
+JNIEXPORT void JNICALL DTrace_VPrintln(const char * file, int line, int argc, const char * fmt, va_list arglist);
 
 /* each file includes this flag indicating module trace status */
 static dtrace_id        _Dt_FileTraceId = UNDEFINED_TRACE_ID;
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java	Wed Nov 21 13:53:17 2018 -0500
@@ -172,7 +172,7 @@
             if (compiler == null || compiler.errorCount() == 0
                     || Options.instance(context).isSet("dev")) {
                 Log log = Log.instance(context);
-                log.printLines("msg.bug", JavaCompiler.version());
+                log.printLines(PrefixKind.JAVAC, "msg.bug", JavaCompiler.version());
                 ex.printStackTrace(log.getWriter(WriterKind.NOTICE));
             }
             return abnormalErrorResult;
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java	Wed Nov 21 13:53:17 2018 -0500
@@ -172,7 +172,7 @@
                             if (previous == null || previous == OverloadKind.ERROR) {
                                 t.setOverloadKind(overloadKind);
                             } else {
-                                Assert.check(previous == overloadKind);
+                                Assert.check(previous == overloadKind || overloadKind == OverloadKind.ERROR);
                             }
                         }
 
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java	Wed Nov 21 13:53:17 2018 -0500
@@ -357,9 +357,9 @@
         }
 
         /** Resolve all jumps of this statement. */
-        private boolean resolveJump(JCTree tree,
-                        ListBuffer<P> oldPendingExits,
-                        JumpKind jk) {
+        private Liveness resolveJump(JCTree tree,
+                         ListBuffer<P> oldPendingExits,
+                         JumpKind jk) {
             boolean resolved = false;
             List<P> exits = pendingExits.toList();
             pendingExits = oldPendingExits;
@@ -373,16 +373,16 @@
                     pendingExits.append(exit);
                 }
             }
-            return resolved;
+            return Liveness.from(resolved);
         }
 
         /** Resolve all continues of this statement. */
-        boolean resolveContinues(JCTree tree) {
+        Liveness resolveContinues(JCTree tree) {
             return resolveJump(tree, new ListBuffer<P>(), JumpKind.CONTINUE);
         }
 
         /** Resolve all breaks of this statement. */
-        boolean resolveBreaks(JCTree tree, ListBuffer<P> oldPendingExits) {
+        Liveness resolveBreaks(JCTree tree, ListBuffer<P> oldPendingExits) {
             return resolveJump(tree, oldPendingExits, JumpKind.BREAK);
         }
 
@@ -417,11 +417,11 @@
         /** A flag that indicates whether the last statement could
          *  complete normally.
          */
-        private boolean alive;
+        private Liveness alive;
 
         @Override
         void markDead() {
-            alive = false;
+            alive = Liveness.DEAD;
         }
 
     /*************************************************************************
@@ -432,7 +432,7 @@
          */
         void scanDef(JCTree tree) {
             scanStat(tree);
-            if (tree != null && tree.hasTag(JCTree.Tag.BLOCK) && !alive) {
+            if (tree != null && tree.hasTag(JCTree.Tag.BLOCK) && alive == Liveness.DEAD) {
                 log.error(tree.pos(),
                           Errors.InitializerMustBeAbleToCompleteNormally);
             }
@@ -441,9 +441,9 @@
         /** Analyze a statement. Check that statement is reachable.
          */
         void scanStat(JCTree tree) {
-            if (!alive && tree != null) {
+            if (alive == Liveness.DEAD && tree != null) {
                 log.error(tree.pos(), Errors.UnreachableStmt);
-                if (!tree.hasTag(SKIP)) alive = true;
+                if (!tree.hasTag(SKIP)) alive = Liveness.RECOVERY;
             }
             scan(tree);
         }
@@ -460,7 +460,7 @@
 
         public void visitClassDef(JCClassDecl tree) {
             if (tree.sym == null) return;
-            boolean alivePrev = alive;
+            Liveness alivePrev = alive;
             ListBuffer<PendingExit> pendingExitsPrev = pendingExits;
             Lint lintPrev = lint;
 
@@ -506,10 +506,10 @@
             Assert.check(pendingExits.isEmpty());
 
             try {
-                alive = true;
+                alive = Liveness.ALIVE;
                 scanStat(tree.body);
 
-                if (alive && !tree.sym.type.getReturnType().hasTag(VOID))
+                if (alive == Liveness.ALIVE && !tree.sym.type.getReturnType().hasTag(VOID))
                     log.error(TreeInfo.diagEndPos(tree.body), Errors.MissingRetStmt);
 
                 List<PendingExit> exits = pendingExits.toList();
@@ -544,21 +544,21 @@
             ListBuffer<PendingExit> prevPendingExits = pendingExits;
             pendingExits = new ListBuffer<>();
             scanStat(tree.body);
-            alive |= resolveContinues(tree);
+            alive = alive.or(resolveContinues(tree));
             scan(tree.cond);
-            alive = alive && !tree.cond.type.isTrue();
-            alive |= resolveBreaks(tree, prevPendingExits);
+            alive = alive.and(!tree.cond.type.isTrue());
+            alive = alive.or(resolveBreaks(tree, prevPendingExits));
         }
 
         public void visitWhileLoop(JCWhileLoop tree) {
             ListBuffer<PendingExit> prevPendingExits = pendingExits;
             pendingExits = new ListBuffer<>();
             scan(tree.cond);
-            alive = !tree.cond.type.isFalse();
+            alive = Liveness.from(!tree.cond.type.isFalse());
             scanStat(tree.body);
-            alive |= resolveContinues(tree);
-            alive = resolveBreaks(tree, prevPendingExits) ||
-                !tree.cond.type.isTrue();
+            alive = alive.or(resolveContinues(tree));
+            alive = resolveBreaks(tree, prevPendingExits).or(
+                !tree.cond.type.isTrue());
         }
 
         public void visitForLoop(JCForLoop tree) {
@@ -567,15 +567,15 @@
             pendingExits = new ListBuffer<>();
             if (tree.cond != null) {
                 scan(tree.cond);
-                alive = !tree.cond.type.isFalse();
+                alive = Liveness.from(!tree.cond.type.isFalse());
             } else {
-                alive = true;
+                alive = Liveness.ALIVE;
             }
             scanStat(tree.body);
-            alive |= resolveContinues(tree);
+            alive = alive.or(resolveContinues(tree));
             scan(tree.step);
-            alive = resolveBreaks(tree, prevPendingExits) ||
-                tree.cond != null && !tree.cond.type.isTrue();
+            alive = resolveBreaks(tree, prevPendingExits).or(
+                tree.cond != null && !tree.cond.type.isTrue());
         }
 
         public void visitForeachLoop(JCEnhancedForLoop tree) {
@@ -584,16 +584,16 @@
             scan(tree.expr);
             pendingExits = new ListBuffer<>();
             scanStat(tree.body);
-            alive |= resolveContinues(tree);
+            alive = alive.or(resolveContinues(tree));
             resolveBreaks(tree, prevPendingExits);
-            alive = true;
+            alive = Liveness.ALIVE;
         }
 
         public void visitLabelled(JCLabeledStatement tree) {
             ListBuffer<PendingExit> prevPendingExits = pendingExits;
             pendingExits = new ListBuffer<>();
             scanStat(tree.body);
-            alive |= resolveBreaks(tree, prevPendingExits);
+            alive = alive.or(resolveBreaks(tree, prevPendingExits));
         }
 
         public void visitSwitch(JCSwitch tree) {
@@ -602,7 +602,7 @@
             scan(tree.selector);
             boolean hasDefault = false;
             for (List<JCCase> l = tree.cases; l.nonEmpty(); l = l.tail) {
-                alive = true;
+                alive = Liveness.ALIVE;
                 JCCase c = l.head;
                 if (c.pats.isEmpty())
                     hasDefault = true;
@@ -612,13 +612,13 @@
                     }
                 }
                 scanStats(c.stats);
-                c.completesNormally = alive;
-                if (alive && c.caseKind == JCCase.RULE) {
+                c.completesNormally = alive != Liveness.DEAD;
+                if (alive != Liveness.DEAD && c.caseKind == JCCase.RULE) {
                     scanSyntheticBreak(make, tree);
-                    alive = false;
+                    alive = Liveness.DEAD;
                 }
                 // Warn about fall-through if lint switch fallthrough enabled.
-                if (alive &&
+                if (alive == Liveness.ALIVE &&
                     lint.isEnabled(Lint.LintCategory.FALLTHROUGH) &&
                     c.stats.nonEmpty() && l.tail.nonEmpty())
                     log.warning(Lint.LintCategory.FALLTHROUGH,
@@ -626,9 +626,9 @@
                                 Warnings.PossibleFallThroughIntoCase);
             }
             if (!hasDefault) {
-                alive = true;
+                alive = Liveness.ALIVE;
             }
-            alive |= resolveBreaks(tree, prevPendingExits);
+            alive = alive.or(resolveBreaks(tree, prevPendingExits));
         }
 
         @Override
@@ -644,9 +644,9 @@
                 }
             }
             boolean hasDefault = false;
-            boolean prevAlive = alive;
+            Liveness prevAlive = alive;
             for (List<JCCase> l = tree.cases; l.nonEmpty(); l = l.tail) {
-                alive = true;
+                alive = Liveness.ALIVE;
                 JCCase c = l.head;
                 if (c.pats.isEmpty())
                     hasDefault = true;
@@ -662,13 +662,22 @@
                     }
                 }
                 scanStats(c.stats);
-                c.completesNormally = alive;
+                if (alive == Liveness.ALIVE) {
+                    if (c.caseKind == JCCase.RULE) {
+                        log.error(TreeInfo.diagEndPos(c.body),
+                                  Errors.RuleCompletesNormally);
+                    } else if (l.tail.isEmpty()) {
+                        log.error(TreeInfo.diagEndPos(tree),
+                                  Errors.SwitchExpressionCompletesNormally);
+                    }
+                }
+                c.completesNormally = alive != Liveness.DEAD;
             }
             if ((constants == null || !constants.isEmpty()) && !hasDefault) {
                 log.error(tree, Errors.NotExhaustive);
             }
             alive = prevAlive;
-            alive |= resolveBreaks(tree, prevPendingExits);
+            alive = alive.or(resolveBreaks(tree, prevPendingExits));
         }
 
         public void visitTry(JCTry tree) {
@@ -686,22 +695,22 @@
             }
 
             scanStat(tree.body);
-            boolean aliveEnd = alive;
+            Liveness aliveEnd = alive;
 
             for (List<JCCatch> l = tree.catchers; l.nonEmpty(); l = l.tail) {
-                alive = true;
+                alive = Liveness.ALIVE;
                 JCVariableDecl param = l.head.param;
                 scan(param);
                 scanStat(l.head.body);
-                aliveEnd |= alive;
+                aliveEnd = aliveEnd.or(alive);
             }
             if (tree.finalizer != null) {
                 ListBuffer<PendingExit> exits = pendingExits;
                 pendingExits = prevPendingExits;
-                alive = true;
+                alive = Liveness.ALIVE;
                 scanStat(tree.finalizer);
-                tree.finallyCanCompleteNormally = alive;
-                if (!alive) {
+                tree.finallyCanCompleteNormally = alive != Liveness.DEAD;
+                if (alive == Liveness.DEAD) {
                     if (lint.isEnabled(Lint.LintCategory.FINALLY)) {
                         log.warning(Lint.LintCategory.FINALLY,
                                 TreeInfo.diagEndPos(tree.finalizer),
@@ -726,12 +735,12 @@
             scan(tree.cond);
             scanStat(tree.thenpart);
             if (tree.elsepart != null) {
-                boolean aliveAfterThen = alive;
-                alive = true;
+                Liveness aliveAfterThen = alive;
+                alive = Liveness.ALIVE;
                 scanStat(tree.elsepart);
-                alive = alive | aliveAfterThen;
+                alive = alive.or(aliveAfterThen);
             } else {
-                alive = true;
+                alive = Liveness.ALIVE;
             }
         }
 
@@ -776,12 +785,12 @@
             }
 
             ListBuffer<PendingExit> prevPending = pendingExits;
-            boolean prevAlive = alive;
+            Liveness prevAlive = alive;
             try {
                 pendingExits = new ListBuffer<>();
-                alive = true;
+                alive = Liveness.ALIVE;
                 scanStat(tree.body);
-                tree.canCompleteNormally = alive;
+                tree.canCompleteNormally = alive != Liveness.DEAD;
             }
             finally {
                 pendingExits = prevPending;
@@ -807,7 +816,7 @@
                 attrEnv = env;
                 Flow.this.make = make;
                 pendingExits = new ListBuffer<>();
-                alive = true;
+                alive = Liveness.ALIVE;
                 scan(tree);
             } finally {
                 pendingExits = null;
@@ -2776,4 +2785,58 @@
             }
         }
     }
+
+    enum Liveness {
+        ALIVE {
+            @Override
+            public Liveness or(Liveness other) {
+                return this;
+            }
+            @Override
+            public Liveness and(Liveness other) {
+                return other;
+            }
+        },
+        DEAD {
+            @Override
+            public Liveness or(Liveness other) {
+                return other;
+            }
+            @Override
+            public Liveness and(Liveness other) {
+                return this;
+            }
+        },
+        RECOVERY {
+            @Override
+            public Liveness or(Liveness other) {
+                if (other == ALIVE) {
+                    return ALIVE;
+                } else {
+                    return this;
+                }
+            }
+            @Override
+            public Liveness and(Liveness other) {
+                if (other == DEAD) {
+                    return DEAD;
+                } else {
+                    return this;
+                }
+            }
+        };
+
+        public abstract Liveness or(Liveness other);
+        public abstract Liveness and(Liveness other);
+        public Liveness or(boolean value) {
+            return or(from(value));
+        }
+        public Liveness and(boolean value) {
+            return and(from(value));
+        }
+        public static Liveness from(boolean value) {
+            return value ? ALIVE : DEAD;
+        }
+    }
+
 }
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java	Wed Nov 21 13:53:17 2018 -0500
@@ -1392,6 +1392,7 @@
                 case RBRACE: case EOF:
                     JCSwitchExpression e = to(F.at(switchPos).SwitchExpression(selector,
                                                                                cases.toList()));
+                    e.endpos = token.pos;
                     accept(RBRACE);
                     return e;
                 default:
@@ -3180,13 +3181,13 @@
         if (elemType.hasTag(IDENT)) {
             Name typeName = ((JCIdent)elemType).name;
             if (isRestrictedLocalVarTypeName(typeName, pos, !compound && localDecl)) {
-                if (compound) {
-                    //error - 'var' in compound local var decl
-                   reportSyntaxError(pos, Errors.VarNotAllowedCompound);
-                } else if (type.hasTag(TYPEARRAY)) {
+                if (type.hasTag(TYPEARRAY) && !compound) {
                     //error - 'var' and arrays
                     reportSyntaxError(pos, Errors.VarNotAllowedArray);
                 } else {
+                    if(compound)
+                        //error - 'var' in compound local var decl
+                        reportSyntaxError(pos, Errors.VarNotAllowedCompound);
                     startPos = TreeInfo.getStartPos(mods);
                     if (startPos == Position.NOPOS)
                         startPos = TreeInfo.getStartPos(type);
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties	Wed Nov 21 13:53:17 2018 -0500
@@ -200,6 +200,14 @@
 compiler.err.return.outside.switch.expression=\
     return outside of enclosing switch expression
 
+compiler.err.rule.completes.normally=\
+    switch rule completes without providing a value\n\
+    (switch rules in switch expressions must either provide a value or throw)
+
+compiler.err.switch.expression.completes.normally=\
+    switch expression completes without providing a value\n\
+    (switch expressions must either provide a value or throw for all possible input values)
+
 # 0: name
 compiler.err.break.ambiguous.target=\
     ambiguous reference to ''{0}''\n\
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java	Wed Nov 21 13:53:17 2018 -0500
@@ -1305,6 +1305,8 @@
     public static class JCSwitchExpression extends JCPolyExpression implements SwitchExpressionTree {
         public JCExpression selector;
         public List<JCCase> cases;
+        /** Position of closing brace, optional. */
+        public int endpos = Position.NOPOS;
         protected JCSwitchExpression(JCExpression selector, List<JCCase> cases) {
             this.selector = selector;
             this.cases = cases;
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeInfo.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeInfo.java	Wed Nov 21 13:53:17 2018 -0500
@@ -383,6 +383,9 @@
             JCTry t = (JCTry) tree;
             return endPos((t.finalizer != null) ? t.finalizer
                           : (t.catchers.nonEmpty() ? t.catchers.last().body : t.body));
+        } else if (tree.hasTag(SWITCH_EXPRESSION) &&
+                   ((JCSwitchExpression) tree).endpos != Position.NOPOS) {
+            return ((JCSwitchExpression) tree).endpos;
         } else
             return tree.pos;
     }
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlAttr.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlAttr.java	Wed Nov 21 13:53:17 2018 -0500
@@ -39,6 +39,10 @@
  */
 public enum HtmlAttr {
     ALT,
+    ARIA_CONTROLS("aria-controls"),
+    ARIA_LABELLEDBY("aria-labelledby"),
+    ARIA_ORIENTATION("aria-orientation"),
+    ARIA_SELECTED("aria-selected"),
     CLASS,
     CLEAR,
     COLS,
@@ -51,6 +55,7 @@
     LANG,
     NAME,
     ONCLICK,
+    ONKEYDOWN,
     ONLOAD,
     REL,
     ROLE,
@@ -59,6 +64,7 @@
     SCROLLING,
     SRC,
     SUMMARY,
+    TABINDEX,
     TARGET,
     TITLE,
     TYPE,
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlTag.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlTag.java	Wed Nov 21 13:53:17 2018 -0500
@@ -39,6 +39,7 @@
  */
 public enum HtmlTag {
     A(BlockType.INLINE, EndTag.END),
+    BUTTON(BlockType.INLINE, EndTag.END),
     BLOCKQUOTE,
     BODY(BlockType.OTHER, EndTag.END),
     BR(BlockType.INLINE, EndTag.NOEND),
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Table.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Table.java	Wed Nov 21 13:53:17 2018 -0500
@@ -415,47 +415,69 @@
      * @return the HTML
      */
     public Content toContent() {
+        HtmlTree mainDiv = new HtmlTree(HtmlTag.DIV);
+        mainDiv.setStyle(tableStyle);
         HtmlTree table = new HtmlTree(HtmlTag.TABLE);
-        table.setStyle(tableStyle);
         if (summary != null) {
             table.addAttr(HtmlAttr.SUMMARY, summary);
         }
-        if (tabMap != null) {
-            if (tabs.size() == 1) {
+        if (tabMap == null || tabs.size() == 1) {
+            if (tabMap == null) {
+                table.addContent(caption);
+            } else if (tabs.size() == 1) {
                 String tabName = tabs.iterator().next();
                 table.addContent(getCaption(new StringContent(tabName)));
-            } else {
-                ContentBuilder cb = new ContentBuilder();
-                int tabIndex = 0;
-                HtmlTree defaultTabSpan = new HtmlTree(HtmlTag.SPAN,
-                            HtmlTree.SPAN(new StringContent(defaultTab)),
-                            HtmlTree.SPAN(tabEnd, Contents.SPACE))
-                        .addAttr(HtmlAttr.ID, tabId.apply(tabIndex))
-                        .setStyle(activeTabStyle);
-                cb.addContent(defaultTabSpan);
-                for (String tabName : tabMap.keySet()) {
-                    tabIndex++;
-                    if (tabs.contains(tabName)) {
-                        String script = "javascript:" + tabScript.apply(1 << (tabIndex - 1));
-                        HtmlTree link = HtmlTree.A(script, new StringContent(tabName));
-                        HtmlTree tabSpan = new HtmlTree(HtmlTag.SPAN,
-                                    HtmlTree.SPAN(link), HtmlTree.SPAN(tabEnd, Contents.SPACE))
-                                .addAttr(HtmlAttr.ID, tabId.apply(tabIndex))
-                                .setStyle(tabStyle);
-                        cb.addContent(tabSpan);
-                    }
+            }
+            table.addContent(getTableBody());
+            mainDiv.addContent(table);
+        } else {
+            HtmlTree tablist = new HtmlTree(HtmlTag.DIV)
+                    .addAttr(HtmlAttr.ROLE, "tablist")
+                    .addAttr(HtmlAttr.ARIA_ORIENTATION, "horizontal");
+
+            int tabIndex = 0;
+            tablist.addContent(createTab(tabId.apply(tabIndex), activeTabStyle, true, defaultTab));
+            table.addAttr(HtmlAttr.ARIA_LABELLEDBY, tabId.apply(tabIndex));
+            for (String tabName : tabMap.keySet()) {
+                tabIndex++;
+                if (tabs.contains(tabName)) {
+                    String script = tabScript.apply(1 << (tabIndex - 1));
+                    HtmlTree tab = createTab(tabId.apply(tabIndex), tabStyle, false, tabName);
+                    tab.addAttr(HtmlAttr.ONCLICK, script);
+                    tablist.addContent(tab);
                 }
-                table.addContent(HtmlTree.CAPTION(cb));
             }
-        } else {
-            table.addContent(caption);
+            HtmlTree tabpanel = new HtmlTree(HtmlTag.DIV)
+                    .addAttr(HtmlAttr.ID, tableStyle + "_tabpanel")
+                    .addAttr(HtmlAttr.ROLE, "tabpanel");
+            table.addContent(getTableBody());
+            tabpanel.addContent(table);
+            mainDiv.addContent(tablist);
+            mainDiv.addContent(tabpanel);
         }
-        table.addContent(header.toContent());
+        return mainDiv;
+    }
+
+    private HtmlTree createTab(String tabId, HtmlStyle style, boolean defaultTab, String tabName) {
+        HtmlTree tab = new HtmlTree(HtmlTag.BUTTON)
+                .addAttr(HtmlAttr.ROLE, "tab")
+                .addAttr(HtmlAttr.ARIA_SELECTED, defaultTab ? "true" : "false")
+                .addAttr(HtmlAttr.ARIA_CONTROLS, tableStyle + "_tabpanel")
+                .addAttr(HtmlAttr.TABINDEX, defaultTab ? "0" : "-1")
+                .addAttr(HtmlAttr.ONKEYDOWN, "switchTab(event)")
+                .addAttr(HtmlAttr.ID, tabId)
+                .setStyle(style);
+        tab.addContent(tabName);
+        return tab;
+    }
+
+    private Content getTableBody() {
+        ContentBuilder tableContent = new ContentBuilder();
+        tableContent.addContent(header.toContent());
         Content tbody = new HtmlTree(HtmlTag.TBODY);
         bodyRows.forEach(row -> tbody.addContent(row));
-        table.addContent(tbody);
-
-        return table;
+        tableContent.addContent(tbody);
+        return tableContent;
     }
 
     /**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/script.js	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/script.js	Wed Nov 21 13:53:17 2018 -0500
@@ -119,16 +119,23 @@
 }
 
 function updateTabs(type) {
+    var firstRow = document.getElementById(Object.keys(data)[0]);
+    var table = firstRow.closest('table');
     for (var value in tabs) {
-        var sNode = document.getElementById(tabs[value][0]);
-        var spanNode = sNode.firstChild;
+        var tab = document.getElementById(tabs[value][0]);
         if (value == type) {
-            sNode.className = activeTableTab;
-            spanNode.innerHTML = tabs[value][1];
+            tab.className = activeTableTab;
+            tab.innerHTML = tabs[value][1];
+            tab.setAttribute('aria-selected', true);
+            tab.setAttribute('tabindex',0);
+            table.setAttribute('aria-labelledby', tabs[value][0]);
         }
         else {
-            sNode.className = tableTab;
-            spanNode.innerHTML = "<a href=\"javascript:show("+ value + ");\">" + tabs[value][1] + "</a>";
+            tab.className = tableTab;
+            tab.setAttribute('aria-selected', false);
+            tab.setAttribute('tabindex',-1);
+            tab.setAttribute('onclick', "show("+ value + ")");
+            tab.innerHTML = tabs[value][1];
         }
     }
 }
@@ -137,3 +144,13 @@
     top.packageFrame.location = pFrame;
     top.classFrame.location = cFrame;
 }
+function switchTab(e) {
+    if (e.keyCode == 37 || e.keyCode == 38) {
+        $("[aria-selected=true]").prev().click().focus();
+        e.preventDefault();
+    }
+    if (e.keyCode == 39 || e.keyCode == 40) {
+        $("[aria-selected=true]").next().click().focus();
+        e.preventDefault();
+    }
+}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css	Wed Nov 21 13:53:17 2018 -0500
@@ -94,7 +94,10 @@
 sup {
     font-size:8px;
 }
-
+button {
+    font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
+    font-size: 14px;
+}
 /*
  * Styles for HTML generated by javadoc.
  *
@@ -420,15 +423,15 @@
 /*
  * Styles for tables.
  */
-.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary,
-.requiresSummary, .packagesSummary, .providesSummary, .usesSummary {
+.overviewSummary table, .memberSummary table, .typeSummary table, .useSummary table, .constantsSummary table, .deprecatedSummary table,
+.requiresSummary table, .packagesSummary table, .providesSummary table, .usesSummary table {
     width:100%;
     border-spacing:0;
-    border-left:1px solid #EEE; 
-    border-right:1px solid #EEE; 
-    border-bottom:1px solid #EEE; 
+    border-left:1px solid #EEE;
+    border-right:1px solid #EEE;
+    border-bottom:1px solid #EEE;
 }
-.overviewSummary, .memberSummary, .requiresSummary, .packagesSummary, .providesSummary, .usesSummary  {
+.overviewSummary table, .memberSummary table, .requiresSummary table, .packagesSummary table, .providesSummary table, .usesSummary table {
     padding:0px;
 }
 .overviewSummary caption, .memberSummary caption, .typeSummary caption,
@@ -484,41 +487,6 @@
     border: none;
     height:16px;
 }
-.memberSummary caption span.activeTableTab span, .packagesSummary caption span.activeTableTab span,
-.overviewSummary caption span.activeTableTab span, .typeSummary caption span.activeTableTab span {
-    white-space:nowrap;
-    padding-top:5px;
-    padding-left:12px;
-    padding-right:12px;
-    margin-right:3px;
-    display:inline-block;
-    float:left;
-    background-color:#F8981D;
-    height:16px;
-}
-.memberSummary caption span.tableTab span, .packagesSummary caption span.tableTab span,
-.overviewSummary caption span.tableTab span, .typeSummary caption span.tableTab span {
-    white-space:nowrap;
-    padding-top:5px;
-    padding-left:12px;
-    padding-right:12px;
-    margin-right:3px;
-    display:inline-block;
-    float:left;
-    background-color:#4D7A97;
-    height:16px;
-}
-.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab,
-.packagesSummary caption span.tableTab, .packagesSummary caption span.activeTableTab,
-.overviewSummary caption span.tableTab, .overviewSummary caption span.activeTableTab,
-.typeSummary caption span.tableTab, .typeSummary caption span.activeTableTab {
-    padding-top:0px;
-    padding-left:0px;
-    padding-right:0px;
-    background-image:none;
-    float:none;
-    display:inline;
-}
 .overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,
 .useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd,
 .requiresSummary .tabEnd, .packagesSummary .tabEnd, .providesSummary .tabEnd, .usesSummary .tabEnd {
@@ -528,23 +496,23 @@
     float:left;
     background-color:#F8981D;
 }
-.memberSummary .activeTableTab .tabEnd, .packagesSummary .activeTableTab .tabEnd,
-.overviewSummary .activeTableTab .tabEnd, .typeSummary .activeTableTab .tabEnd {
-    display:none;
-    width:5px;
-    margin-right:3px;
-    position:relative; 
-    float:left;
-    background-color:#F8981D;
+.overviewSummary [role=tablist] button, .memberSummary [role=tablist] button,
+.typeSummary [role=tablist] button, .packagesSummary [role=tablist] button {
+   border: none;
+   cursor: pointer;
+   padding: 5px 12px 7px 12px;
+   font-weight: bold;
+   margin-right: 3px;
 }
-.memberSummary .tableTab .tabEnd, .packagesSummary .tableTab .tabEnd,
-.overviewSummary .tableTab .tabEnd, .typeSummary .tableTab .tabEnd {
-    display:none;
-    width:5px;
-    margin-right:3px;
-    position:relative;
-    background-color:#4D7A97;
-    float:left;
+.overviewSummary [role=tablist] .activeTableTab, .memberSummary [role=tablist] .activeTableTab,
+.typeSummary [role=tablist] .activeTableTab, .packagesSummary [role=tablist] .activeTableTab {
+   background: #F8981D;
+   color: #253441;
+}
+.overviewSummary [role=tablist] .tableTab, .memberSummary [role=tablist] .tableTab,
+.typeSummary [role=tablist] .tableTab, .packagesSummary [role=tablist] .tableTab {
+   background: #4D7A97;
+   color: #FFFFFF;
 }
 .rowColor th, .altColor th {
     font-weight:normal;
--- a/src/jdk.jdi/share/classes/com/sun/jdi/doc-files/signature.html	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/jdk.jdi/share/classes/com/sun/jdi/doc-files/signature.html	Wed Nov 21 13:53:17 2018 -0500
@@ -1,4 +1,29 @@
 <!DOCTYPE HTML>
+<!--
+ Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.  Oracle designates this
+ particular file as subject to the "Classpath" exception as provided
+ by Oracle in the LICENSE file that accompanied this code.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
 <HTML lang="EN">
 <HEAD>
 <TITLE>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.jfr/share/classes/jdk/jfr/events/CertificateId.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.jfr.events;
+
+import jdk.jfr.Label;
+import jdk.jfr.Relational;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Label("X509 Certificate Id")
+@Relational
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface CertificateId {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.jfr/share/classes/jdk/jfr/events/SecurityPropertyModificationEvent.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.jfr.events;
+
+import jdk.jfr.*;
+import jdk.jfr.internal.MirrorEvent;
+
+@Category({"Java Development Kit", "Security"})
+@Label("Security Property Modification")
+@Name("jdk.SecurityPropertyModification")
+@Description("Modification of Security property")
+@MirrorEvent(className = "jdk.internal.event.SecurityPropertyModificationEvent")
+public final class SecurityPropertyModificationEvent extends AbstractJDKEvent {
+    @Label("Key")
+    public String key;
+
+    @Label("Value")
+    public String value;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.jfr/share/classes/jdk/jfr/events/TLSHandshakeEvent.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.jfr.events;
+
+import jdk.jfr.Category;
+import jdk.jfr.Description;
+import jdk.jfr.Label;
+import jdk.jfr.Name;
+import jdk.jfr.internal.MirrorEvent;
+
+@Category({"Java Development Kit", "Security"})
+@Label("TLS Handshake")
+@Name("jdk.TLSHandshake")
+@Description("Parameters used in TLS Handshake")
+@MirrorEvent(className = "jdk.internal.event.TLSHandshakeEvent")
+public final class TLSHandshakeEvent extends AbstractJDKEvent {
+    @Label("Peer Host")
+    public String peerHost;
+
+    @Label("Peer Port")
+    public int peerPort;
+
+    @Label("Protocol Version")
+    public String protocolVersion;
+
+    @Label("Cipher Suite")
+    public String cipherSuite;
+
+    @Label("Certificate Id")
+    @Description("Peer Certificate Id")
+    @CertificateId
+    public long certificateId;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.jfr/share/classes/jdk/jfr/events/X509CertificateEvent.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.jfr.events;
+
+import jdk.jfr.*;
+import jdk.jfr.internal.MirrorEvent;
+
+@Category({"Java Development Kit", "Security"})
+@Label("X509 Certificate")
+@Name("jdk.X509Certificate")
+@Description("Details of X.509 Certificate parsed by JDK")
+@MirrorEvent(className = "jdk.internal.event.X509CertificateEvent")
+public final class X509CertificateEvent extends AbstractJDKEvent {
+    @Label("Signature Algorithm")
+    public String algorithm;
+
+    @Label("Serial Number")
+    public String serialNumber;
+
+    @Label("Subject")
+    public String subject;
+
+    @Label("Issuer")
+    public String issuer;
+
+    @Label("Key Type")
+    public String keyType;
+
+    @Label("Key Length")
+    public int keyLength;
+
+    @Label("Certificate Id")
+    @CertificateId
+    public long certificateId;
+
+    @Label("Valid From")
+    @Timestamp(Timestamp.MILLISECONDS_SINCE_EPOCH)
+    public long validFrom;
+
+    @Label("Valid Until")
+    @Timestamp(Timestamp.MILLISECONDS_SINCE_EPOCH)
+    public long validUntil;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.jfr/share/classes/jdk/jfr/events/X509ValidationEvent.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.jfr.events;
+
+import jdk.jfr.*;
+import jdk.jfr.internal.MirrorEvent;
+
+@Category({"Java Development Kit", "Security"})
+@Label("X509 Validation")
+@Name("jdk.X509Validation")
+@Description("Serial numbers from X.509 Certificates forming chain of trust")
+@MirrorEvent(className = "jdk.internal.event.X509ValidationEvent")
+public final class X509ValidationEvent extends AbstractJDKEvent {
+    @CertificateId
+    @Label("Certificate Id")
+    public long certificateId;
+
+    @Label("Certificate Position")
+    @Description("Certificate position in chain of trust, 1 = trust anchor")
+    public int certificatePosition;
+
+    @Label("Validation Counter")
+    public long validationCounter;
+}
--- a/src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/instrument/JDKEvents.java	Wed Nov 21 13:53:17 2018 -0500
@@ -39,8 +39,12 @@
 import jdk.jfr.events.FileForceEvent;
 import jdk.jfr.events.FileReadEvent;
 import jdk.jfr.events.FileWriteEvent;
+import jdk.jfr.events.SecurityPropertyModificationEvent;
 import jdk.jfr.events.SocketReadEvent;
 import jdk.jfr.events.SocketWriteEvent;
+import jdk.jfr.events.TLSHandshakeEvent;
+import jdk.jfr.events.X509CertificateEvent;
+import jdk.jfr.events.X509ValidationEvent;
 import jdk.jfr.internal.JVM;
 import jdk.jfr.internal.LogLevel;
 import jdk.jfr.internal.LogTag;
@@ -52,6 +56,10 @@
 public final class JDKEvents {
 
     private static final Class<?>[] mirrorEventClasses = {
+        SecurityPropertyModificationEvent.class,
+        TLSHandshakeEvent.class,
+        X509CertificateEvent.class,
+        X509ValidationEvent.class
     };
 
     private static final Class<?>[] eventClasses = {
@@ -64,7 +72,11 @@
         ExceptionStatisticsEvent.class,
         ErrorThrownEvent.class,
         ActiveSettingEvent.class,
-        ActiveRecordingEvent.class
+        ActiveRecordingEvent.class,
+        jdk.internal.event.SecurityPropertyModificationEvent.class,
+        jdk.internal.event.TLSHandshakeEvent.class,
+        jdk.internal.event.X509CertificateEvent.class,
+        jdk.internal.event.X509ValidationEvent.class
     };
 
     // This is a list of the classes with instrumentation code that should be applied.
--- a/src/jdk.jfr/share/conf/jfr/default.jfc	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/jdk.jfr/share/conf/jfr/default.jfc	Wed Nov 21 13:53:17 2018 -0500
@@ -593,6 +593,26 @@
       <setting name="threshold" control="socket-io-threshold">20 ms</setting>
     </event>
 
+    <event name="jdk.SecurityPropertyModification">
+       <setting name="enabled">false</setting>
+       <setting name="stackTrace">true</setting>
+    </event>
+
+    <event name="jdk.TLSHandshake">
+      <setting name="enabled">false</setting>
+      <setting name="stackTrace">true</setting>
+    </event>
+
+    <event name="jdk.X509Validation">
+       <setting name="enabled">false</setting>
+       <setting name="stackTrace">true</setting>
+    </event>
+
+    <event name="jdk.X509Certificate">
+       <setting name="enabled">false</setting>
+       <setting name="stackTrace">true</setting>
+    </event>
+
     <event name="jdk.JavaExceptionThrow">
       <setting name="enabled" control="enable-exceptions">false</setting>
       <setting name="stackTrace">true</setting>
--- a/src/jdk.jfr/share/conf/jfr/profile.jfc	Wed Nov 21 13:20:52 2018 -0500
+++ b/src/jdk.jfr/share/conf/jfr/profile.jfc	Wed Nov 21 13:53:17 2018 -0500
@@ -593,6 +593,26 @@
       <setting name="threshold" control="socket-io-threshold">10 ms</setting>
     </event>
 
+    <event name="jdk.SecurityPropertyModification">
+       <setting name="enabled">false</setting>
+       <setting name="stackTrace">true</setting>
+    </event>
+
+    <event name="jdk.TLSHandshake">
+      <setting name="enabled">false</setting>
+      <setting name="stackTrace">true</setting>
+    </event>
+
+    <event name="jdk.X509Validation">
+       <setting name="enabled">false</setting>
+       <setting name="stackTrace">true</setting>
+    </event>
+
+    <event name="jdk.X509Certificate">
+       <setting name="enabled">false</setting>
+       <setting name="stackTrace">true</setting>
+    </event>
+
     <event name="jdk.JavaExceptionThrow">
       <setting name="enabled" control="enable-exceptions">false</setting>
       <setting name="stackTrace">true</setting>
--- a/test/hotspot/gtest/gc/shared/test_ptrQueueBufferAllocator.cpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/gtest/gc/shared/test_ptrQueueBufferAllocator.cpp	Wed Nov 21 13:53:17 2018 -0500
@@ -39,7 +39,7 @@
   for (size_t i = 0; i < node_count; ++i) {
     ASSERT_EQ(0u, allocator.free_count());
     nodes[i] = allocator.allocate();
-    ASSERT_EQ(NULL, nodes[i]->next());
+    ASSERT_EQ((BufferNode*)NULL, nodes[i]->next());
   }
 
   // Release the nodes, adding them to the allocator's free list.
@@ -47,7 +47,7 @@
     ASSERT_EQ(i, allocator.free_count());
     allocator.release(nodes[i]);
     if (i == 0) {
-      ASSERT_EQ(NULL, nodes[i]->next());
+      ASSERT_EQ((BufferNode*)NULL, nodes[i]->next());
     } else {
       ASSERT_EQ(nodes[i - 1], nodes[i]->next());
     }
--- a/test/hotspot/gtest/threadHelper.inline.hpp	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/gtest/threadHelper.inline.hpp	Wed Nov 21 13:53:17 2018 -0500
@@ -33,21 +33,22 @@
 
 class VM_StopSafepoint : public VM_Operation {
 public:
+  Semaphore* _running;
   Semaphore* _test_complete;
-  VM_StopSafepoint(Semaphore* wait_for) : _test_complete(wait_for) {}
+  VM_StopSafepoint(Semaphore* running, Semaphore* wait_for) :
+    _running(running), _test_complete(wait_for) {}
   VMOp_Type type() const          { return VMOp_None; }
   Mode evaluation_mode() const    { return _no_safepoint; }
   bool is_cheap_allocated() const { return false; }
-  void doit()                     { _test_complete->wait(); }
+  void doit()                     { _running->signal(); _test_complete->wait(); }
 };
 
 // This class and thread keep the non-safepoint op running while we do our testing.
 class VMThreadBlocker : public JavaThread {
 public:
-  Semaphore* _unblock;
-  Semaphore* _done;
-  VMThreadBlocker(Semaphore* ub, Semaphore* done) : _unblock(ub), _done(done) {
-  }
+  Semaphore _ready;
+  Semaphore _unblock;
+  VMThreadBlocker() {}
   virtual ~VMThreadBlocker() {}
   void run() {
     this->set_thread_state(_thread_in_vm);
@@ -55,9 +56,8 @@
       MutexLocker ml(Threads_lock);
       Threads::add(this);
     }
-    VM_StopSafepoint ss(_unblock);
+    VM_StopSafepoint ss(&_ready, &_unblock);
     VMThread::execute(&ss);
-    _done->signal();
     Threads::remove(this);
     this->smr_delete();
   }
@@ -68,6 +68,12 @@
       ASSERT_TRUE(false);
     }
   }
+  void ready() {
+    _ready.wait();
+  }
+  void release() {
+    _unblock.signal();
+  }
 };
 
 // For testing in a real JavaThread.
@@ -130,26 +136,32 @@
 
 template <typename TESTFUNC>
 static void nomt_test_doer(TESTFUNC &f) {
-  Semaphore post, block_done, vmt_done;
-  VMThreadBlocker* blocker = new VMThreadBlocker(&block_done, &vmt_done);
+  Semaphore post;
+
+  VMThreadBlocker* blocker = new VMThreadBlocker();
   blocker->doit();
+  blocker->ready();
+
   SingleTestThread<TESTFUNC>* stt = new SingleTestThread<TESTFUNC>(&post, f);
   stt->doit();
   post.wait();
-  block_done.signal();
-  vmt_done.wait();
+
+  blocker->release();
 }
 
 template <typename RUNNER>
 static void mt_test_doer() {
-  Semaphore post, block_done, vmt_done;
-  VMThreadBlocker* blocker = new VMThreadBlocker(&block_done, &vmt_done);
+  Semaphore post;
+
+  VMThreadBlocker* blocker = new VMThreadBlocker();
   blocker->doit();
+  blocker->ready();
+
   RUNNER* runner = new RUNNER(&post);
   runner->doit();
   post.wait();
-  block_done.signal();
-  vmt_done.wait();
+
+  blocker->release();
 }
 
 #endif // include guard
--- a/test/hotspot/jtreg/ProblemList.txt	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/jtreg/ProblemList.txt	Wed Nov 21 13:53:17 2018 -0500
@@ -139,6 +139,8 @@
 serviceability/sa/TestType.java 8193639 solaris-all
 serviceability/sa/TestUniverse.java#id0 8193639,8211767 solaris-all,linux-ppc64le,linux-ppc64
 
+serviceability/jvmti/HeapMonitor/MyPackage/HeapMonitorStatIntervalTest.java 8214032 generic-all
+
 #############################################################################
 
 # :hotspot_misc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/arguments/TestScavengeRootsInCode.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8214025
+ * @summary Test compilation with non-default value for ScavengeRootsInCode.
+ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -Xcomp -XX:-TieredCompilation
+ *                   -XX:ScavengeRootsInCode=1 compiler.arguments.TestScavengeRootsInCode
+ */
+
+package compiler.arguments;
+
+public class TestScavengeRootsInCode {
+
+    static public void main(String[] args) {
+        System.out.println("Passed");
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/integerArithmetic/MultiplyByIntegerMinHang.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2018, Red Hat, Inc. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8213419
+ * @summary C2 may hang in MulLNode::Ideal()/MulINode::Ideal() with gcc 8.2.1
+ *
+ * @run main/othervm -XX:-TieredCompilation -XX:-BackgroundCompilation -XX:-UseOnStackReplacement MultiplyByIntegerMinHang
+ *
+ */
+
+public class MultiplyByIntegerMinHang {
+    public static void main(String[] args) {
+        for (int i = 0; i < 20_000; i++) {
+            if (test1(0) != 0) {
+                throw new RuntimeException("incorrect result");
+            }
+            if (test1(1) != Integer.MIN_VALUE) {
+                throw new RuntimeException("incorrect result");
+            }
+            if (test1(2) != 0) {
+                throw new RuntimeException("incorrect result");
+            }
+            if (test2(0) != 0) {
+                throw new RuntimeException("incorrect result");
+            }
+            if (test2(1) != Long.MIN_VALUE) {
+                throw new RuntimeException("incorrect result");
+            }
+            if (test2(2) != 0) {
+                throw new RuntimeException("incorrect result");
+            }
+        }
+    }
+
+    private static int test1(int v) {
+        return v * Integer.MIN_VALUE;
+    }
+
+    private static long test2(long v) {
+        return v * Long.MIN_VALUE;
+    }
+}
--- a/test/hotspot/jtreg/runtime/NMT/MallocStressTest.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/jtreg/runtime/NMT/MallocStressTest.java	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -175,7 +175,7 @@
         public void run() {
             Random random = new Random();
             while (MallocStressTest.phase == TestPhase.alloc) {
-                int r = Math.abs(random.nextInt());
+                int r = random.nextInt(Integer.MAX_VALUE);
                 // Only malloc small amount to avoid OOM
                 int size = r % 32;
                 if (is_64_bit_system()) {
@@ -259,7 +259,7 @@
             }
             synchronized(MallocStressTest.mallocd_memory) {
                 if (MallocStressTest.mallocd_memory.isEmpty()) return;
-                int n = Math.abs(random.nextInt()) % MallocStressTest.mallocd_memory.size();
+                int n = random.nextInt(MallocStressTest.mallocd_memory.size());
                 MallocMemory mem = mallocd_memory.remove(n);
                 MallocStressTest.whiteBox.NMTFree(mem.addr());
                 MallocStressTest.mallocd_total -= mem.size();
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/ReplaceCriticalClasses.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/ReplaceCriticalClasses.java	Wed Nov 21 13:53:17 2018 -0500
@@ -152,30 +152,11 @@
                        klassName);
 
         final boolean expectDisable = !early.equals("");
-        final boolean checkSubgraph = subgraph;
         CDSTestUtils.run(opts).assertNormalExit(out -> {
                 if (expectDisable) {
                     out.shouldContain("UseSharedSpaces: CDS is disabled because early JVMTI ClassFileLoadHook is in use.");
                     System.out.println("CDS disabled as expected");
                 }
-                if (checkSubgraph) {
-                    // As of 2018/10/21 the classes in the archived subgraphs won't be
-                    // replaced because all archived subgraphs were loaded in JVMTI_PHASE_PRIMORDIAL.
-                    //
-                    // This is the first class to be loaded after JVMTI has exited JVMTI_PHASE_PRIMORDIAL.
-                    // Make sure no subgraphs are loaded afterwards.
-                    //
-                    // Can't use out.shouldNotMatch() because that doesn't match across multiple lines.
-                    String firstNonPrimordialClass = "jdk.jfr.internal.EventWriter";
-                    String regexp = firstNonPrimordialClass + ".*initialize_from_archived_subgraph";
-                    Pattern regex = Pattern.compile(regexp, Pattern.DOTALL);
-                    Matcher matcher = regex.matcher(out.getStdout());
-                    if (matcher.find()) {
-                        out.reportDiagnosticSummary();
-                        throw new RuntimeException("'" + regexp
-                                                   + "' found in stdout: '" + matcher.group() + "' \n");
-                    }
-                }
             });
     }
 
--- a/test/hotspot/jtreg/runtime/appcds/AppCDSOptions.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/jtreg/runtime/appcds/AppCDSOptions.java	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,17 +29,8 @@
 public class AppCDSOptions extends CDSOptions {
     public String appJar;
 
-    // Application classes to be archived
-    public String[] appClasses;
-
     public AppCDSOptions setAppJar(String appJar) {
         this.appJar = appJar;
         return this;
     }
-
-    public AppCDSOptions setAppClasses(String[] appClasses) {
-        this.appClasses = appClasses;
-        return this;
-    }
-
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/LotsOfClasses.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+import java.net.URI;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.FileSystem;
+import java.nio.file.FileSystems;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import jdk.test.lib.cds.CDSTestUtils;
+import jdk.test.lib.cds.CDSOptions;
+import jdk.test.lib.process.OutputAnalyzer;
+
+/*
+ * @test
+ * @summary Try to archive lots of classes by searching for classes from the jrt:/ file system. With JDK 12
+ *          this will produce an archive with over 30,000 classes.
+ * @requires vm.cds
+ * @library /test/lib
+ * @run driver/timeout=500 LotsOfClasses
+ */
+
+public class LotsOfClasses {
+    static Pattern pattern;
+
+    public static void main(String[] args) throws Throwable {
+        ArrayList<String> list = new ArrayList<>();
+        findAllClasses(list);
+
+        CDSOptions opts = new CDSOptions();
+        opts.setClassList(list);
+        opts.addSuffix("--add-modules");
+        opts.addSuffix("ALL-SYSTEM");
+        opts.addSuffix("-Xlog:hashtables");
+
+        OutputAnalyzer out = CDSTestUtils.createArchive(opts);
+        CDSTestUtils.checkDump(out);
+    }
+
+    static void findAllClasses(ArrayList<String> list) throws Throwable {
+        // Find all the classes in the jrt file system
+        pattern = Pattern.compile("/modules/[a-z.]*[a-z]+/([^-]*)[.]class");
+        FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
+        Path base = fs.getPath("/modules/");
+        find(base, list);
+    }
+
+    static void find(Path p, ArrayList<String> list) throws Throwable {
+        try (DirectoryStream<Path> stream = Files.newDirectoryStream(p)) {
+                for (Path entry: stream) {
+                    Matcher matcher = pattern.matcher(entry.toString());
+                    if (matcher.find()) {
+                        String className = matcher.group(1);
+                        list.add(className);
+                        //System.out.println(className);
+                    }
+                    try {
+                        find(entry, list);
+                    } catch (Throwable t) {}
+                }
+            }
+    }
+}
--- a/test/hotspot/jtreg/runtime/appcds/TestCommon.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/jtreg/runtime/appcds/TestCommon.java	Wed Nov 21 13:53:17 2018 -0500
@@ -95,17 +95,17 @@
 
     // Create AppCDS archive using most common args - convenience method
     // Legacy name preserved for compatibility
-    public static OutputAnalyzer dump(String appJar, String appClasses[],
+    public static OutputAnalyzer dump(String appJar, String classList[],
                                                String... suffix) throws Exception {
-        return createArchive(appJar, appClasses, suffix);
+        return createArchive(appJar, classList, suffix);
     }
 
 
     // Create AppCDS archive using most common args - convenience method
-    public static OutputAnalyzer createArchive(String appJar, String appClasses[],
+    public static OutputAnalyzer createArchive(String appJar, String classList[],
                                                String... suffix) throws Exception {
-        AppCDSOptions opts = (new AppCDSOptions()).setAppJar(appJar)
-            .setAppClasses(appClasses);
+        AppCDSOptions opts = (new AppCDSOptions()).setAppJar(appJar);
+        opts.setClassList(classList);
         opts.addSuffix(suffix);
         return createArchive(opts);
     }
@@ -115,7 +115,6 @@
         throws Exception {
 
         ArrayList<String> cmd = new ArrayList<String>();
-        File classList = makeClassList(opts.appClasses);
         startNewArchiveName();
 
         for (String p : opts.prefix) cmd.add(p);
@@ -129,13 +128,17 @@
         }
 
         cmd.add("-Xshare:dump");
-        cmd.add("-XX:ExtraSharedClassListFile=" + classList.getPath());
 
         if (opts.archiveName == null)
             opts.archiveName = getCurrentArchiveName();
 
         cmd.add("-XX:SharedArchiveFile=" + opts.archiveName);
 
+        if (opts.classList != null) {
+            File classListFile = makeClassList(opts.classList);
+            cmd.add("-XX:ExtraSharedClassListFile=" + classListFile.getPath());
+        }
+
         for (String s : opts.suffix) cmd.add(s);
 
         String[] cmdLine = cmd.toArray(new String[cmd.size()]);
@@ -235,9 +238,9 @@
 
 
     // A common operation: dump, then check results
-    public static OutputAnalyzer testDump(String appJar, String appClasses[],
+    public static OutputAnalyzer testDump(String appJar, String classList[],
                                           String... suffix) throws Exception {
-        OutputAnalyzer output = dump(appJar, appClasses, suffix);
+        OutputAnalyzer output = dump(appJar, classList, suffix);
         output.shouldContain("Loading classes to share");
         output.shouldHaveExitValue(0);
         return output;
@@ -245,11 +248,11 @@
 
 
     /**
-     * Simple test -- dump and execute appJar with the given appClasses in classlist.
+     * Simple test -- dump and execute appJar with the given classList in classlist.
      */
-    public static OutputAnalyzer test(String appJar, String appClasses[], String... args)
+    public static OutputAnalyzer test(String appJar, String classList[], String... args)
         throws Exception {
-        testDump(appJar, appClasses);
+        testDump(appJar, classList);
 
         OutputAnalyzer output = exec(appJar, args);
         return checkExec(output);
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/ArchivedIntegerCacheTest.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/jtreg/runtime/appcds/cacheObject/ArchivedIntegerCacheTest.java	Wed Nov 21 13:53:17 2018 -0500
@@ -24,7 +24,7 @@
 
 /*
  * @test
- * @summary Test IntegerCache integrity in various scenarios
+ * @summary Test primitive box caches integrity in various scenarios (IntegerCache etc)
  * @requires vm.cds.archived.java.heap
  * @library /test/jdk/lib/testlibrary /test/lib /test/hotspot/jtreg/runtime/appcds
  * @modules java.base/jdk.internal.misc
@@ -32,7 +32,7 @@
  *          jdk.jartool/sun.tools.jar
  * @build sun.hotspot.WhiteBox
  * @compile CheckIntegerCacheApp.java
- * @run driver ClassFileInstaller -jar integer.jar CheckIntegerCacheApp
+ * @run driver ClassFileInstaller -jar boxCache.jar CheckIntegerCacheApp
  * @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
  * @run driver ArchivedIntegerCacheTest
  */
@@ -47,7 +47,7 @@
     public static void main(String[] args) throws Exception {
         String wbJar = ClassFileInstaller.getJarPath("WhiteBox.jar");
         String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
-        String appJar = ClassFileInstaller.getJarPath("integer.jar");
+        String appJar = ClassFileInstaller.getJarPath("boxCache.jar");
 
         Path userDir = Paths.get(System.getProperty("user.dir"));
         Path moduleDir = Files.createTempDirectory(userDir, "mods");
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/CheckIntegerCacheApp.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/jtreg/runtime/appcds/cacheObject/CheckIntegerCacheApp.java	Wed Nov 21 13:53:17 2018 -0500
@@ -25,11 +25,13 @@
 import sun.hotspot.WhiteBox;
 
 //
-// Help test archived integer cache consistency.
+// Help test archived box cache consistency.
 //
 // Takes two arguments:
-// 0: the expected AutoBoxCacheMax setting
+// 0: the expected maximum value expected to be archived
 // 1: if the values are expected to be retrieved from the archive or not
+//    (only applies to IntegerCache; other caches should always be mapped
+//    from archive)
 //
 public class CheckIntegerCacheApp {
     static WhiteBox wb;
@@ -55,7 +57,31 @@
                 throw new RuntimeException(
                         "FAILED. All values in range [-128, 127] should be interned in cache: " + i);
             }
-            checkArchivedAsExpected(archivedExpected, i);
+            if (Byte.valueOf((byte)i) != Byte.valueOf((byte)i)) {
+                throw new RuntimeException(
+                        "FAILED. All Byte values in range [-128, 127] should be interned in cache: " + (byte)i);
+            }
+            if (Short.valueOf((short)i) != Short.valueOf((short)i)) {
+                throw new RuntimeException(
+                        "FAILED. All Short values in range [-128, 127] should be interned in cache: " + (byte)i);
+            }
+            if (Long.valueOf(i) != Long.valueOf(i)) {
+                throw new RuntimeException(
+                        "FAILED. All Long values in range [-128, 127] should be interned in cache: " + i);
+            }
+            checkArchivedAsExpected(archivedExpected, Integer.valueOf(i));
+            checkArchivedAsExpected(true, Byte.valueOf((byte)i));
+            checkArchivedAsExpected(true, Short.valueOf((short)i));
+            checkArchivedAsExpected(true, Long.valueOf(i));
+
+            // Character cache only values 0 through 127
+            if (i >= 0) {
+                if (Character.valueOf((char)i) != Character.valueOf((char)i)) {
+                    throw new RuntimeException(
+                            "FAILED. All Character values in range [0, 127] should be interned in cache: " + i);
+                }
+                checkArchivedAsExpected(true, Character.valueOf((char)i));
+            }
         }
 
         int high = Integer.parseInt(args[0]);
@@ -70,18 +96,23 @@
                     "FAILED. Value not expected to be retrieved from cache: " + high);
         }
         checkArchivedAsExpected(false, Integer.valueOf(high + 1));
+        checkArchivedAsExpected(false, Short.valueOf((short)128));
+        checkArchivedAsExpected(false, Long.valueOf(128));
+        checkArchivedAsExpected(false, Character.valueOf((char)128));
     }
 
-    private static void checkArchivedAsExpected(boolean archivedExpected, Integer value) {
+    private static void checkArchivedAsExpected(boolean archivedExpected, Object value) {
         if (archivedExpected) {
-            if (!wb.isShared(Integer.valueOf(value))) {
+            if (!wb.isShared(value)) {
                 throw new RuntimeException(
-                        "FAILED. Value expected to be archived: " + value);
+                        "FAILED. Value expected to be archived: " + value +
+                        " of type " + value.getClass().getName());
             }
         } else {
-            if (wb.isShared(Integer.valueOf(value))) {
+            if (wb.isShared(value)) {
                 throw new RuntimeException(
-                        "FAILED. Value not expected to be archived: " + value);
+                        "FAILED. Value not expected to be archived: " + value +
+                        " of type " + value.getClass().getName());
             }
         }
     }
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except001.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except001.java	Wed Nov 21 13:53:17 2018 -0500
@@ -262,7 +262,7 @@
      * @see #run(String[], PrintStream)
      */
     public static void main(String args[]) {
-        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
+        Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
             // Last try. If there is some exception outside the code, test should end correctly
             @Override
             public void uncaughtException(Thread t, Throwable e) {
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except002.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except002.java	Wed Nov 21 13:53:17 2018 -0500
@@ -257,7 +257,7 @@
      * @see #run(String[], PrintStream)
      */
     public static void main(String args[]) {
-        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
+        Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
             // Last try. If there is some exception outside the code, test should end correctly
             @Override
             public void uncaughtException(Thread t, Throwable e) {
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except003.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except003.java	Wed Nov 21 13:53:17 2018 -0500
@@ -258,7 +258,7 @@
      * @see #run(String[], PrintStream)
      */
     public static void main(String args[]) {
-        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
+        Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
             // Last try. If there is some exception outside the code, test should end correctly
             @Override
             public void uncaughtException(Thread t, Throwable e) {
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except004.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except004.java	Wed Nov 21 13:53:17 2018 -0500
@@ -476,7 +476,7 @@
      * @see #run(String[], PrintStream)
      */
     public static void main(String args[]) {
-        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
+        Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
             // Last try. If there is some exception outside the code, test should end correctly
             @Override
             public void uncaughtException(Thread t, Throwable e) {
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except005.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except005.java	Wed Nov 21 13:53:17 2018 -0500
@@ -261,7 +261,7 @@
      * @see #run(String[], PrintStream)
      */
     public static void main(String args[]) {
-        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
+        Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
             // Last try. If there is some OOME, test should end correctly
             @Override
             public void uncaughtException(Thread t, Throwable e) {
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except006.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except006.java	Wed Nov 21 13:53:17 2018 -0500
@@ -258,7 +258,7 @@
      * @see #run(String[], PrintStream)
      */
     public static void main(String args[]) {
-        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
+        Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
             // Last try. If there is some exception outside the code, test should end correctly
             @Override
             public void uncaughtException(Thread t, Throwable e) {
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except007.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except007.java	Wed Nov 21 13:53:17 2018 -0500
@@ -350,7 +350,7 @@
      * @see #run(String[], PrintStream)
      */
     public static void main(String args[]) {
-        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
+        Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
             // Last try. If there is some exception outside the code, test should end correctly
             @Override
             public void uncaughtException(Thread t, Throwable e) {
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except008.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except008.java	Wed Nov 21 13:53:17 2018 -0500
@@ -333,7 +333,7 @@
      * @see #run(String[], PrintStream)
      */
     public static void main(String args[]) {
-        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
+        Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
             // Last try. If there is some exception outside the code, test should end correctly
             @Override
             public void uncaughtException(Thread t, Throwable e) {
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except009.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except009.java	Wed Nov 21 13:53:17 2018 -0500
@@ -258,7 +258,7 @@
      * @see #run(String[], PrintStream)
      */
     public static void main(String args[]) {
-        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
+        Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
             // Last try. If there is some exceprions outside the code, test should end correctly
             @Override
             public void uncaughtException(Thread t, Throwable e) {
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except010.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except010.java	Wed Nov 21 13:53:17 2018 -0500
@@ -261,7 +261,7 @@
      * @see #run(String[], PrintStream)
      */
     public static void main(String args[]) {
-        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
+        Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
             // Last try. If there is some exceptions outside the code, test should end correctly
             @Override
             public void uncaughtException(Thread t, Throwable e) {
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except011.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except011.java	Wed Nov 21 13:53:17 2018 -0500
@@ -266,7 +266,7 @@
      * @see #run(String[], PrintStream)
      */
     public static void main(String args[]) {
-        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
+        Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
             // Last try. If there is some OOME, test should end correctly
             @Override
             public void uncaughtException(Thread t, Throwable e) {
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except012.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/except/except012.java	Wed Nov 21 13:53:17 2018 -0500
@@ -334,7 +334,7 @@
      * @see #run(String[], PrintStream)
      */
     public static void main(String args[]) {
-        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
+        Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
             // Last try. If there is some OOME, test should end correctly
             @Override
             public void uncaughtException(Thread t, Throwable e) {
--- a/test/jaxp/javax/xml/jaxp/unittest/catalog/CatalogSupport.xml	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jaxp/javax/xml/jaxp/unittest/catalog/CatalogSupport.xml	Wed Nov 21 13:53:17 2018 -0500
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
     <!-- DTDs and external entities -->
-    <system systemId="http://openjdk.java.net/xml/catalog/dtd/system.dtd" uri="system.dtd"/>
+    <system systemId="http://openjdk_java_net/xml/catalog/dtd/system.dtd" uri="system.dtd"/>
     
     <!-- XMLSchema refers to XMLSchema.dtd -->
     <public publicId="-//W3C//DTD XMLSCHEMA 200102//EN" uri="XMLSchema.dtd"/>
@@ -35,8 +35,8 @@
     <system systemId="pathto/XSLInclude_header.xsl" uri="XSLInclude_header.xsl"/>
     <system systemId="pathto/XSLInclude_footer.xsl" uri="XSLInclude_footer.xsl"/>
     <!-- and DTDs -->
-    <system systemId="http://openjdk.java.net/xml/catalog/dtd/XSLDTD.dtd" uri="XSLDTD.dtd"/>
-    <system systemId="http://openjdk.java.net/xml/catalog/dtd/include.dtd" uri="include.dtd"/>
+    <system systemId="http://openjdk_java_net/xml/catalog/dtd/XSLDTD.dtd" uri="XSLDTD.dtd"/>
+    <system systemId="http://openjdk_java_net/xml/catalog/dtd/include.dtd" uri="include.dtd"/>
     
     <!-- XSLT document function -->
     <system systemId="pathto/DocFunc2.xml" uri="DocFuncCatalog.xml"/>
--- a/test/jaxp/javax/xml/jaxp/unittest/catalog/CatalogSupport2.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jaxp/javax/xml/jaxp/unittest/catalog/CatalogSupport2.java	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -81,6 +81,7 @@
     public void setUpClass() throws Exception {
         setUp();
         setSystemProperty(SP_USE_CATALOG, "false");
+        setSystemProperty(SP_ACCESS_EXTERNAL_DTD, "file");
         timeoutRead = getSystemProperty(TTIMEOUTREAD);
         timeoutConnect = getSystemProperty(TIMEOUTCONNECT);
         setSystemProperty(TTIMEOUTREAD, "1000");
@@ -90,6 +91,7 @@
     @AfterClass
     public void tearDownClass() throws Exception {
         clearSystemProperty(SP_USE_CATALOG);
+        clearSystemProperty(SP_ACCESS_EXTERNAL_DTD);
         setSystemProperty(TIMEOUTCONNECT, "-1");
         setSystemProperty(TTIMEOUTREAD, "-1");
     }
@@ -97,7 +99,7 @@
     /*
        Verifies the Catalog support on SAXParser.
     */
-    @Test(dataProvider = "data_SAXC", expectedExceptions = IOException.class)
+    @Test(dataProvider = "data_SAXC", expectedExceptions = SAXParseException.class)
     public void testSAXC(boolean setUseCatalog, boolean useCatalog, String catalog, String
             xml, MyHandler handler, String expected) throws Exception {
         testSAX(setUseCatalog, useCatalog, catalog, xml, handler, expected);
@@ -106,7 +108,7 @@
     /*
        Verifies the Catalog support on XMLReader.
     */
-    @Test(dataProvider = "data_SAXC", expectedExceptions = IOException.class)
+    @Test(dataProvider = "data_SAXC", expectedExceptions = SAXParseException.class)
     public void testXMLReaderC(boolean setUseCatalog, boolean useCatalog, String catalog,
             String xml, MyHandler handler, String expected) throws Exception {
         testXMLReader(setUseCatalog, useCatalog, catalog, xml, handler, expected);
@@ -124,7 +126,7 @@
     /*
        Verifies the Catalog support on DOM parser.
     */
-    @Test(dataProvider = "data_DOMC", expectedExceptions = IOException.class)
+    @Test(dataProvider = "data_DOMC", expectedExceptions = SAXParseException.class)
     public void testDOMC(boolean setUseCatalog, boolean useCatalog, String catalog,
             String xml, MyHandler handler, String expected) throws Exception {
         testDOM(setUseCatalog, useCatalog, catalog, xml, handler, expected);
@@ -133,7 +135,7 @@
     /*
        Verifies the Catalog support on XMLStreamReader.
     */
-    @Test(dataProvider = "data_StAXC")
+    @Test(dataProvider = "data_StAXC", expectedExceptions = XMLStreamException.class)
     public void testStAXC(boolean setUseCatalog, boolean useCatalog, String catalog,
             String xml, XMLResolver resolver, String expected) throws Exception {
         testStAXNegative(setUseCatalog, useCatalog, catalog, xml, resolver, expected);
--- a/test/jaxp/javax/xml/jaxp/unittest/catalog/CatalogSupport3.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jaxp/javax/xml/jaxp/unittest/catalog/CatalogSupport3.java	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 package catalog;
 
+import static jaxp.library.JAXPTestUtilities.clearSystemProperty;
 import static jaxp.library.JAXPTestUtilities.getSystemProperty;
 import static jaxp.library.JAXPTestUtilities.setSystemProperty;
 
@@ -82,18 +83,20 @@
         timeoutConnect = getSystemProperty(TIMEOUTCONNECT);
         setSystemProperty(TTIMEOUTREAD, "1000");
         setSystemProperty(TIMEOUTCONNECT, "1000");
+        setSystemProperty(SP_ACCESS_EXTERNAL_DTD, "file");
     }
 
     @AfterClass
     public void tearDownClass() throws Exception {
         setSystemProperty(TIMEOUTCONNECT, "-1");
         setSystemProperty(TTIMEOUTREAD, "-1");
+        clearSystemProperty(SP_ACCESS_EXTERNAL_DTD);
     }
 
     /*
        Verifies the Catalog support on SAXParser.
     */
-    @Test(dataProvider = "data_SAXC", expectedExceptions = IOException.class)
+    @Test(dataProvider = "data_SAXC", expectedExceptions = SAXParseException.class)
     public void testSAXC(boolean setUseCatalog, boolean useCatalog, String catalog,
             String xml, MyHandler handler, String expected) throws Exception {
         testSAX(setUseCatalog, useCatalog, catalog, xml, handler, expected);
@@ -102,7 +105,7 @@
     /*
        Verifies the Catalog support on XMLReader.
     */
-    @Test(dataProvider = "data_SAXC", expectedExceptions = IOException.class)
+    @Test(dataProvider = "data_SAXC", expectedExceptions = SAXParseException.class)
     public void testXMLReaderC(boolean setUseCatalog, boolean useCatalog, String catalog,
             String xml, MyHandler handler, String expected) throws Exception {
         testXMLReader(setUseCatalog, useCatalog, catalog, xml, handler, expected);
@@ -120,7 +123,7 @@
     /*
        Verifies the Catalog support on DOM parser.
     */
-    @Test(dataProvider = "data_DOMC", expectedExceptions = IOException.class)
+    @Test(dataProvider = "data_DOMC", expectedExceptions = SAXParseException.class)
     public void testDOMC(boolean setUseCatalog, boolean useCatalog, String catalog,
             String xml, MyHandler handler, String expected) throws Exception {
         testDOM(setUseCatalog, useCatalog, catalog, xml, handler, expected);
@@ -129,7 +132,7 @@
     /*
        Verifies the Catalog support on XMLStreamReader.
     */
-    @Test(dataProvider = "data_StAXC")
+    @Test(dataProvider = "data_StAXC", expectedExceptions = XMLStreamException.class)
     public void testStAXC(boolean setUseCatalog, boolean useCatalog, String catalog,
             String xml, XMLResolver resolver, String expected) throws Exception {
         testStAXNegative(setUseCatalog, useCatalog, catalog, xml, resolver, expected);
--- a/test/jaxp/javax/xml/jaxp/unittest/catalog/CatalogSupportBase.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jaxp/javax/xml/jaxp/unittest/catalog/CatalogSupportBase.java	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -90,6 +90,7 @@
 public class CatalogSupportBase {
     // the System Property for the USE_CATALOG feature
     final static String SP_USE_CATALOG = "javax.xml.useCatalog";
+    final static String SP_ACCESS_EXTERNAL_DTD = "javax.xml.accessExternalDTD";
 
     boolean debug = false;
 
@@ -232,7 +233,7 @@
                 + ""
                 + "</xsl:stylesheet>";
         xsl_includeDTD = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
-                + "<!DOCTYPE HTMLlat1 SYSTEM \"http://openjdk.java.net/xml/catalog/dtd/XSLDTD.dtd\">"
+                + "<!DOCTYPE HTMLlat1 SYSTEM \"http://openjdk_java_net/xml/catalog/dtd/XSLDTD.dtd\">"
                 + "<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">"
                 + "  <xsl:import href=\"pathto/XSLImport_html.xsl\"/>"
                 + "  <xsl:include href=\"pathto/XSLInclude_header.xsl\"/>"
@@ -262,7 +263,7 @@
                 "</content>";
 
         xml_xslDTD = "<?xml version=\"1.0\"?>\n" +
-                "<!DOCTYPE content SYSTEM \"http://openjdk.java.net/xml/catalog/dtd/include.dtd\">" +
+                "<!DOCTYPE content SYSTEM \"http://openjdk_java_net/xml/catalog/dtd/include.dtd\">" +
                 "<content>\n" +
                 "    <header>This is the header</header>\n" +
                 "    Some content\n" +
--- a/test/jaxp/javax/xml/jaxp/unittest/catalog/CatalogSupport_uri.xml	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jaxp/javax/xml/jaxp/unittest/catalog/CatalogSupport_uri.xml	Wed Nov 21 13:53:17 2018 -0500
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
     <!-- DTDs and external entities -->
-    <uri name="http://openjdk.java.net/xml/catalog/dtd/system.dtd" uri="system.dtd"/>
+    <uri name="http://openjdk_java_net/xml/catalog/dtd/system.dtd" uri="system.dtd"/>
     
     <!-- XMLSchema refers to XMLSchema.dtd -->
     <public publicId="-//W3C//DTD XMLSCHEMA 200102//EN" uri="XMLSchema.dtd"/>
@@ -34,8 +34,8 @@
     <uri name="pathto/XSLInclude_header.xsl" uri="XSLInclude_header.xsl"/>
     <uri name="pathto/XSLInclude_footer.xsl" uri="XSLInclude_footer.xsl"/>
     <!-- and DTDs -->
-    <uri name="http://openjdk.java.net/xml/catalog/dtd/XSLDTD.dtd" uri="XSLDTD.dtd"/>
-    <uri name="http://openjdk.java.net/xml/catalog/dtd/include.dtd" uri="include.dtd"/>
+    <uri name="http://openjdk_java_net/xml/catalog/dtd/XSLDTD.dtd" uri="XSLDTD.dtd"/>
+    <uri name="http://openjdk_java_net/xml/catalog/dtd/include.dtd" uri="include.dtd"/>
     
     <!-- XSLT document function -->
     <uri name="pathto/DocFunc2.xml" uri="DocFuncCatalog.xml"/>
--- a/test/jaxp/javax/xml/jaxp/unittest/catalog/CatalogTest.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jaxp/javax/xml/jaxp/unittest/catalog/CatalogTest.java	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -654,7 +654,7 @@
         };
     }
 
-    static String id = "http://openjdk.java.net/xml/catalog/dtd/system.dtd";
+    static String id = "http://openjdk_java_net/xml/catalog/dtd/system.dtd";
     /*
        DataProvider: used to verify how prefer settings affect the result of the
         Catalog's matching operation.
--- a/test/jaxp/javax/xml/jaxp/unittest/catalog/catalog.xml	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jaxp/javax/xml/jaxp/unittest/catalog/catalog.xml	Wed Nov 21 13:53:17 2018 -0500
@@ -9,12 +9,12 @@
                   uri="file:///share/mirrors/w3c/xhtml1/xhtml1-strict.dtd"/>
 
     <public publicId="-//OPENJDK//XML CATALOG DTD//1.0" uri="public.dtd"/>
-    <system systemId="http://openjdk.java.net/xml/catalog/dtd/system.dtd" uri="system.dtd"/>
+    <system systemId="http://openjdk_java_net/xml/catalog/dtd/system.dtd" uri="system.dtd"/>
     
-    <rewriteSystem systemIdStartString="http://openjdk.java.net/" 
+    <rewriteSystem systemIdStartString="http://openjdk_java_net/" 
                    rewritePrefix="files" />
     
-    <rewriteSystem systemIdStartString="http://openjdk.java.net/xml/catalog/dtd/" 
+    <rewriteSystem systemIdStartString="http://openjdk_java_net/xml/catalog/dtd/" 
                    rewritePrefix="files" />
     
     <systemSuffix systemIdSuffix="systemsuffix.dtd" uri="systemsuffix.dtd"/>
--- a/test/jaxp/javax/xml/jaxp/unittest/catalog/catalog_uri.xml	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jaxp/javax/xml/jaxp/unittest/catalog/catalog_uri.xml	Wed Nov 21 13:53:17 2018 -0500
@@ -3,11 +3,11 @@
   xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
 
     <!-- using uri entries -->
-    <uri name="http://openjdk.java.net/xml/catalog/dtd/system.dtd" uri="system.dtd"/>
-    <rewriteURI uriStartString="http://openjdk.java.net/" 
+    <uri name="http://openjdk_java_net/xml/catalog/dtd/system.dtd" uri="system.dtd"/>
+    <rewriteURI uriStartString="http://openjdk_java_net/" 
                    rewritePrefix="files" />
     
-    <rewriteURI uriStartString="http://openjdk.java.net/xml/catalog/dtd/" 
+    <rewriteURI uriStartString="http://openjdk_java_net/xml/catalog/dtd/" 
                    rewritePrefix="files" />
 
     <uriSuffix uriSuffix="systemsuffix.dtd" uri="systemsuffix.dtd"/>
--- a/test/jaxp/javax/xml/jaxp/unittest/catalog/pubOnly.xml	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jaxp/javax/xml/jaxp/unittest/catalog/pubOnly.xml	Wed Nov 21 13:53:17 2018 -0500
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" xml:base="http://local/base/dtd/">
 
-    <public publicId="http://openjdk.java.net/xml/catalog/dtd/system.dtd" uri="public.dtd"/>
+    <public publicId="http://openjdk_java_net/xml/catalog/dtd/system.dtd" uri="public.dtd"/>
 
 </catalog>
\ No newline at end of file
--- a/test/jaxp/javax/xml/jaxp/unittest/catalog/rewritesystem.xml	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jaxp/javax/xml/jaxp/unittest/catalog/rewritesystem.xml	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
 <!DOCTYPE  catalogtest  PUBLIC  "-//OPENJDK//XML CATALOG DTD//REWRITE"  
-     "http://openjdk.java.net/xml/catalog/dtd/rewritesystem.dtd">
+     "http://openjdk_java_net/xml/catalog/dtd/rewritesystem.dtd">
      
 <catalogtest>Test &rewritesystem; entry</catalogtest>
\ No newline at end of file
--- a/test/jaxp/javax/xml/jaxp/unittest/catalog/rewritesystem1.xml	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jaxp/javax/xml/jaxp/unittest/catalog/rewritesystem1.xml	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
 <!DOCTYPE  catalogtest  PUBLIC  "-//OPENJDK//XML CATALOG DTD//REWRITE"  
-     "http://openjdk.java.net/rewritesystem.dtd">
+     "http://openjdk_java_net/rewritesystem.dtd">
      
 <catalogtest>Test &rewritesystem; entry</catalogtest>
\ No newline at end of file
--- a/test/jaxp/javax/xml/jaxp/unittest/catalog/sysAndPub.xml	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jaxp/javax/xml/jaxp/unittest/catalog/sysAndPub.xml	Wed Nov 21 13:53:17 2018 -0500
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" xml:base="http://local/base/dtd/">
 
-    <system systemId="http://openjdk.java.net/xml/catalog/dtd/system.dtd" uri="system.dtd"/>
-    <public publicId="http://openjdk.java.net/xml/catalog/dtd/system.dtd" uri="public.dtd"/>
+    <system systemId="http://openjdk_java_net/xml/catalog/dtd/system.dtd" uri="system.dtd"/>
+    <public publicId="http://openjdk_java_net/xml/catalog/dtd/system.dtd" uri="public.dtd"/>
 
 </catalog>
\ No newline at end of file
--- a/test/jaxp/javax/xml/jaxp/unittest/catalog/sysOnly.xml	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jaxp/javax/xml/jaxp/unittest/catalog/sysOnly.xml	Wed Nov 21 13:53:17 2018 -0500
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" xml:base="http://local/base/dtd/">
 
-    <system systemId="http://openjdk.java.net/xml/catalog/dtd/system.dtd" uri="system.dtd"/>
+    <system systemId="http://openjdk_java_net/xml/catalog/dtd/system.dtd" uri="system.dtd"/>
 
 </catalog>
\ No newline at end of file
--- a/test/jaxp/javax/xml/jaxp/unittest/catalog/system.xml	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jaxp/javax/xml/jaxp/unittest/catalog/system.xml	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
 <!DOCTYPE  catalogtest  PUBLIC  "-//OPENJDK//XML CATALOG DTD SYSTEM//1.0"  
-     "http://openjdk.java.net/xml/catalog/dtd/system.dtd">
+     "http://openjdk_java_net/xml/catalog/dtd/system.dtd">
      
 <catalogtest>Test &system; entry</catalogtest>
--- a/test/jaxp/javax/xml/jaxp/unittest/catalog/systemsuffix.xml	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jaxp/javax/xml/jaxp/unittest/catalog/systemsuffix.xml	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
 <!DOCTYPE  catalogtest  PUBLIC  "-//OPENJDK//XML CATALOG DTD//REWRITE"  
-     "http://openjdk.java.net/xml/catalog/dtd/systemsuffix.dtd">
+     "http://openjdk_java_net/xml/catalog/dtd/systemsuffix.dtd">
      
 <catalogtest>Test &systemsuffix; entry</catalogtest>
\ No newline at end of file
--- a/test/jaxp/javax/xml/jaxp/unittest/catalog/val_test.xml	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jaxp/javax/xml/jaxp/unittest/catalog/val_test.xml	Wed Nov 21 13:53:17 2018 -0500
@@ -1,6 +1,6 @@
 <?xml version="1.1"?>
 <!DOCTYPE  catalogtest  PUBLIC  "-//OPENJDK//XML CATALOG DTD//1.0"  
-     "http://openjdk.java.net/xml/catalog/dtd/system.dtd">
+     "http://openjdk_java_net/xml/catalog/dtd/system.dtd">
 <test:root xmlns:test="test"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="test pathto/val_test.xsd"
--- a/test/jdk/java/lang/Character/PropList.txt	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jdk/java/lang/Character/PropList.txt	Wed Nov 21 13:53:17 2018 -0500
@@ -1,6 +1,6 @@
-# PropList-10.0.0.txt
-# Date: 2017-03-10, 08:25:30 GMT
-# Copyright (c) 2017 Unicode, Inc.
+# PropList-11.0.0.txt
+# Date: 2018-03-15, 04:28:35 GMT
+# Copyright (c) 2018 Unicode, Inc.
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
@@ -125,7 +125,7 @@
 05C3          ; Terminal_Punctuation # Po       HEBREW PUNCTUATION SOF PASUQ
 060C          ; Terminal_Punctuation # Po       ARABIC COMMA
 061B          ; Terminal_Punctuation # Po       ARABIC SEMICOLON
-061F          ; Terminal_Punctuation # Po       ARABIC QUESTION MARK
+061E..061F    ; Terminal_Punctuation # Po   [2] ARABIC TRIPLE DOT PUNCTUATION MARK..ARABIC QUESTION MARK
 06D4          ; Terminal_Punctuation # Po       ARABIC FULL STOP
 0700..070A    ; Terminal_Punctuation # Po  [11] SYRIAC END OF PARAGRAPH..SYRIAC CONTRACTION
 070C          ; Terminal_Punctuation # Po       SYRIAC HARKLEAN METOBELUS
@@ -156,6 +156,8 @@
 2E2E          ; Terminal_Punctuation # Po       REVERSED QUESTION MARK
 2E3C          ; Terminal_Punctuation # Po       STENOGRAPHIC FULL STOP
 2E41          ; Terminal_Punctuation # Po       REVERSED COMMA
+2E4C          ; Terminal_Punctuation # Po       MEDIEVAL COMMA
+2E4E          ; Terminal_Punctuation # Po       PUNCTUS ELEVATUS MARK
 3001..3002    ; Terminal_Punctuation # Po   [2] IDEOGRAPHIC COMMA..IDEOGRAPHIC FULL STOP
 A4FE..A4FF    ; Terminal_Punctuation # Po   [2] LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP
 A60D..A60F    ; Terminal_Punctuation # Po   [3] VAI COMMA..VAI QUESTION MARK
@@ -185,6 +187,7 @@
 10AF0..10AF5  ; Terminal_Punctuation # Po   [6] MANICHAEAN PUNCTUATION STAR..MANICHAEAN PUNCTUATION TWO DOTS
 10B3A..10B3F  ; Terminal_Punctuation # Po   [6] TINY TWO DOTS OVER ONE DOT PUNCTUATION..LARGE ONE RING OVER TWO RINGS PUNCTUATION
 10B99..10B9C  ; Terminal_Punctuation # Po   [4] PSALTER PAHLAVI SECTION MARK..PSALTER PAHLAVI FOUR DOTS WITH DOT
+10F55..10F59  ; Terminal_Punctuation # Po   [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
 11047..1104D  ; Terminal_Punctuation # Po   [7] BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS
 110BE..110C1  ; Terminal_Punctuation # Po   [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA
 11141..11143  ; Terminal_Punctuation # Po   [3] CHAKMA DANDA..CHAKMA QUESTION MARK
@@ -204,15 +207,17 @@
 11AA1..11AA2  ; Terminal_Punctuation # Po   [2] SOYOMBO TERMINAL MARK-1..SOYOMBO TERMINAL MARK-2
 11C41..11C43  ; Terminal_Punctuation # Po   [3] BHAIKSUKI DANDA..BHAIKSUKI WORD SEPARATOR
 11C71         ; Terminal_Punctuation # Po       MARCHEN MARK SHAD
+11EF7..11EF8  ; Terminal_Punctuation # Po   [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION
 12470..12474  ; Terminal_Punctuation # Po   [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
 16A6E..16A6F  ; Terminal_Punctuation # Po   [2] MRO DANDA..MRO DOUBLE DANDA
 16AF5         ; Terminal_Punctuation # Po       BASSA VAH FULL STOP
 16B37..16B39  ; Terminal_Punctuation # Po   [3] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN CIM CHEEM
 16B44         ; Terminal_Punctuation # Po       PAHAWH HMONG SIGN XAUS
+16E97..16E98  ; Terminal_Punctuation # Po   [2] MEDEFAIDRIN COMMA..MEDEFAIDRIN FULL STOP
 1BC9F         ; Terminal_Punctuation # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
 1DA87..1DA8A  ; Terminal_Punctuation # Po   [4] SIGNWRITING COMMA..SIGNWRITING COLON
 
-# Total code points: 252
+# Total code points: 264
 
 # ================================================
 
@@ -661,6 +666,7 @@
 10A01..10A03  ; Other_Alphabetic # Mn   [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
 10A05..10A06  ; Other_Alphabetic # Mn   [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
 10A0C..10A0F  ; Other_Alphabetic # Mn   [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
+10D24..10D27  ; Other_Alphabetic # Mn   [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
 11000         ; Other_Alphabetic # Mc       BRAHMI SIGN CANDRABINDU
 11001         ; Other_Alphabetic # Mn       BRAHMI SIGN ANUSVARA
 11002         ; Other_Alphabetic # Mc       BRAHMI SIGN VISARGA
@@ -673,6 +679,7 @@
 11127..1112B  ; Other_Alphabetic # Mn   [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU
 1112C         ; Other_Alphabetic # Mc       CHAKMA VOWEL SIGN E
 1112D..11132  ; Other_Alphabetic # Mn   [6] CHAKMA VOWEL SIGN AI..CHAKMA AU MARK
+11145..11146  ; Other_Alphabetic # Mc   [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI
 11180..11181  ; Other_Alphabetic # Mn   [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA
 11182         ; Other_Alphabetic # Mc       SHARADA SIGN VISARGA
 111B3..111B5  ; Other_Alphabetic # Mc   [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II
@@ -730,9 +737,10 @@
 11722..11725  ; Other_Alphabetic # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
 11726         ; Other_Alphabetic # Mc       AHOM VOWEL SIGN E
 11727..1172A  ; Other_Alphabetic # Mn   [4] AHOM VOWEL SIGN AW..AHOM VOWEL SIGN AM
-11A01..11A06  ; Other_Alphabetic # Mn   [6] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL SIGN O
-11A07..11A08  ; Other_Alphabetic # Mc   [2] ZANABAZAR SQUARE VOWEL SIGN AI..ZANABAZAR SQUARE VOWEL SIGN AU
-11A09..11A0A  ; Other_Alphabetic # Mn   [2] ZANABAZAR SQUARE VOWEL SIGN REVERSED I..ZANABAZAR SQUARE VOWEL LENGTH MARK
+1182C..1182E  ; Other_Alphabetic # Mc   [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II
+1182F..11837  ; Other_Alphabetic # Mn   [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
+11838         ; Other_Alphabetic # Mc       DOGRA SIGN VISARGA
+11A01..11A0A  ; Other_Alphabetic # Mn  [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK
 11A35..11A38  ; Other_Alphabetic # Mn   [4] ZANABAZAR SQUARE SIGN CANDRABINDU..ZANABAZAR SQUARE SIGN ANUSVARA
 11A39         ; Other_Alphabetic # Mc       ZANABAZAR SQUARE SIGN VISARGA
 11A3B..11A3E  ; Other_Alphabetic # Mn   [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
@@ -758,6 +766,13 @@
 11D3F..11D41  ; Other_Alphabetic # Mn   [3] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI SIGN VISARGA
 11D43         ; Other_Alphabetic # Mn       MASARAM GONDI SIGN CANDRA
 11D47         ; Other_Alphabetic # Mn       MASARAM GONDI RA-KARA
+11D8A..11D8E  ; Other_Alphabetic # Mc   [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU
+11D90..11D91  ; Other_Alphabetic # Mn   [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI
+11D93..11D94  ; Other_Alphabetic # Mc   [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU
+11D95         ; Other_Alphabetic # Mn       GUNJALA GONDI SIGN ANUSVARA
+11D96         ; Other_Alphabetic # Mc       GUNJALA GONDI SIGN VISARGA
+11EF3..11EF4  ; Other_Alphabetic # Mn   [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
+11EF5..11EF6  ; Other_Alphabetic # Mc   [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O
 16B30..16B36  ; Other_Alphabetic # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
 16F51..16F7E  ; Other_Alphabetic # Mc  [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
 1BC9E         ; Other_Alphabetic # Mn       DUPLOYAN DOUBLE MARK
@@ -771,7 +786,7 @@
 1F150..1F169  ; Other_Alphabetic # So  [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
 1F170..1F189  ; Other_Alphabetic # So  [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
 
-# Total code points: 1300
+# Total code points: 1334
 
 # ================================================
 
@@ -780,10 +795,10 @@
 3021..3029    ; Ideographic # Nl   [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
 3038..303A    ; Ideographic # Nl   [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
 3400..4DB5    ; Ideographic # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
-4E00..9FEA    ; Ideographic # Lo [20971] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEA
+4E00..9FEF    ; Ideographic # Lo [20976] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEF
 F900..FA6D    ; Ideographic # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
 FA70..FAD9    ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
-17000..187EC  ; Ideographic # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+17000..187F1  ; Ideographic # Lo [6130] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F1
 18800..18AF2  ; Ideographic # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
 1B170..1B2FB  ; Ideographic # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
 20000..2A6D6  ; Ideographic # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
@@ -793,7 +808,7 @@
 2CEB0..2EBE0  ; Ideographic # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
 2F800..2FA1D  ; Ideographic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
 
-# Total code points: 96174
+# Total code points: 96184
 
 # ================================================
 
@@ -953,6 +968,9 @@
 FFE3          ; Diacritic # Sk       FULLWIDTH MACRON
 102E0         ; Diacritic # Mn       COPTIC EPACT THOUSANDS MARK
 10AE5..10AE6  ; Diacritic # Mn   [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
+10D22..10D23  ; Diacritic # Lo   [2] HANIFI ROHINGYA MARK SAKIN..HANIFI ROHINGYA MARK NA KHONNA
+10D24..10D27  ; Diacritic # Mn   [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+10F46..10F50  ; Diacritic # Mn  [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
 110B9..110BA  ; Diacritic # Mn   [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA
 11133..11134  ; Diacritic # Mn   [2] CHAKMA VIRAMA..CHAKMA MAAYYAA
 11173         ; Diacritic # Mn       MAHAJANI SIGN NUKTA
@@ -973,12 +991,14 @@
 116B6         ; Diacritic # Mc       TAKRI SIGN VIRAMA
 116B7         ; Diacritic # Mn       TAKRI SIGN NUKTA
 1172B         ; Diacritic # Mn       AHOM SIGN KILLER
+11839..1183A  ; Diacritic # Mn   [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
 11A34         ; Diacritic # Mn       ZANABAZAR SQUARE SIGN VIRAMA
 11A47         ; Diacritic # Mn       ZANABAZAR SQUARE SUBJOINER
 11A99         ; Diacritic # Mn       SOYOMBO SUBJOINER
 11C3F         ; Diacritic # Mn       BHAIKSUKI SIGN VIRAMA
 11D42         ; Diacritic # Mn       MASARAM GONDI SIGN NUKTA
 11D44..11D45  ; Diacritic # Mn   [2] MASARAM GONDI SIGN HALANTA..MASARAM GONDI VIRAMA
+11D97         ; Diacritic # Mn       GUNJALA GONDI VIRAMA
 16AF0..16AF4  ; Diacritic # Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
 16F8F..16F92  ; Diacritic # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
 16F93..16F9F  ; Diacritic # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
@@ -991,7 +1011,7 @@
 1E944..1E946  ; Diacritic # Mn   [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
 1E948..1E94A  ; Diacritic # Mn   [3] ADLAM CONSONANT MODIFIER..ADLAM NUKTA
 
-# Total code points: 798
+# Total code points: 818
 
 # ================================================
 
@@ -1137,7 +1157,7 @@
 # ================================================
 
 3400..4DB5    ; Unified_Ideograph # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
-4E00..9FEA    ; Unified_Ideograph # Lo [20971] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEA
+4E00..9FEF    ; Unified_Ideograph # Lo [20976] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEF
 FA0E..FA0F    ; Unified_Ideograph # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F
 FA11          ; Unified_Ideograph # Lo       CJK COMPATIBILITY IDEOGRAPH-FA11
 FA13..FA14    ; Unified_Ideograph # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14
@@ -1151,7 +1171,7 @@
 2B820..2CEA1  ; Unified_Ideograph # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
 2CEB0..2EBE0  ; Unified_Ideograph # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
 
-# Total code points: 87882
+# Total code points: 87887
 
 # ================================================
 
@@ -1255,10 +1275,13 @@
 002E          ; Sentence_Terminal # Po       FULL STOP
 003F          ; Sentence_Terminal # Po       QUESTION MARK
 0589          ; Sentence_Terminal # Po       ARMENIAN FULL STOP
-061F          ; Sentence_Terminal # Po       ARABIC QUESTION MARK
+061E..061F    ; Sentence_Terminal # Po   [2] ARABIC TRIPLE DOT PUNCTUATION MARK..ARABIC QUESTION MARK
 06D4          ; Sentence_Terminal # Po       ARABIC FULL STOP
 0700..0702    ; Sentence_Terminal # Po   [3] SYRIAC END OF PARAGRAPH..SYRIAC SUBLINEAR FULL STOP
 07F9          ; Sentence_Terminal # Po       NKO EXCLAMATION MARK
+0837          ; Sentence_Terminal # Po       SAMARITAN PUNCTUATION MELODIC QITSA
+0839          ; Sentence_Terminal # Po       SAMARITAN PUNCTUATION QITSA
+083D..083E    ; Sentence_Terminal # Po   [2] SAMARITAN PUNCTUATION SOF MASHFAAT..SAMARITAN PUNCTUATION ANNAAU
 0964..0965    ; Sentence_Terminal # Po   [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
 104A..104B    ; Sentence_Terminal # Po   [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION
 1362          ; Sentence_Terminal # Po       ETHIOPIC FULL STOP
@@ -1296,6 +1319,7 @@
 FF1F          ; Sentence_Terminal # Po       FULLWIDTH QUESTION MARK
 FF61          ; Sentence_Terminal # Po       HALFWIDTH IDEOGRAPHIC FULL STOP
 10A56..10A57  ; Sentence_Terminal # Po   [2] KHAROSHTHI PUNCTUATION DANDA..KHAROSHTHI PUNCTUATION DOUBLE DANDA
+10F55..10F59  ; Sentence_Terminal # Po   [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
 11047..11048  ; Sentence_Terminal # Po   [2] BRAHMI DANDA..BRAHMI DOUBLE DANDA
 110BE..110C1  ; Sentence_Terminal # Po   [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA
 11141..11143  ; Sentence_Terminal # Po   [3] CHAKMA DANDA..CHAKMA QUESTION MARK
@@ -1313,14 +1337,16 @@
 11A42..11A43  ; Sentence_Terminal # Po   [2] ZANABAZAR SQUARE MARK SHAD..ZANABAZAR SQUARE MARK DOUBLE SHAD
 11A9B..11A9C  ; Sentence_Terminal # Po   [2] SOYOMBO MARK SHAD..SOYOMBO MARK DOUBLE SHAD
 11C41..11C42  ; Sentence_Terminal # Po   [2] BHAIKSUKI DANDA..BHAIKSUKI DOUBLE DANDA
+11EF7..11EF8  ; Sentence_Terminal # Po   [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION
 16A6E..16A6F  ; Sentence_Terminal # Po   [2] MRO DANDA..MRO DOUBLE DANDA
 16AF5         ; Sentence_Terminal # Po       BASSA VAH FULL STOP
 16B37..16B38  ; Sentence_Terminal # Po   [2] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS TSHAB CEEB
 16B44         ; Sentence_Terminal # Po       PAHAWH HMONG SIGN XAUS
+16E98         ; Sentence_Terminal # Po       MEDEFAIDRIN FULL STOP
 1BC9F         ; Sentence_Terminal # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
 1DA88         ; Sentence_Terminal # Po       SIGNWRITING FULL STOP
 
-# Total code points: 128
+# Total code points: 141
 
 # ================================================
 
@@ -1521,14 +1547,10 @@
 2B74..2B75    ; Pattern_Syntax # Cn   [2] <reserved-2B74>..<reserved-2B75>
 2B76..2B95    ; Pattern_Syntax # So  [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW
 2B96..2B97    ; Pattern_Syntax # Cn   [2] <reserved-2B96>..<reserved-2B97>
-2B98..2BB9    ; Pattern_Syntax # So  [34] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..UP ARROWHEAD IN A RECTANGLE BOX
-2BBA..2BBC    ; Pattern_Syntax # Cn   [3] <reserved-2BBA>..<reserved-2BBC>
-2BBD..2BC8    ; Pattern_Syntax # So  [12] BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED
+2B98..2BC8    ; Pattern_Syntax # So  [49] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED
 2BC9          ; Pattern_Syntax # Cn       <reserved-2BC9>
-2BCA..2BD2    ; Pattern_Syntax # So   [9] TOP HALF BLACK CIRCLE..GROUP MARK
-2BD3..2BEB    ; Pattern_Syntax # Cn  [25] <reserved-2BD3>..<reserved-2BEB>
-2BEC..2BEF    ; Pattern_Syntax # So   [4] LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
-2BF0..2BFF    ; Pattern_Syntax # Cn  [16] <reserved-2BF0>..<reserved-2BFF>
+2BCA..2BFE    ; Pattern_Syntax # So  [53] TOP HALF BLACK CIRCLE..REVERSED RIGHT ANGLE
+2BFF          ; Pattern_Syntax # Cn       <reserved-2BFF>
 2E00..2E01    ; Pattern_Syntax # Po   [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
 2E02          ; Pattern_Syntax # Pi       LEFT SUBSTITUTION BRACKET
 2E03          ; Pattern_Syntax # Pf       RIGHT SUBSTITUTION BRACKET
@@ -1566,8 +1588,8 @@
 2E40          ; Pattern_Syntax # Pd       DOUBLE HYPHEN
 2E41          ; Pattern_Syntax # Po       REVERSED COMMA
 2E42          ; Pattern_Syntax # Ps       DOUBLE LOW-REVERSED-9 QUOTATION MARK
-2E43..2E49    ; Pattern_Syntax # Po   [7] DASH WITH LEFT UPTURN..DOUBLE STACKED COMMA
-2E4A..2E7F    ; Pattern_Syntax # Cn  [54] <reserved-2E4A>..<reserved-2E7F>
+2E43..2E4E    ; Pattern_Syntax # Po  [12] DASH WITH LEFT UPTURN..PUNCTUS ELEVATUS MARK
+2E4F..2E7F    ; Pattern_Syntax # Cn  [49] <reserved-2E4F>..<reserved-2E7F>
 3001..3003    ; Pattern_Syntax # Po   [3] IDEOGRAPHIC COMMA..DITTO MARK
 3008          ; Pattern_Syntax # Ps       LEFT ANGLE BRACKET
 3009          ; Pattern_Syntax # Pe       RIGHT ANGLE BRACKET
@@ -1606,8 +1628,9 @@
 070F          ; Prepended_Concatenation_Mark # Cf       SYRIAC ABBREVIATION MARK
 08E2          ; Prepended_Concatenation_Mark # Cf       ARABIC DISPUTED END OF AYAH
 110BD         ; Prepended_Concatenation_Mark # Cf       KAITHI NUMBER SIGN
+110CD         ; Prepended_Concatenation_Mark # Cf       KAITHI NUMBER SIGN ABOVE
 
-# Total code points: 10
+# Total code points: 11
 
 # ================================================
 
--- a/test/jdk/java/lang/Character/PropertyValueAliases.txt	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jdk/java/lang/Character/PropertyValueAliases.txt	Wed Nov 21 13:53:17 2018 -0500
@@ -1,6 +1,6 @@
-# PropertyValueAliases-10.0.0.txt
-# Date: 2017-05-17, 08:45:34 GMT
-# Copyright (c) 2017 Unicode, Inc.
+# PropertyValueAliases-11.0.0.txt
+# Date: 2018-05-20, 09:03:12 GMT
+# Copyright (c) 2018 Unicode, Inc.
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
@@ -81,6 +81,7 @@
 age; 8.0                              ; V8_0
 age; 9.0                              ; V9_0
 age; 10.0                             ; V10_0
+age; 11.0                             ; V11_0
 age; NA                               ; Unassigned
 
 # Alphabetic (Alpha)
@@ -182,6 +183,7 @@
 blk; Cham                             ; Cham
 blk; Cherokee                         ; Cherokee
 blk; Cherokee_Sup                     ; Cherokee_Supplement
+blk; Chess_Symbols                    ; Chess_Symbols
 blk; CJK                              ; CJK_Unified_Ideographs
 blk; CJK_Compat                       ; CJK_Compatibility
 blk; CJK_Compat_Forms                 ; CJK_Compatibility_Forms
@@ -218,6 +220,7 @@
 blk; Diacriticals_For_Symbols         ; Combining_Diacritical_Marks_For_Symbols; Combining_Marks_For_Symbols
 blk; Diacriticals_Sup                 ; Combining_Diacritical_Marks_Supplement
 blk; Dingbats                         ; Dingbats
+blk; Dogra                            ; Dogra
 blk; Domino                           ; Domino_Tiles
 blk; Duployan                         ; Duployan
 blk; Early_Dynastic_Cuneiform         ; Early_Dynastic_Cuneiform
@@ -235,6 +238,7 @@
 blk; Geometric_Shapes                 ; Geometric_Shapes
 blk; Geometric_Shapes_Ext             ; Geometric_Shapes_Extended
 blk; Georgian                         ; Georgian
+blk; Georgian_Ext                     ; Georgian_Extended
 blk; Georgian_Sup                     ; Georgian_Supplement
 blk; Glagolitic                       ; Glagolitic
 blk; Glagolitic_Sup                   ; Glagolitic_Supplement
@@ -243,10 +247,12 @@
 blk; Greek                            ; Greek_And_Coptic
 blk; Greek_Ext                        ; Greek_Extended
 blk; Gujarati                         ; Gujarati
+blk; Gunjala_Gondi                    ; Gunjala_Gondi
 blk; Gurmukhi                         ; Gurmukhi
 blk; Half_And_Full_Forms              ; Halfwidth_And_Fullwidth_Forms
 blk; Half_Marks                       ; Combining_Half_Marks
 blk; Hangul                           ; Hangul_Syllables
+blk; Hanifi_Rohingya                  ; Hanifi_Rohingya
 blk; Hanunoo                          ; Hanunoo
 blk; Hatran                           ; Hatran
 blk; Hebrew                           ; Hebrew
@@ -257,6 +263,7 @@
 blk; Ideographic_Symbols              ; Ideographic_Symbols_And_Punctuation
 blk; Imperial_Aramaic                 ; Imperial_Aramaic
 blk; Indic_Number_Forms               ; Common_Indic_Number_Forms
+blk; Indic_Siyaq_Numbers              ; Indic_Siyaq_Numbers
 blk; Inscriptional_Pahlavi            ; Inscriptional_Pahlavi
 blk; Inscriptional_Parthian           ; Inscriptional_Parthian
 blk; IPA_Ext                          ; IPA_Extensions
@@ -298,6 +305,7 @@
 blk; Lydian                           ; Lydian
 blk; Mahajani                         ; Mahajani
 blk; Mahjong                          ; Mahjong_Tiles
+blk; Makasar                          ; Makasar
 blk; Malayalam                        ; Malayalam
 blk; Mandaic                          ; Mandaic
 blk; Manichaean                       ; Manichaean
@@ -305,6 +313,8 @@
 blk; Masaram_Gondi                    ; Masaram_Gondi
 blk; Math_Alphanum                    ; Mathematical_Alphanumeric_Symbols
 blk; Math_Operators                   ; Mathematical_Operators
+blk; Mayan_Numerals                   ; Mayan_Numerals
+blk; Medefaidrin                      ; Medefaidrin
 blk; Meetei_Mayek                     ; Meetei_Mayek
 blk; Meetei_Mayek_Ext                 ; Meetei_Mayek_Extensions
 blk; Mende_Kikakui                    ; Mende_Kikakui
@@ -343,6 +353,7 @@
 blk; Old_North_Arabian                ; Old_North_Arabian
 blk; Old_Permic                       ; Old_Permic
 blk; Old_Persian                      ; Old_Persian
+blk; Old_Sogdian                      ; Old_Sogdian
 blk; Old_South_Arabian                ; Old_South_Arabian
 blk; Old_Turkic                       ; Old_Turkic
 blk; Oriya                            ; Oriya
@@ -373,6 +384,7 @@
 blk; Sinhala                          ; Sinhala
 blk; Sinhala_Archaic_Numbers          ; Sinhala_Archaic_Numbers
 blk; Small_Forms                      ; Small_Form_Variants
+blk; Sogdian                          ; Sogdian
 blk; Sora_Sompeng                     ; Sora_Sompeng
 blk; Soyombo                          ; Soyombo
 blk; Specials                         ; Specials
@@ -586,6 +598,10 @@
 ea ; Na                               ; Narrow
 ea ; W                                ; Wide
 
+# Equivalent_Unified_Ideograph (EqUIdeo)
+
+# @missing: 0000..10FFFF; Equivalent_Unified_Ideograph; <none>
+
 # Expands_On_NFC (XO_NFC)
 
 XO_NFC; N                             ; No                               ; F                                ; False
@@ -774,6 +790,7 @@
 InSC; Consonant_Dead                  ; Consonant_Dead
 InSC; Consonant_Final                 ; Consonant_Final
 InSC; Consonant_Head_Letter           ; Consonant_Head_Letter
+InSC; Consonant_Initial_Postfixed     ; Consonant_Initial_Postfixed
 InSC; Consonant_Killer                ; Consonant_Killer
 InSC; Consonant_Medial                ; Consonant_Medial
 InSC; Consonant_Placeholder           ; Consonant_Placeholder
@@ -884,6 +901,8 @@
 jg ; Gaf                              ; Gaf
 jg ; Gamal                            ; Gamal
 jg ; Hah                              ; Hah
+jg ; Hanifi_Rohingya_Kinna_Ya         ; Hanifi_Rohingya_Kinna_Ya
+jg ; Hanifi_Rohingya_Pa               ; Hanifi_Rohingya_Pa
 jg ; He                               ; He
 jg ; Heh                              ; Heh
 jg ; Heh_Goal                         ; Heh_Goal
@@ -1189,6 +1208,7 @@
 sc ; Cprt                             ; Cypriot
 sc ; Cyrl                             ; Cyrillic
 sc ; Deva                             ; Devanagari
+sc ; Dogr                             ; Dogra
 sc ; Dsrt                             ; Deseret
 sc ; Dupl                             ; Duployan
 sc ; Egyp                             ; Egyptian_Hieroglyphs
@@ -1196,6 +1216,7 @@
 sc ; Ethi                             ; Ethiopic
 sc ; Geor                             ; Georgian
 sc ; Glag                             ; Glagolitic
+sc ; Gong                             ; Gunjala_Gondi
 sc ; Gonm                             ; Masaram_Gondi
 sc ; Goth                             ; Gothic
 sc ; Gran                             ; Grantha
@@ -1232,9 +1253,11 @@
 sc ; Lyci                             ; Lycian
 sc ; Lydi                             ; Lydian
 sc ; Mahj                             ; Mahajani
+sc ; Maka                             ; Makasar
 sc ; Mand                             ; Mandaic
 sc ; Mani                             ; Manichaean
 sc ; Marc                             ; Marchen
+sc ; Medf                             ; Medefaidrin
 sc ; Mend                             ; Mende_Kikakui
 sc ; Merc                             ; Meroitic_Cursive
 sc ; Mero                             ; Meroitic_Hieroglyphs
@@ -1266,6 +1289,7 @@
 sc ; Plrd                             ; Miao
 sc ; Prti                             ; Inscriptional_Parthian
 sc ; Rjng                             ; Rejang
+sc ; Rohg                             ; Hanifi_Rohingya
 sc ; Runr                             ; Runic
 sc ; Samr                             ; Samaritan
 sc ; Sarb                             ; Old_South_Arabian
@@ -1276,6 +1300,8 @@
 sc ; Sidd                             ; Siddham
 sc ; Sind                             ; Khudawadi
 sc ; Sinh                             ; Sinhala
+sc ; Sogd                             ; Sogdian
+sc ; Sogo                             ; Old_Sogdian
 sc ; Sora                             ; Sora_Sompeng
 sc ; Soyo                             ; Soyombo
 sc ; Sund                             ; Sundanese
@@ -1420,6 +1446,7 @@
 WB ; NU                               ; Numeric
 WB ; RI                               ; Regional_Indicator
 WB ; SQ                               ; Single_Quote
+WB ; WSegSpace                        ; WSegSpace
 WB ; XX                               ; Other
 WB ; ZWJ                              ; ZWJ
 
--- a/test/jdk/java/lang/Character/Scripts.txt	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jdk/java/lang/Character/Scripts.txt	Wed Nov 21 13:53:17 2018 -0500
@@ -1,6 +1,6 @@
-# Scripts-10.0.0.txt
-# Date: 2017-03-11, 06:40:37 GMT
-# Copyright (c) 2017 Unicode, Inc.
+# Scripts-11.0.0.txt
+# Date: 2018-02-21, 05:34:31 GMT
+# Copyright (c) 2018 Unicode, Inc.
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
@@ -308,10 +308,8 @@
 2B47..2B4C    ; Common # Sm   [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
 2B4D..2B73    ; Common # So  [39] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR
 2B76..2B95    ; Common # So  [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW
-2B98..2BB9    ; Common # So  [34] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..UP ARROWHEAD IN A RECTANGLE BOX
-2BBD..2BC8    ; Common # So  [12] BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED
-2BCA..2BD2    ; Common # So   [9] TOP HALF BLACK CIRCLE..GROUP MARK
-2BEC..2BEF    ; Common # So   [4] LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
+2B98..2BC8    ; Common # So  [49] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED
+2BCA..2BFE    ; Common # So  [53] TOP HALF BLACK CIRCLE..REVERSED RIGHT ANGLE
 2E00..2E01    ; Common # Po   [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
 2E02          ; Common # Pi       LEFT SUBSTITUTION BRACKET
 2E03          ; Common # Pf       RIGHT SUBSTITUTION BRACKET
@@ -349,7 +347,7 @@
 2E40          ; Common # Pd       DOUBLE HYPHEN
 2E41          ; Common # Po       REVERSED COMMA
 2E42          ; Common # Ps       DOUBLE LOW-REVERSED-9 QUOTATION MARK
-2E43..2E49    ; Common # Po   [7] DASH WITH LEFT UPTURN..DOUBLE STACKED COMMA
+2E43..2E4E    ; Common # Po  [12] DASH WITH LEFT UPTURN..PUNCTUS ELEVATUS MARK
 2FF0..2FFB    ; Common # So  [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
 3000          ; Common # Zs       IDEOGRAPHIC SPACE
 3001..3003    ; Common # Po   [3] IDEOGRAPHIC COMMA..DITTO MARK
@@ -523,8 +521,9 @@
 1D183..1D184  ; Common # So   [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN
 1D18C..1D1A9  ; Common # So  [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH
 1D1AE..1D1E8  ; Common # So  [59] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KIEVAN FLAT SIGN
+1D2E0..1D2F3  ; Common # No  [20] MAYAN NUMERAL ZERO..MAYAN NUMERAL NINETEEN
 1D300..1D356  ; Common # So  [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
-1D360..1D371  ; Common # No  [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
+1D360..1D378  ; Common # No  [25] COUNTING ROD UNIT DIGIT ONE..TALLY MARK FIVE
 1D400..1D454  ; Common # L&  [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
 1D456..1D49C  ; Common # L&  [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
 1D49E..1D49F  ; Common # L&   [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
@@ -566,6 +565,11 @@
 1D7C3         ; Common # Sm       MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
 1D7C4..1D7CB  ; Common # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
 1D7CE..1D7FF  ; Common # Nd  [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+1EC71..1ECAB  ; Common # No  [59] INDIC SIYAQ NUMBER ONE..INDIC SIYAQ NUMBER PREFIXED NINE
+1ECAC         ; Common # So       INDIC SIYAQ PLACEHOLDER
+1ECAD..1ECAF  ; Common # No   [3] INDIC SIYAQ FRACTION ONE QUARTER..INDIC SIYAQ FRACTION THREE QUARTERS
+1ECB0         ; Common # Sc       INDIC SIYAQ RUPEE MARK
+1ECB1..1ECB4  ; Common # No   [4] INDIC SIYAQ NUMBER ALTERNATE ONE..INDIC SIYAQ ALTERNATE LAKH MARK
 1F000..1F02B  ; Common # So  [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK
 1F030..1F093  ; Common # So [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06
 1F0A0..1F0AE  ; Common # So  [15] PLAYING CARD BACK..PLAYING CARD KING OF SPADES
@@ -573,8 +577,7 @@
 1F0C1..1F0CF  ; Common # So  [15] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER
 1F0D1..1F0F5  ; Common # So  [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21
 1F100..1F10C  ; Common # No  [13] DIGIT ZERO FULL STOP..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
-1F110..1F12E  ; Common # So  [31] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED WZ
-1F130..1F16B  ; Common # So  [60] SQUARED LATIN CAPITAL LETTER A..RAISED MD SIGN
+1F110..1F16B  ; Common # So  [92] PARENTHESIZED LATIN CAPITAL LETTER A..RAISED MD SIGN
 1F170..1F1AC  ; Common # So  [61] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VOD
 1F1E6..1F1FF  ; Common # So  [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
 1F201..1F202  ; Common # So   [2] SQUARED KATAKANA KOKO..SQUARED KATAKANA SA
@@ -586,9 +589,9 @@
 1F3FB..1F3FF  ; Common # Sk   [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
 1F400..1F6D4  ; Common # So [725] RAT..PAGODA
 1F6E0..1F6EC  ; Common # So  [13] HAMMER AND WRENCH..AIRPLANE ARRIVING
-1F6F0..1F6F8  ; Common # So   [9] SATELLITE..FLYING SAUCER
+1F6F0..1F6F9  ; Common # So  [10] SATELLITE..SKATEBOARD
 1F700..1F773  ; Common # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
-1F780..1F7D4  ; Common # So  [85] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR
+1F780..1F7D8  ; Common # So  [89] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..NEGATIVE CIRCLED SQUARE
 1F800..1F80B  ; Common # So  [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
 1F810..1F847  ; Common # So  [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW
 1F850..1F859  ; Common # So  [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
@@ -596,15 +599,18 @@
 1F890..1F8AD  ; Common # So  [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
 1F900..1F90B  ; Common # So  [12] CIRCLED CROSS FORMEE WITH FOUR DOTS..DOWNWARD FACING NOTCHED HOOK WITH DOT
 1F910..1F93E  ; Common # So  [47] ZIPPER-MOUTH FACE..HANDBALL
-1F940..1F94C  ; Common # So  [13] WILTED FLOWER..CURLING STONE
-1F950..1F96B  ; Common # So  [28] CROISSANT..CANNED FOOD
-1F980..1F997  ; Common # So  [24] CRAB..CRICKET
-1F9C0         ; Common # So       CHEESE WEDGE
-1F9D0..1F9E6  ; Common # So  [23] FACE WITH MONOCLE..SOCKS
+1F940..1F970  ; Common # So  [49] WILTED FLOWER..SMILING FACE WITH SMILING EYES AND THREE HEARTS
+1F973..1F976  ; Common # So   [4] FACE WITH PARTY HORN AND PARTY HAT..FREEZING FACE
+1F97A         ; Common # So       FACE WITH PLEADING EYES
+1F97C..1F9A2  ; Common # So  [39] LAB COAT..SWAN
+1F9B0..1F9B9  ; Common # So  [10] EMOJI COMPONENT RED HAIR..SUPERVILLAIN
+1F9C0..1F9C2  ; Common # So   [3] CHEESE WEDGE..SALT SHAKER
+1F9D0..1F9FF  ; Common # So  [48] FACE WITH MONOCLE..NAZAR AMULET
+1FA60..1FA6D  ; Common # So  [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER
 E0001         ; Common # Cf       LANGUAGE TAG
 E0020..E007F  ; Common # Cf  [96] TAG SPACE..CANCEL TAG
 
-# Total code points: 7363
+# Total code points: 7591
 
 # ================================================
 
@@ -647,8 +653,7 @@
 A771..A787    ; Latin # L&  [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
 A78B..A78E    ; Latin # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
 A78F          ; Latin # Lo       LATIN LETTER SINOLOGICAL DOT
-A790..A7AE    ; Latin # L&  [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I
-A7B0..A7B7    ; Latin # L&   [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA
+A790..A7B9    ; Latin # L&  [42] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER U WITH STROKE
 A7F7          ; Latin # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
 A7F8..A7F9    ; Latin # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
 A7FA          ; Latin # L&       LATIN LETTER SMALL CAPITAL TURNED M
@@ -660,7 +665,7 @@
 FF21..FF3A    ; Latin # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
 FF41..FF5A    ; Latin # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
 
-# Total code points: 1350
+# Total code points: 1353
 
 # ================================================
 
@@ -754,13 +759,13 @@
 0531..0556    ; Armenian # L&  [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
 0559          ; Armenian # Lm       ARMENIAN MODIFIER LETTER LEFT HALF RING
 055A..055F    ; Armenian # Po   [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK
-0561..0587    ; Armenian # L&  [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
+0560..0588    ; Armenian # L&  [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE
 058A          ; Armenian # Pd       ARMENIAN HYPHEN
 058D..058E    ; Armenian # So   [2] RIGHT-FACING ARMENIAN ETERNITY SIGN..LEFT-FACING ARMENIAN ETERNITY SIGN
 058F          ; Armenian # Sc       ARMENIAN DRAM SIGN
 FB13..FB17    ; Armenian # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
 
-# Total code points: 93
+# Total code points: 95
 
 # ================================================
 
@@ -774,7 +779,7 @@
 05C6          ; Hebrew # Po       HEBREW PUNCTUATION NUN HAFUKHA
 05C7          ; Hebrew # Mn       HEBREW POINT QAMATS QATAN
 05D0..05EA    ; Hebrew # Lo  [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
-05F0..05F2    ; Hebrew # Lo   [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD
+05EF..05F2    ; Hebrew # Lo   [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD
 05F3..05F4    ; Hebrew # Po   [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM
 FB1D          ; Hebrew # Lo       HEBREW LETTER YOD WITH HIRIQ
 FB1E          ; Hebrew # Mn       HEBREW POINT JUDEO-SPANISH VARIKA
@@ -787,7 +792,7 @@
 FB43..FB44    ; Hebrew # Lo   [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
 FB46..FB4F    ; Hebrew # Lo  [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED
 
-# Total code points: 133
+# Total code points: 134
 
 # ================================================
 
@@ -824,7 +829,7 @@
 0750..077F    ; Arabic # Lo  [48] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE
 08A0..08B4    ; Arabic # Lo  [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
 08B6..08BD    ; Arabic # Lo   [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
-08D4..08E1    ; Arabic # Mn  [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
+08D3..08E1    ; Arabic # Mn  [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA
 08E3..08FF    ; Arabic # Mn  [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA
 FB50..FBB1    ; Arabic # Lo  [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
 FBB2..FBC1    ; Arabic # Sk  [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW
@@ -872,7 +877,7 @@
 1EEAB..1EEBB  ; Arabic # Lo  [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
 1EEF0..1EEF1  ; Arabic # Sm   [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL
 
-# Total code points: 1280
+# Total code points: 1281
 
 # ================================================
 
@@ -922,9 +927,10 @@
 A8F8..A8FA    ; Devanagari # Po   [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET
 A8FB          ; Devanagari # Lo       DEVANAGARI HEADSTROKE
 A8FC          ; Devanagari # Po       DEVANAGARI SIGN SIDDHAM
-A8FD          ; Devanagari # Lo       DEVANAGARI JAIN OM
-
-# Total code points: 154
+A8FD..A8FE    ; Devanagari # Lo   [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY
+A8FF          ; Devanagari # Mn       DEVANAGARI VOWEL SIGN AY
+
+# Total code points: 156
 
 # ================================================
 
@@ -957,8 +963,9 @@
 09FB          ; Bengali # Sc       BENGALI GANDA MARK
 09FC          ; Bengali # Lo       BENGALI LETTER VEDIC ANUSVARA
 09FD          ; Bengali # Po       BENGALI ABBREVIATION SIGN
-
-# Total code points: 95
+09FE          ; Bengali # Mn       BENGALI SANDHI MARK
+
+# Total code points: 96
 
 # ================================================
 
@@ -983,8 +990,9 @@
 0A70..0A71    ; Gurmukhi # Mn   [2] GURMUKHI TIPPI..GURMUKHI ADDAK
 0A72..0A74    ; Gurmukhi # Lo   [3] GURMUKHI IRI..GURMUKHI EK ONKAR
 0A75          ; Gurmukhi # Mn       GURMUKHI SIGN YAKASH
-
-# Total code points: 79
+0A76          ; Gurmukhi # Po       GURMUKHI ABBREVIATION SIGN
+
+# Total code points: 80
 
 # ================================================
 
@@ -1079,6 +1087,7 @@
 
 0C00          ; Telugu # Mn       TELUGU SIGN COMBINING CANDRABINDU ABOVE
 0C01..0C03    ; Telugu # Mc   [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
+0C04          ; Telugu # Mn       TELUGU SIGN COMBINING ANUSVARA ABOVE
 0C05..0C0C    ; Telugu # Lo   [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
 0C0E..0C10    ; Telugu # Lo   [3] TELUGU LETTER E..TELUGU LETTER AI
 0C12..0C28    ; Telugu # Lo  [23] TELUGU LETTER O..TELUGU LETTER NA
@@ -1096,13 +1105,14 @@
 0C78..0C7E    ; Telugu # No   [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
 0C7F          ; Telugu # So       TELUGU SIGN TUUMU
 
-# Total code points: 96
+# Total code points: 97
 
 # ================================================
 
 0C80          ; Kannada # Lo       KANNADA SIGN SPACING CANDRABINDU
 0C81          ; Kannada # Mn       KANNADA SIGN CANDRABINDU
 0C82..0C83    ; Kannada # Mc   [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
+0C84          ; Kannada # Po       KANNADA SIGN SIDDHAM
 0C85..0C8C    ; Kannada # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
 0C8E..0C90    ; Kannada # Lo   [3] KANNADA LETTER E..KANNADA LETTER AI
 0C92..0CA8    ; Kannada # Lo  [23] KANNADA LETTER O..KANNADA LETTER NA
@@ -1124,7 +1134,7 @@
 0CE6..0CEF    ; Kannada # Nd  [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
 0CF1..0CF2    ; Kannada # Lo   [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
 
-# Total code points: 88
+# Total code points: 89
 
 # ================================================
 
@@ -1318,14 +1328,16 @@
 10A0..10C5    ; Georgian # L&  [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
 10C7          ; Georgian # L&       GEORGIAN CAPITAL LETTER YN
 10CD          ; Georgian # L&       GEORGIAN CAPITAL LETTER AEN
-10D0..10FA    ; Georgian # Lo  [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+10D0..10FA    ; Georgian # L&  [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
 10FC          ; Georgian # Lm       MODIFIER LETTER GEORGIAN NAR
-10FD..10FF    ; Georgian # Lo   [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
+10FD..10FF    ; Georgian # L&   [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
+1C90..1CBA    ; Georgian # L&  [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
+1CBD..1CBF    ; Georgian # L&   [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
 2D00..2D25    ; Georgian # L&  [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
 2D27          ; Georgian # L&       GEORGIAN SMALL LETTER YN
 2D2D          ; Georgian # L&       GEORGIAN SMALL LETTER AEN
 
-# Total code points: 127
+# Total code points: 173
 
 # ================================================
 
@@ -1454,7 +1466,7 @@
 1810..1819    ; Mongolian # Nd  [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
 1820..1842    ; Mongolian # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
 1843          ; Mongolian # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
-1844..1877    ; Mongolian # Lo  [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
+1844..1878    ; Mongolian # Lo  [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS
 1880..1884    ; Mongolian # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
 1885..1886    ; Mongolian # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
 1887..18A8    ; Mongolian # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
@@ -1462,7 +1474,7 @@
 18AA          ; Mongolian # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
 11660..1166C  ; Mongolian # Po  [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
 
-# Total code points: 166
+# Total code points: 167
 
 # ================================================
 
@@ -1491,10 +1503,10 @@
 # ================================================
 
 02EA..02EB    ; Bopomofo # Sk   [2] MODIFIER LETTER YIN DEPARTING TONE MARK..MODIFIER LETTER YANG DEPARTING TONE MARK
-3105..312E    ; Bopomofo # Lo  [42] BOPOMOFO LETTER B..BOPOMOFO LETTER O WITH DOT ABOVE
+3105..312F    ; Bopomofo # Lo  [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN
 31A0..31BA    ; Bopomofo # Lo  [27] BOPOMOFO LETTER BU..BOPOMOFO LETTER ZY
 
-# Total code points: 71
+# Total code points: 72
 
 # ================================================
 
@@ -1507,7 +1519,7 @@
 3038..303A    ; Han # Nl   [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
 303B          ; Han # Lm       VERTICAL IDEOGRAPHIC ITERATION MARK
 3400..4DB5    ; Han # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
-4E00..9FEA    ; Han # Lo [20971] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEA
+4E00..9FEF    ; Han # Lo [20976] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEF
 F900..FA6D    ; Han # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
 FA70..FAD9    ; Han # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
 20000..2A6D6  ; Han # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
@@ -1517,7 +1529,7 @@
 2CEB0..2EBE0  ; Han # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
 2F800..2FA1D  ; Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
 
-# Total code points: 89228
+# Total code points: 89233
 
 # ================================================
 
@@ -1580,13 +1592,14 @@
 FE20..FE2D    ; Inherited # Mn  [14] COMBINING LIGATURE LEFT HALF..COMBINING CONJOINING MACRON BELOW
 101FD         ; Inherited # Mn       PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
 102E0         ; Inherited # Mn       COPTIC EPACT THOUSANDS MARK
+1133B         ; Inherited # Mn       COMBINING BINDU BELOW
 1D167..1D169  ; Inherited # Mn   [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
 1D17B..1D182  ; Inherited # Mn   [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
 1D185..1D18B  ; Inherited # Mn   [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
 1D1AA..1D1AD  ; Inherited # Mn   [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
 E0100..E01EF  ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
 
-# Total code points: 568
+# Total code points: 569
 
 # ================================================
 
@@ -1779,13 +1792,13 @@
 10A0C..10A0F  ; Kharoshthi # Mn   [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
 10A10..10A13  ; Kharoshthi # Lo   [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA
 10A15..10A17  ; Kharoshthi # Lo   [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
-10A19..10A33  ; Kharoshthi # Lo  [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA
+10A19..10A35  ; Kharoshthi # Lo  [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA
 10A38..10A3A  ; Kharoshthi # Mn   [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
 10A3F         ; Kharoshthi # Mn       KHAROSHTHI VIRAMA
-10A40..10A47  ; Kharoshthi # No   [8] KHAROSHTHI DIGIT ONE..KHAROSHTHI NUMBER ONE THOUSAND
+10A40..10A48  ; Kharoshthi # No   [9] KHAROSHTHI DIGIT ONE..KHAROSHTHI FRACTION ONE HALF
 10A50..10A58  ; Kharoshthi # Po   [9] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES
 
-# Total code points: 65
+# Total code points: 68
 
 # ================================================
 
@@ -1842,8 +1855,10 @@
 07F6          ; Nko # So       NKO SYMBOL OO DENNEN
 07F7..07F9    ; Nko # Po   [3] NKO SYMBOL GBAKURUNEN..NKO EXCLAMATION MARK
 07FA          ; Nko # Lm       NKO LAJANYALAN
-
-# Total code points: 59
+07FD          ; Nko # Mn       NKO DANTAYALAN
+07FE..07FF    ; Nko # Sc   [2] NKO DOROME SIGN..NKO TAMAN SIGN
+
+# Total code points: 62
 
 # ================================================
 
@@ -2138,8 +2153,9 @@
 110BB..110BC  ; Kaithi # Po   [2] KAITHI ABBREVIATION SIGN..KAITHI ENUMERATION SIGN
 110BD         ; Kaithi # Cf       KAITHI NUMBER SIGN
 110BE..110C1  ; Kaithi # Po   [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA
-
-# Total code points: 66
+110CD         ; Kaithi # Cf       KAITHI NUMBER SIGN ABOVE
+
+# Total code points: 67
 
 # ================================================
 
@@ -2187,8 +2203,10 @@
 1112D..11134  ; Chakma # Mn   [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA
 11136..1113F  ; Chakma # Nd  [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE
 11140..11143  ; Chakma # Po   [4] CHAKMA SECTION MARK..CHAKMA QUESTION MARK
-
-# Total code points: 67
+11144         ; Chakma # Lo       CHAKMA LETTER LHAA
+11145..11146  ; Chakma # Mc   [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI
+
+# Total code points: 70
 
 # ================================================
 
@@ -2225,8 +2243,8 @@
 111B6..111BE  ; Sharada # Mn   [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
 111BF..111C0  ; Sharada # Mc   [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA
 111C1..111C4  ; Sharada # Lo   [4] SHARADA SIGN AVAGRAHA..SHARADA OM
-111C5..111C9  ; Sharada # Po   [5] SHARADA DANDA..SHARADA SANDHI MARK
-111CA..111CC  ; Sharada # Mn   [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK
+111C5..111C8  ; Sharada # Po   [4] SHARADA DANDA..SHARADA SEPARATOR
+111C9..111CC  ; Sharada # Mn   [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK
 111CD         ; Sharada # Po       SHARADA SUTRA MARK
 111D0..111D9  ; Sharada # Nd  [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE
 111DA         ; Sharada # Lo       SHARADA EKAM
@@ -2503,7 +2521,7 @@
 
 # ================================================
 
-11700..11719  ; Ahom # Lo  [26] AHOM LETTER KA..AHOM LETTER JHA
+11700..1171A  ; Ahom # Lo  [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA
 1171D..1171F  ; Ahom # Mn   [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
 11720..11721  ; Ahom # Mc   [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
 11722..11725  ; Ahom # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
@@ -2514,7 +2532,7 @@
 1173C..1173E  ; Ahom # Po   [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
 1173F         ; Ahom # So       AHOM SYMBOL VI
 
-# Total code points: 57
+# Total code points: 58
 
 # ================================================
 
@@ -2619,8 +2637,9 @@
 11450..11459  ; Newa # Nd  [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
 1145B         ; Newa # Po       NEWA PLACEHOLDER MARK
 1145D         ; Newa # Po       NEWA INSERTION SIGN
-
-# Total code points: 92
+1145E         ; Newa # Mn       NEWA SANDHI MARK
+
+# Total code points: 93
 
 # ================================================
 
@@ -2632,10 +2651,10 @@
 # ================================================
 
 16FE0         ; Tangut # Lm       TANGUT ITERATION MARK
-17000..187EC  ; Tangut # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+17000..187F1  ; Tangut # Lo [6130] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F1
 18800..18AF2  ; Tangut # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
 
-# Total code points: 6881
+# Total code points: 6886
 
 # ================================================
 
@@ -2671,16 +2690,15 @@
 11A97         ; Soyombo # Mc       SOYOMBO SIGN VISARGA
 11A98..11A99  ; Soyombo # Mn   [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER
 11A9A..11A9C  ; Soyombo # Po   [3] SOYOMBO MARK TSHEG..SOYOMBO MARK DOUBLE SHAD
+11A9D         ; Soyombo # Lo       SOYOMBO MARK PLUTA
 11A9E..11AA2  ; Soyombo # Po   [5] SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME..SOYOMBO TERMINAL MARK-2
 
-# Total code points: 80
+# Total code points: 81
 
 # ================================================
 
 11A00         ; Zanabazar_Square # Lo       ZANABAZAR SQUARE LETTER A
-11A01..11A06  ; Zanabazar_Square # Mn   [6] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL SIGN O
-11A07..11A08  ; Zanabazar_Square # Mc   [2] ZANABAZAR SQUARE VOWEL SIGN AI..ZANABAZAR SQUARE VOWEL SIGN AU
-11A09..11A0A  ; Zanabazar_Square # Mn   [2] ZANABAZAR SQUARE VOWEL SIGN REVERSED I..ZANABAZAR SQUARE VOWEL LENGTH MARK
+11A01..11A0A  ; Zanabazar_Square # Mn  [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK
 11A0B..11A32  ; Zanabazar_Square # Lo  [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA
 11A33..11A38  ; Zanabazar_Square # Mn   [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA
 11A39         ; Zanabazar_Square # Mc       ZANABAZAR SQUARE SIGN VISARGA
@@ -2691,4 +2709,73 @@
 
 # Total code points: 72
 
+# ================================================
+
+11800..1182B  ; Dogra # Lo  [44] DOGRA LETTER A..DOGRA LETTER RRA
+1182C..1182E  ; Dogra # Mc   [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II
+1182F..11837  ; Dogra # Mn   [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
+11838         ; Dogra # Mc       DOGRA SIGN VISARGA
+11839..1183A  ; Dogra # Mn   [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
+1183B         ; Dogra # Po       DOGRA ABBREVIATION SIGN
+
+# Total code points: 60
+
+# ================================================
+
+11D60..11D65  ; Gunjala_Gondi # Lo   [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU
+11D67..11D68  ; Gunjala_Gondi # Lo   [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI
+11D6A..11D89  ; Gunjala_Gondi # Lo  [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA
+11D8A..11D8E  ; Gunjala_Gondi # Mc   [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU
+11D90..11D91  ; Gunjala_Gondi # Mn   [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI
+11D93..11D94  ; Gunjala_Gondi # Mc   [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU
+11D95         ; Gunjala_Gondi # Mn       GUNJALA GONDI SIGN ANUSVARA
+11D96         ; Gunjala_Gondi # Mc       GUNJALA GONDI SIGN VISARGA
+11D97         ; Gunjala_Gondi # Mn       GUNJALA GONDI VIRAMA
+11D98         ; Gunjala_Gondi # Lo       GUNJALA GONDI OM
+11DA0..11DA9  ; Gunjala_Gondi # Nd  [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE
+
+# Total code points: 63
+
+# ================================================
+
+11EE0..11EF2  ; Makasar # Lo  [19] MAKASAR LETTER KA..MAKASAR ANGKA
+11EF3..11EF4  ; Makasar # Mn   [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
+11EF5..11EF6  ; Makasar # Mc   [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O
+11EF7..11EF8  ; Makasar # Po   [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION
+
+# Total code points: 25
+
+# ================================================
+
+16E40..16E7F  ; Medefaidrin # L&  [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
+16E80..16E96  ; Medefaidrin # No  [23] MEDEFAIDRIN DIGIT ZERO..MEDEFAIDRIN DIGIT THREE ALTERNATE FORM
+16E97..16E9A  ; Medefaidrin # Po   [4] MEDEFAIDRIN COMMA..MEDEFAIDRIN EXCLAMATION OH
+
+# Total code points: 91
+
+# ================================================
+
+10D00..10D23  ; Hanifi_Rohingya # Lo  [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
+10D24..10D27  ; Hanifi_Rohingya # Mn   [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+10D30..10D39  ; Hanifi_Rohingya # Nd  [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE
+
+# Total code points: 50
+
+# ================================================
+
+10F30..10F45  ; Sogdian # Lo  [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN
+10F46..10F50  ; Sogdian # Mn  [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
+10F51..10F54  ; Sogdian # No   [4] SOGDIAN NUMBER ONE..SOGDIAN NUMBER ONE HUNDRED
+10F55..10F59  ; Sogdian # Po   [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
+
+# Total code points: 42
+
+# ================================================
+
+10F00..10F1C  ; Old_Sogdian # Lo  [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
+10F1D..10F26  ; Old_Sogdian # No  [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF
+10F27         ; Old_Sogdian # Lo       OLD SOGDIAN LIGATURE AYIN-DALETH
+
+# Total code points: 40
+
 # EOF
--- a/test/jdk/java/lang/Character/SpecialCasing.txt	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jdk/java/lang/Character/SpecialCasing.txt	Wed Nov 21 13:53:17 2018 -0500
@@ -1,6 +1,6 @@
-# SpecialCasing-10.0.0.txt
-# Date: 2017-04-14, 05:40:43 GMT
-# Copyright (c) 2017 Unicode, Inc.
+# SpecialCasing-11.0.0.txt
+# Date: 2018-02-22, 06:16:47 GMT
+# Copyright (c) 2018 Unicode, Inc.
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
@@ -121,7 +121,7 @@
 
 # The following cases are already in the UnicodeData.txt file, so are only commented here.
 
-# 0345; 0345; 0345; 0399; # COMBINING GREEK YPOGEGRAMMENI
+# 0345; 0345; 0399; 0399; # COMBINING GREEK YPOGEGRAMMENI
 
 # All letters with YPOGEGRAMMENI (iota-subscript) or PROSGEGRAMMENI (iota adscript)
 # have special uppercases.
--- a/test/jdk/java/lang/Character/UnicodeBlock/Blocks.txt	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jdk/java/lang/Character/UnicodeBlock/Blocks.txt	Wed Nov 21 13:53:17 2018 -0500
@@ -1,6 +1,6 @@
-# Blocks-10.0.0.txt
-# Date: 2017-04-12, 17:30:00 GMT [KW]
-# Copyright (c) 2017 Unicode, Inc.
+# Blocks-11.0.0.txt
+# Date: 2017-10-16, 24:39:00 GMT [KW]
+# Copyright (c) 2018 Unicode, Inc.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
@@ -95,6 +95,7 @@
 1C00..1C4F; Lepcha
 1C50..1C7F; Ol Chiki
 1C80..1C8F; Cyrillic Extended-C
+1C90..1CBF; Georgian Extended
 1CC0..1CCF; Sundanese Supplement
 1CD0..1CFF; Vedic Extensions
 1D00..1D7F; Phonetic Extensions
@@ -234,7 +235,10 @@
 10B80..10BAF; Psalter Pahlavi
 10C00..10C4F; Old Turkic
 10C80..10CFF; Old Hungarian
+10D00..10D3F; Hanifi Rohingya
 10E60..10E7F; Rumi Numeral Symbols
+10F00..10F2F; Old Sogdian
+10F30..10F6F; Sogdian
 11000..1107F; Brahmi
 11080..110CF; Kaithi
 110D0..110FF; Sora Sompeng
@@ -253,6 +257,7 @@
 11660..1167F; Mongolian Supplement
 11680..116CF; Takri
 11700..1173F; Ahom
+11800..1184F; Dogra
 118A0..118FF; Warang Citi
 11A00..11A4F; Zanabazar Square
 11A50..11AAF; Soyombo
@@ -260,6 +265,8 @@
 11C00..11C6F; Bhaiksuki
 11C70..11CBF; Marchen
 11D00..11D5F; Masaram Gondi
+11D60..11DAF; Gunjala Gondi
+11EE0..11EFF; Makasar
 12000..123FF; Cuneiform
 12400..1247F; Cuneiform Numbers and Punctuation
 12480..1254F; Early Dynastic Cuneiform
@@ -269,6 +276,7 @@
 16A40..16A6F; Mro
 16AD0..16AFF; Bassa Vah
 16B00..16B8F; Pahawh Hmong
+16E40..16E9F; Medefaidrin
 16F00..16F9F; Miao
 16FE0..16FFF; Ideographic Symbols and Punctuation
 17000..187FF; Tangut
@@ -281,6 +289,7 @@
 1D000..1D0FF; Byzantine Musical Symbols
 1D100..1D1FF; Musical Symbols
 1D200..1D24F; Ancient Greek Musical Notation
+1D2E0..1D2FF; Mayan Numerals
 1D300..1D35F; Tai Xuan Jing Symbols
 1D360..1D37F; Counting Rod Numerals
 1D400..1D7FF; Mathematical Alphanumeric Symbols
@@ -288,6 +297,7 @@
 1E000..1E02F; Glagolitic Supplement
 1E800..1E8DF; Mende Kikakui
 1E900..1E95F; Adlam
+1EC70..1ECBF; Indic Siyaq Numbers
 1EE00..1EEFF; Arabic Mathematical Alphabetic Symbols
 1F000..1F02F; Mahjong Tiles
 1F030..1F09F; Domino Tiles
@@ -302,6 +312,7 @@
 1F780..1F7FF; Geometric Shapes Extended
 1F800..1F8FF; Supplemental Arrows-C
 1F900..1F9FF; Supplemental Symbols and Pictographs
+1FA00..1FA6F; Chess Symbols
 20000..2A6DF; CJK Unified Ideographs Extension B
 2A700..2B73F; CJK Unified Ideographs Extension C
 2B740..2B81F; CJK Unified Ideographs Extension D
--- a/test/jdk/java/lang/Character/UnicodeData.txt	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jdk/java/lang/Character/UnicodeData.txt	Wed Nov 21 13:53:17 2018 -0500
@@ -1362,6 +1362,7 @@
 055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
 055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
 055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
+0560;ARMENIAN SMALL LETTER TURNED AYB;Ll;0;L;;;;;N;;;;;
 0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
 0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
 0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
@@ -1401,6 +1402,7 @@
 0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
 0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
 0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
+0588;ARMENIAN SMALL LETTER YI WITH STROKE;Ll;0;L;;;;;N;;;;;
 0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
 058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;;
 058D;RIGHT-FACING ARMENIAN ETERNITY SIGN;So;0;ON;;;;;N;;;;;
@@ -1488,6 +1490,7 @@
 05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
 05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
 05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
+05EF;HEBREW YOD TRIANGLE;Lo;0;R;;;;;N;;;;;
 05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
 05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
 05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
@@ -1982,6 +1985,9 @@
 07F8;NKO COMMA;Po;0;ON;;;;;N;;;;;
 07F9;NKO EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
 07FA;NKO LAJANYALAN;Lm;0;R;;;;;N;;;;;
+07FD;NKO DANTAYALAN;Mn;220;NSM;;;;;N;;;;;
+07FE;NKO DOROME SIGN;Sc;0;R;;;;;N;;;;;
+07FF;NKO TAMAN SIGN;Sc;0;R;;;;;N;;;;;
 0800;SAMARITAN LETTER ALAF;Lo;0;R;;;;;N;;;;;
 0801;SAMARITAN LETTER BIT;Lo;0;R;;;;;N;;;;;
 0802;SAMARITAN LETTER GAMAN;Lo;0;R;;;;;N;;;;;
@@ -2112,6 +2118,7 @@
 08BB;ARABIC LETTER AFRICAN FEH;Lo;0;AL;;;;;N;;;;;
 08BC;ARABIC LETTER AFRICAN QAF;Lo;0;AL;;;;;N;;;;;
 08BD;ARABIC LETTER AFRICAN NOON;Lo;0;AL;;;;;N;;;;;
+08D3;ARABIC SMALL LOW WAW;Mn;220;NSM;;;;;N;;;;;
 08D4;ARABIC SMALL HIGH WORD AR-RUB;Mn;230;NSM;;;;;N;;;;;
 08D5;ARABIC SMALL HIGH SAD;Mn;230;NSM;;;;;N;;;;;
 08D6;ARABIC SMALL HIGH AIN;Mn;230;NSM;;;;;N;;;;;
@@ -2379,6 +2386,7 @@
 09FB;BENGALI GANDA MARK;Sc;0;ET;;;;;N;;;;;
 09FC;BENGALI LETTER VEDIC ANUSVARA;Lo;0;L;;;;;N;;;;;
 09FD;BENGALI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+09FE;BENGALI SANDHI MARK;Mn;230;NSM;;;;;N;;;;;
 0A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;;
 0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;;
 0A03;GURMUKHI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
@@ -2458,6 +2466,7 @@
 0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
 0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
 0A75;GURMUKHI SIGN YAKASH;Mn;0;NSM;;;;;N;;;;;
+0A76;GURMUKHI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
 0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
 0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
 0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
@@ -2715,6 +2724,7 @@
 0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
 0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
 0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C04;TELUGU SIGN COMBINING ANUSVARA ABOVE;Mn;0;NSM;;;;;N;;;;;
 0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
 0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
 0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
@@ -2811,6 +2821,7 @@
 0C81;KANNADA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
 0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
 0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C84;KANNADA SIGN SIDDHAM;Po;0;L;;;;;N;;;;;
 0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
 0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
 0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
@@ -3667,54 +3678,54 @@
 10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;;;2D25;
 10C7;GEORGIAN CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;2D27;
 10CD;GEORGIAN CAPITAL LETTER AEN;Lu;0;L;;;;;N;;;;2D2D;
-10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
-10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
-10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
-10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
-10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
-10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
-10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
-10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
-10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
-10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
-10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
-10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
-10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
-10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
-10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
-10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
-10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
-10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
-10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
-10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
-10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
-10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
-10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
-10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
-10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
-10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
-10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
-10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
-10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
-10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
-10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
-10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
-10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
-10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
-10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
-10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
-10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
-10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
-10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
-10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;;
-10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;;
-10F9;GEORGIAN LETTER TURNED GAN;Lo;0;L;;;;;N;;;;;
-10FA;GEORGIAN LETTER AIN;Lo;0;L;;;;;N;;;;;
+10D0;GEORGIAN LETTER AN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;1C90;;10D0
+10D1;GEORGIAN LETTER BAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;1C91;;10D1
+10D2;GEORGIAN LETTER GAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;1C92;;10D2
+10D3;GEORGIAN LETTER DON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;1C93;;10D3
+10D4;GEORGIAN LETTER EN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;1C94;;10D4
+10D5;GEORGIAN LETTER VIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;1C95;;10D5
+10D6;GEORGIAN LETTER ZEN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;1C96;;10D6
+10D7;GEORGIAN LETTER TAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;1C97;;10D7
+10D8;GEORGIAN LETTER IN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;1C98;;10D8
+10D9;GEORGIAN LETTER KAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;1C99;;10D9
+10DA;GEORGIAN LETTER LAS;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;1C9A;;10DA
+10DB;GEORGIAN LETTER MAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;1C9B;;10DB
+10DC;GEORGIAN LETTER NAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;1C9C;;10DC
+10DD;GEORGIAN LETTER ON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;1C9D;;10DD
+10DE;GEORGIAN LETTER PAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;1C9E;;10DE
+10DF;GEORGIAN LETTER ZHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;1C9F;;10DF
+10E0;GEORGIAN LETTER RAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;1CA0;;10E0
+10E1;GEORGIAN LETTER SAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;1CA1;;10E1
+10E2;GEORGIAN LETTER TAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;1CA2;;10E2
+10E3;GEORGIAN LETTER UN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;1CA3;;10E3
+10E4;GEORGIAN LETTER PHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;1CA4;;10E4
+10E5;GEORGIAN LETTER KHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;1CA5;;10E5
+10E6;GEORGIAN LETTER GHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;1CA6;;10E6
+10E7;GEORGIAN LETTER QAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;1CA7;;10E7
+10E8;GEORGIAN LETTER SHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;1CA8;;10E8
+10E9;GEORGIAN LETTER CHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;1CA9;;10E9
+10EA;GEORGIAN LETTER CAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;1CAA;;10EA
+10EB;GEORGIAN LETTER JIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;1CAB;;10EB
+10EC;GEORGIAN LETTER CIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;1CAC;;10EC
+10ED;GEORGIAN LETTER CHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;1CAD;;10ED
+10EE;GEORGIAN LETTER XAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;1CAE;;10EE
+10EF;GEORGIAN LETTER JHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;1CAF;;10EF
+10F0;GEORGIAN LETTER HAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;1CB0;;10F0
+10F1;GEORGIAN LETTER HE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;1CB1;;10F1
+10F2;GEORGIAN LETTER HIE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;1CB2;;10F2
+10F3;GEORGIAN LETTER WE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;1CB3;;10F3
+10F4;GEORGIAN LETTER HAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;1CB4;;10F4
+10F5;GEORGIAN LETTER HOE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;1CB5;;10F5
+10F6;GEORGIAN LETTER FI;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;1CB6;;10F6
+10F7;GEORGIAN LETTER YN;Ll;0;L;;;;;N;;;1CB7;;10F7
+10F8;GEORGIAN LETTER ELIFI;Ll;0;L;;;;;N;;;1CB8;;10F8
+10F9;GEORGIAN LETTER TURNED GAN;Ll;0;L;;;;;N;;;1CB9;;10F9
+10FA;GEORGIAN LETTER AIN;Ll;0;L;;;;;N;;;1CBA;;10FA
 10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
 10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L;<super> 10DC;;;;N;;;;;
-10FD;GEORGIAN LETTER AEN;Lo;0;L;;;;;N;;;;;
-10FE;GEORGIAN LETTER HARD SIGN;Lo;0;L;;;;;N;;;;;
-10FF;GEORGIAN LETTER LABIAL SIGN;Lo;0;L;;;;;N;;;;;
+10FD;GEORGIAN LETTER AEN;Ll;0;L;;;;;N;;;1CBD;;10FD
+10FE;GEORGIAN LETTER HARD SIGN;Ll;0;L;;;;;N;;;1CBE;;10FE
+10FF;GEORGIAN LETTER LABIAL SIGN;Ll;0;L;;;;;N;;;1CBF;;10FF
 1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
 1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
 1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;;;;
@@ -5513,6 +5524,7 @@
 1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;;
 1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;;
 1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;;
+1878;MONGOLIAN LETTER CHA WITH TWO DOTS;Lo;0;L;;;;;N;;;;;
 1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;;
 1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;;
 1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;;
@@ -6388,6 +6400,52 @@
 1C86;CYRILLIC SMALL LETTER TALL HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
 1C87;CYRILLIC SMALL LETTER TALL YAT;Ll;0;L;;;;;N;;;0462;;0462
 1C88;CYRILLIC SMALL LETTER UNBLENDED UK;Ll;0;L;;;;;N;;;A64A;;A64A
+1C90;GEORGIAN MTAVRULI CAPITAL LETTER AN;Lu;0;L;;;;;N;;;;10D0;
+1C91;GEORGIAN MTAVRULI CAPITAL LETTER BAN;Lu;0;L;;;;;N;;;;10D1;
+1C92;GEORGIAN MTAVRULI CAPITAL LETTER GAN;Lu;0;L;;;;;N;;;;10D2;
+1C93;GEORGIAN MTAVRULI CAPITAL LETTER DON;Lu;0;L;;;;;N;;;;10D3;
+1C94;GEORGIAN MTAVRULI CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;10D4;
+1C95;GEORGIAN MTAVRULI CAPITAL LETTER VIN;Lu;0;L;;;;;N;;;;10D5;
+1C96;GEORGIAN MTAVRULI CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;;;10D6;
+1C97;GEORGIAN MTAVRULI CAPITAL LETTER TAN;Lu;0;L;;;;;N;;;;10D7;
+1C98;GEORGIAN MTAVRULI CAPITAL LETTER IN;Lu;0;L;;;;;N;;;;10D8;
+1C99;GEORGIAN MTAVRULI CAPITAL LETTER KAN;Lu;0;L;;;;;N;;;;10D9;
+1C9A;GEORGIAN MTAVRULI CAPITAL LETTER LAS;Lu;0;L;;;;;N;;;;10DA;
+1C9B;GEORGIAN MTAVRULI CAPITAL LETTER MAN;Lu;0;L;;;;;N;;;;10DB;
+1C9C;GEORGIAN MTAVRULI CAPITAL LETTER NAR;Lu;0;L;;;;;N;;;;10DC;
+1C9D;GEORGIAN MTAVRULI CAPITAL LETTER ON;Lu;0;L;;;;;N;;;;10DD;
+1C9E;GEORGIAN MTAVRULI CAPITAL LETTER PAR;Lu;0;L;;;;;N;;;;10DE;
+1C9F;GEORGIAN MTAVRULI CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;;;10DF;
+1CA0;GEORGIAN MTAVRULI CAPITAL LETTER RAE;Lu;0;L;;;;;N;;;;10E0;
+1CA1;GEORGIAN MTAVRULI CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;10E1;
+1CA2;GEORGIAN MTAVRULI CAPITAL LETTER TAR;Lu;0;L;;;;;N;;;;10E2;
+1CA3;GEORGIAN MTAVRULI CAPITAL LETTER UN;Lu;0;L;;;;;N;;;;10E3;
+1CA4;GEORGIAN MTAVRULI CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;;;10E4;
+1CA5;GEORGIAN MTAVRULI CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;;;10E5;
+1CA6;GEORGIAN MTAVRULI CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;;;10E6;
+1CA7;GEORGIAN MTAVRULI CAPITAL LETTER QAR;Lu;0;L;;;;;N;;;;10E7;
+1CA8;GEORGIAN MTAVRULI CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;;;10E8;
+1CA9;GEORGIAN MTAVRULI CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;;;10E9;
+1CAA;GEORGIAN MTAVRULI CAPITAL LETTER CAN;Lu;0;L;;;;;N;;;;10EA;
+1CAB;GEORGIAN MTAVRULI CAPITAL LETTER JIL;Lu;0;L;;;;;N;;;;10EB;
+1CAC;GEORGIAN MTAVRULI CAPITAL LETTER CIL;Lu;0;L;;;;;N;;;;10EC;
+1CAD;GEORGIAN MTAVRULI CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;;;10ED;
+1CAE;GEORGIAN MTAVRULI CAPITAL LETTER XAN;Lu;0;L;;;;;N;;;;10EE;
+1CAF;GEORGIAN MTAVRULI CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;;;10EF;
+1CB0;GEORGIAN MTAVRULI CAPITAL LETTER HAE;Lu;0;L;;;;;N;;;;10F0;
+1CB1;GEORGIAN MTAVRULI CAPITAL LETTER HE;Lu;0;L;;;;;N;;;;10F1;
+1CB2;GEORGIAN MTAVRULI CAPITAL LETTER HIE;Lu;0;L;;;;;N;;;;10F2;
+1CB3;GEORGIAN MTAVRULI CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;10F3;
+1CB4;GEORGIAN MTAVRULI CAPITAL LETTER HAR;Lu;0;L;;;;;N;;;;10F4;
+1CB5;GEORGIAN MTAVRULI CAPITAL LETTER HOE;Lu;0;L;;;;;N;;;;10F5;
+1CB6;GEORGIAN MTAVRULI CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;10F6;
+1CB7;GEORGIAN MTAVRULI CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;10F7;
+1CB8;GEORGIAN MTAVRULI CAPITAL LETTER ELIFI;Lu;0;L;;;;;N;;;;10F8;
+1CB9;GEORGIAN MTAVRULI CAPITAL LETTER TURNED GAN;Lu;0;L;;;;;N;;;;10F9;
+1CBA;GEORGIAN MTAVRULI CAPITAL LETTER AIN;Lu;0;L;;;;;N;;;;10FA;
+1CBD;GEORGIAN MTAVRULI CAPITAL LETTER AEN;Lu;0;L;;;;;N;;;;10FD;
+1CBE;GEORGIAN MTAVRULI CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;10FE;
+1CBF;GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN;Lu;0;L;;;;;N;;;;10FF;
 1CC0;SUNDANESE PUNCTUATION BINDU SURYA;Po;0;L;;;;;N;;;;;
 1CC1;SUNDANESE PUNCTUATION BINDU PANGLONG;Po;0;L;;;;;N;;;;;
 1CC2;SUNDANESE PUNCTUATION BINDU PURNAMA;Po;0;L;;;;;N;;;;;
@@ -9559,7 +9617,7 @@
 299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;;
 299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;;
 29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
-29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
+29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;N;;;;;
 29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;;
 29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;;
 29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
@@ -10092,6 +10150,9 @@
 2BB7;RIBBON ARROW RIGHT DOWN;So;0;ON;;;;;N;;;;;
 2BB8;UPWARDS WHITE ARROW FROM BAR WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
 2BB9;UP ARROWHEAD IN A RECTANGLE BOX;So;0;ON;;;;;N;;;;;
+2BBA;OVERLAPPING WHITE SQUARES;So;0;ON;;;;;N;;;;;
+2BBB;OVERLAPPING WHITE AND BLACK SQUARES;So;0;ON;;;;;N;;;;;
+2BBC;OVERLAPPING BLACK SQUARES;So;0;ON;;;;;N;;;;;
 2BBD;BALLOT BOX WITH LIGHT X;So;0;ON;;;;;N;;;;;
 2BBE;CIRCLED X;So;0;ON;;;;;N;;;;;
 2BBF;CIRCLED BOLD X;So;0;ON;;;;;N;;;;;
@@ -10113,10 +10174,50 @@
 2BD0;SQUARE POSITION INDICATOR;So;0;ON;;;;;N;;;;;
 2BD1;UNCERTAINTY SIGN;So;0;ON;;;;;N;;;;;
 2BD2;GROUP MARK;So;0;ON;;;;;N;;;;;
+2BD3;PLUTO FORM TWO;So;0;ON;;;;;N;;;;;
+2BD4;PLUTO FORM THREE;So;0;ON;;;;;N;;;;;
+2BD5;PLUTO FORM FOUR;So;0;ON;;;;;N;;;;;
+2BD6;PLUTO FORM FIVE;So;0;ON;;;;;N;;;;;
+2BD7;TRANSPLUTO;So;0;ON;;;;;N;;;;;
+2BD8;PROSERPINA;So;0;ON;;;;;N;;;;;
+2BD9;ASTRAEA;So;0;ON;;;;;N;;;;;
+2BDA;HYGIEA;So;0;ON;;;;;N;;;;;
+2BDB;PHOLUS;So;0;ON;;;;;N;;;;;
+2BDC;NESSUS;So;0;ON;;;;;N;;;;;
+2BDD;WHITE MOON SELENA;So;0;ON;;;;;N;;;;;
+2BDE;BLACK DIAMOND ON CROSS;So;0;ON;;;;;N;;;;;
+2BDF;TRUE LIGHT MOON ARTA;So;0;ON;;;;;N;;;;;
+2BE0;CUPIDO;So;0;ON;;;;;N;;;;;
+2BE1;HADES;So;0;ON;;;;;N;;;;;
+2BE2;ZEUS;So;0;ON;;;;;N;;;;;
+2BE3;KRONOS;So;0;ON;;;;;N;;;;;
+2BE4;APOLLON;So;0;ON;;;;;N;;;;;
+2BE5;ADMETOS;So;0;ON;;;;;N;;;;;
+2BE6;VULCANUS;So;0;ON;;;;;N;;;;;
+2BE7;POSEIDON;So;0;ON;;;;;N;;;;;
+2BE8;LEFT HALF BLACK STAR;So;0;ON;;;;;N;;;;;
+2BE9;RIGHT HALF BLACK STAR;So;0;ON;;;;;N;;;;;
+2BEA;STAR WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+2BEB;STAR WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
 2BEC;LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;;
 2BED;UPWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;;
 2BEE;RIGHTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;;
 2BEF;DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;;
+2BF0;ERIS FORM ONE;So;0;ON;;;;;N;;;;;
+2BF1;ERIS FORM TWO;So;0;ON;;;;;N;;;;;
+2BF2;SEDNA;So;0;ON;;;;;N;;;;;
+2BF3;RUSSIAN ASTROLOGICAL SYMBOL VIGINTILE;So;0;ON;;;;;N;;;;;
+2BF4;RUSSIAN ASTROLOGICAL SYMBOL NOVILE;So;0;ON;;;;;N;;;;;
+2BF5;RUSSIAN ASTROLOGICAL SYMBOL QUINTILE;So;0;ON;;;;;N;;;;;
+2BF6;RUSSIAN ASTROLOGICAL SYMBOL BINOVILE;So;0;ON;;;;;N;;;;;
+2BF7;RUSSIAN ASTROLOGICAL SYMBOL SENTAGON;So;0;ON;;;;;N;;;;;
+2BF8;RUSSIAN ASTROLOGICAL SYMBOL TREDECILE;So;0;ON;;;;;N;;;;;
+2BF9;EQUALS SIGN WITH INFINITY BELOW;So;0;ON;;;;;N;;;;;
+2BFA;UNITED SYMBOL;So;0;ON;;;;;N;;;;;
+2BFB;SEPARATED SYMBOL;So;0;ON;;;;;N;;;;;
+2BFC;DOUBLED SYMBOL;So;0;ON;;;;;N;;;;;
+2BFD;PASSED SYMBOL;So;0;ON;;;;;N;;;;;
+2BFE;REVERSED RIGHT ANGLE;So;0;ON;;;;;Y;;;;;
 2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30;
 2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31;
 2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32;
@@ -10650,6 +10751,11 @@
 2E47;LOW KAVYKA;Po;0;ON;;;;;N;;;;;
 2E48;LOW KAVYKA WITH DOT;Po;0;ON;;;;;N;;;;;
 2E49;DOUBLE STACKED COMMA;Po;0;ON;;;;;N;;;;;
+2E4A;DOTTED SOLIDUS;Po;0;ON;;;;;N;;;;;
+2E4B;TRIPLE DAGGER;Po;0;ON;;;;;N;;;;;
+2E4C;MEDIEVAL COMMA;Po;0;ON;;;;;N;;;;;
+2E4D;PARAGRAPHUS MARK;Po;0;ON;;;;;N;;;;;
+2E4E;PUNCTUS ELEVATUS MARK;Po;0;ON;;;;;N;;;;;
 2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
 2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
 2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
@@ -11286,6 +11392,7 @@
 312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
 312D;BOPOMOFO LETTER IH;Lo;0;L;;;;;N;;;;;
 312E;BOPOMOFO LETTER O WITH DOT ABOVE;Lo;0;L;;;;;N;;;;;
+312F;BOPOMOFO LETTER NN;Lo;0;L;;;;;N;;;;;
 3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
 3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
 3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
@@ -12053,7 +12160,7 @@
 4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;;
 4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;;
 4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
-9FEA;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+9FEF;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
 A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
 A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
 A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
@@ -13981,6 +14088,7 @@
 A7AC;LATIN CAPITAL LETTER SCRIPT G;Lu;0;L;;;;;N;;;;0261;
 A7AD;LATIN CAPITAL LETTER L WITH BELT;Lu;0;L;;;;;N;;;;026C;
 A7AE;LATIN CAPITAL LETTER SMALL CAPITAL I;Lu;0;L;;;;;N;;;;026A;
+A7AF;LATIN LETTER SMALL CAPITAL Q;Ll;0;L;;;;;N;;;;;
 A7B0;LATIN CAPITAL LETTER TURNED K;Lu;0;L;;;;;N;;;;029E;
 A7B1;LATIN CAPITAL LETTER TURNED T;Lu;0;L;;;;;N;;;;0287;
 A7B2;LATIN CAPITAL LETTER J WITH CROSSED-TAIL;Lu;0;L;;;;;N;;;;029D;
@@ -13989,6 +14097,8 @@
 A7B5;LATIN SMALL LETTER BETA;Ll;0;L;;;;;N;;;A7B4;;A7B4
 A7B6;LATIN CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;A7B7;
 A7B7;LATIN SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;A7B6;;A7B6
+A7B8;LATIN CAPITAL LETTER U WITH STROKE;Lu;0;L;;;;;N;;;;A7B9;
+A7B9;LATIN SMALL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;A7B8;;A7B8
 A7F7;LATIN EPIGRAPHIC LETTER SIDEWAYS I;Lo;0;L;;;;;N;;;;;
 A7F8;MODIFIER LETTER CAPITAL H WITH STROKE;Lm;0;L;<super> 0126;;;;N;;;;;
 A7F9;MODIFIER LETTER SMALL LIGATURE OE;Lm;0;L;<super> 0153;;;;N;;;;;
@@ -14220,6 +14330,8 @@
 A8FB;DEVANAGARI HEADSTROKE;Lo;0;L;;;;;N;;;;;
 A8FC;DEVANAGARI SIGN SIDDHAM;Po;0;L;;;;;N;;;;;
 A8FD;DEVANAGARI JAIN OM;Lo;0;L;;;;;N;;;;;
+A8FE;DEVANAGARI LETTER AY;Lo;0;L;;;;;N;;;;;
+A8FF;DEVANAGARI VOWEL SIGN AY;Mn;0;NSM;;;;;N;;;;;
 A900;KAYAH LI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
 A901;KAYAH LI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
 A902;KAYAH LI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
@@ -18364,6 +18476,8 @@
 10A31;KHAROSHTHI LETTER HA;Lo;0;R;;;;;N;;;;;
 10A32;KHAROSHTHI LETTER KKA;Lo;0;R;;;;;N;;;;;
 10A33;KHAROSHTHI LETTER TTTHA;Lo;0;R;;;;;N;;;;;
+10A34;KHAROSHTHI LETTER TTTA;Lo;0;R;;;;;N;;;;;
+10A35;KHAROSHTHI LETTER VHA;Lo;0;R;;;;;N;;;;;
 10A38;KHAROSHTHI SIGN BAR ABOVE;Mn;230;NSM;;;;;N;;;;;
 10A39;KHAROSHTHI SIGN CAUDA;Mn;1;NSM;;;;;N;;;;;
 10A3A;KHAROSHTHI SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;;
@@ -18376,6 +18490,7 @@
 10A45;KHAROSHTHI NUMBER TWENTY;No;0;R;;;;20;N;;;;;
 10A46;KHAROSHTHI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
 10A47;KHAROSHTHI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
+10A48;KHAROSHTHI FRACTION ONE HALF;No;0;R;;;;1/2;N;;;;;
 10A50;KHAROSHTHI PUNCTUATION DOT;Po;0;R;;;;;N;;;;;
 10A51;KHAROSHTHI PUNCTUATION SMALL CIRCLE;Po;0;R;;;;;N;;;;;
 10A52;KHAROSHTHI PUNCTUATION CIRCLE;Po;0;R;;;;;N;;;;;
@@ -18828,6 +18943,56 @@
 10CFD;OLD HUNGARIAN NUMBER FIFTY;No;0;R;;;;50;N;;;;;
 10CFE;OLD HUNGARIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
 10CFF;OLD HUNGARIAN NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
+10D00;HANIFI ROHINGYA LETTER A;Lo;0;AL;;;;;N;;;;;
+10D01;HANIFI ROHINGYA LETTER BA;Lo;0;AL;;;;;N;;;;;
+10D02;HANIFI ROHINGYA LETTER PA;Lo;0;AL;;;;;N;;;;;
+10D03;HANIFI ROHINGYA LETTER TA;Lo;0;AL;;;;;N;;;;;
+10D04;HANIFI ROHINGYA LETTER TTA;Lo;0;AL;;;;;N;;;;;
+10D05;HANIFI ROHINGYA LETTER JA;Lo;0;AL;;;;;N;;;;;
+10D06;HANIFI ROHINGYA LETTER CA;Lo;0;AL;;;;;N;;;;;
+10D07;HANIFI ROHINGYA LETTER HA;Lo;0;AL;;;;;N;;;;;
+10D08;HANIFI ROHINGYA LETTER KHA;Lo;0;AL;;;;;N;;;;;
+10D09;HANIFI ROHINGYA LETTER FA;Lo;0;AL;;;;;N;;;;;
+10D0A;HANIFI ROHINGYA LETTER DA;Lo;0;AL;;;;;N;;;;;
+10D0B;HANIFI ROHINGYA LETTER DDA;Lo;0;AL;;;;;N;;;;;
+10D0C;HANIFI ROHINGYA LETTER RA;Lo;0;AL;;;;;N;;;;;
+10D0D;HANIFI ROHINGYA LETTER RRA;Lo;0;AL;;;;;N;;;;;
+10D0E;HANIFI ROHINGYA LETTER ZA;Lo;0;AL;;;;;N;;;;;
+10D0F;HANIFI ROHINGYA LETTER SA;Lo;0;AL;;;;;N;;;;;
+10D10;HANIFI ROHINGYA LETTER SHA;Lo;0;AL;;;;;N;;;;;
+10D11;HANIFI ROHINGYA LETTER KA;Lo;0;AL;;;;;N;;;;;
+10D12;HANIFI ROHINGYA LETTER GA;Lo;0;AL;;;;;N;;;;;
+10D13;HANIFI ROHINGYA LETTER LA;Lo;0;AL;;;;;N;;;;;
+10D14;HANIFI ROHINGYA LETTER MA;Lo;0;AL;;;;;N;;;;;
+10D15;HANIFI ROHINGYA LETTER NA;Lo;0;AL;;;;;N;;;;;
+10D16;HANIFI ROHINGYA LETTER WA;Lo;0;AL;;;;;N;;;;;
+10D17;HANIFI ROHINGYA LETTER KINNA WA;Lo;0;AL;;;;;N;;;;;
+10D18;HANIFI ROHINGYA LETTER YA;Lo;0;AL;;;;;N;;;;;
+10D19;HANIFI ROHINGYA LETTER KINNA YA;Lo;0;AL;;;;;N;;;;;
+10D1A;HANIFI ROHINGYA LETTER NGA;Lo;0;AL;;;;;N;;;;;
+10D1B;HANIFI ROHINGYA LETTER NYA;Lo;0;AL;;;;;N;;;;;
+10D1C;HANIFI ROHINGYA LETTER VA;Lo;0;AL;;;;;N;;;;;
+10D1D;HANIFI ROHINGYA VOWEL A;Lo;0;AL;;;;;N;;;;;
+10D1E;HANIFI ROHINGYA VOWEL I;Lo;0;AL;;;;;N;;;;;
+10D1F;HANIFI ROHINGYA VOWEL U;Lo;0;AL;;;;;N;;;;;
+10D20;HANIFI ROHINGYA VOWEL E;Lo;0;AL;;;;;N;;;;;
+10D21;HANIFI ROHINGYA VOWEL O;Lo;0;AL;;;;;N;;;;;
+10D22;HANIFI ROHINGYA MARK SAKIN;Lo;0;AL;;;;;N;;;;;
+10D23;HANIFI ROHINGYA MARK NA KHONNA;Lo;0;AL;;;;;N;;;;;
+10D24;HANIFI ROHINGYA SIGN HARBAHAY;Mn;230;NSM;;;;;N;;;;;
+10D25;HANIFI ROHINGYA SIGN TAHALA;Mn;230;NSM;;;;;N;;;;;
+10D26;HANIFI ROHINGYA SIGN TANA;Mn;230;NSM;;;;;N;;;;;
+10D27;HANIFI ROHINGYA SIGN TASSI;Mn;230;NSM;;;;;N;;;;;
+10D30;HANIFI ROHINGYA DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+10D31;HANIFI ROHINGYA DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+10D32;HANIFI ROHINGYA DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+10D33;HANIFI ROHINGYA DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+10D34;HANIFI ROHINGYA DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+10D35;HANIFI ROHINGYA DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+10D36;HANIFI ROHINGYA DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+10D37;HANIFI ROHINGYA DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+10D38;HANIFI ROHINGYA DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+10D39;HANIFI ROHINGYA DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
 10E60;RUMI DIGIT ONE;No;0;AN;;;1;1;N;;;;;
 10E61;RUMI DIGIT TWO;No;0;AN;;;2;2;N;;;;;
 10E62;RUMI DIGIT THREE;No;0;AN;;;3;3;N;;;;;
@@ -18859,6 +19024,88 @@
 10E7C;RUMI FRACTION ONE QUARTER;No;0;AN;;;;1/4;N;;;;;
 10E7D;RUMI FRACTION ONE THIRD;No;0;AN;;;;1/3;N;;;;;
 10E7E;RUMI FRACTION TWO THIRDS;No;0;AN;;;;2/3;N;;;;;
+10F00;OLD SOGDIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;;
+10F01;OLD SOGDIAN LETTER FINAL ALEPH;Lo;0;R;;;;;N;;;;;
+10F02;OLD SOGDIAN LETTER BETH;Lo;0;R;;;;;N;;;;;
+10F03;OLD SOGDIAN LETTER FINAL BETH;Lo;0;R;;;;;N;;;;;
+10F04;OLD SOGDIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+10F05;OLD SOGDIAN LETTER HE;Lo;0;R;;;;;N;;;;;
+10F06;OLD SOGDIAN LETTER FINAL HE;Lo;0;R;;;;;N;;;;;
+10F07;OLD SOGDIAN LETTER WAW;Lo;0;R;;;;;N;;;;;
+10F08;OLD SOGDIAN LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+10F09;OLD SOGDIAN LETTER HETH;Lo;0;R;;;;;N;;;;;
+10F0A;OLD SOGDIAN LETTER YODH;Lo;0;R;;;;;N;;;;;
+10F0B;OLD SOGDIAN LETTER KAPH;Lo;0;R;;;;;N;;;;;
+10F0C;OLD SOGDIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;;
+10F0D;OLD SOGDIAN LETTER MEM;Lo;0;R;;;;;N;;;;;
+10F0E;OLD SOGDIAN LETTER NUN;Lo;0;R;;;;;N;;;;;
+10F0F;OLD SOGDIAN LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
+10F10;OLD SOGDIAN LETTER FINAL NUN WITH VERTICAL TAIL;Lo;0;R;;;;;N;;;;;
+10F11;OLD SOGDIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+10F12;OLD SOGDIAN LETTER AYIN;Lo;0;R;;;;;N;;;;;
+10F13;OLD SOGDIAN LETTER ALTERNATE AYIN;Lo;0;R;;;;;N;;;;;
+10F14;OLD SOGDIAN LETTER PE;Lo;0;R;;;;;N;;;;;
+10F15;OLD SOGDIAN LETTER SADHE;Lo;0;R;;;;;N;;;;;
+10F16;OLD SOGDIAN LETTER FINAL SADHE;Lo;0;R;;;;;N;;;;;
+10F17;OLD SOGDIAN LETTER FINAL SADHE WITH VERTICAL TAIL;Lo;0;R;;;;;N;;;;;
+10F18;OLD SOGDIAN LETTER RESH-AYIN-DALETH;Lo;0;R;;;;;N;;;;;
+10F19;OLD SOGDIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;
+10F1A;OLD SOGDIAN LETTER TAW;Lo;0;R;;;;;N;;;;;
+10F1B;OLD SOGDIAN LETTER FINAL TAW;Lo;0;R;;;;;N;;;;;
+10F1C;OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL;Lo;0;R;;;;;N;;;;;
+10F1D;OLD SOGDIAN NUMBER ONE;No;0;R;;;;1;N;;;;;
+10F1E;OLD SOGDIAN NUMBER TWO;No;0;R;;;;2;N;;;;;
+10F1F;OLD SOGDIAN NUMBER THREE;No;0;R;;;;3;N;;;;;
+10F20;OLD SOGDIAN NUMBER FOUR;No;0;R;;;;4;N;;;;;
+10F21;OLD SOGDIAN NUMBER FIVE;No;0;R;;;;5;N;;;;;
+10F22;OLD SOGDIAN NUMBER TEN;No;0;R;;;;10;N;;;;;
+10F23;OLD SOGDIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;
+10F24;OLD SOGDIAN NUMBER THIRTY;No;0;R;;;;30;N;;;;;
+10F25;OLD SOGDIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
+10F26;OLD SOGDIAN FRACTION ONE HALF;No;0;R;;;;1/2;N;;;;;
+10F27;OLD SOGDIAN LIGATURE AYIN-DALETH;Lo;0;R;;;;;N;;;;;
+10F30;SOGDIAN LETTER ALEPH;Lo;0;AL;;;;;N;;;;;
+10F31;SOGDIAN LETTER BETH;Lo;0;AL;;;;;N;;;;;
+10F32;SOGDIAN LETTER GIMEL;Lo;0;AL;;;;;N;;;;;
+10F33;SOGDIAN LETTER HE;Lo;0;AL;;;;;N;;;;;
+10F34;SOGDIAN LETTER WAW;Lo;0;AL;;;;;N;;;;;
+10F35;SOGDIAN LETTER ZAYIN;Lo;0;AL;;;;;N;;;;;
+10F36;SOGDIAN LETTER HETH;Lo;0;AL;;;;;N;;;;;
+10F37;SOGDIAN LETTER YODH;Lo;0;AL;;;;;N;;;;;
+10F38;SOGDIAN LETTER KAPH;Lo;0;AL;;;;;N;;;;;
+10F39;SOGDIAN LETTER LAMEDH;Lo;0;AL;;;;;N;;;;;
+10F3A;SOGDIAN LETTER MEM;Lo;0;AL;;;;;N;;;;;
+10F3B;SOGDIAN LETTER NUN;Lo;0;AL;;;;;N;;;;;
+10F3C;SOGDIAN LETTER SAMEKH;Lo;0;AL;;;;;N;;;;;
+10F3D;SOGDIAN LETTER AYIN;Lo;0;AL;;;;;N;;;;;
+10F3E;SOGDIAN LETTER PE;Lo;0;AL;;;;;N;;;;;
+10F3F;SOGDIAN LETTER SADHE;Lo;0;AL;;;;;N;;;;;
+10F40;SOGDIAN LETTER RESH-AYIN;Lo;0;AL;;;;;N;;;;;
+10F41;SOGDIAN LETTER SHIN;Lo;0;AL;;;;;N;;;;;
+10F42;SOGDIAN LETTER TAW;Lo;0;AL;;;;;N;;;;;
+10F43;SOGDIAN LETTER FETH;Lo;0;AL;;;;;N;;;;;
+10F44;SOGDIAN LETTER LESH;Lo;0;AL;;;;;N;;;;;
+10F45;SOGDIAN INDEPENDENT SHIN;Lo;0;AL;;;;;N;;;;;
+10F46;SOGDIAN COMBINING DOT BELOW;Mn;220;NSM;;;;;N;;;;;
+10F47;SOGDIAN COMBINING TWO DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+10F48;SOGDIAN COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;;;;;
+10F49;SOGDIAN COMBINING TWO DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+10F4A;SOGDIAN COMBINING CURVE ABOVE;Mn;230;NSM;;;;;N;;;;;
+10F4B;SOGDIAN COMBINING CURVE BELOW;Mn;220;NSM;;;;;N;;;;;
+10F4C;SOGDIAN COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;;;;;
+10F4D;SOGDIAN COMBINING HOOK BELOW;Mn;220;NSM;;;;;N;;;;;
+10F4E;SOGDIAN COMBINING LONG HOOK BELOW;Mn;220;NSM;;;;;N;;;;;
+10F4F;SOGDIAN COMBINING RESH BELOW;Mn;220;NSM;;;;;N;;;;;
+10F50;SOGDIAN COMBINING STROKE BELOW;Mn;220;NSM;;;;;N;;;;;
+10F51;SOGDIAN NUMBER ONE;No;0;AL;;;;1;N;;;;;
+10F52;SOGDIAN NUMBER TEN;No;0;AL;;;;10;N;;;;;
+10F53;SOGDIAN NUMBER TWENTY;No;0;AL;;;;20;N;;;;;
+10F54;SOGDIAN NUMBER ONE HUNDRED;No;0;AL;;;;100;N;;;;;
+10F55;SOGDIAN PUNCTUATION TWO VERTICAL BARS;Po;0;AL;;;;;N;;;;;
+10F56;SOGDIAN PUNCTUATION TWO VERTICAL BARS WITH DOTS;Po;0;AL;;;;;N;;;;;
+10F57;SOGDIAN PUNCTUATION CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;;
+10F58;SOGDIAN PUNCTUATION TWO CIRCLES WITH DOTS;Po;0;AL;;;;;N;;;;;
+10F59;SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;;
 11000;BRAHMI SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
 11001;BRAHMI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
 11002;BRAHMI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
@@ -19034,6 +19281,7 @@
 110BF;KAITHI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;;
 110C0;KAITHI DANDA;Po;0;L;;;;;N;;;;;
 110C1;KAITHI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+110CD;KAITHI NUMBER SIGN ABOVE;Cf;0;L;;;;;N;;;;;
 110D0;SORA SOMPENG LETTER SAH;Lo;0;L;;;;;N;;;;;
 110D1;SORA SOMPENG LETTER TAH;Lo;0;L;;;;;N;;;;;
 110D2;SORA SOMPENG LETTER BAH;Lo;0;L;;;;;N;;;;;
@@ -19136,6 +19384,9 @@
 11141;CHAKMA DANDA;Po;0;L;;;;;N;;;;;
 11142;CHAKMA DOUBLE DANDA;Po;0;L;;;;;N;;;;;
 11143;CHAKMA QUESTION MARK;Po;0;L;;;;;N;;;;;
+11144;CHAKMA LETTER LHAA;Lo;0;L;;;;;N;;;;;
+11145;CHAKMA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+11146;CHAKMA VOWEL SIGN EI;Mc;0;L;;;;;N;;;;;
 11150;MAHAJANI LETTER A;Lo;0;L;;;;;N;;;;;
 11151;MAHAJANI LETTER I;Lo;0;L;;;;;N;;;;;
 11152;MAHAJANI LETTER U;Lo;0;L;;;;;N;;;;;
@@ -19248,7 +19499,7 @@
 111C6;SHARADA DOUBLE DANDA;Po;0;L;;;;;N;;;;;
 111C7;SHARADA ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
 111C8;SHARADA SEPARATOR;Po;0;L;;;;;N;;;;;
-111C9;SHARADA SANDHI MARK;Po;0;L;;;;;N;;;;;
+111C9;SHARADA SANDHI MARK;Mn;0;NSM;;;;;N;;;;;
 111CA;SHARADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
 111CB;SHARADA VOWEL MODIFIER MARK;Mn;0;NSM;;;;;N;;;;;
 111CC;SHARADA EXTRA SHORT VOWEL MARK;Mn;0;NSM;;;;;N;;;;;
@@ -19508,6 +19759,7 @@
 11337;GRANTHA LETTER SSA;Lo;0;L;;;;;N;;;;;
 11338;GRANTHA LETTER SA;Lo;0;L;;;;;N;;;;;
 11339;GRANTHA LETTER HA;Lo;0;L;;;;;N;;;;;
+1133B;COMBINING BINDU BELOW;Mn;7;NSM;;;;;N;;;;;
 1133C;GRANTHA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
 1133D;GRANTHA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
 1133E;GRANTHA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
@@ -19635,6 +19887,7 @@
 11459;NEWA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
 1145B;NEWA PLACEHOLDER MARK;Po;0;L;;;;;N;;;;;
 1145D;NEWA INSERTION SIGN;Po;0;L;;;;;N;;;;;
+1145E;NEWA SANDHI MARK;Mn;230;NSM;;;;;N;;;;;
 11480;TIRHUTA ANJI;Lo;0;L;;;;;N;;;;;
 11481;TIRHUTA LETTER A;Lo;0;L;;;;;N;;;;;
 11482;TIRHUTA LETTER AA;Lo;0;L;;;;;N;;;;;
@@ -19993,6 +20246,7 @@
 11717;AHOM LETTER GHA;Lo;0;L;;;;;N;;;;;
 11718;AHOM LETTER BHA;Lo;0;L;;;;;N;;;;;
 11719;AHOM LETTER JHA;Lo;0;L;;;;;N;;;;;
+1171A;AHOM LETTER ALTERNATE BA;Lo;0;L;;;;;N;;;;;
 1171D;AHOM CONSONANT SIGN MEDIAL LA;Mn;0;NSM;;;;;N;;;;;
 1171E;AHOM CONSONANT SIGN MEDIAL RA;Mn;0;NSM;;;;;N;;;;;
 1171F;AHOM CONSONANT SIGN MEDIAL LIGATING RA;Mn;0;NSM;;;;;N;;;;;
@@ -20024,6 +20278,66 @@
 1173D;AHOM SIGN SECTION;Po;0;L;;;;;N;;;;;
 1173E;AHOM SIGN RULAI;Po;0;L;;;;;N;;;;;
 1173F;AHOM SYMBOL VI;So;0;L;;;;;N;;;;;
+11800;DOGRA LETTER A;Lo;0;L;;;;;N;;;;;
+11801;DOGRA LETTER AA;Lo;0;L;;;;;N;;;;;
+11802;DOGRA LETTER I;Lo;0;L;;;;;N;;;;;
+11803;DOGRA LETTER II;Lo;0;L;;;;;N;;;;;
+11804;DOGRA LETTER U;Lo;0;L;;;;;N;;;;;
+11805;DOGRA LETTER UU;Lo;0;L;;;;;N;;;;;
+11806;DOGRA LETTER E;Lo;0;L;;;;;N;;;;;
+11807;DOGRA LETTER AI;Lo;0;L;;;;;N;;;;;
+11808;DOGRA LETTER O;Lo;0;L;;;;;N;;;;;
+11809;DOGRA LETTER AU;Lo;0;L;;;;;N;;;;;
+1180A;DOGRA LETTER KA;Lo;0;L;;;;;N;;;;;
+1180B;DOGRA LETTER KHA;Lo;0;L;;;;;N;;;;;
+1180C;DOGRA LETTER GA;Lo;0;L;;;;;N;;;;;
+1180D;DOGRA LETTER GHA;Lo;0;L;;;;;N;;;;;
+1180E;DOGRA LETTER NGA;Lo;0;L;;;;;N;;;;;
+1180F;DOGRA LETTER CA;Lo;0;L;;;;;N;;;;;
+11810;DOGRA LETTER CHA;Lo;0;L;;;;;N;;;;;
+11811;DOGRA LETTER JA;Lo;0;L;;;;;N;;;;;
+11812;DOGRA LETTER JHA;Lo;0;L;;;;;N;;;;;
+11813;DOGRA LETTER NYA;Lo;0;L;;;;;N;;;;;
+11814;DOGRA LETTER TTA;Lo;0;L;;;;;N;;;;;
+11815;DOGRA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+11816;DOGRA LETTER DDA;Lo;0;L;;;;;N;;;;;
+11817;DOGRA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+11818;DOGRA LETTER NNA;Lo;0;L;;;;;N;;;;;
+11819;DOGRA LETTER TA;Lo;0;L;;;;;N;;;;;
+1181A;DOGRA LETTER THA;Lo;0;L;;;;;N;;;;;
+1181B;DOGRA LETTER DA;Lo;0;L;;;;;N;;;;;
+1181C;DOGRA LETTER DHA;Lo;0;L;;;;;N;;;;;
+1181D;DOGRA LETTER NA;Lo;0;L;;;;;N;;;;;
+1181E;DOGRA LETTER PA;Lo;0;L;;;;;N;;;;;
+1181F;DOGRA LETTER PHA;Lo;0;L;;;;;N;;;;;
+11820;DOGRA LETTER BA;Lo;0;L;;;;;N;;;;;
+11821;DOGRA LETTER BHA;Lo;0;L;;;;;N;;;;;
+11822;DOGRA LETTER MA;Lo;0;L;;;;;N;;;;;
+11823;DOGRA LETTER YA;Lo;0;L;;;;;N;;;;;
+11824;DOGRA LETTER RA;Lo;0;L;;;;;N;;;;;
+11825;DOGRA LETTER LA;Lo;0;L;;;;;N;;;;;
+11826;DOGRA LETTER VA;Lo;0;L;;;;;N;;;;;
+11827;DOGRA LETTER SHA;Lo;0;L;;;;;N;;;;;
+11828;DOGRA LETTER SSA;Lo;0;L;;;;;N;;;;;
+11829;DOGRA LETTER SA;Lo;0;L;;;;;N;;;;;
+1182A;DOGRA LETTER HA;Lo;0;L;;;;;N;;;;;
+1182B;DOGRA LETTER RRA;Lo;0;L;;;;;N;;;;;
+1182C;DOGRA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+1182D;DOGRA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+1182E;DOGRA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+1182F;DOGRA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+11830;DOGRA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+11831;DOGRA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+11832;DOGRA VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+11833;DOGRA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+11834;DOGRA VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+11835;DOGRA VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+11836;DOGRA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+11837;DOGRA SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+11838;DOGRA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+11839;DOGRA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+1183A;DOGRA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+1183B;DOGRA ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
 118A0;WARANG CITI CAPITAL LETTER NGAA;Lu;0;L;;;;;N;;;;118C0;
 118A1;WARANG CITI CAPITAL LETTER A;Lu;0;L;;;;;N;;;;118C1;
 118A2;WARANG CITI CAPITAL LETTER WI;Lu;0;L;;;;;N;;;;118C2;
@@ -20115,8 +20429,8 @@
 11A04;ZANABAZAR SQUARE VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
 11A05;ZANABAZAR SQUARE VOWEL SIGN OE;Mn;0;NSM;;;;;N;;;;;
 11A06;ZANABAZAR SQUARE VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
-11A07;ZANABAZAR SQUARE VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-11A08;ZANABAZAR SQUARE VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+11A07;ZANABAZAR SQUARE VOWEL SIGN AI;Mn;0;L;;;;;N;;;;;
+11A08;ZANABAZAR SQUARE VOWEL SIGN AU;Mn;0;L;;;;;N;;;;;
 11A09;ZANABAZAR SQUARE VOWEL SIGN REVERSED I;Mn;0;NSM;;;;;N;;;;;
 11A0A;ZANABAZAR SQUARE VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
 11A0B;ZANABAZAR SQUARE LETTER KA;Lo;0;L;;;;;N;;;;;
@@ -20255,6 +20569,7 @@
 11A9A;SOYOMBO MARK TSHEG;Po;0;L;;;;;N;;;;;
 11A9B;SOYOMBO MARK SHAD;Po;0;L;;;;;N;;;;;
 11A9C;SOYOMBO MARK DOUBLE SHAD;Po;0;L;;;;;N;;;;;
+11A9D;SOYOMBO MARK PLUTA;Lo;0;L;;;;;N;;;;;
 11A9E;SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME;Po;0;L;;;;;N;;;;;
 11A9F;SOYOMBO HEAD MARK WITH MOON AND SUN AND FLAME;Po;0;L;;;;;N;;;;;
 11AA0;SOYOMBO HEAD MARK WITH MOON AND SUN;Po;0;L;;;;;N;;;;;
@@ -20557,6 +20872,94 @@
 11D57;MASARAM GONDI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
 11D58;MASARAM GONDI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
 11D59;MASARAM GONDI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+11D60;GUNJALA GONDI LETTER A;Lo;0;L;;;;;N;;;;;
+11D61;GUNJALA GONDI LETTER AA;Lo;0;L;;;;;N;;;;;
+11D62;GUNJALA GONDI LETTER I;Lo;0;L;;;;;N;;;;;
+11D63;GUNJALA GONDI LETTER II;Lo;0;L;;;;;N;;;;;
+11D64;GUNJALA GONDI LETTER U;Lo;0;L;;;;;N;;;;;
+11D65;GUNJALA GONDI LETTER UU;Lo;0;L;;;;;N;;;;;
+11D67;GUNJALA GONDI LETTER EE;Lo;0;L;;;;;N;;;;;
+11D68;GUNJALA GONDI LETTER AI;Lo;0;L;;;;;N;;;;;
+11D6A;GUNJALA GONDI LETTER OO;Lo;0;L;;;;;N;;;;;
+11D6B;GUNJALA GONDI LETTER AU;Lo;0;L;;;;;N;;;;;
+11D6C;GUNJALA GONDI LETTER YA;Lo;0;L;;;;;N;;;;;
+11D6D;GUNJALA GONDI LETTER VA;Lo;0;L;;;;;N;;;;;
+11D6E;GUNJALA GONDI LETTER BA;Lo;0;L;;;;;N;;;;;
+11D6F;GUNJALA GONDI LETTER BHA;Lo;0;L;;;;;N;;;;;
+11D70;GUNJALA GONDI LETTER MA;Lo;0;L;;;;;N;;;;;
+11D71;GUNJALA GONDI LETTER KA;Lo;0;L;;;;;N;;;;;
+11D72;GUNJALA GONDI LETTER KHA;Lo;0;L;;;;;N;;;;;
+11D73;GUNJALA GONDI LETTER TA;Lo;0;L;;;;;N;;;;;
+11D74;GUNJALA GONDI LETTER THA;Lo;0;L;;;;;N;;;;;
+11D75;GUNJALA GONDI LETTER LA;Lo;0;L;;;;;N;;;;;
+11D76;GUNJALA GONDI LETTER GA;Lo;0;L;;;;;N;;;;;
+11D77;GUNJALA GONDI LETTER GHA;Lo;0;L;;;;;N;;;;;
+11D78;GUNJALA GONDI LETTER DA;Lo;0;L;;;;;N;;;;;
+11D79;GUNJALA GONDI LETTER DHA;Lo;0;L;;;;;N;;;;;
+11D7A;GUNJALA GONDI LETTER NA;Lo;0;L;;;;;N;;;;;
+11D7B;GUNJALA GONDI LETTER CA;Lo;0;L;;;;;N;;;;;
+11D7C;GUNJALA GONDI LETTER CHA;Lo;0;L;;;;;N;;;;;
+11D7D;GUNJALA GONDI LETTER TTA;Lo;0;L;;;;;N;;;;;
+11D7E;GUNJALA GONDI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+11D7F;GUNJALA GONDI LETTER LLA;Lo;0;L;;;;;N;;;;;
+11D80;GUNJALA GONDI LETTER JA;Lo;0;L;;;;;N;;;;;
+11D81;GUNJALA GONDI LETTER JHA;Lo;0;L;;;;;N;;;;;
+11D82;GUNJALA GONDI LETTER DDA;Lo;0;L;;;;;N;;;;;
+11D83;GUNJALA GONDI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+11D84;GUNJALA GONDI LETTER NGA;Lo;0;L;;;;;N;;;;;
+11D85;GUNJALA GONDI LETTER PA;Lo;0;L;;;;;N;;;;;
+11D86;GUNJALA GONDI LETTER PHA;Lo;0;L;;;;;N;;;;;
+11D87;GUNJALA GONDI LETTER HA;Lo;0;L;;;;;N;;;;;
+11D88;GUNJALA GONDI LETTER RA;Lo;0;L;;;;;N;;;;;
+11D89;GUNJALA GONDI LETTER SA;Lo;0;L;;;;;N;;;;;
+11D8A;GUNJALA GONDI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+11D8B;GUNJALA GONDI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+11D8C;GUNJALA GONDI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+11D8D;GUNJALA GONDI VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+11D8E;GUNJALA GONDI VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+11D90;GUNJALA GONDI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+11D91;GUNJALA GONDI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+11D93;GUNJALA GONDI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+11D94;GUNJALA GONDI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+11D95;GUNJALA GONDI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+11D96;GUNJALA GONDI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+11D97;GUNJALA GONDI VIRAMA;Mn;9;NSM;;;;;N;;;;;
+11D98;GUNJALA GONDI OM;Lo;0;L;;;;;N;;;;;
+11DA0;GUNJALA GONDI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+11DA1;GUNJALA GONDI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+11DA2;GUNJALA GONDI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+11DA3;GUNJALA GONDI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+11DA4;GUNJALA GONDI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+11DA5;GUNJALA GONDI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+11DA6;GUNJALA GONDI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+11DA7;GUNJALA GONDI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+11DA8;GUNJALA GONDI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+11DA9;GUNJALA GONDI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+11EE0;MAKASAR LETTER KA;Lo;0;L;;;;;N;;;;;
+11EE1;MAKASAR LETTER GA;Lo;0;L;;;;;N;;;;;
+11EE2;MAKASAR LETTER NGA;Lo;0;L;;;;;N;;;;;
+11EE3;MAKASAR LETTER PA;Lo;0;L;;;;;N;;;;;
+11EE4;MAKASAR LETTER BA;Lo;0;L;;;;;N;;;;;
+11EE5;MAKASAR LETTER MA;Lo;0;L;;;;;N;;;;;
+11EE6;MAKASAR LETTER TA;Lo;0;L;;;;;N;;;;;
+11EE7;MAKASAR LETTER DA;Lo;0;L;;;;;N;;;;;
+11EE8;MAKASAR LETTER NA;Lo;0;L;;;;;N;;;;;
+11EE9;MAKASAR LETTER CA;Lo;0;L;;;;;N;;;;;
+11EEA;MAKASAR LETTER JA;Lo;0;L;;;;;N;;;;;
+11EEB;MAKASAR LETTER NYA;Lo;0;L;;;;;N;;;;;
+11EEC;MAKASAR LETTER YA;Lo;0;L;;;;;N;;;;;
+11EED;MAKASAR LETTER RA;Lo;0;L;;;;;N;;;;;
+11EEE;MAKASAR LETTER LA;Lo;0;L;;;;;N;;;;;
+11EEF;MAKASAR LETTER VA;Lo;0;L;;;;;N;;;;;
+11EF0;MAKASAR LETTER SA;Lo;0;L;;;;;N;;;;;
+11EF1;MAKASAR LETTER A;Lo;0;L;;;;;N;;;;;
+11EF2;MAKASAR ANGKA;Lo;0;L;;;;;N;;;;;
+11EF3;MAKASAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+11EF4;MAKASAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+11EF5;MAKASAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+11EF6;MAKASAR VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+11EF7;MAKASAR PASSIMBANG;Po;0;L;;;;;N;;;;;
+11EF8;MAKASAR END OF SECTION;Po;0;L;;;;;N;;;;;
 12000;CUNEIFORM SIGN A;Lo;0;L;;;;;N;;;;;
 12001;CUNEIFORM SIGN A TIMES A;Lo;0;L;;;;;N;;;;;
 12002;CUNEIFORM SIGN A TIMES BAD;Lo;0;L;;;;;N;;;;;
@@ -24220,6 +24623,97 @@
 16B8D;PAHAWH HMONG CLAN SIGN TSWB;Lo;0;L;;;;;N;;;;;
 16B8E;PAHAWH HMONG CLAN SIGN KWM;Lo;0;L;;;;;N;;;;;
 16B8F;PAHAWH HMONG CLAN SIGN VWJ;Lo;0;L;;;;;N;;;;;
+16E40;MEDEFAIDRIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;16E60;
+16E41;MEDEFAIDRIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;16E61;
+16E42;MEDEFAIDRIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;16E62;
+16E43;MEDEFAIDRIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;16E63;
+16E44;MEDEFAIDRIN CAPITAL LETTER ATIU;Lu;0;L;;;;;N;;;;16E64;
+16E45;MEDEFAIDRIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;16E65;
+16E46;MEDEFAIDRIN CAPITAL LETTER KP;Lu;0;L;;;;;N;;;;16E66;
+16E47;MEDEFAIDRIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;16E67;
+16E48;MEDEFAIDRIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;16E68;
+16E49;MEDEFAIDRIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;16E69;
+16E4A;MEDEFAIDRIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;16E6A;
+16E4B;MEDEFAIDRIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;16E6B;
+16E4C;MEDEFAIDRIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;16E6C;
+16E4D;MEDEFAIDRIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;16E6D;
+16E4E;MEDEFAIDRIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;16E6E;
+16E4F;MEDEFAIDRIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;16E6F;
+16E50;MEDEFAIDRIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;16E70;
+16E51;MEDEFAIDRIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;16E71;
+16E52;MEDEFAIDRIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;16E72;
+16E53;MEDEFAIDRIN CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;16E73;
+16E54;MEDEFAIDRIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;16E74;
+16E55;MEDEFAIDRIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;16E75;
+16E56;MEDEFAIDRIN CAPITAL LETTER HP;Lu;0;L;;;;;N;;;;16E76;
+16E57;MEDEFAIDRIN CAPITAL LETTER NY;Lu;0;L;;;;;N;;;;16E77;
+16E58;MEDEFAIDRIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;16E78;
+16E59;MEDEFAIDRIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;16E79;
+16E5A;MEDEFAIDRIN CAPITAL LETTER OE;Lu;0;L;;;;;N;;;;16E7A;
+16E5B;MEDEFAIDRIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;16E7B;
+16E5C;MEDEFAIDRIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;16E7C;
+16E5D;MEDEFAIDRIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;16E7D;
+16E5E;MEDEFAIDRIN CAPITAL LETTER AI;Lu;0;L;;;;;N;;;;16E7E;
+16E5F;MEDEFAIDRIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;16E7F;
+16E60;MEDEFAIDRIN SMALL LETTER M;Ll;0;L;;;;;N;;;16E40;;16E40
+16E61;MEDEFAIDRIN SMALL LETTER S;Ll;0;L;;;;;N;;;16E41;;16E41
+16E62;MEDEFAIDRIN SMALL LETTER V;Ll;0;L;;;;;N;;;16E42;;16E42
+16E63;MEDEFAIDRIN SMALL LETTER W;Ll;0;L;;;;;N;;;16E43;;16E43
+16E64;MEDEFAIDRIN SMALL LETTER ATIU;Ll;0;L;;;;;N;;;16E44;;16E44
+16E65;MEDEFAIDRIN SMALL LETTER Z;Ll;0;L;;;;;N;;;16E45;;16E45
+16E66;MEDEFAIDRIN SMALL LETTER KP;Ll;0;L;;;;;N;;;16E46;;16E46
+16E67;MEDEFAIDRIN SMALL LETTER P;Ll;0;L;;;;;N;;;16E47;;16E47
+16E68;MEDEFAIDRIN SMALL LETTER T;Ll;0;L;;;;;N;;;16E48;;16E48
+16E69;MEDEFAIDRIN SMALL LETTER G;Ll;0;L;;;;;N;;;16E49;;16E49
+16E6A;MEDEFAIDRIN SMALL LETTER F;Ll;0;L;;;;;N;;;16E4A;;16E4A
+16E6B;MEDEFAIDRIN SMALL LETTER I;Ll;0;L;;;;;N;;;16E4B;;16E4B
+16E6C;MEDEFAIDRIN SMALL LETTER K;Ll;0;L;;;;;N;;;16E4C;;16E4C
+16E6D;MEDEFAIDRIN SMALL LETTER A;Ll;0;L;;;;;N;;;16E4D;;16E4D
+16E6E;MEDEFAIDRIN SMALL LETTER J;Ll;0;L;;;;;N;;;16E4E;;16E4E
+16E6F;MEDEFAIDRIN SMALL LETTER E;Ll;0;L;;;;;N;;;16E4F;;16E4F
+16E70;MEDEFAIDRIN SMALL LETTER B;Ll;0;L;;;;;N;;;16E50;;16E50
+16E71;MEDEFAIDRIN SMALL LETTER C;Ll;0;L;;;;;N;;;16E51;;16E51
+16E72;MEDEFAIDRIN SMALL LETTER U;Ll;0;L;;;;;N;;;16E52;;16E52
+16E73;MEDEFAIDRIN SMALL LETTER YU;Ll;0;L;;;;;N;;;16E53;;16E53
+16E74;MEDEFAIDRIN SMALL LETTER L;Ll;0;L;;;;;N;;;16E54;;16E54
+16E75;MEDEFAIDRIN SMALL LETTER Q;Ll;0;L;;;;;N;;;16E55;;16E55
+16E76;MEDEFAIDRIN SMALL LETTER HP;Ll;0;L;;;;;N;;;16E56;;16E56
+16E77;MEDEFAIDRIN SMALL LETTER NY;Ll;0;L;;;;;N;;;16E57;;16E57
+16E78;MEDEFAIDRIN SMALL LETTER X;Ll;0;L;;;;;N;;;16E58;;16E58
+16E79;MEDEFAIDRIN SMALL LETTER D;Ll;0;L;;;;;N;;;16E59;;16E59
+16E7A;MEDEFAIDRIN SMALL LETTER OE;Ll;0;L;;;;;N;;;16E5A;;16E5A
+16E7B;MEDEFAIDRIN SMALL LETTER N;Ll;0;L;;;;;N;;;16E5B;;16E5B
+16E7C;MEDEFAIDRIN SMALL LETTER R;Ll;0;L;;;;;N;;;16E5C;;16E5C
+16E7D;MEDEFAIDRIN SMALL LETTER O;Ll;0;L;;;;;N;;;16E5D;;16E5D
+16E7E;MEDEFAIDRIN SMALL LETTER AI;Ll;0;L;;;;;N;;;16E5E;;16E5E
+16E7F;MEDEFAIDRIN SMALL LETTER Y;Ll;0;L;;;;;N;;;16E5F;;16E5F
+16E80;MEDEFAIDRIN DIGIT ZERO;No;0;L;;;;0;N;;;;;
+16E81;MEDEFAIDRIN DIGIT ONE;No;0;L;;;;1;N;;;;;
+16E82;MEDEFAIDRIN DIGIT TWO;No;0;L;;;;2;N;;;;;
+16E83;MEDEFAIDRIN DIGIT THREE;No;0;L;;;;3;N;;;;;
+16E84;MEDEFAIDRIN DIGIT FOUR;No;0;L;;;;4;N;;;;;
+16E85;MEDEFAIDRIN DIGIT FIVE;No;0;L;;;;5;N;;;;;
+16E86;MEDEFAIDRIN DIGIT SIX;No;0;L;;;;6;N;;;;;
+16E87;MEDEFAIDRIN DIGIT SEVEN;No;0;L;;;;7;N;;;;;
+16E88;MEDEFAIDRIN DIGIT EIGHT;No;0;L;;;;8;N;;;;;
+16E89;MEDEFAIDRIN DIGIT NINE;No;0;L;;;;9;N;;;;;
+16E8A;MEDEFAIDRIN NUMBER TEN;No;0;L;;;;10;N;;;;;
+16E8B;MEDEFAIDRIN NUMBER ELEVEN;No;0;L;;;;11;N;;;;;
+16E8C;MEDEFAIDRIN NUMBER TWELVE;No;0;L;;;;12;N;;;;;
+16E8D;MEDEFAIDRIN NUMBER THIRTEEN;No;0;L;;;;13;N;;;;;
+16E8E;MEDEFAIDRIN NUMBER FOURTEEN;No;0;L;;;;14;N;;;;;
+16E8F;MEDEFAIDRIN NUMBER FIFTEEN;No;0;L;;;;15;N;;;;;
+16E90;MEDEFAIDRIN NUMBER SIXTEEN;No;0;L;;;;16;N;;;;;
+16E91;MEDEFAIDRIN NUMBER SEVENTEEN;No;0;L;;;;17;N;;;;;
+16E92;MEDEFAIDRIN NUMBER EIGHTEEN;No;0;L;;;;18;N;;;;;
+16E93;MEDEFAIDRIN NUMBER NINETEEN;No;0;L;;;;19;N;;;;;
+16E94;MEDEFAIDRIN DIGIT ONE ALTERNATE FORM;No;0;L;;;;1;N;;;;;
+16E95;MEDEFAIDRIN DIGIT TWO ALTERNATE FORM;No;0;L;;;;2;N;;;;;
+16E96;MEDEFAIDRIN DIGIT THREE ALTERNATE FORM;No;0;L;;;;3;N;;;;;
+16E97;MEDEFAIDRIN COMMA;Po;0;L;;;;;N;;;;;
+16E98;MEDEFAIDRIN FULL STOP;Po;0;L;;;;;N;;;;;
+16E99;MEDEFAIDRIN SYMBOL AIVA;Po;0;L;;;;;N;;;;;
+16E9A;MEDEFAIDRIN EXCLAMATION OH;Po;0;L;;;;;N;;;;;
 16F00;MIAO LETTER PA;Lo;0;L;;;;;N;;;;;
 16F01;MIAO LETTER BA;Lo;0;L;;;;;N;;;;;
 16F02;MIAO LETTER YI PA;Lo;0;L;;;;;N;;;;;
@@ -24356,7 +24850,7 @@
 16FE0;TANGUT ITERATION MARK;Lm;0;L;;;;;N;;;;;
 16FE1;NUSHU ITERATION MARK;Lm;0;L;;;;;N;;;;;
 17000;<Tangut Ideograph, First>;Lo;0;L;;;;;N;;;;;
-187EC;<Tangut Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+187F1;<Tangut Ideograph, Last>;Lo;0;L;;;;;N;;;;;
 18800;TANGUT COMPONENT-001;Lo;0;L;;;;;N;;;;;
 18801;TANGUT COMPONENT-002;Lo;0;L;;;;;N;;;;;
 18802;TANGUT COMPONENT-003;Lo;0;L;;;;;N;;;;;
@@ -26489,6 +26983,26 @@
 1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;;
 1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;;
 1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;;
+1D2E0;MAYAN NUMERAL ZERO;No;0;L;;;;0;N;;;;;
+1D2E1;MAYAN NUMERAL ONE;No;0;L;;;;1;N;;;;;
+1D2E2;MAYAN NUMERAL TWO;No;0;L;;;;2;N;;;;;
+1D2E3;MAYAN NUMERAL THREE;No;0;L;;;;3;N;;;;;
+1D2E4;MAYAN NUMERAL FOUR;No;0;L;;;;4;N;;;;;
+1D2E5;MAYAN NUMERAL FIVE;No;0;L;;;;5;N;;;;;
+1D2E6;MAYAN NUMERAL SIX;No;0;L;;;;6;N;;;;;
+1D2E7;MAYAN NUMERAL SEVEN;No;0;L;;;;7;N;;;;;
+1D2E8;MAYAN NUMERAL EIGHT;No;0;L;;;;8;N;;;;;
+1D2E9;MAYAN NUMERAL NINE;No;0;L;;;;9;N;;;;;
+1D2EA;MAYAN NUMERAL TEN;No;0;L;;;;10;N;;;;;
+1D2EB;MAYAN NUMERAL ELEVEN;No;0;L;;;;11;N;;;;;
+1D2EC;MAYAN NUMERAL TWELVE;No;0;L;;;;12;N;;;;;
+1D2ED;MAYAN NUMERAL THIRTEEN;No;0;L;;;;13;N;;;;;
+1D2EE;MAYAN NUMERAL FOURTEEN;No;0;L;;;;14;N;;;;;
+1D2EF;MAYAN NUMERAL FIFTEEN;No;0;L;;;;15;N;;;;;
+1D2F0;MAYAN NUMERAL SIXTEEN;No;0;L;;;;16;N;;;;;
+1D2F1;MAYAN NUMERAL SEVENTEEN;No;0;L;;;;17;N;;;;;
+1D2F2;MAYAN NUMERAL EIGHTEEN;No;0;L;;;;18;N;;;;;
+1D2F3;MAYAN NUMERAL NINETEEN;No;0;L;;;;19;N;;;;;
 1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
 1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;;;;
 1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;;;;
@@ -26594,6 +27108,13 @@
 1D36F;COUNTING ROD TENS DIGIT SEVEN;No;0;L;;;;70;N;;;;;
 1D370;COUNTING ROD TENS DIGIT EIGHT;No;0;L;;;;80;N;;;;;
 1D371;COUNTING ROD TENS DIGIT NINE;No;0;L;;;;90;N;;;;;
+1D372;IDEOGRAPHIC TALLY MARK ONE;No;0;L;;;;1;N;;;;;
+1D373;IDEOGRAPHIC TALLY MARK TWO;No;0;L;;;;2;N;;;;;
+1D374;IDEOGRAPHIC TALLY MARK THREE;No;0;L;;;;3;N;;;;;
+1D375;IDEOGRAPHIC TALLY MARK FOUR;No;0;L;;;;4;N;;;;;
+1D376;IDEOGRAPHIC TALLY MARK FIVE;No;0;L;;;;5;N;;;;;
+1D377;TALLY MARK ONE;No;0;L;;;;1;N;;;;;
+1D378;TALLY MARK FIVE;No;0;L;;;;5;N;;;;;
 1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
 1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
 1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
@@ -28600,6 +29121,74 @@
 1E959;ADLAM DIGIT NINE;Nd;0;R;;9;9;9;N;;;;;
 1E95E;ADLAM INITIAL EXCLAMATION MARK;Po;0;R;;;;;N;;;;;
 1E95F;ADLAM INITIAL QUESTION MARK;Po;0;R;;;;;N;;;;;
+1EC71;INDIC SIYAQ NUMBER ONE;No;0;AL;;;;1;N;;;;;
+1EC72;INDIC SIYAQ NUMBER TWO;No;0;AL;;;;2;N;;;;;
+1EC73;INDIC SIYAQ NUMBER THREE;No;0;AL;;;;3;N;;;;;
+1EC74;INDIC SIYAQ NUMBER FOUR;No;0;AL;;;;4;N;;;;;
+1EC75;INDIC SIYAQ NUMBER FIVE;No;0;AL;;;;5;N;;;;;
+1EC76;INDIC SIYAQ NUMBER SIX;No;0;AL;;;;6;N;;;;;
+1EC77;INDIC SIYAQ NUMBER SEVEN;No;0;AL;;;;7;N;;;;;
+1EC78;INDIC SIYAQ NUMBER EIGHT;No;0;AL;;;;8;N;;;;;
+1EC79;INDIC SIYAQ NUMBER NINE;No;0;AL;;;;9;N;;;;;
+1EC7A;INDIC SIYAQ NUMBER TEN;No;0;AL;;;;10;N;;;;;
+1EC7B;INDIC SIYAQ NUMBER TWENTY;No;0;AL;;;;20;N;;;;;
+1EC7C;INDIC SIYAQ NUMBER THIRTY;No;0;AL;;;;30;N;;;;;
+1EC7D;INDIC SIYAQ NUMBER FORTY;No;0;AL;;;;40;N;;;;;
+1EC7E;INDIC SIYAQ NUMBER FIFTY;No;0;AL;;;;50;N;;;;;
+1EC7F;INDIC SIYAQ NUMBER SIXTY;No;0;AL;;;;60;N;;;;;
+1EC80;INDIC SIYAQ NUMBER SEVENTY;No;0;AL;;;;70;N;;;;;
+1EC81;INDIC SIYAQ NUMBER EIGHTY;No;0;AL;;;;80;N;;;;;
+1EC82;INDIC SIYAQ NUMBER NINETY;No;0;AL;;;;90;N;;;;;
+1EC83;INDIC SIYAQ NUMBER ONE HUNDRED;No;0;AL;;;;100;N;;;;;
+1EC84;INDIC SIYAQ NUMBER TWO HUNDRED;No;0;AL;;;;200;N;;;;;
+1EC85;INDIC SIYAQ NUMBER THREE HUNDRED;No;0;AL;;;;300;N;;;;;
+1EC86;INDIC SIYAQ NUMBER FOUR HUNDRED;No;0;AL;;;;400;N;;;;;
+1EC87;INDIC SIYAQ NUMBER FIVE HUNDRED;No;0;AL;;;;500;N;;;;;
+1EC88;INDIC SIYAQ NUMBER SIX HUNDRED;No;0;AL;;;;600;N;;;;;
+1EC89;INDIC SIYAQ NUMBER SEVEN HUNDRED;No;0;AL;;;;700;N;;;;;
+1EC8A;INDIC SIYAQ NUMBER EIGHT HUNDRED;No;0;AL;;;;800;N;;;;;
+1EC8B;INDIC SIYAQ NUMBER NINE HUNDRED;No;0;AL;;;;900;N;;;;;
+1EC8C;INDIC SIYAQ NUMBER ONE THOUSAND;No;0;AL;;;;1000;N;;;;;
+1EC8D;INDIC SIYAQ NUMBER TWO THOUSAND;No;0;AL;;;;2000;N;;;;;
+1EC8E;INDIC SIYAQ NUMBER THREE THOUSAND;No;0;AL;;;;3000;N;;;;;
+1EC8F;INDIC SIYAQ NUMBER FOUR THOUSAND;No;0;AL;;;;4000;N;;;;;
+1EC90;INDIC SIYAQ NUMBER FIVE THOUSAND;No;0;AL;;;;5000;N;;;;;
+1EC91;INDIC SIYAQ NUMBER SIX THOUSAND;No;0;AL;;;;6000;N;;;;;
+1EC92;INDIC SIYAQ NUMBER SEVEN THOUSAND;No;0;AL;;;;7000;N;;;;;
+1EC93;INDIC SIYAQ NUMBER EIGHT THOUSAND;No;0;AL;;;;8000;N;;;;;
+1EC94;INDIC SIYAQ NUMBER NINE THOUSAND;No;0;AL;;;;9000;N;;;;;
+1EC95;INDIC SIYAQ NUMBER TEN THOUSAND;No;0;AL;;;;10000;N;;;;;
+1EC96;INDIC SIYAQ NUMBER TWENTY THOUSAND;No;0;AL;;;;20000;N;;;;;
+1EC97;INDIC SIYAQ NUMBER THIRTY THOUSAND;No;0;AL;;;;30000;N;;;;;
+1EC98;INDIC SIYAQ NUMBER FORTY THOUSAND;No;0;AL;;;;40000;N;;;;;
+1EC99;INDIC SIYAQ NUMBER FIFTY THOUSAND;No;0;AL;;;;50000;N;;;;;
+1EC9A;INDIC SIYAQ NUMBER SIXTY THOUSAND;No;0;AL;;;;60000;N;;;;;
+1EC9B;INDIC SIYAQ NUMBER SEVENTY THOUSAND;No;0;AL;;;;70000;N;;;;;
+1EC9C;INDIC SIYAQ NUMBER EIGHTY THOUSAND;No;0;AL;;;;80000;N;;;;;
+1EC9D;INDIC SIYAQ NUMBER NINETY THOUSAND;No;0;AL;;;;90000;N;;;;;
+1EC9E;INDIC SIYAQ NUMBER LAKH;No;0;AL;;;;100000;N;;;;;
+1EC9F;INDIC SIYAQ NUMBER LAKHAN;No;0;AL;;;;200000;N;;;;;
+1ECA0;INDIC SIYAQ LAKH MARK;No;0;AL;;;;100000;N;;;;;
+1ECA1;INDIC SIYAQ NUMBER KAROR;No;0;AL;;;;10000000;N;;;;;
+1ECA2;INDIC SIYAQ NUMBER KARORAN;No;0;AL;;;;20000000;N;;;;;
+1ECA3;INDIC SIYAQ NUMBER PREFIXED ONE;No;0;AL;;;;1;N;;;;;
+1ECA4;INDIC SIYAQ NUMBER PREFIXED TWO;No;0;AL;;;;2;N;;;;;
+1ECA5;INDIC SIYAQ NUMBER PREFIXED THREE;No;0;AL;;;;3;N;;;;;
+1ECA6;INDIC SIYAQ NUMBER PREFIXED FOUR;No;0;AL;;;;4;N;;;;;
+1ECA7;INDIC SIYAQ NUMBER PREFIXED FIVE;No;0;AL;;;;5;N;;;;;
+1ECA8;INDIC SIYAQ NUMBER PREFIXED SIX;No;0;AL;;;;6;N;;;;;
+1ECA9;INDIC SIYAQ NUMBER PREFIXED SEVEN;No;0;AL;;;;7;N;;;;;
+1ECAA;INDIC SIYAQ NUMBER PREFIXED EIGHT;No;0;AL;;;;8;N;;;;;
+1ECAB;INDIC SIYAQ NUMBER PREFIXED NINE;No;0;AL;;;;9;N;;;;;
+1ECAC;INDIC SIYAQ PLACEHOLDER;So;0;AL;;;;;N;;;;;
+1ECAD;INDIC SIYAQ FRACTION ONE QUARTER;No;0;AL;;;;1/4;N;;;;;
+1ECAE;INDIC SIYAQ FRACTION ONE HALF;No;0;AL;;;;1/2;N;;;;;
+1ECAF;INDIC SIYAQ FRACTION THREE QUARTERS;No;0;AL;;;;3/4;N;;;;;
+1ECB0;INDIC SIYAQ RUPEE MARK;Sc;0;AL;;;;;N;;;;;
+1ECB1;INDIC SIYAQ NUMBER ALTERNATE ONE;No;0;AL;;;;1;N;;;;;
+1ECB2;INDIC SIYAQ NUMBER ALTERNATE TWO;No;0;AL;;;;2;N;;;;;
+1ECB3;INDIC SIYAQ NUMBER ALTERNATE TEN THOUSAND;No;0;AL;;;;10000;N;;;;;
+1ECB4;INDIC SIYAQ ALTERNATE LAKH MARK;No;0;AL;;;;100000;N;;;;;
 1EE00;ARABIC MATHEMATICAL ALEF;Lo;0;AL;<font> 0627;;;;N;;;;;
 1EE01;ARABIC MATHEMATICAL BEH;Lo;0;AL;<font> 0628;;;;N;;;;;
 1EE02;ARABIC MATHEMATICAL JEEM;Lo;0;AL;<font> 062C;;;;N;;;;;
@@ -29013,6 +29602,7 @@
 1F12C;CIRCLED ITALIC LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;;
 1F12D;CIRCLED CD;So;0;L;<circle> 0043 0044;;;;N;;;;;
 1F12E;CIRCLED WZ;So;0;L;<circle> 0057 005A;;;;N;;;;;
+1F12F;COPYLEFT SYMBOL;So;0;ON;;;;;N;;;;;
 1F130;SQUARED LATIN CAPITAL LETTER A;So;0;L;<square> 0041;;;;N;;;;;
 1F131;SQUARED LATIN CAPITAL LETTER B;So;0;L;<square> 0042;;;;N;;;;;
 1F132;SQUARED LATIN CAPITAL LETTER C;So;0;L;<square> 0043;;;;N;;;;;
@@ -30227,6 +30817,7 @@
 1F6F6;CANOE;So;0;ON;;;;;N;;;;;
 1F6F7;SLED;So;0;ON;;;;;N;;;;;
 1F6F8;FLYING SAUCER;So;0;ON;;;;;N;;;;;
+1F6F9;SKATEBOARD;So;0;ON;;;;;N;;;;;
 1F700;ALCHEMICAL SYMBOL FOR QUINTESSENCE;So;0;ON;;;;;N;;;;;
 1F701;ALCHEMICAL SYMBOL FOR AIR;So;0;ON;;;;;N;;;;;
 1F702;ALCHEMICAL SYMBOL FOR FIRE;So;0;ON;;;;;N;;;;;
@@ -30428,6 +31019,10 @@
 1F7D2;LIGHT TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
 1F7D3;HEAVY TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
 1F7D4;HEAVY TWELVE POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+1F7D5;CIRCLED TRIANGLE;So;0;ON;;;;;N;;;;;
+1F7D6;NEGATIVE CIRCLED TRIANGLE;So;0;ON;;;;;N;;;;;
+1F7D7;CIRCLED SQUARE;So;0;ON;;;;;N;;;;;
+1F7D8;NEGATIVE CIRCLED SQUARE;So;0;ON;;;;;N;;;;;
 1F800;LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;
 1F801;UPWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;
 1F802;RIGHTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;
@@ -30648,6 +31243,9 @@
 1F94A;BOXING GLOVE;So;0;ON;;;;;N;;;;;
 1F94B;MARTIAL ARTS UNIFORM;So;0;ON;;;;;N;;;;;
 1F94C;CURLING STONE;So;0;ON;;;;;N;;;;;
+1F94D;LACROSSE STICK AND BALL;So;0;ON;;;;;N;;;;;
+1F94E;SOFTBALL;So;0;ON;;;;;N;;;;;
+1F94F;FLYING DISC;So;0;ON;;;;;N;;;;;
 1F950;CROISSANT;So;0;ON;;;;;N;;;;;
 1F951;AVOCADO;So;0;ON;;;;;N;;;;;
 1F952;CUCUMBER;So;0;ON;;;;;N;;;;;
@@ -30676,6 +31274,20 @@
 1F969;CUT OF MEAT;So;0;ON;;;;;N;;;;;
 1F96A;SANDWICH;So;0;ON;;;;;N;;;;;
 1F96B;CANNED FOOD;So;0;ON;;;;;N;;;;;
+1F96C;LEAFY GREEN;So;0;ON;;;;;N;;;;;
+1F96D;MANGO;So;0;ON;;;;;N;;;;;
+1F96E;MOON CAKE;So;0;ON;;;;;N;;;;;
+1F96F;BAGEL;So;0;ON;;;;;N;;;;;
+1F970;SMILING FACE WITH SMILING EYES AND THREE HEARTS;So;0;ON;;;;;N;;;;;
+1F973;FACE WITH PARTY HORN AND PARTY HAT;So;0;ON;;;;;N;;;;;
+1F974;FACE WITH UNEVEN EYES AND WAVY MOUTH;So;0;ON;;;;;N;;;;;
+1F975;OVERHEATED FACE;So;0;ON;;;;;N;;;;;
+1F976;FREEZING FACE;So;0;ON;;;;;N;;;;;
+1F97A;FACE WITH PLEADING EYES;So;0;ON;;;;;N;;;;;
+1F97C;LAB COAT;So;0;ON;;;;;N;;;;;
+1F97D;GOGGLES;So;0;ON;;;;;N;;;;;
+1F97E;HIKING BOOT;So;0;ON;;;;;N;;;;;
+1F97F;FLAT SHOE;So;0;ON;;;;;N;;;;;
 1F980;CRAB;So;0;ON;;;;;N;;;;;
 1F981;LION FACE;So;0;ON;;;;;N;;;;;
 1F982;SCORPION;So;0;ON;;;;;N;;;;;
@@ -30700,7 +31312,30 @@
 1F995;SAUROPOD;So;0;ON;;;;;N;;;;;
 1F996;T-REX;So;0;ON;;;;;N;;;;;
 1F997;CRICKET;So;0;ON;;;;;N;;;;;
+1F998;KANGAROO;So;0;ON;;;;;N;;;;;
+1F999;LLAMA;So;0;ON;;;;;N;;;;;
+1F99A;PEACOCK;So;0;ON;;;;;N;;;;;
+1F99B;HIPPOPOTAMUS;So;0;ON;;;;;N;;;;;
+1F99C;PARROT;So;0;ON;;;;;N;;;;;
+1F99D;RACCOON;So;0;ON;;;;;N;;;;;
+1F99E;LOBSTER;So;0;ON;;;;;N;;;;;
+1F99F;MOSQUITO;So;0;ON;;;;;N;;;;;
+1F9A0;MICROBE;So;0;ON;;;;;N;;;;;
+1F9A1;BADGER;So;0;ON;;;;;N;;;;;
+1F9A2;SWAN;So;0;ON;;;;;N;;;;;
+1F9B0;EMOJI COMPONENT RED HAIR;So;0;ON;;;;;N;;;;;
+1F9B1;EMOJI COMPONENT CURLY HAIR;So;0;ON;;;;;N;;;;;
+1F9B2;EMOJI COMPONENT BALD;So;0;ON;;;;;N;;;;;
+1F9B3;EMOJI COMPONENT WHITE HAIR;So;0;ON;;;;;N;;;;;
+1F9B4;BONE;So;0;ON;;;;;N;;;;;
+1F9B5;LEG;So;0;ON;;;;;N;;;;;
+1F9B6;FOOT;So;0;ON;;;;;N;;;;;
+1F9B7;TOOTH;So;0;ON;;;;;N;;;;;
+1F9B8;SUPERHERO;So;0;ON;;;;;N;;;;;
+1F9B9;SUPERVILLAIN;So;0;ON;;;;;N;;;;;
 1F9C0;CHEESE WEDGE;So;0;ON;;;;;N;;;;;
+1F9C1;CUPCAKE;So;0;ON;;;;;N;;;;;
+1F9C2;SALT SHAKER;So;0;ON;;;;;N;;;;;
 1F9D0;FACE WITH MONOCLE;So;0;ON;;;;;N;;;;;
 1F9D1;ADULT;So;0;ON;;;;;N;;;;;
 1F9D2;CHILD;So;0;ON;;;;;N;;;;;
@@ -30724,6 +31359,45 @@
 1F9E4;GLOVES;So;0;ON;;;;;N;;;;;
 1F9E5;COAT;So;0;ON;;;;;N;;;;;
 1F9E6;SOCKS;So;0;ON;;;;;N;;;;;
+1F9E7;RED GIFT ENVELOPE;So;0;ON;;;;;N;;;;;
+1F9E8;FIRECRACKER;So;0;ON;;;;;N;;;;;
+1F9E9;JIGSAW PUZZLE PIECE;So;0;ON;;;;;N;;;;;
+1F9EA;TEST TUBE;So;0;ON;;;;;N;;;;;
+1F9EB;PETRI DISH;So;0;ON;;;;;N;;;;;
+1F9EC;DNA DOUBLE HELIX;So;0;ON;;;;;N;;;;;
+1F9ED;COMPASS;So;0;ON;;;;;N;;;;;
+1F9EE;ABACUS;So;0;ON;;;;;N;;;;;
+1F9EF;FIRE EXTINGUISHER;So;0;ON;;;;;N;;;;;
+1F9F0;TOOLBOX;So;0;ON;;;;;N;;;;;
+1F9F1;BRICK;So;0;ON;;;;;N;;;;;
+1F9F2;MAGNET;So;0;ON;;;;;N;;;;;
+1F9F3;LUGGAGE;So;0;ON;;;;;N;;;;;
+1F9F4;LOTION BOTTLE;So;0;ON;;;;;N;;;;;
+1F9F5;SPOOL OF THREAD;So;0;ON;;;;;N;;;;;
+1F9F6;BALL OF YARN;So;0;ON;;;;;N;;;;;
+1F9F7;SAFETY PIN;So;0;ON;;;;;N;;;;;
+1F9F8;TEDDY BEAR;So;0;ON;;;;;N;;;;;
+1F9F9;BROOM;So;0;ON;;;;;N;;;;;
+1F9FA;BASKET;So;0;ON;;;;;N;;;;;
+1F9FB;ROLL OF PAPER;So;0;ON;;;;;N;;;;;
+1F9FC;BAR OF SOAP;So;0;ON;;;;;N;;;;;
+1F9FD;SPONGE;So;0;ON;;;;;N;;;;;
+1F9FE;RECEIPT;So;0;ON;;;;;N;;;;;
+1F9FF;NAZAR AMULET;So;0;ON;;;;;N;;;;;
+1FA60;XIANGQI RED GENERAL;So;0;ON;;;;;N;;;;;
+1FA61;XIANGQI RED MANDARIN;So;0;ON;;;;;N;;;;;
+1FA62;XIANGQI RED ELEPHANT;So;0;ON;;;;;N;;;;;
+1FA63;XIANGQI RED HORSE;So;0;ON;;;;;N;;;;;
+1FA64;XIANGQI RED CHARIOT;So;0;ON;;;;;N;;;;;
+1FA65;XIANGQI RED CANNON;So;0;ON;;;;;N;;;;;
+1FA66;XIANGQI RED SOLDIER;So;0;ON;;;;;N;;;;;
+1FA67;XIANGQI BLACK GENERAL;So;0;ON;;;;;N;;;;;
+1FA68;XIANGQI BLACK MANDARIN;So;0;ON;;;;;N;;;;;
+1FA69;XIANGQI BLACK ELEPHANT;So;0;ON;;;;;N;;;;;
+1FA6A;XIANGQI BLACK HORSE;So;0;ON;;;;;N;;;;;
+1FA6B;XIANGQI BLACK CHARIOT;So;0;ON;;;;;N;;;;;
+1FA6C;XIANGQI BLACK CANNON;So;0;ON;;;;;N;;;;;
+1FA6D;XIANGQI BLACK SOLDIER;So;0;ON;;;;;N;;;;;
 20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
 2A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
 2A700;<CJK Ideograph Extension C, First>;Lo;0;L;;;;;N;;;;;
Binary file test/jdk/java/lang/Character/charprop00.bin has changed
Binary file test/jdk/java/lang/Character/charprop01.bin has changed
Binary file test/jdk/java/lang/Character/charprop02.bin has changed
Binary file test/jdk/java/lang/Character/charprop03.bin has changed
Binary file test/jdk/java/lang/Character/charprop0E.bin has changed
Binary file test/jdk/java/lang/Character/charprop0F.bin has changed
Binary file test/jdk/java/lang/Character/charprop10.bin has changed
--- a/test/jdk/java/net/Socket/asyncClose/AsyncCloseTest.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jdk/java/net/Socket/asyncClose/AsyncCloseTest.java	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -36,19 +36,20 @@
     }
 
     protected synchronized AsyncCloseTest passed() {
-        if (reason == null)
+        if (failureReason() == null) {
             passed = true;
+        }
         return this;
     }
 
     protected synchronized AsyncCloseTest failed(String r) {
         passed = false;
-        reason = r;
+        reason.append(String.format("%n - %s", r));
         return this;
     }
 
     public synchronized String failureReason() {
-        return reason;
+        return reason.length() > 0 ? reason.toString() : null;
     }
 
     protected synchronized void closed() {
@@ -60,6 +61,6 @@
     }
 
     private boolean passed;
-    private String reason;
+    private final StringBuilder reason = new StringBuilder();
     private boolean closed;
 }
--- a/test/jdk/java/net/Socket/asyncClose/DatagramSocket_receive.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jdk/java/net/Socket/asyncClose/DatagramSocket_receive.java	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -40,7 +40,7 @@
     public DatagramSocket_receive(int timeout) throws SocketException {
         this.timeout = timeout;
         latch = new CountDownLatch(1);
-        s = new DatagramSocket();
+        s = new DatagramSocket(0, InetAddress.getLoopbackAddress());
     }
 
     public String description() {
@@ -60,7 +60,7 @@
             }
             latch.countDown();
             s.receive(p);
-            failed("DatagramSocket.receive(DatagramPacket) returned unexpectly!!");
+            failed("DatagramSocket.receive(DatagramPacket) returned unexpectly!!" + " - " + p.getAddress());
         } catch (SocketException se) {
             if (latch.getCount() != 1) {
                 closed();
--- a/test/jdk/java/net/Socket/asyncClose/ServerSocket_accept.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jdk/java/net/Socket/asyncClose/ServerSocket_accept.java	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -41,7 +41,7 @@
     public ServerSocket_accept(int timeout) throws IOException {
         this.timeout = timeout;
         latch = new CountDownLatch(1);
-        ss = new ServerSocket(0);
+        ss = new ServerSocket(0, 0, InetAddress.getLoopbackAddress());
     }
 
     public String description() {
@@ -56,7 +56,7 @@
         try {
             latch.countDown();
             Socket s = ss.accept();
-            failed("ServerSocket.accept() returned unexpectly!!");
+            failed("ServerSocket.accept() returned unexpectly!!" + " - " + s);
         } catch (SocketException se) {
             closed();
         } catch (Exception e) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/net/URL/RacyHandler.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.io.IOException;
+import java.lang.reflect.*;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLStreamHandler;
+import java.util.concurrent.CountDownLatch;
+
+/*
+ * @test
+ * @bug 8213942
+ * @summary URLStreamHandler initialization race
+ * @run main/othervm RacyHandler
+ * @run main/othervm RacyHandler
+ * @run main/othervm RacyHandler
+ */
+
+/*
+ * This test makes reasonable effort to reproduce the race.
+ * Run repeatedly to ensure correctness.
+ */
+public class RacyHandler {
+    static volatile boolean factorySet = false;
+    static int NUM_THREADS = 2;
+    static CountDownLatch cdl = new CountDownLatch(NUM_THREADS + 1);
+
+    public static void main(String[] args) {
+        RacyHandler tester = new RacyHandler();
+        tester.runTest();
+    }
+
+    public void runTest() {
+        new Thread(() -> {
+            try {
+                cdl.await();
+                URL.setURLStreamHandlerFactory(proto -> new CustomHttpHandler());
+                factorySet = true;
+            } catch (Exception ignore) { }
+        }).start();
+        cdl.countDown();
+
+        for (int i = 0; i < NUM_THREADS; i++) {
+            new Thread(() -> {
+                try {
+                    cdl.await();
+                    while (!factorySet) {
+                        // trigger URL class load
+                        getURLStreamHandler();
+                    }
+                } catch (Exception ignore) { }
+            }).start();
+            cdl.countDown();
+        }
+
+        // wait for the factory to be set
+        while (!factorySet) { }
+        // The sleep seems to help trigger the failure
+        try {
+            Thread.sleep(500);
+        } catch (InterruptedException ie) {
+        }
+
+        URLStreamHandler httpHandler = getURLStreamHandler();
+        System.out.println("After setting factory URL handlers: http " + httpHandler);
+        if (!(httpHandler instanceof CustomHttpHandler))
+            throw new RuntimeException("FAILED: Incorrect handler type");
+    }
+
+    /*
+     * This is just so we can see what we get for the URLStreamHandler back
+     * from the factory to verify whether it really is using our Handler
+     * or something else...
+     */
+    public URLStreamHandler getURLStreamHandler() {
+        try {
+            Method method = URL.class.getDeclaredMethod("getURLStreamHandler",
+                    String.class);
+            method.setAccessible(true);
+            return (URLStreamHandler) method.invoke(null, "http");
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    class CustomHttpHandler extends URLStreamHandler {
+        @Override
+        protected URLConnection openConnection(URL u) throws IOException {
+            return null;
+        }
+    }
+}
\ No newline at end of file
--- a/test/jdk/java/nio/channels/SocketChannel/AsyncCloseChannel.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jdk/java/nio/channels/SocketChannel/AsyncCloseChannel.java	Wed Nov 21 13:53:17 2018 -0500
@@ -24,7 +24,6 @@
 /* @test
  * @bug 6285901 6501089
  * @summary Check no data is written to wrong socket channel during async closing.
- * @run main/othervm AsyncCloseChannel
  */
 
 import java.io.IOException;
@@ -112,7 +111,7 @@
                         public void run() {
                             boolean empty = true;
                             try {
-                                for(;;) {
+                                while (keepGoing) {
                                     int c = s.getInputStream().read();
                                     if(c == -1) {
                                         if(!empty)
--- a/test/jdk/javax/crypto/Cipher/TestCipherMode.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jdk/javax/crypto/Cipher/TestCipherMode.java	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 4953556
+ * @bug 4953556 8210838
  * @summary ensure that IllegalStateException is thrown if the
  * Cipher object is initialized with a wrong mode, e.g. WRAP_MODE
  * for update()/doFinal() calls.
@@ -44,13 +44,13 @@
     public static void main(String[] argv) throws Exception {
         TestCipherMode test = new TestCipherMode();
         System.out.println("Testing ENCRYPT_MODE...");
-        test.checkMode(Cipher.ENCRYPT_MODE);
+        test.checkMode(Cipher.ENCRYPT_MODE, "encryption");
         System.out.println("Testing DECRYPT_MODE...");
-        test.checkMode(Cipher.DECRYPT_MODE);
+        test.checkMode(Cipher.DECRYPT_MODE, "decryption");
         System.out.println("Testing WRAP_MODE...");
-        test.checkMode(Cipher.WRAP_MODE);
+        test.checkMode(Cipher.WRAP_MODE, "key wrapping");
         System.out.println("Testing UNWRAP_MODE...");
-        test.checkMode(Cipher.UNWRAP_MODE);
+        test.checkMode(Cipher.UNWRAP_MODE, "key unwrapping");
         System.out.println("All Tests Passed");
    }
 
@@ -60,11 +60,23 @@
     private TestCipherMode() throws NoSuchAlgorithmException,
     NoSuchProviderException, NoSuchPaddingException {
         c = Cipher.getInstance(ALGO + "/ECB/PKCS5Padding", "SunJCE");
+        String output = c.toString();
+        if (!output.equals(
+                "Cipher.DES/ECB/PKCS5Padding, mode: not initialized, algorithm from: SunJCE")) {
+            throw new RuntimeException(
+                    "Unexpected Cipher.toString() output:" + output);
+        }
         key = new SecretKeySpec(new byte[8], ALGO);
     }
 
-    private void checkMode(int mode) throws Exception {
+    private void checkMode(int mode, String opString) throws Exception {
         c.init(mode, key);
+        String output = c.toString();
+        if (!output.contains("Cipher.DES/ECB/PKCS5Padding")
+                && !output.contains(opString)
+                && !output.contains("Algorithm from: SunJCE")) {
+            throw new Exception("Unexpected toString() output:" + output);
+        }
 
         switch (mode) {
         case Cipher.ENCRYPT_MODE:
--- a/test/jdk/jdk/jfr/event/metadata/TestDefaultConfigurations.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jdk/jdk/jfr/event/metadata/TestDefaultConfigurations.java	Wed Nov 21 13:53:17 2018 -0500
@@ -173,6 +173,10 @@
         insertSetting(doc, EventNames.ActiveRecording, "threshold", "0 ns");
         insertSetting(doc, EventNames.JavaExceptionThrow, "threshold", "0 ns");
         insertSetting(doc, EventNames.JavaErrorThrow, "threshold", "0 ns");
+        insertSetting(doc, EventNames.SecurityProperty, "threshold", "0 ns");
+        insertSetting(doc, EventNames.TLSHandshake, "threshold", "0 ns");
+        insertSetting(doc, EventNames.X509Certificate, "threshold", "0 ns");
+        insertSetting(doc, EventNames.X509Validation, "threshold", "0 ns");
         return doc;
     }
 
--- a/test/jdk/jdk/jfr/event/runtime/TestActiveSettingEvent.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jdk/jdk/jfr/event/runtime/TestActiveSettingEvent.java	Wed Nov 21 13:53:17 2018 -0500
@@ -201,6 +201,10 @@
         settingValues.put(EventNames.ActiveRecording + "#threshold", "0 ns");
         settingValues.put(EventNames.JavaExceptionThrow + "#threshold", "0 ns");
         settingValues.put(EventNames.JavaErrorThrow + "#threshold", "0 ns");
+        settingValues.put(EventNames.SecurityProperty + "#threshold", "0 ns");
+        settingValues.put(EventNames.TLSHandshake + "#threshold", "0 ns");
+        settingValues.put(EventNames.X509Certificate + "#threshold", "0 ns");
+        settingValues.put(EventNames.X509Validation + "#threshold", "0 ns");
 
         try (Recording recording = new Recording(c)) {
             Map<Long, EventType> eventTypes = new HashMap<>();
--- a/test/jdk/jdk/jfr/event/runtime/TestModuleEvents.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/jdk/jdk/jfr/event/runtime/TestModuleEvents.java	Wed Nov 21 13:53:17 2018 -0500
@@ -64,8 +64,8 @@
         recording.stop();
 
         List<RecordedEvent> events = Events.fromRecording(recording);
-        assertDependency(events, "jdk.jfr", "java.base"); // jdk.jfr requires java.base (by edfault)
-        assertDependency(events, "java.base", "jdk.jfr"); // java.base require jdk.jfr for JDK events, i.e. FileRead
+        assertDependency(events, "jdk.jfr", "java.base"); // jdk.jfr requires java.base (by default)
+        assertDependency(events, "java.base", "jdk.jfr"); // java.base requires jdk.jfr for JDK events, i.e. FileRead
 
         recording.close();
     }
@@ -97,8 +97,9 @@
         events.stream().forEach((ev) -> {
             String exportedPackage = getValue(ev.getValue("exportedPackage"), "name", UNNAMED);
             String toModule = getValue(ev.getValue("targetModule"), "name", UNNAMED);
-
-            edges.put(exportedPackage, toModule);
+            if (!toModule.equals("jdk.proxy1")) { // ignore jdk.proxy1 module
+                edges.put(exportedPackage, toModule);
+            }
         });
 
         // We expect
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/jdk/jfr/event/security/TestSecurityPropertyModificationEvent.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.jfr.event.security;
+
+import java.security.Security;
+import java.util.List;
+
+import jdk.jfr.Recording;
+import jdk.jfr.consumer.RecordedEvent;
+import jdk.test.lib.Asserts;
+import jdk.test.lib.jfr.EventNames;
+import jdk.test.lib.jfr.Events;
+import jdk.test.lib.security.JDKSecurityProperties;
+
+/*
+ * @test
+ * @bug 8148188
+ * @summary Enhance the security libraries to record events of interest
+ * @key jfr
+ * @library /test/lib
+ * @run main/othervm jdk.jfr.event.security.TestSecurityPropertyModificationEvent
+ */
+public class TestSecurityPropertyModificationEvent {
+
+    static List<String> keys = JDKSecurityProperties.getKeys();
+    static String keyValue = "shouldBecomeAnEvent";
+
+    public static void main(String[] args) throws Exception {
+        try (Recording recording = new Recording()) {
+            recording.enable(EventNames.SecurityProperty);
+            recording.start();
+            for (String key: keys) {
+                Security.setProperty(key, keyValue);
+            }
+            recording.stop();
+
+            List<RecordedEvent> events = Events.fromRecording(recording);
+            Asserts.assertEquals(events.size(), keys.size(),
+                    "Incorrect number of events");
+            assertEvent(events);
+        }
+    }
+
+    private static void assertEvent(List<RecordedEvent> events) throws Exception {
+        int i = 1;
+        for (RecordedEvent e : events) {
+            if (keys.contains(e.getString("key"))) {
+                Events.assertField(e, "value").equal(keyValue);
+                i++;
+            } else {
+                System.out.println(events);
+                throw new Exception("Unexpected event at index:" + i);
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/jdk/jfr/event/security/TestTLSHandshakeEvent.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.jfr.event.security;
+
+import java.util.List;
+
+import jdk.jfr.Recording;
+import jdk.jfr.consumer.RecordedEvent;
+import jdk.test.lib.jfr.EventNames;
+import jdk.test.lib.jfr.Events;
+import jdk.test.lib.security.TestTLSHandshake;
+
+/*
+ * @test
+ * @bug 8148188
+ * @summary Enhance the security libraries to record events of interest
+ * @key jfr
+ * @library /test/lib
+ * @run main/othervm jdk.jfr.event.security.TestTLSHandshakeEvent
+ */
+public class TestTLSHandshakeEvent {
+    public static void main(String[] args) throws Exception {
+        try (Recording recording = new Recording()) {
+            recording.enable(EventNames.TLSHandshake);
+            recording.start();
+            TestTLSHandshake handshake = new TestTLSHandshake();
+            handshake.run();
+            recording.stop();
+
+            List<RecordedEvent> events = Events.fromRecording(recording);
+            Events.hasEvents(events);
+            assertEvent(events, handshake);
+        }
+    }
+
+    private static void assertEvent(List<RecordedEvent> events, TestTLSHandshake handshake) throws Exception {
+        System.out.println(events);
+        for (RecordedEvent e : events) {
+            if (handshake.peerHost.equals(e.getString("peerHost"))) {
+                Events.assertField(e, "peerPort").equal(handshake.peerPort);
+                Events.assertField(e, "protocolVersion").equal(handshake.protocolVersion);
+                Events.assertField(e, "certificateId").equal(TestTLSHandshake.HASHCODE);
+                Events.assertField(e, "cipherSuite").equal(TestTLSHandshake.CIPHER_SUITE);
+                return;
+            }
+        }
+        System.out.println(events);
+        throw new Exception("Could not find event with hostname: " + handshake.peerHost);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/jdk/jfr/event/security/TestX509CertificateEvent.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.jfr.event.security;
+
+import java.security.cert.CertificateFactory;
+import java.util.List;
+
+import jdk.jfr.Recording;
+import jdk.jfr.consumer.RecordedEvent;
+import jdk.test.lib.Asserts;
+import jdk.test.lib.jfr.EventNames;
+import jdk.test.lib.jfr.Events;
+import jdk.test.lib.security.TestCertificate;
+
+/*
+ * @test
+ * @bug 8148188
+ * @summary Enhance the security libraries to record events of interest
+ * @key jfr
+ * @library /test/lib
+ * @run main/othervm jdk.jfr.event.security.TestX509CertificateEvent
+ */
+public class TestX509CertificateEvent {
+    public static void main(String[] args) throws Exception {
+        try (Recording recording = new Recording()) {
+            recording.enable(EventNames.X509Certificate);
+            recording.start();
+
+            CertificateFactory cf = CertificateFactory.getInstance("X.509");
+            TestCertificate.ONE.generate(cf);
+            TestCertificate.TWO.generate(cf);
+            // Generate twice to make sure only one event per certificate is generated
+            TestCertificate.ONE.generate(cf);
+            TestCertificate.TWO.generate(cf);
+
+            recording.stop();
+
+            List<RecordedEvent> events = Events.fromRecording(recording);
+            Asserts.assertEquals(events.size(), 2, "Incorrect number of X509Certificate events");
+            assertEvent(events, TestCertificate.ONE);
+            assertEvent(events, TestCertificate.TWO);
+        }
+    }
+
+    private static void assertEvent(List<RecordedEvent> events, TestCertificate cert) throws Exception {
+        for (RecordedEvent e : events) {
+            if (e.getLong("certificateId") == cert.certId) {
+                Events.assertField(e, "algorithm").equal(cert.algorithm);
+                Events.assertField(e, "subject").equal(cert.subject);
+                Events.assertField(e, "issuer").equal(cert.issuer);
+                Events.assertField(e, "keyType").equal(cert.keyType);
+                Events.assertField(e, "keyLength").equal(cert.keyLength);
+                Events.assertField(e, "serialNumber").equal(cert.serialNumber);
+                return;
+            }
+        }
+        System.out.println(events);
+        throw new Exception("Could not find event with cert Id: " + cert.certId);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/jdk/jfr/event/security/TestX509ValidationEvent.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.jfr.event.security;
+
+import java.util.List;
+
+import jdk.jfr.AnnotationElement;
+import jdk.jfr.EventType;
+import jdk.jfr.FlightRecorder;
+import jdk.jfr.Recording;
+import jdk.jfr.consumer.RecordedEvent;
+import jdk.test.lib.Asserts;
+import jdk.test.lib.jfr.Events;
+import jdk.test.lib.jfr.EventNames;
+import jdk.test.lib.security.TestCertificate;
+
+/*
+ * @test
+ * @bug 8148188
+ * @summary Enhance the security libraries to record events of interest
+ * @key jfr
+ * @library /test/lib
+ * @modules jdk.jfr/jdk.jfr.events
+ * @run main/othervm jdk.jfr.event.security.TestX509ValidationEvent
+ */
+public class TestX509ValidationEvent {
+    public static void main(String[] args) throws Exception {
+        try (Recording recording = new Recording()) {
+            recording.enable(EventNames.X509Validation);
+            recording.start();
+            // intermeditate certificate test
+            TestCertificate.generateChain(false);
+            recording.stop();
+            List<RecordedEvent> events = Events.fromRecording(recording);
+            Asserts.assertEquals(events.size(), 3, "Incorrect number of events");
+            assertEvent1(events);
+        }
+
+        try (Recording recording = new Recording()) {
+            recording.enable(EventNames.X509Validation);
+            recording.start();
+            // self signed certificate test
+            TestCertificate.generateChain(true);
+            recording.stop();
+            List<RecordedEvent> events = Events.fromRecording(recording);
+            Asserts.assertEquals(events.size(), 2, "Incorrect number of events");
+            assertEvent2(events);
+        }
+    }
+
+    private static void assertEvent1(List<RecordedEvent> events) throws Exception {
+        for (RecordedEvent e : events) {
+            int pos = e.getInt("certificatePosition");
+            switch (pos) {
+                case 1:
+                    Events.assertField(e, "certificateId")
+                            .equal(TestCertificate.ROOT_CA.certId);
+                    break;
+                case 2:
+                    Events.assertField(e, "certificateId")
+                            .equal(TestCertificate.TWO.certId);
+                    break;
+                case 3:
+                    Events.assertField(e, "certificateId")
+                            .equal(TestCertificate.ONE.certId);
+                    break;
+                default:
+                    System.out.println(events);
+                    throw new Exception("Unexpected position:" + pos);
+            }
+        }
+    }
+
+    /*
+     * Self signed certificate test
+     */
+    private static void assertEvent2(List<RecordedEvent> events) throws Exception {
+        for (RecordedEvent e : events) {
+            int pos = e.getInt("certificatePosition");
+            switch (pos) {
+                case 1:
+                case 2:
+                    Events.assertField(e, "certificateId")
+                            .equal(TestCertificate.ROOT_CA.certId);
+                    break;
+                default:
+                    System.out.println(events);
+                    throw new Exception("Unexpected position:" + pos);
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/jdk/security/logging/LogJvm.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.security.logging;
+
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+public final class LogJvm {
+    private final static String LOGGING_ENABLED= "LOGGING_ENABLED";
+    private final static String LOGGING_DISABLED= "LOGGING_DISABLED";
+
+    private final static boolean debug = false;
+
+    private final List<String> expectedLogMessages = new ArrayList<>();
+    private final Class<?> clazz;
+    private final boolean loggingEnabled;
+
+    public LogJvm(Class<?> clazz, String[] args) {
+        this.clazz = clazz;
+        this.loggingEnabled = Arrays.asList(args).contains(LOGGING_ENABLED);
+        ensureLogging(args);
+    }
+
+    private void ensureLogging(String[] args) {
+        for(String s : args) {
+            if (s.equals(LOGGING_ENABLED) || s.equals(LOGGING_DISABLED)) {
+                return;
+            }
+        }
+        throw new RuntimeException(LogJvm.class.getName() +
+            " requires command line parameter " + LOGGING_ENABLED +
+            " or " + LOGGING_DISABLED);
+    }
+
+    public void addExpected(String logMsg) {
+        expectedLogMessages.add(logMsg);
+    }
+
+    public void testExpected() throws Exception {
+        OutputAnalyzer out = launchJVM();
+        if (debug) {
+            System.out.println("STDOUT DEBUG:\n " + out.getStdout());
+            System.out.println("\nSTDERR DEBUG:\n " + out.getStderr());
+        }
+        if (loggingEnabled) {
+            testLoggingEnabled(out);
+        } else {
+            testLoggingDisabled(out);
+        }
+    }
+
+    public OutputAnalyzer launchJVM() throws Exception {
+        List<String> args = new ArrayList<>();
+        if (loggingEnabled) {
+            args.add("-Djava.util.logging.config.file=" +
+                Paths.get(System.getProperty("test.src", "."), "logging.properties"));
+        }
+        args.add("--add-exports");
+        args.add("java.base/jdk.internal.event=ALL-UNNAMED");
+        args.add(clazz.getName());
+        System.out.println(args);
+        OutputAnalyzer out = ProcessTools.executeTestJava(args.toArray(new String[0]));
+        out.shouldHaveExitValue(0);
+        return out;
+    }
+
+    private void testLoggingDisabled(OutputAnalyzer out) {
+        for (String expected : expectedLogMessages) {
+            out.shouldNotContain(expected);
+        }
+    }
+
+    private void testLoggingEnabled(OutputAnalyzer out) {
+        for (String expected : expectedLogMessages) {
+            out.shouldContain(expected);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/jdk/security/logging/TestSecurityPropertyModificationLog.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.security.logging;
+
+import java.security.Security;
+import java.util.List;
+
+import jdk.test.lib.security.JDKSecurityProperties;
+
+/*
+ * @test
+ * @bug 8148188
+ * @summary Enhance the security libraries to record events of interest
+ * @library /test/lib /test/jdk
+ * @run main/othervm jdk.security.logging.TestSecurityPropertyModificationLog LOGGING_ENABLED
+ * @run main/othervm jdk.security.logging.TestSecurityPropertyModificationLog LOGGING_DISABLED
+ */
+public class TestSecurityPropertyModificationLog {
+
+    static List<String> keys = JDKSecurityProperties.getKeys();
+    static String keyValue = "shouldBecomeAnEvent";
+
+    public static void main(String[] args) throws Exception {
+        LogJvm l = new LogJvm(SetSecurityProperty.class, args);
+        for (String s: keys) {
+            l.addExpected("FINE: SecurityPropertyModification: key:" +
+                    s + ", value:" + keyValue);
+        }
+        l.testExpected();
+    }
+
+    public static class SetSecurityProperty {
+        public static void main(String[] args) {
+            for (String s: keys) {
+                Security.setProperty(s, keyValue);
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/jdk/security/logging/TestTLSHandshakeLog.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.security.logging;
+
+import jdk.test.lib.security.TestTLSHandshake;
+
+/*
+ * @test
+ * @bug 8148188
+ * @summary Enhance the security libraries to record events of interest
+ * @library /test/lib /test/jdk
+ * @run main/othervm jdk.security.logging.TestTLSHandshakeLog LOGGING_ENABLED
+ * @run main/othervm jdk.security.logging.TestTLSHandshakeLog LOGGING_DISABLED
+ */
+public class TestTLSHandshakeLog {
+    public static void main(String[] args) throws Exception {
+        LogJvm l = new LogJvm(TLSHandshake.class, args);
+        l.addExpected("FINE: X509Certificate: Alg:SHA256withRSA, Serial:" + TestTLSHandshake.CERT_SERIAL);
+        l.addExpected("Subject:CN=Regression Test");
+        l.addExpected("Key type:EC, Length:256");
+        l.addExpected("FINE: ValidationChain: " +
+                TestTLSHandshake.ANCHOR_HASHCODE +
+                ", " + TestTLSHandshake.HASHCODE);
+        l.addExpected("SunJSSE Test Serivce");
+        l.addExpected("TLSHandshake:");
+        l.addExpected("TLSv1.2");
+        l.addExpected(TestTLSHandshake.CIPHER_SUITE +", " + TestTLSHandshake.HASHCODE);
+        l.testExpected();
+    }
+
+    public static class TLSHandshake {
+        public static void main(String[] args) throws Exception {
+            TestTLSHandshake handshake = new TestTLSHandshake();
+            handshake.run();
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/jdk/security/logging/TestX509CertificateLog.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.security.logging;
+
+import java.security.cert.CertificateFactory;
+import jdk.test.lib.security.TestCertificate;
+
+/*
+ * @test
+ * @bug 8148188
+ * @summary Enhance the security libraries to record events of interest
+ * @library /test/lib /test/jdk
+ * @run main/othervm jdk.security.logging.TestX509CertificateLog LOGGING_ENABLED
+ * @run main/othervm jdk.security.logging.TestX509CertificateLog LOGGING_DISABLED
+ */
+public class TestX509CertificateLog {
+    public static void main(String[] args) throws Exception {
+        LogJvm l = new LogJvm(GenerateX509Certicate.class, args);
+        l.addExpected(
+            "FINE: X509Certificate: Alg:" + TestCertificate.ONE.algorithm +
+            ", Serial:" + TestCertificate.ONE.serialNumber +
+            ", Subject:" + TestCertificate.ONE.subject +
+            ", Issuer:"  + TestCertificate.ONE.issuer +
+            ", Key type:" + TestCertificate.ONE.keyType +
+            ", Length:" + TestCertificate.ONE.keyLength +
+            ", Cert Id:" + TestCertificate.ONE.certId);
+        l.addExpected(
+            "FINE: X509Certificate: Alg:" + TestCertificate.TWO.algorithm +
+            ", Serial:" + TestCertificate.TWO.serialNumber +
+            ", Subject:" + TestCertificate.TWO.subject +
+            ", Issuer:"  + TestCertificate.TWO.issuer +
+            ", Key type:" + TestCertificate.TWO.keyType +
+            ", Length:" + TestCertificate.TWO.keyLength +
+            ", Cert Id:" + TestCertificate.TWO.certId);
+        l.testExpected();
+    }
+
+    public static class GenerateX509Certicate {
+        public static void main(String[] args) throws Exception {
+            CertificateFactory cf = CertificateFactory.getInstance("X.509");
+            TestCertificate.ONE.generate(cf);
+            TestCertificate.TWO.generate(cf);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/jdk/security/logging/TestX509ValidationLog.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.security.logging;
+
+import jdk.test.lib.security.TestCertificate;
+
+/*
+ * @test
+ * @bug 8148188
+ * @summary Enhance the security libraries to record events of interest
+ * @library /test/lib /test/jdk
+ * @run main/othervm jdk.security.logging.TestX509ValidationLog LOGGING_ENABLED
+ * @run main/othervm jdk.security.logging.TestX509ValidationLog LOGGING_DISABLED
+ */
+public class TestX509ValidationLog {
+    public static void main(String[] args) throws Exception {
+        LogJvm l = new LogJvm(GenerateCertificateChain.class, args);
+        l.addExpected("FINE: ValidationChain: " +
+                TestCertificate.ROOT_CA.certId + ", " +
+                TestCertificate.TWO.certId + ", " +
+                TestCertificate.ONE.certId);
+        l.addExpected("FINE: ValidationChain: " +
+                TestCertificate.ROOT_CA.certId + ", " +
+                TestCertificate.ROOT_CA.certId);
+        l.testExpected();
+    }
+
+    public static class GenerateCertificateChain {
+        public static void main(String[] args) throws Exception {
+            TestCertificate.generateChain(false);
+            // self signed test
+            TestCertificate.generateChain(true);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/jdk/security/logging/logging.properties	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,13 @@
+############################################################
+#  	Configuration file for log testing
+#
+############################################################
+
+handlers= java.util.logging.ConsoleHandler
+
+.level= FINE
+
+java.util.logging.ConsoleHandler.level = FINE
+java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
+
+jdk.event.security.level = FINE
--- a/test/langtools/jdk/javadoc/doclet/testAbstractMethod/TestAbstractMethod.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testAbstractMethod/TestAbstractMethod.java	Wed Nov 21 13:53:17 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug      8004891
+ * @bug      8004891 8184205
  * @summary  Make sure that the abstract method is identified correctly
  *           if the abstract modifier is present explicitly or implicitly.
  * @author   bpatel
@@ -49,51 +49,61 @@
 
         checkOutput("pkg/A.html", true,
                 "<td class=\"colFirst\"><code>default void</code></td>",
-                "<caption><span id=\"t0\" class=\"activeTableTab\"><span>"
-                + "All Methods</span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t2\" class=\"tableTab\"><span>"
-                + "<a href=\"javascript:show(2);\">Instance Methods</a></span>"
-                + "<span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" "
-                + "class=\"tableTab\"><span><a href=\"javascript:show(4);\">"
-                + "Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span>"
-                + "</span><span id=\"t5\" class=\"tableTab\"><span>"
-                + "<a href=\"javascript:show(16);\">Default Methods</a></span>"
-                + "<span class=\"tabEnd\">&nbsp;</span></span></caption>");
+                "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\" "
+                + "aria-selected=\"true\" aria-controls=\"memberSummary_tabpanel\" tabindex=\"0\""
+                + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Methods"
+                + "</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\" "
+                + "onkeydown=\"switchTab(event)\" id=\"t2\" class=\"tableTab\""
+                + " onclick=\"show(2);\">Instance Methods</button><button role=\"tab\""
+                + " aria-selected=\"false\" aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\""
+                + " onkeydown=\"switchTab(event)\" id=\"t3\" class=\"tableTab\" onclick=\"show(4);\">"
+                + "Abstract Methods</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\""
+                + " onkeydown=\"switchTab(event)\" id=\"t5\" class=\"tableTab\" onclick=\"show(16);\">"
+                + "Default Methods</button></div>");
 
         checkOutput("pkg/B.html", true,
-                "<caption><span id=\"t0\" class=\"activeTableTab\"><span>"
-                + "All Methods</span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t2\" class=\"tableTab\"><span>"
-                + "<a href=\"javascript:show(2);\">Instance Methods</a></span>"
-                + "<span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" "
-                + "class=\"tableTab\"><span><a href=\"javascript:show(4);\">Abstract "
-                + "Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t4\" class=\"tableTab\"><span>"
-                + "<a href=\"javascript:show(8);\">Concrete Methods</a></span>"
-                + "<span class=\"tabEnd\">&nbsp;</span></span></caption>",
+                "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\""
+                + " aria-selected=\"true\" aria-controls=\"memberSummary_tabpanel\" tabindex=\"0\""
+                + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Methods"
+                + "</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\""
+                + " onkeydown=\"switchTab(event)\" id=\"t2\" class=\"tableTab\" onclick=\"show(2);\">"
+                + "Instance Methods</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\""
+                + " onkeydown=\"switchTab(event)\" id=\"t3\" class=\"tableTab\" onclick=\"show(4);\">"
+                + "Abstract Methods</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\""
+                + " onkeydown=\"switchTab(event)\" id=\"t4\" class=\"tableTab\""
+                + " onclick=\"show(8);\">Concrete Methods</button></div>",
                 "<td class=\"colFirst\"><code>abstract void</code></td>");
 
         checkOutput("pkg/C.html", true,
-                "<caption><span id=\"t0\" class=\"activeTableTab\"><span>"
-                + "All Methods</span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t2\" class=\"tableTab\"><span>"
-                + "<a href=\"javascript:show(2);\">Instance Methods</a></span>"
-                + "<span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t5\" class=\"tableTab\"><span>"
-                + "<a href=\"javascript:show(16);\">Default Methods</a></span>"
-                + "<span class=\"tabEnd\">&nbsp;</span></span></caption>",
-                "<td class=\"colFirst\"><code>default void</code></td>");
+                "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\""
+                + " aria-selected=\"true\" aria-controls=\"memberSummary_tabpanel\" tabindex=\"0\""
+                + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Methods"
+                + "</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\""
+                + " onkeydown=\"switchTab(event)\" id=\"t2\" class=\"tableTab\" onclick=\"show(2);\">"
+                + "Instance Methods</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\""
+                + " onkeydown=\"switchTab(event)\" id=\"t5\" class=\"tableTab\" onclick=\"show(16);\">"
+                + "Default Methods</button></div>");
 
         checkOutput("pkg/A.html", false,
                 "<td class=\"colFirst\"><code>abstract void</code></td>");
 
         checkOutput("pkg/B.html", false,
-                "<span><a href=\"javascript:show(16);\">Default Methods</a></span>"
-                + "<span class=\"tabEnd\">&nbsp;</span>",
+                "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"memberSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t5\" class=\"tableTab\""
+                + " onclick=\"show(16);\">Default Methods</button>",
                 "<td class=\"colFirst\"><code>default void</code></td>");
 
         checkOutput("pkg/C.html", false,
-                "<span><a href=\"javascript:show(4);\">Abstract Methods</a></span>"
+                "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"memberSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t3\" class=\"tableTab\""
+                + " onclick=\"show(4);\">Abstract Methods</button>"
                 + "<span class=\"tabEnd\">&nbsp;</span>");
     }
 }
--- a/test/langtools/jdk/javadoc/doclet/testDeprecatedDocs/TestDeprecatedDocs.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testDeprecatedDocs/TestDeprecatedDocs.java	Wed Nov 21 13:53:17 2018 -0500
@@ -24,7 +24,7 @@
 /*
  * @test
  * @bug      4927552 8026567 8071982 8162674 8175200 8175218 8183511 8186332
- *           8169819 8074407 8191030 8182765
+ *           8169819 8074407 8191030 8182765 8184205
  * @summary  test generated docs for deprecated items
  * @author   jamieh
  * @library  ../lib
@@ -210,13 +210,15 @@
                 + "<li><a href=\"#annotation.type.member\">Annotation Type Elements</a></li>\n"
                 + "</ul>",
                 "<a id=\"forRemoval\">",
-                "<table class=\"deprecatedSummary\">\n"
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table>\n"
                 + "<caption><span>For Removal</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Element</th>\n"
                 + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
                 + "</tr>",
-                "<table class=\"deprecatedSummary\">\n"
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table>\n"
                 + "<caption><span>Enums</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Enum</th>\n"
@@ -230,8 +232,10 @@
                 + "</td>\n"
                 + "</tr>\n"
                 + "</tbody>\n"
-                + "</table>",
-                "<table class=\"deprecatedSummary\">\n"
+                + "</table>\n"
+                + "</div>",
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table>\n"
                 + "<caption><span>Exceptions</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Exceptions</th>\n"
@@ -245,8 +249,10 @@
                 + "</td>\n"
                 + "</tr>\n"
                 + "</tbody>\n"
-                + "</table>",
-                "<table class=\"deprecatedSummary\">\n"
+                + "</table>\n"
+                + "</div>",
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table>\n"
                 + "<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Field</th>\n"
@@ -288,7 +294,8 @@
                 + "</td>\n"
                 + "</tr>\n"
                 + "</tbody>\n"
-                + "</table>");
+                + "</table>\n"
+                + "</div>");
     }
 
     @Test
@@ -301,13 +308,15 @@
 
         checkOutput("deprecated-list.html", true,
                 "<a name=\"forRemoval\">",
-                "<table class=\"deprecatedSummary\" summary=\"For Removal table, listing for removal, and an explanation\">\n"
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table summary=\"For Removal table, listing for removal, and an explanation\">\n"
                 + "<caption><span>For Removal</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Element</th>\n"
                 + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
                 + "</tr>",
-                "<table class=\"deprecatedSummary\" summary=\"Enums table, listing enums, and an explanation\">\n"
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table summary=\"Enums table, listing enums, and an explanation\">\n"
                 + "<caption><span>Enums</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Enum</th>\n"
@@ -321,8 +330,10 @@
                 + "</td>\n"
                 + "</tr>\n"
                 + "</tbody>\n"
-                + "</table>",
-                "<table class=\"deprecatedSummary\" summary=\"Exceptions table, listing exceptions, and an explanation\">\n"
+                + "</table>\n"
+                + "</div>",
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table summary=\"Exceptions table, listing exceptions, and an explanation\">\n"
                 + "<caption><span>Exceptions</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Exceptions</th>\n"
@@ -336,8 +347,10 @@
                 + "</td>\n"
                 + "</tr>\n"
                 + "</tbody>\n"
-                + "</table>",
-                "<table class=\"deprecatedSummary\" summary=\"Fields table, listing fields, and an explanation\">\n"
+                + "</table>\n"
+                + "</div>",
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table summary=\"Fields table, listing fields, and an explanation\">\n"
                 + "<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Field</th>\n"
@@ -379,6 +392,7 @@
                 + "</td>\n"
                 + "</tr>\n"
                 + "</tbody>\n"
-                + "</table>");
+                + "</table>\n"
+                + "</div>");
     }
 }
--- a/test/langtools/jdk/javadoc/doclet/testFramesNoFrames/TestFramesNoFrames.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testFramesNoFrames/TestFramesNoFrames.java	Wed Nov 21 13:53:17 2018 -0500
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 8162353 8164747 8173707 8196202 8204303
+ * @bug 8162353 8164747 8173707 8196202 8204303 8184205
  * @summary javadoc should provide a way to disable use of frames
  * @library /tools/lib ../lib
  * @modules
@@ -347,7 +347,7 @@
             // the index.html file contains a summary table
             // if an overview was generated and not in frames mode
             checkOutput("index.html", !frames && overview,
-                    "<table class=\"overviewSummary\"");
+                    "<div class=\"overviewSummary\">\n<table");
 
             // the index.html file contains a redirect if
             // no frames and no overview
--- a/test/langtools/jdk/javadoc/doclet/testGroupName/TestGroupName.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testGroupName/TestGroupName.java	Wed Nov 21 13:53:17 2018 -0500
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 8190003 8196201 8196202
+ * @bug 8190003 8196201 8196202 8184205
  * @summary Special characters in group names should be escaped
  * @library /tools/lib ../lib
  * @modules jdk.javadoc/jdk.javadoc.internal.tool
@@ -65,7 +65,9 @@
         checkExit(Exit.OK);
 
         checkOutput("overview-summary.html", true,
-                "<span><a href=\"javascript:show(1);\">abc &lt; &amp; &gt; def</a></span>",
+                "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"overviewSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t1\" class=\"tableTab\""
+                + " onclick=\"show(1);\">abc &lt; &amp; &gt; def</button>",
                 ",\"abc < & > def\"],");
     }
 
@@ -99,7 +101,9 @@
         checkExit(Exit.OK);
 
         checkOutput("overview-summary.html", true,
-                "<span><a href=\"javascript:show(1);\">abc &lt; &amp; &gt; def</a></span>",
+                "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"overviewSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t2\" class=\"tableTab\""
+                + " onclick=\"show(2);\">Other Modules</button>",
                 ",\"abc < & > def\"],");
     }
 }
--- a/test/langtools/jdk/javadoc/doclet/testHtmlTableStyles/TestHtmlTableStyles.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testHtmlTableStyles/TestHtmlTableStyles.java	Wed Nov 21 13:53:17 2018 -0500
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 8008164 8169819 8183037 8182765 8196202
+ * @bug 8008164 8169819 8183037 8182765 8196202 8184205
  * @summary Test styles on HTML tables generated by javadoc.
  * @author Bhavesh Patel
  * @library ../lib
@@ -56,24 +56,24 @@
 
         checkOutput("pkg1/TestTable.html", true,
                 "<table summary=\"Summary\" border cellpadding=3 cellspacing=1>",
-                "<table class=\"memberSummary\">",
-                "<table class=\"memberSummary\">",
-                "<table class=\"memberSummary\">");
+                "<div class=\"memberSummary\">\n<table>",
+                "<div class=\"memberSummary\">\n<table>",
+                "<div class=\"memberSummary\">\n<table>");
 
         checkOutput("pkg1/package-summary.html", true,
-                "<table class=\"typeSummary\">");
+                "<div class=\"typeSummary\">\n<table>");
 
         checkOutput("pkg1/class-use/TestTable.html", true,
-                "<table class=\"useSummary\">");
+                "<div class=\"useSummary\">\n<table>");
 
         checkOutput("overview-summary.html", true,
-                "<table class=\"overviewSummary\">");
+                "<div class=\"overviewSummary\">\n<table>");
 
         checkOutput("deprecated-list.html", true,
-            "<table class=\"deprecatedSummary\">");
+            "<div class=\"deprecatedSummary\">\n<table>");
 
         checkOutput("constant-values.html", true,
-            "<table class=\"constantsSummary\">");
+            "<div class=\"constantsSummary\">\n<table>");
     }
 
     @Test
@@ -88,30 +88,35 @@
 
         checkOutput("pkg1/TestTable.html", true,
                 "<table summary=\"Summary\" border cellpadding=3 cellspacing=1>",
-                "<table class=\"memberSummary\" summary=\"Field Summary table, listing fields, "
+                "<div class=\"memberSummary\">\n"
+                + "<table summary=\"Field Summary table, listing fields, "
                 + "and an explanation\">",
-                "<table class=\"memberSummary\" summary=\"Constructor Summary table, listing "
+                "<div class=\"memberSummary\">\n"
+                + "<table summary=\"Constructor Summary table, listing "
                 + "constructors, and an explanation\">",
-                "<table class=\"memberSummary\" summary=\"Method Summary table, listing methods, "
-                + "and an explanation\">");
+                "<div class=\"memberSummary\">\n",
+                "<table summary=\"Method Summary table, listing methods, "
+                + "and an explanation\" aria-labelledby=\"t0\">");
 
         checkOutput("pkg1/package-summary.html", true,
-                "<table class=\"typeSummary\" summary=\"Class Summary table, listing classes, "
+                "<div class=\"typeSummary\">\n"
+                + "<table summary=\"Class Summary table, listing classes, "
                 + "and an explanation\">");
 
         checkOutput("pkg1/class-use/TestTable.html", true,
-                "<table class=\"useSummary\" summary=\"Use table, listing fields, and an explanation\">");
+                "<div class=\"useSummary\">\n"
+                + "<table summary=\"Use table, listing fields, and an explanation\">");
 
         checkOutput("overview-summary.html", true,
-                "<table class=\"overviewSummary\" "
-                + "summary=\"Package Summary table, listing packages, and an explanation\">");
+                "<div class=\"overviewSummary\">\n"
+                + "<table summary=\"Package Summary table, listing packages, and an explanation\">");
 
         checkOutput("deprecated-list.html", true,
-            "<table class=\"deprecatedSummary\" summary=\"Methods table, listing " +
-            "methods, and an explanation\">");
+            "<div class=\"deprecatedSummary\">\n"
+            + "<table summary=\"Methods table, listing methods, and an explanation\">");
 
         checkOutput("constant-values.html", true,
-            "<table class=\"constantsSummary\" summary=\"Constant Field Values table, listing " +
-            "constant fields, and values\">");
+            "<div class=\"constantsSummary\">\n"
+            + "<table summary=\"Constant Field Values table, listing constant fields, and values\">");
     }
 }
--- a/test/langtools/jdk/javadoc/doclet/testHtmlTableTags/TestHtmlTableTags.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testHtmlTableTags/TestHtmlTableTags.java	Wed Nov 21 13:53:17 2018 -0500
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug      6786688 8008164 8162363 8169819 8183037 8182765
+ * @bug      6786688 8008164 8162363 8169819 8183037 8182765 8184205
  * @summary  HTML tables should have table summary, caption and table headers.
  * @author   Bhavesh Patel
  * @library  ../lib
@@ -78,70 +78,70 @@
     void checkHtmlTableTag() {
         //Package summary
         checkOutput("pkg1/package-summary.html", true,
-                "<table class=\"typeSummary\">",
-                "<table class=\"typeSummary\">");
+                "<div class=\"typeSummary\">\n<table>",
+                "<div class=\"typeSummary\">\n<table>");
 
         checkOutput("pkg2/package-summary.html", true,
-                "<table class=\"typeSummary\">",
-                "<table class=\"typeSummary\">");
+                "<div class=\"typeSummary\">\n<table>",
+                "<div class=\"typeSummary\">\n<table>");
 
         // Class documentation
         checkOutput("pkg1/C1.html", true,
-                "<table class=\"memberSummary\">",
-                "<table class=\"memberSummary\">");
+                "<div class=\"memberSummary\">\n<table>",
+                "<div class=\"memberSummary\">\n<table>");
 
         checkOutput("pkg2/C2.html", true,
-                "<table class=\"memberSummary\">",
-                "<table class=\"memberSummary\">");
+                "<div class=\"memberSummary\">\n<table>",
+                "<div class=\"memberSummary\">\n<table>");
 
         checkOutput("pkg2/C2.ModalExclusionType.html", true,
-                "<table class=\"memberSummary\">");
+                "<div class=\"memberSummary\">\n<table>");
 
         checkOutput("pkg2/C3.html", true,
-                "<table class=\"memberSummary\">");
+                "<div class=\"memberSummary\">\n<table>");
 
         checkOutput("pkg2/C4.html", true,
-                "<table class=\"memberSummary\">");
+                "<div class=\"memberSummary\">\n<table>");
 
         // Class use documentation
         checkOutput("pkg1/class-use/I1.html", true,
-                "<table class=\"useSummary\">");
+                "<div class=\"useSummary\">\n<table>");
 
         checkOutput("pkg1/class-use/C1.html", true,
-                "<table class=\"useSummary\">",
-                "<table class=\"useSummary\">");
+                "<div class=\"useSummary\">\n<table>",
+                "<div class=\"useSummary\">\n<table>");
 
         checkOutput("pkg2/class-use/C2.html", true,
-                "<table class=\"useSummary\">",
-                "<table class=\"useSummary\">");
+                "<div class=\"useSummary\">\n<table>",
+                "<div class=\"useSummary\">\n<table>");
 
         checkOutput("pkg2/class-use/C2.ModalExclusionType.html", true,
-                "<table class=\"useSummary\">");
+                "<div class=\"useSummary\">\n<table>");
 
         checkOutput("pkg2/class-use/C2.ModalExclusionType.html", true,
-                "<table class=\"useSummary\">");
+                "<div class=\"useSummary\">\n<table>");
 
         // Package use documentation
         checkOutput("pkg1/package-use.html", true,
-                "<table class=\"useSummary\">",
-                "<table class=\"useSummary\">");
+                "<div class=\"useSummary\">\n<table>",
+                "<div class=\"useSummary\">\n<table>");
 
         checkOutput("pkg2/package-use.html", true,
-                "<table class=\"useSummary\">",
-                "<table class=\"useSummary\">");
+                "<div class=\"useSummary\">\n<table>",
+                "<div class=\"useSummary\">\n<table>");
 
         // Deprecated
         checkOutput("deprecated-list.html", true,
-                "<table class=\"deprecatedSummary\">",
-                "<table class=\"deprecatedSummary\">");
+                "<div class=\"deprecatedSummary\">\n<table>",
+                "<div class=\"deprecatedSummary\">\n<table>");
 
         // Constant values
         checkOutput("constant-values.html", true,
-                "<table class=\"constantsSummary\">");
+                "<div class=\"constantsSummary\">\n<table>");
 
         // Overview Summary
         checkOutput("overview-summary.html", true,
-                "<table class=\"overviewSummary\">");
+                "<div class=\"overviewSummary\">\n<table>");
     }
 
     /*
@@ -150,85 +150,110 @@
     void checkHtmlTableSummaries() {
         //Package summary
         checkOutput("pkg1/package-summary.html", true,
-                "<table class=\"typeSummary\" summary=\"Class Summary table, "
+                "<div class=\"typeSummary\">\n"
+                + "<table summary=\"Class Summary table, "
                 + "listing classes, and an explanation\">",
-                "<table class=\"typeSummary\" summary=\"Interface Summary table, "
+                "<div class=\"typeSummary\">\n"
+                + "<table summary=\"Interface Summary table, "
                 + "listing interfaces, and an explanation\">");
 
         checkOutput("pkg2/package-summary.html", true,
-                "<table class=\"typeSummary\" summary=\"Enum Summary table, "
+                "<div class=\"typeSummary\">\n"
+                + "<table summary=\"Enum Summary table, "
                 + "listing enums, and an explanation\">",
-                "<table class=\"typeSummary\" summary=\"Annotation Types Summary table, "
+                "<div class=\"typeSummary\">\n"
+                + "<table summary=\"Annotation Types Summary table, "
                 + "listing annotation types, and an explanation\">");
 
         // Class documentation
         checkOutput("pkg1/C1.html", true,
-                "<table class=\"memberSummary\" summary=\"Field Summary table, listing fields, "
+                "<div class=\"memberSummary\">\n"
+                + "<table summary=\"Field Summary table, listing fields, "
                 + "and an explanation\">",
-                "<table class=\"memberSummary\" summary=\"Method Summary table, listing methods, "
-                + "and an explanation\">");
+                "<div class=\"memberSummary\">\n",
+                "<table summary=\"Method Summary table, listing methods, "
+                + "and an explanation\" aria-labelledby=\"t0\">");
 
         checkOutput("pkg2/C2.html", true,
-                "<table class=\"memberSummary\" summary=\"Nested Class Summary table, listing "
+                "<div class=\"memberSummary\">\n"
+                + "<table summary=\"Nested Class Summary table, listing "
                 + "nested classes, and an explanation\">",
-                "<table class=\"memberSummary\" summary=\"Constructor Summary table, listing "
+                "<div class=\"memberSummary\">\n"
+                + "<table summary=\"Constructor Summary table, listing "
                 + "constructors, and an explanation\">");
 
         checkOutput("pkg2/C2.ModalExclusionType.html", true,
-                "<table class=\"memberSummary\" summary=\"Enum Constant Summary table, listing "
+                "<div class=\"memberSummary\">\n"
+                + "<table summary=\"Enum Constant Summary table, listing "
                 + "enum constants, and an explanation\">");
 
         checkOutput("pkg2/C3.html", true,
-                "<table class=\"memberSummary\" summary=\"Required Element Summary table, "
+                "<div class=\"memberSummary\">\n"
+                + "<table summary=\"Required Element Summary table, "
                 + "listing required elements, and an explanation\">");
 
         checkOutput("pkg2/C4.html", true,
-                "<table class=\"memberSummary\" summary=\"Optional Element Summary table, "
+                "<div class=\"memberSummary\">\n"
+                + "<table summary=\"Optional Element Summary table, "
                 + "listing optional elements, and an explanation\">");
 
         // Class use documentation
         checkOutput("pkg1/class-use/I1.html", true,
-                "<table class=\"useSummary\" summary=\"Use table, listing packages, and an explanation\">");
+                "<div class=\"useSummary\">\n"
+                + "<table summary=\"Use table, listing packages, and an explanation\">");
 
         checkOutput("pkg1/class-use/C1.html", true,
-                "<table class=\"useSummary\" summary=\"Use table, listing fields, and an explanation\">",
-                "<table class=\"useSummary\" summary=\"Use table, listing methods, and an explanation\">");
+                "<div class=\"useSummary\">\n"
+                + "<table summary=\"Use table, listing fields, and an explanation\">",
+                "<div class=\"useSummary\">\n"
+                + "<table summary=\"Use table, listing methods, and an explanation\">");
 
         checkOutput("pkg2/class-use/C2.html", true,
-                "<table class=\"useSummary\" summary=\"Use table, listing fields, and an explanation\">",
-                "<table class=\"useSummary\" summary=\"Use table, listing methods, and an explanation\">");
+                "<div class=\"useSummary\">\n"
+                + "<table summary=\"Use table, listing fields, and an explanation\">",
+                "<div class=\"useSummary\">\n"
+                + "<table summary=\"Use table, listing methods, and an explanation\">");
 
         checkOutput("pkg2/class-use/C2.ModalExclusionType.html", true,
-                "<table class=\"useSummary\" summary=\"Use table, listing packages, and an explanation\">");
+                "<div class=\"useSummary\">\n"
+                + "<table summary=\"Use table, listing packages, and an explanation\">");
 
         checkOutput("pkg2/class-use/C2.ModalExclusionType.html", true,
-                "<table class=\"useSummary\" summary=\"Use table, listing methods, and an explanation\">");
+                "<div class=\"useSummary\">\n"
+                + "<table summary=\"Use table, listing methods, and an explanation\">");
 
         // Package use documentation
         checkOutput("pkg1/package-use.html", true,
-                "<table class=\"useSummary\" summary=\"Use table, listing packages, and an explanation\">",
-                "<table class=\"useSummary\" summary=\"Use table, listing classes, and an explanation\">");
+                "<div class=\"useSummary\">\n"
+                + "<table summary=\"Use table, listing packages, and an explanation\">",
+                "<div class=\"useSummary\">\n"
+                + "<table summary=\"Use table, listing classes, and an explanation\">");
 
         checkOutput("pkg2/package-use.html", true,
-                "<table class=\"useSummary\" summary=\"Use table, listing packages, and an explanation\">",
-                "<table class=\"useSummary\" summary=\"Use table, listing classes, and an explanation\">");
+                "<div class=\"useSummary\">\n"
+                + "<table summary=\"Use table, listing packages, and an explanation\">",
+                "<div class=\"useSummary\">\n"
+                + "<table summary=\"Use table, listing classes, and an explanation\">");
 
         // Deprecated
         checkOutput("deprecated-list.html", true,
-                "<table class=\"deprecatedSummary\" summary=\"Fields table, listing fields, "
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table summary=\"Fields table, listing fields, "
                 + "and an explanation\">",
-                "<table class=\"deprecatedSummary\" summary=\"Methods table, listing methods, "
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table summary=\"Methods table, listing methods, "
                 + "and an explanation\">");
 
         // Constant values
         checkOutput("constant-values.html", true,
-                "<table class=\"constantsSummary\" summary=\"Constant Field Values table, listing "
+                "<div class=\"constantsSummary\">\n"
+                + "<table summary=\"Constant Field Values table, listing "
                 + "constant fields, and values\">");
 
         // Overview Summary
         checkOutput("overview-summary.html", true,
-                "<table class=\"overviewSummary\" "
-                + "summary=\"Package Summary table, listing packages, and an explanation\">");
+                "<div class=\"overviewSummary\">\n"
+                + "<table summary=\"Package Summary table, listing packages, and an explanation\">");
     }
 
     /*
@@ -251,15 +276,18 @@
         // Class documentation
         checkOutput("pkg1/C1.html", true,
                 "<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>",
-                "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All "
-                + "Methods</span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">"
-                + "Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">"
-                + "Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t6\" class=\"tableTab\"><span><a href=\"javascript:show(32);\">"
-                + "Deprecated Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "</caption>");
+                "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\""
+                + " aria-selected=\"true\" aria-controls=\"memberSummary_tabpanel\" tabindex=\"0\""
+                + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Methods"
+                + "</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\""
+                + " onkeydown=\"switchTab(event)\" id=\"t2\" class=\"tableTab\" onclick=\"show(2);\">"
+                + "Instance Methods</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\""
+                + " onkeydown=\"switchTab(event)\" id=\"t4\" class=\"tableTab\" onclick=\"show(8);\">"
+                + "Concrete Methods</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\""
+                + " id=\"t6\" class=\"tableTab\" onclick=\"show(32);\">Deprecated Methods</button></div>\n");
 
         checkOutput("pkg2/C2.html", true,
                 "<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>",
--- a/test/langtools/jdk/javadoc/doclet/testHtmlVersion/TestHtmlVersion.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testHtmlVersion/TestHtmlVersion.java	Wed Nov 21 13:53:17 2018 -0500
@@ -24,7 +24,7 @@
 /*
  * @test
  * @bug 8072945 8081854 8141492 8148985 8150188 4649116 8173707 8151743 8169819 8183037 8182765 8196202
- *      8202624 8210047
+ *      8202624 8210047 8184205
  * @summary Test the version of HTML generated by the javadoc tool.
  * @author bpatel
  * @library ../lib
@@ -127,7 +127,8 @@
                 "<a id=\"navbar.top.firstrow\">\n"
                 + "<!--   -->\n"
                 + "</a>",
-                "<table class=\"overviewSummary\">\n"
+                "<div class=\"overviewSummary\">\n"
+                + "<table>\n"
                 + "<caption>",
                 "<header role=\"banner\">\n"
                 + "<nav role=\"navigation\">\n"
@@ -163,7 +164,7 @@
                 "<a id=\"navbar.top.firstrow\">\n"
                 + "<!--   -->\n"
                 + "</a>",
-                "<table class=\"typeSummary\">",
+                "<div class=\"typeSummary\">\n<table>",
                 "<header role=\"banner\">\n"
                 + "<nav role=\"navigation\">\n"
                 + "<div class=\"fixedNav\">\n"
@@ -182,7 +183,7 @@
                 "<div class=\"contentContainer\">\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\">\n"
-                + "<table class=\"typeSummary\">\n"
+                + "<div class=\"typeSummary\">\n<table>\n"
                 + "<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>");
 
         // Test for package-tree page
@@ -218,7 +219,7 @@
                 "<a id=\"navbar.top.firstrow\">\n"
                 + "<!--   -->\n"
                 + "</a>",
-                "<table class=\"useSummary\">",
+                "<div class=\"useSummary\">\n<table>",
                 "<header role=\"banner\">\n"
                 + "<nav role=\"navigation\">\n"
                 + "<div class=\"fixedNav\">\n"
@@ -236,7 +237,7 @@
                 "<a id=\"navbar.top.firstrow\">\n"
                 + "<!--   -->\n"
                 + "</a>",
-                "<table class=\"constantsSummary\">",
+                "<div class=\"constantsSummary\">\n<table>",
                 "<header role=\"banner\">\n"
                 + "<nav role=\"navigation\">\n"
                 + "<div class=\"fixedNav\">\n"
@@ -258,7 +259,7 @@
                 "<a id=\"navbar.top.firstrow\">\n"
                 + "<!--   -->\n"
                 + "</a>",
-                "<table class=\"deprecatedSummary\">",
+                "<div class=\"deprecatedSummary\">\n<table>",
                 "<header role=\"banner\">\n"
                 + "<nav role=\"navigation\">\n"
                 + "<div class=\"fixedNav\">\n"
@@ -379,21 +380,21 @@
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Nested Class Summary</h3>\n"
-                + "<table class=\"memberSummary\">",
+                + "<div class=\"memberSummary\">\n<table>",
                 "<section role=\"region\">\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a id=\"field.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Field Summary</h3>\n"
-                + "<table class=\"memberSummary\">",
+                + "<div class=\"memberSummary\">\n<table>",
                 "<section role=\"region\">\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a id=\"constructor.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Constructor Summary</h3>\n"
-                + "<table class=\"memberSummary\">",
+                + "<div class=\"memberSummary\">\n<table>",
                 "<section role=\"region\">\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a id=\"method.summary\">\n"
@@ -441,14 +442,16 @@
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Enum Constant Summary</h3>\n"
-                + "<table class=\"memberSummary\">",
+                + "<div class=\"memberSummary\">\n",
+                "<table aria-labelledby=\"t0\">\n",
                 "<section role=\"region\">\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a id=\"method.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Method Summary</h3>\n"
-                + "<table class=\"memberSummary\">",
+                + "<div class=\"memberSummary\">\n",
+                "<table aria-labelledby=\"t0\">",
                 "<section role=\"region\">\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a id=\"enum.constant.detail\">\n"
@@ -484,7 +487,8 @@
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Method Summary</h3>\n"
-                + "<table class=\"memberSummary\">",
+                + "<div class=\"memberSummary\">\n",
+                "<table aria-labelledby=\"t0\">\n",
                 "<section role=\"region\">\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a id=\"method.detail\">\n"
@@ -572,14 +576,14 @@
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Required Element Summary</h3>\n"
-                + "<table class=\"memberSummary\">",
+                + "<div class=\"memberSummary\">\n<table>",
                 "<section role=\"region\">\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a id=\"annotation.type.optional.element.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Optional Element Summary</h3>\n"
-                + "<table class=\"memberSummary\">",
+                + "<div class=\"memberSummary\">\n<table>",
                 "<section role=\"region\">\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a id=\"annotation.type.element.detail\">\n"
@@ -603,12 +607,12 @@
                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
                 "<main role=\"main\">\n"
                 + "<div class=\"header\">",
-                "<table class=\"useSummary\">",
+                "<div class=\"useSummary\">\n<table>",
                 "<section role=\"region\"><a id=\"pkg\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Uses of <a href=\"../RegClass.html\" title=\"class in pkg1\">RegClass</a> in <a href=\"../../pkg/package-summary.html\">pkg</a></h3>\n"
-                + "<table class=\"useSummary\">",
+                + "<div class=\"useSummary\">\n<table>",
                 "<footer role=\"contentinfo\">\n"
                 + "<nav role=\"navigation\">\n"
                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
@@ -657,7 +661,7 @@
                 "<a name=\"navbar.top.firstrow\">\n"
                 + "<!--   -->\n"
                 + "</a>",
-                "<table class=\"overviewSummary\" summary=\"Package Summary table, listing packages, and an explanation\">\n"
+                "<table summary=\"Package Summary table, listing packages, and an explanation\">\n"
                 + "<caption>",
                 "</noscript>\n"
                 + "<div class=\"fixedNav\">\n"
@@ -679,12 +683,12 @@
                 + "</a>",
                 "<section role=\"region\">\n"
                 + "<h2 title=\"Package pkg Description\">Package pkg Description</h2>\n",
-                "<table class=\"typeSummary\" summary=\"Interface Summary table, listing interfaces, and an explanation\">",
-                "<table class=\"typeSummary\" summary=\"Class Summary table, listing classes, and an explanation\">",
-                "<table class=\"typeSummary\" summary=\"Enum Summary table, listing enums, and an explanation\">",
-                "<table class=\"typeSummary\" summary=\"Exception Summary table, listing exceptions, and an explanation\">",
-                "<table class=\"typeSummary\" summary=\"Error Summary table, listing errors, and an explanation\">",
-                "<table class=\"typeSummary\" summary=\"Annotation Types Summary table, listing annotation types, and an explanation\">");
+                "<div class=\"typeSummary\">\n<table summary=\"Interface Summary table, listing interfaces, and an explanation\">",
+                "<div class=\"typeSummary\">\n<table summary=\"Class Summary table, listing classes, and an explanation\">",
+                "<div class=\"typeSummary\">\n<table summary=\"Enum Summary table, listing enums, and an explanation\">",
+                "<div class=\"typeSummary\">\n<table summary=\"Exception Summary table, listing exceptions, and an explanation\">",
+                "<div class=\"typeSummary\">\n<table summary=\"Error Summary table, listing errors, and an explanation\">",
+                "<div class=\"typeSummary\">\n<table summary=\"Annotation Types Summary table, listing annotation types, and an explanation\">");
 
         // Negated test for package-tree page
         checkOutput("pkg/package-tree.html", false,
@@ -701,7 +705,8 @@
                 "<a name=\"navbar.top.firstrow\">\n"
                 + "<!--   -->\n"
                 + "</a>",
-                "<table class=\"useSummary\" summary=\"Use table, listing packages, and an explanation\">");
+                "<div class=\"useSummary\">\n"
+                + "<table summary=\"Use table, listing packages, and an explanation\">");
 
         // Negated test for constant-values page
         checkOutput("constant-values.html", false,
@@ -718,7 +723,8 @@
                 + "//-->\n"
                 + "</script>\n"
                 + "<div class=\"header\">",
-                "<table class=\"constantsSummary\" summary=\"Constant Field Values table, listing constant fields, and values\">");
+                "<div class=\"constantsSummary\">\n"
+                + "<table summary=\"Constant Field Values table, listing constant fields, and values\">");
 
         // Negated test for deprecated-list page
         checkOutput("deprecated-list.html", false,
@@ -737,16 +743,16 @@
                 + "<div class=\"header\">\n"
                 + "<h1 title=\"Deprecated API\" class=\"title\">Deprecated API</h1>\n"
                 + "<h2 title=\"Contents\">Contents</h2>",
-                "<table class=\"deprecatedSummary\" summary=\"Classes table, listing classes, and an explanation\">",
-                "<table class=\"deprecatedSummary\" summary=\"Enums table, listing enums, and an explanation\">",
-                "<table class=\"deprecatedSummary\" summary=\"Exceptions table, listing exceptions, and an explanation\">",
-                "<table class=\"deprecatedSummary\" summary=\"Errors table, listing errors, and an explanation\">",
-                "<table class=\"deprecatedSummary\" summary=\"Annotation Types table, listing annotation types, and an explanation\">",
-                "<table class=\"deprecatedSummary\" summary=\"Fields table, listing fields, and an explanation\">",
-                "<table class=\"deprecatedSummary\" summary=\"Methods table, listing methods, and an explanation\">",
-                "<table class=\"deprecatedSummary\" summary=\"Constructors table, listing constructors, and an explanation\">",
-                "<table class=\"deprecatedSummary\" summary=\"Enum Constants table, listing enum constants, and an explanation\">",
-                "<table class=\"deprecatedSummary\" summary=\"Annotation Type Elements table, listing annotation type elements, and an explanation\">");
+                "<div class=\"deprecatedSummary\">\n<table summary=\"Classes table, listing classes, and an explanation\">",
+                "<div class=\"deprecatedSummary\">\n<table summary=\"Enums table, listing enums, and an explanation\">",
+                "<div class=\"deprecatedSummary\">\n<table summary=\"Exceptions table, listing exceptions, and an explanation\">",
+                "<div class=\"deprecatedSummary\">\n<table summary=\"Errors table, listing errors, and an explanation\">",
+                "<div class=\"deprecatedSummary\">\n<table summary=\"Annotation Types table, listing annotation types, and an explanation\">",
+                "<div class=\"deprecatedSummary\">\n<table summary=\"Fields table, listing fields, and an explanation\">",
+                "<div class=\"deprecatedSummary\">\n<table summary=\"Methods table, listing methods, and an explanation\">",
+                "<div class=\"deprecatedSummary\">\n<table summary=\"Constructors table, listing constructors, and an explanation\">",
+                "<div class=\"deprecatedSummary\">\n<table summary=\"Enum Constants table, listing enum constants, and an explanation\">",
+                "<div class=\"deprecatedSummary\">\n<table summary=\"Annotation Type Elements table, listing annotation type elements, and an explanation\">");
 
         // Negated test for serialized-form page
         checkOutput("serialized-form.html", false,
@@ -848,28 +854,32 @@
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Nested Class Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Nested Class Summary table, listing nested classes, and an explanation\">",
+                + "<div class=\"memberSummary\">\n"
+                + "<table summary=\"Nested Class Summary table, listing nested classes, and an explanation\">",
                 "<!-- =========== FIELD SUMMARY =========== -->\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a name=\"field.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Field Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Field Summary table, listing fields, and an explanation\">",
+                + "<div class=\"memberSummary\">\n"
+                + "<table summary=\"Field Summary table, listing fields, and an explanation\">",
                 "<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a name=\"constructor.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Constructor Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Constructor Summary table, listing constructors, and an explanation\">",
+                + "<div class=\"memberSummary\">\n"
+                + "<table summary=\"Constructor Summary table, listing constructors, and an explanation\">",
                 "<!-- ========== METHOD SUMMARY =========== -->\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a name=\"method.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Method Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Method Summary table, listing methods, and an explanation\">",
+                + "<div class=\"memberSummary\">\n"
+                + "<table summary=\"Method Summary table, listing methods, and an explanation\">",
                 "<!-- ============ FIELD DETAIL =========== -->\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a name=\"field.detail\">\n"
@@ -904,14 +914,16 @@
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Enum Constant Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Enum Constant Summary table, listing enum constants, and an explanation\">",
+                + "<div class=\"memberSummary\">\n"
+                + "<table summary=\"Enum Constant Summary table, listing enum constants, and an explanation\">",
                 "<!-- ========== METHOD SUMMARY =========== -->\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a name=\"method.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Method Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Method Summary table, listing methods, and an explanation\">",
+                + "<div class=\"memberSummary\">\n"
+                + "<table summary=\"Method Summary table, listing methods, and an explanation\">",
                 "<!-- ============ ENUM CONSTANT DETAIL =========== -->\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a name=\"enum.constant.detail\">\n"
@@ -940,7 +952,8 @@
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Method Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Method Summary table, listing methods, and an explanation\">",
+                + "<div class=\"memberSummary\">\n"
+                + "<table summary=\"Method Summary table, listing methods, and an explanation\">",
                 "<!-- ============ METHOD DETAIL ========== -->\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a name=\"method.detail\">\n"
@@ -1007,14 +1020,16 @@
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Required Element Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Required Element Summary table, listing required elements, and an explanation\">",
+                + "<div class=\"memberSummary\">\n"
+                + "<table summary=\"Required Element Summary table, listing required elements, and an explanation\">",
                 "<!-- =========== ANNOTATION TYPE OPTIONAL MEMBER SUMMARY =========== -->\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a name=\"annotation.type.optional.element.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Optional Element Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Optional Element Summary table, listing optional elements, and an explanation\">",
+                + "<div class=\"memberSummary\">\n"
+                + "<table summary=\"Optional Element Summary table, listing optional elements, and an explanation\">",
                 "<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== -->\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a name=\"annotation.type.element.detail\">\n"
@@ -1037,12 +1052,13 @@
                 + "//-->\n"
                 + "</script>\n"
                 + "<div class=\"header\">",
-                "<table class=\"useSummary\" summary=\"Use table, listing packages, and an explanation\">",
+                "<div class=\"useSummary\">\n"
+                + "<table summary=\"Use table, listing packages, and an explanation\">",
                 "<li class=\"blockList\"><a name=\"pkg\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Uses of <a href=\"../RegClass.html\" title=\"class in pkg1\">RegClass</a> in <a href=\"../../pkg/package-summary.html\">pkg</a></h3>\n"
-                + "<table class=\"useSummary\" summary=\"Use table, listing fields, and an explanation\">");
+                + "<div class=\"useSummary\">\n<table summary=\"Use table, listing fields, and an explanation\">");
 
         // Negated test for main index page
         checkOutput("index.html", false,
@@ -1082,7 +1098,8 @@
                 "<a name=\"navbar.top.firstrow\">\n"
                 + "<!--   -->\n"
                 + "</a>",
-                "<table class=\"overviewSummary\" summary=\"Package Summary table, listing packages, and an explanation\">\n"
+                "<div class=\"overviewSummary\">\n"
+                + "<table summary=\"Package Summary table, listing packages, and an explanation\">\n"
                 + "<caption>",
                 "</noscript>\n"
                 + "<div class=\"fixedNav\">\n"
@@ -1106,18 +1123,19 @@
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<div class=\"block\">Test package.</div>",
-                "<table class=\"typeSummary\" summary=\"Interface Summary table, listing interfaces, and an explanation\">",
-                "<table class=\"typeSummary\" summary=\"Class Summary table, listing classes, and an explanation\">",
-                "<table class=\"typeSummary\" summary=\"Enum Summary table, listing enums, and an explanation\">",
-                "<table class=\"typeSummary\" summary=\"Exception Summary table, listing exceptions, and an explanation\">",
-                "<table class=\"typeSummary\" summary=\"Error Summary table, listing errors, and an explanation\">",
-                "<table class=\"typeSummary\" summary=\"Annotation Types Summary table, listing annotation types, and an explanation\">");
+                "<div class=\"typeSummary\">\n<table summary=\"Interface Summary table, listing interfaces, and an explanation\">",
+                "<div class=\"typeSummary\">\n<table summary=\"Class Summary table, listing classes, and an explanation\">",
+                "<div class=\"typeSummary\">\n<table summary=\"Enum Summary table, listing enums, and an explanation\">",
+                "<div class=\"typeSummary\">\n<table summary=\"Exception Summary table, listing exceptions, and an explanation\">",
+                "<div class=\"typeSummary\">\n<table summary=\"Error Summary table, listing errors, and an explanation\">",
+                "<div class=\"typeSummary\">\n<table summary=\"Annotation Types Summary table, listing annotation types, and an explanation\">");
         // No Package description
         checkOutput("pkg1/package-summary.html", true,
                 "<div class=\"contentContainer\">\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\">\n"
-                + "<table class=\"typeSummary\" summary=\"Class Summary table, listing classes, and an explanation\">\n"
+                + "<div class=\"typeSummary\">\n"
+                + "<table summary=\"Class Summary table, listing classes, and an explanation\">\n"
                 + "<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>");
 
         // Test for package-tree page
@@ -1136,7 +1154,8 @@
                 "<a name=\"navbar.top.firstrow\">\n"
                 + "<!--   -->\n"
                 + "</a>",
-                "<table class=\"useSummary\" summary=\"Use table, listing packages, and an explanation\">");
+                "<div class=\"useSummary\">\n"
+                + "<table summary=\"Use table, listing packages, and an explanation\">");
 
         // Test for constant-values page
         checkOutput("constant-values.html", true,
@@ -1153,7 +1172,8 @@
                 + "//-->\n"
                 + "</script>\n"
                 + "<div class=\"header\">",
-                "<table class=\"constantsSummary\" summary=\"Constant Field Values table, listing constant fields, and values\">");
+                "<div class=\"constantsSummary\">\n"
+                + "<table summary=\"Constant Field Values table, listing constant fields, and values\">");
 
         // Test for deprecated-list page
         checkOutput("deprecated-list.html", true,
@@ -1172,16 +1192,26 @@
                 + "<div class=\"header\">\n"
                 + "<h1 title=\"Deprecated API\" class=\"title\">Deprecated API</h1>\n"
                 + "<h2 title=\"Contents\">Contents</h2>",
-                "<table class=\"deprecatedSummary\" summary=\"Classes table, listing classes, and an explanation\">",
-                "<table class=\"deprecatedSummary\" summary=\"Enums table, listing enums, and an explanation\">",
-                "<table class=\"deprecatedSummary\" summary=\"Exceptions table, listing exceptions, and an explanation\">",
-                "<table class=\"deprecatedSummary\" summary=\"Errors table, listing errors, and an explanation\">",
-                "<table class=\"deprecatedSummary\" summary=\"Annotation Types table, listing annotation types, and an explanation\">",
-                "<table class=\"deprecatedSummary\" summary=\"Fields table, listing fields, and an explanation\">",
-                "<table class=\"deprecatedSummary\" summary=\"Methods table, listing methods, and an explanation\">",
-                "<table class=\"deprecatedSummary\" summary=\"Constructors table, listing constructors, and an explanation\">",
-                "<table class=\"deprecatedSummary\" summary=\"Enum Constants table, listing enum constants, and an explanation\">",
-                "<table class=\"deprecatedSummary\" summary=\"Annotation Type Elements table, listing annotation type elements, and an explanation\">");
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table summary=\"Classes table, listing classes, and an explanation\">",
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table summary=\"Enums table, listing enums, and an explanation\">",
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table summary=\"Exceptions table, listing exceptions, and an explanation\">",
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table summary=\"Errors table, listing errors, and an explanation\">",
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table summary=\"Annotation Types table, listing annotation types, and an explanation\">",
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table summary=\"Fields table, listing fields, and an explanation\">",
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table summary=\"Methods table, listing methods, and an explanation\">",
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table summary=\"Constructors table, listing constructors, and an explanation\">",
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table summary=\"Enum Constants table, listing enum constants, and an explanation\">",
+                "<div class=\"deprecatedSummary\">\n"
+                + "<table summary=\"Annotation Type Elements table, listing annotation type elements, and an explanation\">");
 
         // Test for serialized-form page
         checkOutput("serialized-form.html", true,
@@ -1286,28 +1316,30 @@
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Nested Class Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Nested Class Summary table, listing nested classes, and an explanation\">",
+                + "<div class=\"memberSummary\">",
+                "<table summary=\"Nested Class Summary table, listing nested classes, and an explanation\">",
                 "<!-- =========== FIELD SUMMARY =========== -->\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a name=\"field.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Field Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Field Summary table, listing fields, and an explanation\">",
+                + "<div class=\"memberSummary\">\n<table summary=\"Field Summary table, listing fields, and an explanation\">",
                 "<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a name=\"constructor.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Constructor Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Constructor Summary table, listing constructors, and an explanation\">",
+                + "<div class=\"memberSummary\">\n<table summary=\"Constructor Summary table, listing constructors, and an explanation\">",
                 "<!-- ========== METHOD SUMMARY =========== -->\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a name=\"method.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Method Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Method Summary table, listing methods, and an explanation\">",
+                + "<div class=\"memberSummary\">\n",
+                "<table summary=\"Method Summary table, listing methods, and an explanation\" aria-labelledby=\"t0\">",
                 "<!-- ============ FIELD DETAIL =========== -->\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a name=\"field.detail\">\n"
@@ -1342,14 +1374,16 @@
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Enum Constant Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Enum Constant Summary table, listing enum constants, and an explanation\">",
+                + "<div class=\"memberSummary\">",
+                "<table summary=\"Enum Constant Summary table, listing enum constants, and an explanation\"",
                 "<!-- ========== METHOD SUMMARY =========== -->\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a name=\"method.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Method Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Method Summary table, listing methods, and an explanation\">",
+                + "<div class=\"memberSummary\">\n",
+                "<table summary=\"Method Summary table, listing methods, and an explanation\" aria-labelledby=\"t0\">",
                 "<!-- ============ ENUM CONSTANT DETAIL =========== -->\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a name=\"enum.constant.detail\">\n"
@@ -1378,7 +1412,9 @@
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Method Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Method Summary table, listing methods, and an explanation\">",
+                + "<div class=\"memberSummary\">\n",
+                "<table summary=\"Method Summary table, listing methods, and an explanation\""
+                + " aria-labelledby=\"t0\">",
                 "<!-- ============ METHOD DETAIL ========== -->\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a name=\"method.detail\">\n"
@@ -1445,14 +1481,14 @@
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Required Element Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Required Element Summary table, listing required elements, and an explanation\">",
+                + "<div class=\"memberSummary\">\n<table summary=\"Required Element Summary table, listing required elements, and an explanation\">",
                 "<!-- =========== ANNOTATION TYPE OPTIONAL MEMBER SUMMARY =========== -->\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a name=\"annotation.type.optional.element.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Optional Element Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Optional Element Summary table, listing optional elements, and an explanation\">",
+                + "<div class=\"memberSummary\">\n<table summary=\"Optional Element Summary table, listing optional elements, and an explanation\">",
                 "<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== -->\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a name=\"annotation.type.element.detail\">\n"
@@ -1475,12 +1511,12 @@
                 + "//-->\n"
                 + "</script>\n"
                 + "<div class=\"header\">",
-                "<table class=\"useSummary\" summary=\"Use table, listing packages, and an explanation\">",
+                "<div class=\"useSummary\">\n<table summary=\"Use table, listing packages, and an explanation\">",
                 "<li class=\"blockList\"><a name=\"pkg\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Uses of <a href=\"../RegClass.html\" title=\"class in pkg1\">RegClass</a> in <a href=\"../../pkg/package-summary.html\">pkg</a></h3>\n"
-                + "<table class=\"useSummary\" summary=\"Use table, listing fields, and an explanation\">");
+                + "<div class=\"useSummary\">\n<table summary=\"Use table, listing fields, and an explanation\">");
 
         // Test for main index page
         checkOutput("index.html", true,
@@ -1525,7 +1561,7 @@
                 "<a id=\"navbar.top.firstrow\">\n"
                 + "<!--   -->\n"
                 + "</a>",
-                "<table class=\"overviewSummary\">\n"
+                "<div class=\"overviewSummary\">\n"
                 + "<caption>",
                 "<header role=\"banner\">\n"
                 + "<nav role=\"navigation\">\n"
@@ -1557,7 +1593,7 @@
                 "<a id=\"navbar.top.firstrow\">\n"
                 + "<!--   -->\n"
                 + "</a>",
-                "<table class=\"typeSummary\">",
+                "<div class=\"typeSummary\">\n<table\">",
                 "<header role=\"banner\">\n"
                 + "<nav role=\"navigation\">\n"
                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
@@ -1599,7 +1635,7 @@
                 "<a id=\"navbar.top.firstrow\">\n"
                 + "<!--   -->\n"
                 + "</a>",
-                "<table class=\"useSummary\">",
+                "<div class=\"useSummary\">\n<table>",
                 "<header role=\"banner\">\n"
                 + "<nav role=\"navigation\">\n"
                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
@@ -1616,7 +1652,7 @@
                 "<a id=\"navbar.top.firstrow\">\n"
                 + "<!--   -->\n"
                 + "</a>",
-                "<table class=\"constantsSummary\">",
+                "<div class=\"constantsSummary\">\n<table>",
                 "<header role=\"banner\">\n"
                 + "<nav role=\"navigation\">\n"
                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
@@ -1637,7 +1673,7 @@
                 "<a id=\"navbar.top.firstrow\">\n"
                 + "<!--   -->\n"
                 + "</a>",
-                "<table class=\"deprecatedSummary\">",
+                "<div class=\"deprecatedSummary\">\n<table>",
                 "<header role=\"banner\">\n"
                 + "<nav role=\"navigation\">\n"
                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
@@ -1751,21 +1787,21 @@
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Nested Class Summary</h3>\n"
-                + "<table class=\"memberSummary\">",
+                + "<div class=\"memberSummary\">",
                 "<section role=\"region\">\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a id=\"field.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Field Summary</h3>\n"
-                + "<table class=\"memberSummary\">",
+                + "<div class=\"memberSummary\">",
                 "<section role=\"region\">\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a id=\"constructor.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Constructor Summary</h3>\n"
-                + "<table class=\"memberSummary\">",
+                + "<div class=\"memberSummary\">",
                 "<section role=\"region\">\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a id=\"method.summary\">\n"
@@ -1812,14 +1848,14 @@
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Enum Constant Summary</h3>\n"
-                + "<table class=\"memberSummary\">",
+                + "<div class=\"memberSummary\">",
                 "<section role=\"region\">\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a id=\"method.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Method Summary</h3>\n"
-                + "<table class=\"memberSummary\">",
+                + "<div class=\"memberSummary\">",
                 "<section role=\"region\">\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a id=\"enum.constant.detail\">\n"
@@ -1854,7 +1890,7 @@
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Method Summary</h3>\n"
-                + "<table class=\"memberSummary\">",
+                + "<div class=\"memberSummary\">",
                 "<section role=\"region\">\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a id=\"method.detail\">\n"
@@ -1939,14 +1975,14 @@
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Required Element Summary</h3>\n"
-                + "<table class=\"memberSummary\">",
+                + "<div class=\"memberSummary\">",
                 "<section role=\"region\">\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a id=\"annotation.type.optional.element.summary\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Optional Element Summary</h3>\n"
-                + "<table class=\"memberSummary\">",
+                + "<div class=\"memberSummary\">",
                 "<section role=\"region\">\n"
                 + "<ul class=\"blockList\">\n"
                 + "<li class=\"blockList\"><a id=\"annotation.type.element.detail\">\n"
@@ -1969,13 +2005,13 @@
                 + "<!-- ========= START OF TOP NAVBAR ======= -->",
                 "<main role=\"main\">\n"
                 + "<div class=\"header\">",
-                "<table class=\"useSummary\">",
+                "<div class=\"useSummary\">\n<table>\n",
                 "<section role=\"region\"><a id=\"pkg\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
                 + "<h3>Uses of <a href=\"../RegClass.html\" title=\"class in pkg1\">RegClass</a> in <a href=\"../../pkg/package-summary.html\">pkg</a></h3>\n"
                 + "\n"
-                + "<table class=\"useSummary\">",
+                + "<div class=\"useSummary\">",
                 "<footer role=\"contentinfo\">\n"
                 + "<nav role=\"navigation\">\n"
                 + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
--- a/test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java	Wed Nov 21 13:53:17 2018 -0500
@@ -25,7 +25,7 @@
  * @test
  * @bug 7112427 8012295 8025633 8026567 8061305 8081854 8150130 8162363
  *      8167967 8172528 8175200 8178830 8182257 8186332 8182765 8025091
- *      8203791
+ *      8203791 8184205
  * @summary Test of the JavaFX doclet features.
  * @author jvalenta
  * @library ../lib
@@ -136,7 +136,7 @@
                 + "<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n"
                 + "<dd>JavaFX 8.0</dd>",
                 "<h3>Property Summary</h3>\n"
-                + "<table class=\"memberSummary\">\n"
+                + "<div class=\"memberSummary\">\n<table>\n"
                 + "<caption><span>Properties</span><span class=\"tabEnd\">&nbsp;</span></caption>",
                 "<tr class=\"altColor\">\n"
                 + "<td class=\"colFirst\"><code><a href=\"C.BooleanProperty.html\" title=\"class in pkg1\">C.BooleanProperty</a></code></td>\n",
@@ -146,12 +146,16 @@
         checkOutput("pkg1/C.html", false,
                 "A()",
                 "<h3>Property Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Property Summary table, listing properties, and an explanation\">\n"
-                + "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span>"
-                + "</span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a>"
-                + "</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span>"
-                + "<a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "</caption>",
+                + "<div class=\"memberSummary\">\n"
+                + "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\""
+                + " aria-selected=\"true\" aria-controls=\"memberSummary_tabpanel\" tabindex=\"0\""
+                + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Methods"
+                + "</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\""
+                + " id=\"t2\" class=\"tableTab\" onclick=\"show(2);\">Instance Methods</button>"
+                + "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"memberSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t4\" class=\"tableTab\""
+                + " onclick=\"show(8);\">Concrete Methods</button></div>",
                 "<tr id=\"i0\" class=\"altColor\">\n"
                 + "<td class=\"colFirst\"><code><a href=\"C.BooleanProperty.html\" title=\"class in pkg1\">C.BooleanProperty</a></code></td>\n",
                 "<tr id=\"i1\" class=\"rowColor\">\n"
@@ -190,7 +194,7 @@
                 + "<a href=\"#setTestMethodProperty--\">"
                 + "setTestMethodProperty</a></span>()</code></th>",
                 "<h3>Property Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Property Summary table, listing properties, and an explanation\">\n"
+                + "<div class=\"memberSummary\">\n<table summary=\"Property Summary table, listing properties, and an explanation\">\n"
                 + "<caption><span>Properties</span><span class=\"tabEnd\">&nbsp;</span></caption>");
     }
 
@@ -240,17 +244,21 @@
                 + "</li>\n"
                 + "</ul>",
                 "<h3>Property Summary</h3>\n"
-                + "<table class=\"memberSummary\">\n"
+                + "<div class=\"memberSummary\">\n<table>\n"
                 + "<caption><span>Properties</span><span class=\"tabEnd\">&nbsp;</span></caption>");
 
         checkOutput("pkg2/Test.html", false,
                 "<h3>Property Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Property Summary table, listing properties, and an explanation\">\n"
-                + "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\">&nbsp;</span>"
-                + "</span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a>"
-                + "</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span>"
-                + "<a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "</caption>");
+                + "<div class=\"memberSummary\">\n"
+                + "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\""
+                + " aria-selected=\"true\" aria-controls=\"memberSummary_tabpanel\" tabindex=\"0\""
+                + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Methods"
+                + "</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\""
+                + " id=\"t2\" class=\"tableTab\" onclick=\"show(2);\">Instance Methods</button>"
+                + "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"memberSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t4\" class=\"tableTab\""
+                + " onclick=\"show(8);\">Concrete Methods</button></div>");
     }
 
     @Test
@@ -296,7 +304,7 @@
                 + "</li>\n"
                 + "</ul>",
                 "<h3>Property Summary</h3>\n"
-                + "<table class=\"memberSummary\" summary=\"Property Summary table, listing properties, and an explanation\">\n"
+                + "<div class=\"memberSummary\">\n<table summary=\"Property Summary table, listing properties, and an explanation\">\n"
                 + "<caption><span>Properties</span><span class=\"tabEnd\">&nbsp;</span></caption>");
     }
 
--- a/test/langtools/jdk/javadoc/doclet/testLambdaFeature/TestLambdaFeature.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testLambdaFeature/TestLambdaFeature.java	Wed Nov 21 13:53:17 2018 -0500
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug      8004893 8022738 8029143 8175200 8186332
+ * @bug      8004893 8022738 8029143 8175200 8186332 8184205
  * @summary  Make sure that the lambda feature changes work fine in
  *           javadoc.
  * @author   bpatel
@@ -56,16 +56,17 @@
         checkOutput("pkg/A.html", true,
                 "<td class=\"colFirst\"><code>default void</code></td>",
                 "<pre class=\"methodSignature\">default&nbsp;void&nbsp;defaultMethod()</pre>",
-                "<caption><span id=\"t0\" class=\"activeTableTab\"><span>"
-                + "All Methods</span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t2\" class=\"tableTab\"><span>"
-                + "<a href=\"javascript:show(2);\">Instance Methods</a></span>"
-                + "<span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" "
-                + "class=\"tableTab\"><span><a href=\"javascript:show(4);\">"
-                + "Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span>"
-                + "</span><span id=\"t5\" class=\"tableTab\"><span>"
-                + "<a href=\"javascript:show(16);\">Default Methods</a></span>"
-                + "<span class=\"tabEnd\">&nbsp;</span></span></caption>",
+                "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\""
+                + " aria-selected=\"true\" aria-controls=\"memberSummary_tabpanel\" tabindex=\"0\""
+                + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Methods"
+                + "</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\""
+                + " id=\"t2\" class=\"tableTab\" onclick=\"show(2);\">Instance Methods</button>"
+                + "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"memberSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t3\" class=\"tableTab\""
+                + " onclick=\"show(4);\">Abstract Methods</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\""
+                + " id=\"t5\" class=\"tableTab\" onclick=\"show(16);\">Default Methods</button></div>",
                 "<dl>\n"
                 + "<dt>Functional Interface:</dt>\n"
                 + "<dd>This is a functional interface and can therefore be used as "
--- a/test/langtools/jdk/javadoc/doclet/testMethodTypes/TestMethodTypes.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testMethodTypes/TestMethodTypes.java	Wed Nov 21 13:53:17 2018 -0500
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug      8002304 8024096 8193671 8196201 8203791
+ * @bug      8002304 8024096 8193671 8196201 8203791 8184205
  * @summary  Test for various method type tabs in the method summary table
  * @author   Bhavesh Patel
  * @library  ../lib
@@ -48,46 +48,56 @@
 
         checkOutput("pkg1/A.html", true,
                 "var data = {",
-                "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All "
-                + "Methods</span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">"
-                + "Static Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">"
-                + "Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">"
-                + "Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t6\" class=\"tableTab\"><span><a href=\"javascript:show(32);\">"
-                + "Deprecated Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "</caption>",
+                "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\""
+                + " aria-selected=\"true\" aria-controls=\"memberSummary_tabpanel\" tabindex=\"0\""
+                + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Methods</button>"
+                + "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"memberSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t1\" class=\"tableTab\""
+                + " onclick=\"show(1);\">Static Methods</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\""
+                + " id=\"t2\" class=\"tableTab\" onclick=\"show(2);\">Instance Methods</button>"
+                + "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"memberSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t4\" class=\"tableTab\""
+                + " onclick=\"show(8);\">Concrete Methods</button><button role=\"tab\""
+                + " aria-selected=\"false\" aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\""
+                + " onkeydown=\"switchTab(event)\" id=\"t6\" class=\"tableTab\" onclick=\"show(32);\">"
+                + "Deprecated Methods</button></div>",
                 "<tr class=\"altColor\" id=\"i0\">");
 
         checkOutput("pkg1/B.html", true,
                 "var data = {\"i0\":6,\"i1\":18,\"i2\":18,\"i3\":1,\"i4\":1,"
                 + "\"i5\":6,\"i6\":6,\"i7\":6,\"i8\":6};\n",
-                "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span>"
-                + "<span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\">"
-                + "<span><a href=\"javascript:show(1);\">Static Methods</a></span>"
-                + "<span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\">"
-                + "<span><a href=\"javascript:show(2);\">Instance Methods</a></span>"
-                + "<span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\">"
-                + "<span><a href=\"javascript:show(4);\">Abstract Methods</a></span>"
-                + "<span class=\"tabEnd\">&nbsp;</span></span><span id=\"t5\" class=\"tableTab\">"
-                + "<span><a href=\"javascript:show(16);\">Default Methods</a></span>"
-                + "<span class=\"tabEnd\">&nbsp;</span></span></caption>\n");
+                "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\""
+                + " aria-selected=\"true\" aria-controls=\"memberSummary_tabpanel\" tabindex=\"0\""
+                + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Methods"
+                + "</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\""
+                + " onkeydown=\"switchTab(event)\" id=\"t1\" class=\"tableTab\" onclick=\"show(1);\">"
+                + "Static Methods</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\""
+                + " id=\"t2\" class=\"tableTab\" onclick=\"show(2);\">Instance Methods</button>"
+                + "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"memberSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t3\" class=\"tableTab\""
+                + " onclick=\"show(4);\">Abstract Methods</button><button role=\"tab\""
+                + " aria-selected=\"false\" aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\""
+                + " onkeydown=\"switchTab(event)\" id=\"t5\" class=\"tableTab\" onclick=\"show(16);\">"
+                + "Default Methods</button></div>");
 
         checkOutput("pkg1/D.html", true,
                 "var data = {",
-                "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All "
-                + "Methods</span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">"
-                + "Instance Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">"
-                + "Abstract Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">"
-                + "Concrete Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t6\" class=\"tableTab\"><span><a href=\"javascript:show(32);\">"
-                + "Deprecated Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "</caption>",
+                "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\""
+                + " aria-selected=\"true\" aria-controls=\"memberSummary_tabpanel\" tabindex=\"0\""
+                + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Methods</button>"
+                + "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"memberSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t2\" class=\"tableTab\""
+                + " onclick=\"show(2);\">Instance Methods</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\""
+                + " id=\"t3\" class=\"tableTab\" onclick=\"show(4);\">Abstract Methods</button>"
+                + "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"memberSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t4\" class=\"tableTab\""
+                + " onclick=\"show(8);\">Concrete Methods</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"memberSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\""
+                + " id=\"t6\" class=\"tableTab\" onclick=\"show(32);\">Deprecated Methods</button></div>",
                 "<tr class=\"altColor\" id=\"i0\">");
 
         checkOutput("pkg1/A.html", false,
--- a/test/langtools/jdk/javadoc/doclet/testModules/TestIndirectExportsOpens.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testModules/TestIndirectExportsOpens.java	Wed Nov 21 13:53:17 2018 -0500
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 8178339 8182765
+ * @bug 8178339 8182765 8184205
  * @summary Tests indirect exports and opens in the module summary page
  * @modules jdk.javadoc/jdk.javadoc.internal.api
  *          jdk.javadoc/jdk.javadoc.internal.tool
@@ -219,7 +219,8 @@
         }
 
         checkOutput("a/module-summary.html", present,
-                "<table class=\"packagesSummary\">\n"
+                "<div class=\"packagesSummary\">\n"
+                + "<table>\n"
                 + "<caption><span>" + typeString + "</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">From</th>\n"
@@ -231,7 +232,8 @@
                 + "<td class=\"colLast\"><a href=\"../m/pm/package-summary.html\">pm</a></td>\n"
                 + "</tr>\n"
                 + "</tbody>\n"
-                + "</table>\n");
+                + "</table>\n"
+                + "</div>");
     }
 
     void verifyIndirectExports_html4(boolean present) {
@@ -253,7 +255,8 @@
         }
 
         checkOutput("a/module-summary.html", present,
-                "<table class=\"packagesSummary\" summary=\"" + typeString + " table, listing modules, and packages\">\n"
+                "<div class=\"packagesSummary\">\n"
+                + "<table summary=\"" + typeString + " table, listing modules, and packages\">\n"
                 + "<caption><span>" + typeString + "</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">From</th>\n"
@@ -265,6 +268,7 @@
                 + "<td class=\"colLast\"><a href=\"../m/pm/package-summary.html\">pm</a></td>\n"
                 + "</tr>\n"
                 + "</tbody>\n"
-                + "</table>\n");
+                + "</table>\n"
+                + "</div>");
     }
 }
--- a/test/langtools/jdk/javadoc/doclet/testModules/TestModulePackages.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testModules/TestModulePackages.java	Wed Nov 21 13:53:17 2018 -0500
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 8178070 8196201
+ * @bug 8178070 8196201 8184205
  * @summary Test packages table in module summary pages
  * @library /tools/lib ../lib
  * @modules jdk.compiler/com.sun.tools.javac.api
@@ -413,26 +413,30 @@
         if (kinds.length > 1) {
             Set<TabKind> kindSet = Set.of(kinds);
             StringBuilder sb = new StringBuilder();
-            sb.append("<caption>"
-                        + "<span id=\"t0\" class=\"activeTableTab\">"
-                        + "<span>All Packages</span>"
-                        + "<span class=\"tabEnd\">&nbsp;</span></span>");
+            sb.append("<div role=\"tablist\" aria-orientation=\"horizontal\">"
+                        + "<button role=\"tab\" aria-selected=\"true\""
+                        + " aria-controls=\"packagesSummary_tabpanel\" tabindex=\"0\""
+                        + " onkeydown=\"switchTab(event)\""
+                        + " id=\"t0\" class=\"activeTableTab\">All Packages</button>");
             if (kindSet.contains(TabKind.EXPORTS)) {
-                sb.append("<span id=\"t1\" class=\"tableTab\">"
-                        + "<span><a href=\"javascript:show(1);\">Exports</a></span>"
-                        + "<span class=\"tabEnd\">&nbsp;</span></span>");
+                sb.append("<button role=\"tab\" aria-selected=\"false\""
+                        + " aria-controls=\"packagesSummary_tabpanel\" tabindex=\"-1\""
+                        + " onkeydown=\"switchTab(event)\" id=\"t1\" class=\"tableTab\""
+                        + " onclick=\"show(1);\">Exports</button>");
             }
             if (kindSet.contains(TabKind.OPENS)) {
-                sb.append("<span id=\"t2\" class=\"tableTab\">"
-                        + "<span><a href=\"javascript:show(2);\">Opens</a></span>"
-                        + "<span class=\"tabEnd\">&nbsp;</span></span>");
+                sb.append("<button role=\"tab\" aria-selected=\"false\""
+                        + " aria-controls=\"packagesSummary_tabpanel\" tabindex=\"-1\""
+                        + " onkeydown=\"switchTab(event)\" id=\"t2\" class=\"tableTab\""
+                        + " onclick=\"show(2);\">Opens</button>");
             }
             if (kindSet.contains(TabKind.CONCEALED)) {
-                sb.append("<span id=\"t3\" class=\"tableTab\"><span>"
-                        + "<a href=\"javascript:show(4);\">Concealed</a></span>"
-                        + "<span class=\"tabEnd\">&nbsp;</span></span>");
+                sb.append("<button role=\"tab\" aria-selected=\"false\""
+                        + " aria-controls=\"packagesSummary_tabpanel\" tabindex=\"-1\" "
+                        + "onkeydown=\"switchTab(event)\" id=\"t3\" class=\"tableTab\" "
+                        + "onclick=\"show(4);\">Concealed</button>");
             }
-            sb.append("</caption>");
+            sb.append("</div>");
             expect = sb.toString();
         } else {
             TabKind k = kinds[0];
--- a/test/langtools/jdk/javadoc/doclet/testModules/TestModuleServices.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testModules/TestModuleServices.java	Wed Nov 21 13:53:17 2018 -0500
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 8178067 8192007 8182765
+ * @bug 8178067 8192007 8182765 8184205
  * @summary tests the module's services, such as provides and uses
  * @modules jdk.javadoc/jdk.javadoc.internal.api
  *          jdk.javadoc/jdk.javadoc.internal.tool
@@ -195,7 +195,7 @@
                 "<h3>Services</h3>");
 
         checkOutput("m/module-summary.html", true,
-                "<table class=\"usesSummary\">\n" +
+                "<div class=\"usesSummary\">\n<table>\n" +
                 "<caption><span>Uses</span><span class=\"tabEnd\">&nbsp;</span></caption>\n" +
                 "<tr>\n" +
                 "<th class=\"colFirst\" scope=\"col\">Type</th>\n" +
@@ -222,7 +222,8 @@
         checkExit(Exit.OK);
 
         checkOutput("m/module-summary.html", true,
-                "<table class=\"usesSummary\" summary=\"Uses table, listing types, and an explanation\">\n" +
+                "<div class=\"usesSummary\">\n" +
+                "<table summary=\"Uses table, listing types, and an explanation\">\n" +
                 "<caption><span>Uses</span><span class=\"tabEnd\">&nbsp;</span></caption>\n" +
                 "<tr>\n" +
                 "<th class=\"colFirst\" scope=\"col\">Type</th>\n" +
@@ -262,7 +263,7 @@
                 "<h3>Services</h3>");
 
         checkOutput("m/module-summary.html", true,
-                "<table class=\"usesSummary\">\n" +
+                "<div class=\"usesSummary\">\n<table>\n" +
                 "<caption><span>Uses</span><span class=\"tabEnd\">&nbsp;</span></caption>\n" +
                 "<tr>\n" +
                 "<th class=\"colFirst\" scope=\"col\">Type</th>\n" +
@@ -284,7 +285,8 @@
         checkExit(Exit.OK);
 
         checkOutput("m/module-summary.html", true,
-                "<table class=\"usesSummary\" summary=\"Uses table, listing types, and an explanation\">\n" +
+                "<div class=\"usesSummary\">\n" +
+                "<table summary=\"Uses table, listing types, and an explanation\">\n" +
                 "<caption><span>Uses</span><span class=\"tabEnd\">&nbsp;</span></caption>\n" +
                 "<tr>\n" +
                 "<th class=\"colFirst\" scope=\"col\">Type</th>\n" +
@@ -350,7 +352,7 @@
                 "<h3>Services</h3>");
 
         checkOutput("m/module-summary.html", true,
-                "<table class=\"providesSummary\">\n" +
+                "<div class=\"providesSummary\">\n<table>\n" +
                 "<caption><span>Provides</span><span class=\"tabEnd\">&nbsp;</span></caption>\n" +
                 "<tr>\n" +
                 "<th class=\"colFirst\" scope=\"col\">Type</th>\n" +
@@ -377,7 +379,8 @@
         checkExit(Exit.OK);
 
         checkOutput("m/module-summary.html", true,
-                "<table class=\"providesSummary\" summary=\"Provides table, listing types, and an explanation\">\n" +
+                "<div class=\"providesSummary\">\n" +
+                "<table summary=\"Provides table, listing types, and an explanation\">\n" +
                 "<caption><span>Provides</span><span class=\"tabEnd\">&nbsp;</span></caption>\n" +
                 "<tr>\n" +
                 "<th class=\"colFirst\" scope=\"col\">Type</th>\n" +
@@ -420,7 +423,7 @@
                 "<h3>Services</h3>");
 
         checkOutput("m/module-summary.html", true,
-                "<table class=\"providesSummary\">\n" +
+                "<div class=\"providesSummary\">\n<table>\n" +
                 "<caption><span>Provides</span><span class=\"tabEnd\">&nbsp;</span></caption>\n" +
                 "<tr>\n" +
                 "<th class=\"colFirst\" scope=\"col\">Type</th>\n" +
@@ -444,7 +447,8 @@
         checkExit(Exit.OK);
 
         checkOutput("m/module-summary.html", true,
-                "<table class=\"providesSummary\" summary=\"Provides table, listing types, and an explanation\">\n" +
+                "<div class=\"providesSummary\">\n" +
+                "<table summary=\"Provides table, listing types, and an explanation\">\n" +
                 "<caption><span>Provides</span><span class=\"tabEnd\">&nbsp;</span></caption>\n" +
                 "<tr>\n" +
                 "<th class=\"colFirst\" scope=\"col\">Type</th>\n" +
@@ -486,7 +490,7 @@
                 "<h3>Services</h3>");
 
         checkOutput("m/module-summary.html", true,
-                "<table class=\"providesSummary\">\n" +
+                "<div class=\"providesSummary\">\n<table>\n" +
                 "<caption><span>Provides</span><span class=\"tabEnd\">&nbsp;</span></caption>\n" +
                 "<tr>\n" +
                 "<th class=\"colFirst\" scope=\"col\">Type</th>\n" +
@@ -500,7 +504,7 @@
                 "</tr>\n" +
                 "</tbody>\n" +
                 "</table>",
-                "<table class=\"usesSummary\">\n" +
+                "<div class=\"usesSummary\">\n<table>\n" +
                 "<caption><span>Uses</span><span class=\"tabEnd\">&nbsp;</span></caption>\n" +
                 "<tr>\n" +
                 "<th class=\"colFirst\" scope=\"col\">Type</th>\n" +
@@ -524,7 +528,8 @@
         checkExit(Exit.OK);
 
         checkOutput("m/module-summary.html", true,
-                "<table class=\"providesSummary\" summary=\"Provides table, listing types, and an explanation\">\n" +
+                "<div class=\"providesSummary\">\n" +
+                "<table summary=\"Provides table, listing types, and an explanation\">\n" +
                 "<caption><span>Provides</span><span class=\"tabEnd\">&nbsp;</span></caption>\n" +
                 "<tr>\n" +
                 "<th class=\"colFirst\" scope=\"col\">Type</th>\n" +
@@ -538,7 +543,8 @@
                 "</tr>\n" +
                 "</tbody>\n" +
                 "</table>",
-                "<table class=\"usesSummary\" summary=\"Uses table, listing types, and an explanation\">\n" +
+                "<div class=\"usesSummary\">\n" +
+                "<table summary=\"Uses table, listing types, and an explanation\">\n" +
                 "<caption><span>Uses</span><span class=\"tabEnd\">&nbsp;</span></caption>\n" +
                 "<tr>\n" +
                 "<th class=\"colFirst\" scope=\"col\">Type</th>\n" +
--- a/test/langtools/jdk/javadoc/doclet/testModules/TestModules.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testModules/TestModules.java	Wed Nov 21 13:53:17 2018 -0500
@@ -27,6 +27,7 @@
  *      8168766 8168688 8162674 8160196 8175799 8174974 8176778 8177562 8175218
  *      8175823 8166306 8178043 8181622 8183511 8169819 8074407 8183037 8191464
         8164407 8192007 8182765 8196200 8196201 8196202 8196202 8205593 8202462
+        8184205
  * @summary Test modules support in javadoc.
  * @author bpatel
  * @library ../lib
@@ -702,7 +703,8 @@
                 + "<div class=\"block\">The overview summary page header.</div>\n"
                 + "</div>\n"
                 + "<div class=\"contentContainer\">\n"
-                + "<table class=\"overviewSummary\" summary=\"Module Summary table, listing modules, and an explanation\">\n"
+                + "<div class=\"overviewSummary\">\n"
+                + "<table summary=\"Module Summary table, listing modules, and an explanation\">\n"
                 + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>");
         checkOutput("overview-summary.html", false,
                 "</table>\n"
@@ -711,7 +713,8 @@
                 + "<div class=\"block\">The overview summary page header.</div>\n"
                 + "</div>\n"
                 + "<div class=\"contentContainer\">\n"
-                + "<table class=\"overviewSummary\" summary=\"Module Summary table, listing modules, and an explanation\">\n"
+                + "<div class=\"overviewSummary\">\n"
+                + "<table summary=\"Module Summary table, listing modules, and an explanation\">\n"
                 + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>");
     }
 
@@ -761,7 +764,7 @@
                 + "<div class=\"block\">The overview summary page header.</div>\n"
                 + "</div>\n"
                 + "<div class=\"contentContainer\">\n"
-                + "<table class=\"overviewSummary\">\n"
+                + "<div class=\"overviewSummary\">\n<table>\n"
                 + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>");
         checkOutput("overview-summary.html", false,
                 "</table>\n"
@@ -772,7 +775,7 @@
                 + "<div class=\"block\">The overview summary page header.</div>\n"
                 + "</div>\n"
                 + "<div class=\"contentContainer\">\n"
-                + "<table class=\"overviewSummary\">\n"
+                + "<div class=\"overviewSummary\">\n<table>\n"
                 + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>");
     }
 
@@ -856,14 +859,16 @@
 
     void checkOverviewSummaryModules() {
         checkOutput("overview-summary.html", true,
-                "<table class=\"overviewSummary\" summary=\"Module Summary table, listing modules, and an explanation\">\n"
+                "<div class=\"overviewSummary\">\n"
+                + "<table summary=\"Module Summary table, listing modules, and an explanation\">\n"
                 + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Module</th>\n"
                 + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
                 + "</tr>");
         checkOutput("overview-summary.html", false,
-                "<table class=\"overviewSummary\" summary=\"Package Summary table, listing packages, and an explanation\">\n"
+                "<div class=\"overviewSummary\">\n"
+                + "<table summary=\"Package Summary table, listing packages, and an explanation\">\n"
                 + "<caption><span>Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
@@ -873,7 +878,8 @@
 
     void checkOverviewSummaryPackages() {
         checkOutput("overview-summary.html", false,
-                "<table class=\"overviewSummary\" summary=\"Module Summary table, listing modules, and an explanation\">\n"
+                "<div class=\"overviewSummary\">\n"
+                + "<table summary=\"Module Summary table, listing modules, and an explanation\">\n"
                 + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Module</th>\n"
@@ -885,10 +891,12 @@
                 + "<div class=\"block\">The overview summary page header.</div>\n"
                 + "</div>\n"
                 + "<div class=\"contentContainer\">\n"
-                + "<table class=\"overviewSummary\" summary=\"Package Summary table, listing packages, and an explanation\">\n"
+                + "<div class=\"overviewSummary\">\n"
+                + "<table summary=\"Package Summary table, listing packages, and an explanation\">\n"
                 + "<caption><span>Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>");
         checkOutput("overview-summary.html", true,
-                "<table class=\"overviewSummary\" summary=\"Package Summary table, listing packages, and an explanation\">\n"
+                "<div class=\"overviewSummary\">\n"
+                + "<table summary=\"Package Summary table, listing packages, and an explanation\">\n"
                 + "<caption><span>Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
@@ -899,20 +907,23 @@
                 + "<div class=\"block\">The overview summary page header.</div>\n"
                 + "</div>\n"
                 + "<div class=\"contentContainer\">\n"
-                + "<table class=\"overviewSummary\" summary=\"Package Summary table, listing packages, and an explanation\">\n"
+                + "<div class=\"overviewSummary\">\n"
+                + "<table summary=\"Package Summary table, listing packages, and an explanation\">\n"
                 + "<caption><span>Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>");
     }
 
     void checkHtml5OverviewSummaryModules() {
         checkOutput("overview-summary.html", true,
-                "<table class=\"overviewSummary\">\n"
+                "<div class=\"overviewSummary\">\n"
+                + "<table>\n"
                 + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Module</th>\n"
                 + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
                 + "</tr>");
         checkOutput("overview-summary.html", false,
-                "<table class=\"overviewSummary\">\n"
+                "<div class=\"overviewSummary\">\n"
+                + "<table>\n"
                 + "<caption><span>Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
@@ -922,7 +933,8 @@
 
     void checkHtml5OverviewSummaryPackages() {
         checkOutput("overview-summary.html", false,
-                "<table class=\"overviewSummary\">\n"
+                "<div class=\"overviewSummary\">\n"
+                + "<table>\n"
                 + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Module</th>\n"
@@ -938,10 +950,11 @@
                 + "<div class=\"contentContainer\"><a id=\"Packages\">\n"
                 + "<!--   -->\n"
                 + "</a>\n"
-                + "<table class=\"overviewSummary\">\n"
+                + "<div class=\"overviewSummary\">\n"
+                + "<table>\n"
                 + "<caption><span>Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>");
         checkOutput("overview-summary.html", true,
-                "<table class=\"overviewSummary\">\n"
+                "<div class=\"overviewSummary\">\n<table>\n"
                 + "<caption><span>Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
@@ -955,7 +968,7 @@
                 + "<div class=\"block\">The overview summary page header.</div>\n"
                 + "</div>\n"
                 + "<div class=\"contentContainer\">\n"
-                + "<table class=\"overviewSummary\">\n"
+                + "<div class=\"overviewSummary\">\n<table>\n"
                 + "<caption><span>Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>");
     }
 
@@ -1220,14 +1233,14 @@
                 + "<li><a href=\"#modules.summary\">Modules</a>&nbsp;|&nbsp;</li>\n"
                 + "<li><a href=\"#packages.summary\">Packages</a>&nbsp;|&nbsp;</li>\n"
                 + "<li>Services</li>",
-                "<table class=\"requiresSummary\">\n"
+                "<div class=\"requiresSummary\">\n<table>\n"
                 + "<caption><span>Indirect Requires</span><span class=\"tabEnd\">&nbsp;</span></caption>",
                 "<td class=\"colFirst\">transitive</td>\n"
                 + "<th class=\"colSecond\" scope=\"row\"><a href=\"../moduleB/module-summary.html\">moduleB</a></th>\n"
                 + "<td class=\"colLast\">\n"
                 + "<div class=\"block\">This is a test description for the moduleB module.</div>\n"
                 + "</td>",
-                "<table class=\"packagesSummary\">\n"
+                "<div class=\"packagesSummary\">\n<table>\n"
                 + "<caption><span>Indirect Exports</span><span class=\"tabEnd\">&nbsp;</span></caption>",
                 "<td class=\"colFirst\">transitive static</td>\n"
                 + "<th class=\"colSecond\" scope=\"row\"><a href=\"../moduleA/module-summary.html\">moduleA</a></th>\n"
@@ -1235,19 +1248,19 @@
                 + "<div class=\"block\">This is a test description for the moduleA module with a Search "
                 + "phrase search phrase.</div>\n"
                 + "</td>",
-                "<table class=\"requiresSummary\">\n"
+                "<div class=\"requiresSummary\">\n<table>\n"
                 + "<caption><span>Requires</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Modifier</th>\n"
                 + "<th class=\"colSecond\" scope=\"col\">Module</th>\n"
                 + "<th class=\"colLast\" scope=\"col\">Description</th>",
-                "<table class=\"requiresSummary\">\n"
+                "<div class=\"requiresSummary\">\n<table>\n"
                 + "<caption><span>Indirect Requires</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Modifier</th>\n"
                 + "<th class=\"colSecond\" scope=\"col\">Module</th>\n"
                 + "<th class=\"colLast\" scope=\"col\">Description</th>",
-                "<table class=\"packagesSummary\">\n"
+                "<div class=\"packagesSummary\">\n<table>\n"
                 + "<caption><span>Indirect Opens</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">From</th>\n"
@@ -1267,23 +1280,28 @@
                 + " Package Link: <a href=\"moduletags/testpkgmdltags/package-summary.html\"><code>testpkgmdltags</code></a>.<br></div>\n"
                 + "</td>");
         checkOutput("moduletags/module-summary.html", true,
-                "<table class=\"requiresSummary\" summary=\"Indirect Requires table, listing modules, and an explanation\">\n"
+                "<div class=\"requiresSummary\">\n"
+                + "<table summary=\"Indirect Requires table, listing modules, and an explanation\">\n"
                 + "<caption><span>Indirect Requires</span><span class=\"tabEnd\">&nbsp;</span></caption>",
-                "<table class=\"packagesSummary\" summary=\"Indirect Exports table, listing modules, and packages\">\n"
+                "<div class=\"packagesSummary\">\n"
+                + "<table summary=\"Indirect Exports table, listing modules, and packages\">\n"
                 + "<caption><span>Indirect Exports</span><span class=\"tabEnd\">&nbsp;</span></caption>",
-                "<table class=\"requiresSummary\" summary=\"Requires table, listing modules, and an explanation\">\n"
+                "<div class=\"requiresSummary\">\n"
+                + "<table summary=\"Requires table, listing modules, and an explanation\">\n"
                 + "<caption><span>Requires</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Modifier</th>\n"
                 + "<th class=\"colSecond\" scope=\"col\">Module</th>\n"
                 + "<th class=\"colLast\" scope=\"col\">Description</th>",
-                "<table class=\"requiresSummary\" summary=\"Indirect Requires table, listing modules, and an explanation\">\n"
+                "<div class=\"requiresSummary\">\n"
+                + "<table summary=\"Indirect Requires table, listing modules, and an explanation\">\n"
                 + "<caption><span>Indirect Requires</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Modifier</th>\n"
                 + "<th class=\"colSecond\" scope=\"col\">Module</th>\n"
                 + "<th class=\"colLast\" scope=\"col\">Description</th>",
-                "<table class=\"packagesSummary\" summary=\"Indirect Opens table, listing modules, and packages\">\n"
+                "<div class=\"packagesSummary\">\n"
+                + "<table summary=\"Indirect Opens table, listing modules, and packages\">\n"
                 + "<caption><span>Indirect Opens</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">From</th>\n"
@@ -1302,7 +1320,7 @@
                 + "<li><a href=\"#services.summary\">Services</a></li>",
                 "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/package-summary.html\">testpkgmdlB</a></th>\n"
                 + "<td class=\"colLast\">&nbsp;</td>",
-                "<table class=\"packagesSummary\">\n"
+                "<div class=\"packagesSummary\">\n<table>\n"
                 + "<caption><span>Opens</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
@@ -1322,7 +1340,8 @@
 
     void checkModuleModeApi_html4(boolean found) {
         checkOutput("moduleB/module-summary.html", found,
-                "<table class=\"packagesSummary\" summary=\"Packages table, listing packages, and an explanation\">\n"
+                "<div class=\"packagesSummary\">\n"
+                + "<table summary=\"Packages table, listing packages, and an explanation\">\n"
                 + "<caption><span>Opens</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
@@ -1352,10 +1371,13 @@
                 "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlA/package-summary.html\">testpkgmdlA</a></th>\n"
                 + "<td class=\"colSecond\">All Modules</td>\n"
                 + "<td class=\"colLast\">&nbsp;</td>",
-                "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Packages</span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Exports</a></span>"
-                + "<span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">"
-                + "Concealed</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>",
+                "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\" aria-selected=\"true\""
+                + " aria-controls=\"packagesSummary_tabpanel\" tabindex=\"0\" onkeydown=\"switchTab(event)\" id=\"t0\""
+                + " class=\"activeTableTab\">All Packages</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"packagesSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t1\""
+                + " class=\"tableTab\" onclick=\"show(1);\">Exports</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"packagesSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t3\""
+                + " class=\"tableTab\" onclick=\"show(4);\">Concealed</button></div>",
                 "<th class=\"colFirst\" scope=\"row\"><a href=\"concealedpkgmdlA/package-summary.html\">concealedpkgmdlA</a></th>\n"
                 + "<td class=\"colSecond\">None</td>\n"
                 + "<td class=\"colLast\">&nbsp;</td>");
@@ -1379,9 +1401,13 @@
                 "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkg2mdlB/TestInterfaceInModuleB.html\" title=\"interface in testpkg2mdlB\">TestInterfaceInModuleB</a></th>\n"
                 + "<td class=\"colLast\">&nbsp;<br>(<span class=\"implementationLabel\">Implementation(s):</span>&nbsp;<a href=\"testpkgmdlB/TestClassInModuleB.html\" "
                 + "title=\"class in testpkgmdlB\">TestClassInModuleB</a>)</td>",
-                "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Packages</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span>"
-                + "<a href=\"javascript:show(1);\">Exports</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span>"
-                + "<a href=\"javascript:show(2);\">Opens</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>");
+                "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\" aria-selected=\"true\""
+                + " aria-controls=\"packagesSummary_tabpanel\" tabindex=\"0\" onkeydown=\"switchTab(event)\" id=\"t0\""
+                + " class=\"activeTableTab\">All Packages</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"packagesSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t1\""
+                + " class=\"tableTab\" onclick=\"show(1);\">Exports</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"packagesSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t2\""
+                + " class=\"tableTab\" onclick=\"show(2);\">Opens</button></div>");
         checkOutput("moduleC/module-summary.html", found,
                 "<caption><span>Exports</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
@@ -1463,13 +1489,20 @@
     void checkGroupOption() {
         checkOutput("overview-summary.html", true,
                 "<div class=\"contentContainer\">\n"
-                + "<table class=\"overviewSummary\">\n"
-                + "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Modules</span><span class=\"tabEnd\">&nbsp;"
-                + "</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">"
-                + "Module Group A</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\">"
-                + "<span><a href=\"javascript:show(2);\">Module Group B &amp; C</a></span><span class=\"tabEnd\">"
-                + "&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">"
-                + "Other Modules</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>",
+                + "<div class=\"overviewSummary\">\n"
+                + "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\""
+                + " aria-selected=\"true\" aria-controls=\"overviewSummary_tabpanel\" tabindex=\"0\""
+                + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Modules</button>"
+                + "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"overviewSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t1\" class=\"tableTab\""
+                + " onclick=\"show(1);\">Module Group A</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"overviewSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\""
+                + " id=\"t2\" class=\"tableTab\" onclick=\"show(2);\">Module Group B &amp; C</button><button"
+                + " role=\"tab\" aria-selected=\"false\" aria-controls=\"overviewSummary_tabpanel\" tabindex=\"-1\""
+                + " onkeydown=\"switchTab(event)\" id=\"t4\" class=\"tableTab\" onclick=\"show(4);\">"
+                + "Other Modules</button></div>\n"
+                + "<div id=\"overviewSummary_tabpanel\" role=\"tabpanel\">\n"
+                + "<table aria-labelledby=\"t0\">",
                 "var data = {\"i0\":1,\"i1\":2,\"i2\":2,\"i3\":4};\n"
                 + "var tabs = {65535:[\"t0\",\"All Modules\"],1:[\"t1\",\"Module Group A\"],2:[\"t2\",\"Module Group B & C\"],4:[\"t4\",\"Other Modules\"]};\n"
                 + "var altColor = \"altColor\";\n"
@@ -1477,7 +1510,7 @@
                 + "var tableTab = \"tableTab\";\n"
                 + "var activeTableTab = \"activeTableTab\";");
         checkOutput("overview-summary.html", false,
-                "<table class=\"overviewSummary\">\n"
+                "<div class=\"overviewSummary\">\n<table>\n"
                 + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>",
                 "Java SE Modules");
     }
@@ -1485,13 +1518,20 @@
     void checkGroupOption_html4() {
         checkOutput("overview-summary.html", true,
                 "<div class=\"contentContainer\">\n"
-                + "<table class=\"overviewSummary\" summary=\"Module Summary table, listing modules, and an explanation\">\n"
-                + "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Modules</span><span class=\"tabEnd\">&nbsp;"
-                + "</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">"
-                + "Module Group A</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\">"
-                + "<span><a href=\"javascript:show(2);\">Module Group B &amp; C</a></span><span class=\"tabEnd\">"
-                + "&nbsp;</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">"
-                + "Other Modules</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>",
+                + "<div class=\"overviewSummary\">\n"
+                + "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\""
+                + " aria-selected=\"true\" aria-controls=\"overviewSummary_tabpanel\" tabindex=\"0\""
+                + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Modules</button>"
+                + "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"overviewSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t1\" class=\"tableTab\""
+                + " onclick=\"show(1);\">Module Group A</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"overviewSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\""
+                + " id=\"t2\" class=\"tableTab\" onclick=\"show(2);\">Module Group B &amp; C</button>"
+                + "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"overviewSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t4\" class=\"tableTab\""
+                + " onclick=\"show(4);\">Other Modules</button></div>\n"
+                + "<div id=\"overviewSummary_tabpanel\" role=\"tabpanel\">\n"
+                + "<table summary=\"Module Summary table, listing modules, and an explanation\" aria-labe",
                 "var data = {\"i0\":1,\"i1\":2,\"i2\":2,\"i3\":4};\n"
                 + "var tabs = {65535:[\"t0\",\"All Modules\"],1:[\"t1\",\"Module Group A\"],2:[\"t2\",\"Module Group B & C\"],4:[\"t4\",\"Other Modules\"]};\n"
                 + "var altColor = \"altColor\";\n"
@@ -1499,32 +1539,42 @@
                 + "var tableTab = \"tableTab\";\n"
                 + "var activeTableTab = \"activeTableTab\";");
         checkOutput("overview-summary.html", false,
-                "<table class=\"overviewSummary\" summary=\"Module Summary table, listing modules, and an explanation\">\n"
+                "<div class=\"overviewSummary\">\n<table summary=\"Module Summary table, listing modules, and an explanation\">\n"
                 + "<caption><span>Modules</span><span class=\"tabEnd\">&nbsp;</span></caption>",
                 "Java SE Modules");
     }
 
     void checkGroupOptionOrdering() {
         checkOutput("overview-summary.html", true,
-                "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Modules</span><span "
-                + "class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span>"
-                + "<a href=\"javascript:show(1);\">B Group</a></span><span class=\"tabEnd\">"
-                + "&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">"
-                + "C Group</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\">"
-                + "<span><a href=\"javascript:show(4);\">A Group</a></span><span class=\"tabEnd\">&nbsp;</span>"
-                + "</span><span id=\"t8\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Other Modules"
-                + "</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>",
+                "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\""
+                + " aria-selected=\"true\" aria-controls=\"overviewSummary_tabpanel\" tabindex=\"0\""
+                + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Modules</button>"
+                + "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"overviewSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t1\" class=\"tableTab\""
+                + " onclick=\"show(1);\">B Group</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"overviewSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\""
+                + " id=\"t2\" class=\"tableTab\" onclick=\"show(2);\">C Group</button><button role=\"tab\""
+                + " aria-selected=\"false\" aria-controls=\"overviewSummary_tabpanel\" tabindex=\"-1\""
+                + " onkeydown=\"switchTab(event)\" id=\"t4\" class=\"tableTab\" onclick=\"show(4);\">A Group"
+                + "</button><button role=\"tab\" aria-selected=\"false\" aria-controls=\"overviewSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t8\" class=\"tableTab\" onclick=\"show(8);\">"
+                + "Other Modules</button></div>",
                 "var tabs = {65535:[\"t0\",\"All Modules\"],1:[\"t1\",\"B Group\"],2:[\"t2\",\"C Group\"],"
                 + "4:[\"t4\",\"A Group\"],8:[\"t8\",\"Other Modules\"]};");
         checkOutput("overview-summary.html", false,
-                "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Modules</span><span "
-                + "class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span>"
-                + "<a href=\"javascript:show(1);\">A Group</a></span><span class=\"tabEnd\">"
-                + "&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">"
-                + "B Group</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t4\" class=\"tableTab\">"
-                + "<span><a href=\"javascript:show(4);\">C Group</a></span><span class=\"tabEnd\">&nbsp;</span>"
-                + "</span><span id=\"t8\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Other Modules"
-                + "</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>",
+                "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\""
+                + " aria-selected=\"true\" aria-controls=\"overviewSummary_tabpanel\" tabindex=\"0\""
+                + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Modules</button>"
+                + "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"overviewSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t1\" class=\"tableTab\""
+                + " onclick=\"show(1);\">A Group</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"overviewSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\""
+                + " id=\"t2\" class=\"tableTab\" onclick=\"show(2);\">B Group</button><button role=\"tab\""
+                + " aria-selected=\"false\" aria-controls=\"overviewSummary_tabpanel\" tabindex=\"-1\""
+                + " onkeydown=\"switchTab(event)\" id=\"t4\" class=\"tableTab\" onclick=\"show(4);\">C Group"
+                + "</button><button role=\"tab\" aria-selected=\"false\" aria-controls=\"overviewSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t8\" class=\"tableTab\""
+                + " onclick=\"show(8);\">Other Modules</button></div>",
                 "Java SE Modules");
     }
 
@@ -1534,12 +1584,17 @@
                 + "<div class=\"block\">The overview summary page header.</div>\n"
                 + "</div>\n"
                 + "<div class=\"contentContainer\">\n"
-                + "<table class=\"overviewSummary\">\n"
-                + "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Packages</span><span class=\"tabEnd\">&nbsp;"
-                + "</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">"
-                + "Package Group 0</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" "
-                + "class=\"tableTab\"><span><a href=\"javascript:show(2);\">Package Group 1</a></span>"
-                + "<span class=\"tabEnd\">&nbsp;</span></span></caption>",
+                + "<div class=\"overviewSummary\">\n"
+                + "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\""
+                + " aria-selected=\"true\" aria-controls=\"overviewSummary_tabpanel\" tabindex=\"0\""
+                + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Packages</button>"
+                + "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"overviewSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t1\" class=\"tableTab\""
+                + " onclick=\"show(1);\">Package Group 0</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"overviewSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\""
+                + " id=\"t2\" class=\"tableTab\" onclick=\"show(2);\">Package Group 1</button></div>\n"
+                + "<div id=\"overviewSummary_tabpanel\" role=\"tabpanel\">\n"
+                + "<table aria-labelledby=\"t0\">",
                 "var data = {\"i0\":1,\"i1\":2};\n"
                 + "var tabs = {65535:[\"t0\",\"All Packages\"],1:[\"t1\",\"Package Group 0\"],2:[\"t2\",\"Package Group 1\"]};\n"
                 + "var altColor = \"altColor\";\n"
@@ -1554,21 +1609,29 @@
                 + "<div class=\"block\">The overview summary page header.</div>\n"
                 + "</div>\n"
                 + "<div class=\"contentContainer\">\n"
-                + "<table class=\"overviewSummary\" summary=\"Package Summary table, listing packages, and an explanation\">\n"
-                + "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Packages</span><span class=\"tabEnd\">&nbsp;"
-                + "</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">"
-                + "Package Group 0</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" "
-                + "class=\"tableTab\"><span><a href=\"javascript:show(2);\">Package Group 1</a></span>"
-                + "<span class=\"tabEnd\">&nbsp;</span></span></caption>");
+                + "<div class=\"overviewSummary\">\n"
+                + "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\""
+                + " aria-selected=\"true\" aria-controls=\"overviewSummary_tabpanel\" tabindex=\"0\""
+                + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Packages"
+                + "</button><button role=\"tab\" aria-selected=\"false\" aria-controls=\"overviewSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t1\" class=\"tableTab\" onclick=\"show(1);\">"
+                + "Package Group 0</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"overviewSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t2\""
+                + " class=\"tableTab\" onclick=\"show(2);\">Package Group 1</button></div>\n"
+                + "<div id=\"overviewSummary_tabpanel\" role=\"tabpanel\">\n"
+                + "<table summary=\"Package Summary table, listing packages, and an explanation\" aria-labelledby=\"t0\">");
     }
 
     void checkGroupOptionPackageOrdering() {
         checkOutput("overview-summary.html", true,
-                "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Packages</span><span "
-                + "class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span>"
-                + "<a href=\"javascript:show(1);\">Z Group</a></span><span class=\"tabEnd\">"
-                + "&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">"
-                + "A Group</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>",
+                "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\""
+                + " aria-selected=\"true\" aria-controls=\"overviewSummary_tabpanel\" tabindex=\"0\""
+                + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Packages</button>"
+                + "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"overviewSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t1\" class=\"tableTab\""
+                + " onclick=\"show(1);\">Z Group</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"overviewSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\""
+                + " id=\"t2\" class=\"tableTab\" onclick=\"show(2);\">A Group</button></div>",
                 "var tabs = {65535:[\"t0\",\"All Packages\"],1:[\"t1\",\"Z Group\"],2:[\"t2\",\"A Group\"]};");
     }
 
@@ -1627,12 +1690,15 @@
 
     void checkAllPkgsAllClasses(boolean found) {
         checkOutput("allclasses-index.html", true,
-                "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Classes</span>"
-                + "<span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\">"
-                + "<span><a href=\"javascript:show(2);\">Class Summary</a></span><span class=\"tabEnd\">"
-                + "&nbsp;</span></span><span id=\"t6\" class=\"tableTab\"><span><a href=\"javascript:show(32);\">"
-                + "Annotation Types Summary</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n"
-                + "<tr>\n"
+                "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\""
+                + " aria-selected=\"true\" aria-controls=\"typeSummary_tabpanel\" tabindex=\"0\""
+                + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Classes</button>"
+                + "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"typeSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t2\" class=\"tableTab\""
+                + " onclick=\"show(2);\">Class Summary</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"typeSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\""
+                + " id=\"t6\" class=\"tableTab\" onclick=\"show(32);\">Annotation Types Summary</button></div>\n",
+                "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Class</th>\n"
                 + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
                 + "</tr>");
@@ -1643,13 +1709,14 @@
                 + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
                 + "</tr>\n");
         checkOutput("allclasses-index.html", found,
-                "<table class=\"typeSummary\">\n");
+                "<table aria-labelledby=\"t0\">\n");
         checkOutput("allpackages-index.html", found,
-                "<table class=\"packagesSummary\">\n");
+                "<div class=\"packagesSummary\">\n<table>\n");
         checkOutput("allclasses-index.html", !found,
-                "<table class=\"typeSummary\" summary=\"Class Summary table, listing classes, and an explanation\">");
+                "<table summary=\"Class Summary table, listing classes, and an explanation\" aria-labelledby=\"t0\">");
         checkOutput("allpackages-index.html", !found,
-                "<table class=\"packagesSummary\" summary=\"Package Summary table, listing packages, and an explanation\">");
+                "<div class=\"packagesSummary\">\n"
+                + "<table summary=\"Package Summary table, listing packages, and an explanation\">");
         checkOutput("type-search-index.js", true,
                 "{\"l\":\"All Classes\",\"url\":\"allclasses-index.html\"}");
         checkOutput("package-search-index.js", true,
--- a/test/langtools/jdk/javadoc/doclet/testPackagePage/TestPackagePage.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testPackagePage/TestPackagePage.java	Wed Nov 21 13:53:17 2018 -0500
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 4492643 4689286 8196201
+ * @bug 4492643 4689286 8196201 8184205
  * @summary Test that a package page is properly generated when a .java file
  * passed to Javadoc.  Also test that the proper package links are generated
  * when single or multiple packages are documented.
@@ -83,14 +83,14 @@
         checkOutput("help-doc.html", true,
             "<li>Package</li>");
         checkOutput("allclasses-index.html", true,
-                "<table class=\"typeSummary\">\n"
+                "<div class=\"typeSummary\">\n<table>\n"
                 + "<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Class</th>\n"
                 + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
                 + "</tr>\n");
         checkOutput("allpackages-index.html", true,
-                "<table class=\"packagesSummary\">\n"
+                "<div class=\"packagesSummary\">\n<table>\n"
                 + "<caption><span>Package Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
--- a/test/langtools/jdk/javadoc/doclet/testSearch/TestSearch.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testSearch/TestSearch.java	Wed Nov 21 13:53:17 2018 -0500
@@ -25,6 +25,7 @@
  * @test
  * @bug 8141492 8071982 8141636 8147890 8166175 8168965 8176794 8175218 8147881
  *      8181622 8182263 8074407 8187521 8198522 8182765 8199278 8196201 8196202
+ *      8184205
  * @summary Test the search feature of javadoc.
  * @author bpatel
  * @library ../lib
@@ -695,19 +696,27 @@
 
     void checkAllPkgsAllClasses() {
         checkOutput("allclasses-index.html", true,
-                "<table class=\"typeSummary\">\n"
-                + "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Classes</span>"
-                + "<span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\">"
-                + "<span><a href=\"javascript:show(1);\">Interface Summary</a></span><span class=\"tabEnd\">"
-                + "&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">"
-                + "Class Summary</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\">"
-                + "<span><a href=\"javascript:show(4);\">Enum Summary</a></span><span class=\"tabEnd\">&nbsp;"
-                + "</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">"
-                + "Exception Summary</a></span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t5\" class=\"tableTab\"><span><a href=\"javascript:show(16);\">"
-                + "Error Summary</a></span><span class=\"tabEnd\">&nbsp;</span></span>"
-                + "<span id=\"t6\" class=\"tableTab\"><span><a href=\"javascript:show(32);\">Annotation Types Summary"
-                + "</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>\n"
+                "<div class=\"typeSummary\">\n"
+                + "<div role=\"tablist\" aria-orientation=\"horizontal\"><button role=\"tab\""
+                + " aria-selected=\"true\" aria-controls=\"typeSummary_tabpanel\" tabindex=\"0\""
+                + " onkeydown=\"switchTab(event)\" id=\"t0\" class=\"activeTableTab\">All Classes</button>"
+                + "<button role=\"tab\" aria-selected=\"false\" aria-controls=\"typeSummary_tabpanel\""
+                + " tabindex=\"-1\" onkeydown=\"switchTab(event)\" id=\"t1\" class=\"tableTab\""
+                + " onclick=\"show(1);\">Interface Summary</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"typeSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\""
+                + " id=\"t2\" class=\"tableTab\" onclick=\"show(2);\">Class Summary</button><button role=\"tab\""
+                + " aria-selected=\"false\" aria-controls=\"typeSummary_tabpanel\" tabindex=\"-1\""
+                + " onkeydown=\"switchTab(event)\" id=\"t3\" class=\"tableTab\" onclick=\"show(4);\">"
+                + "Enum Summary</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"typeSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\""
+                + " id=\"t4\" class=\"tableTab\" onclick=\"show(8);\">Exception Summary</button><button role=\"tab\""
+                + " aria-selected=\"false\" aria-controls=\"typeSummary_tabpanel\" tabindex=\"-1\""
+                + " onkeydown=\"switchTab(event)\" id=\"t5\" class=\"tableTab\" onclick=\"show(16);\">"
+                + "Error Summary</button><button role=\"tab\" aria-selected=\"false\""
+                + " aria-controls=\"typeSummary_tabpanel\" tabindex=\"-1\" onkeydown=\"switchTab(event)\""
+                + " id=\"t6\" class=\"tableTab\" onclick=\"show(32);\">Annotation Types Summary</button></div>\n"
+                + "<div id=\"typeSummary_tabpanel\" role=\"tabpanel\">\n"
+                + "<table aria-labelledby=\"t0\">\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Class</th>\n"
                 + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
@@ -715,7 +724,7 @@
                 "var data = {\"i0\":32,\"i1\":2,\"i2\":4,\"i3\":2,\"i4\":2,\"i5\":1,\"i6\":2,\"i7\":32,"
                 + "\"i8\":2,\"i9\":4,\"i10\":16,\"i11\":16,\"i12\":8,\"i13\":8,\"i14\":1,\"i15\":2};");
         checkOutput("allpackages-index.html", true,
-                "<table class=\"packagesSummary\">\n"
+                "<div class=\"packagesSummary\">\n<table>\n"
                 + "<caption><span>Package Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
--- a/test/langtools/jdk/javadoc/doclet/testStylesheet/TestStylesheet.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testStylesheet/TestStylesheet.java	Wed Nov 21 13:53:17 2018 -0500
@@ -24,7 +24,7 @@
 /*
  * @test
  * @bug      4494033 7028815 7052425 8007338 8023608 8008164 8016549 8072461 8154261 8162363 8160196 8151743 8177417
- *           8175218 8176452 8181215 8182263 8183511 8169819 8183037 8185369 8182765 8196201
+ *           8175218 8176452 8181215 8182263 8183511 8169819 8183037 8185369 8182765 8196201 8184205
  * @summary  Run tests on doclet stylesheet.
  * @author   jamieh
  * @library  ../lib
@@ -105,29 +105,23 @@
                 + "    border: none;\n"
                 + "    height:16px;\n"
                 + "}",
-                ".memberSummary caption span.activeTableTab span, .packagesSummary caption span.activeTableTab span,\n"
-                + ".overviewSummary caption span.activeTableTab span, .typeSummary caption span.activeTableTab span {\n"
-                + "    white-space:nowrap;\n"
-                + "    padding-top:5px;\n"
-                + "    padding-left:12px;\n"
-                + "    padding-right:12px;\n"
-                + "    margin-right:3px;\n"
-                + "    display:inline-block;\n"
-                + "    float:left;\n"
-                + "    background-color:#F8981D;\n"
-                + "    height:16px;\n"
+                ".overviewSummary [role=tablist] button, .memberSummary [role=tablist] button,\n"
+                + ".typeSummary [role=tablist] button, .packagesSummary [role=tablist] button {\n"
+                + "   border: none;\n"
+                + "   cursor: pointer;\n"
+                + "   padding: 5px 12px 7px 12px;\n"
+                + "   font-weight: bold;\n"
+                + "   margin-right: 3px;\n"
                 + "}",
-                ".memberSummary caption span.tableTab span, .packagesSummary caption span.tableTab span,\n"
-                + ".overviewSummary caption span.tableTab span, .typeSummary caption span.tableTab span {\n"
-                + "    white-space:nowrap;\n"
-                + "    padding-top:5px;\n"
-                + "    padding-left:12px;\n"
-                + "    padding-right:12px;\n"
-                + "    margin-right:3px;\n"
-                + "    display:inline-block;\n"
-                + "    float:left;\n"
-                + "    background-color:#4D7A97;\n"
-                + "    height:16px;\n"
+                ".overviewSummary [role=tablist] .activeTableTab, .memberSummary [role=tablist] .activeTableTab,\n"
+                + ".typeSummary [role=tablist] .activeTableTab, .packagesSummary [role=tablist] .activeTableTab {\n"
+                + "   background: #F8981D;\n"
+                + "   color: #253441;\n"
+                + "}",
+                ".overviewSummary [role=tablist] .tableTab, .memberSummary [role=tablist] .tableTab,\n"
+                + ".typeSummary [role=tablist] .tableTab, .packagesSummary [role=tablist] .tableTab {\n"
+                + "   background: #4D7A97;\n"
+                + "   color: #FFFFFF;\n"
                 + "}",
                 // Test the formatting styles for proper content display in use and constant values pages.
                 ".overviewSummary td.colFirst, .overviewSummary th.colFirst,\n"
@@ -146,17 +140,6 @@
                 + "    text-align:left;\n"
                 + "    padding:0px 0px 12px 10px;\n"
                 + "}",
-                ".memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab,\n"
-                + ".packagesSummary caption span.tableTab, .packagesSummary caption span.activeTableTab,\n"
-                + ".overviewSummary caption span.tableTab, .overviewSummary caption span.activeTableTab,\n"
-                + ".typeSummary caption span.tableTab, .typeSummary caption span.activeTableTab {\n"
-                + "    padding-top:0px;\n"
-                + "    padding-left:0px;\n"
-                + "    padding-right:0px;\n"
-                + "    background-image:none;\n"
-                + "    float:none;\n"
-                + "    display:inline;\n"
-                + "}",
                 "@import url('resources/fonts/dejavu.css');",
                 ".navPadding {\n"
                 + "    padding-top: 107px;\n"
--- a/test/langtools/jdk/javadoc/doclet/testUnnamedPackage/TestUnnamedPackage.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/jdk/javadoc/doclet/testUnnamedPackage/TestUnnamedPackage.java	Wed Nov 21 13:53:17 2018 -0500
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug      4904075 4774450 5015144 8043698 8196201 8203791
+ * @bug      4904075 4774450 5015144 8043698 8196201 8203791 8184205
  * @summary  Reference unnamed package as "Unnamed", not empty string.
  *           Generate a package summary for the unnamed package.
  * @author   jamieh
@@ -65,7 +65,7 @@
                 "<a href=\"package-summary.html\">");
 
         checkOutput("allclasses-index.html", true,
-                "<table class=\"typeSummary\">\n"
+                "<div class=\"typeSummary\">\n<table>\n"
                 + "<caption><span>Class Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Class</th>\n"
@@ -82,7 +82,7 @@
                 + "</table>");
 
         checkOutput("allpackages-index.html", true,
-                "<table class=\"packagesSummary\">\n"
+                "<div class=\"packagesSummary\">\n<table>\n"
                 + "<caption><span>Package Summary</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
                 + "<tr>\n"
                 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/api/CrashReport.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2018, Google LLC. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug     8214071
+ * @summary Broken msg.bug diagnostics when using the compiler API
+ * @library lib
+ * @modules jdk.compiler/com.sun.tools.javac.api
+ * @build ToolTester
+ * @run main CrashReport
+ */
+
+import com.sun.source.util.JavacTask;
+import com.sun.source.util.TaskEvent;
+import com.sun.source.util.TaskListener;
+import com.sun.tools.javac.api.ClientCodeWrapper.Trusted;
+import java.io.File;
+import java.io.StringWriter;
+import java.util.List;
+
+public class CrashReport extends ToolTester {
+
+    public static void main(String[] args) {
+        new CrashReport().test();
+    }
+
+    void test() {
+        StringWriter pw = new StringWriter();
+        JavacTask task =
+                (JavacTask)
+                        tool.getTask(
+                                pw,
+                                fm,
+                                null,
+                                List.of(),
+                                null,
+                                fm.getJavaFileObjects(new File(test_src, "CrashReport.java")));
+        task.addTaskListener(new Listener());
+        boolean ok = task.call();
+        if (ok) {
+            throw new AssertionError("expected compilation to fail");
+        }
+        String output = pw.toString();
+        if (!output.contains("An exception has occurred in the compiler")) {
+            throw new AssertionError("expected msg.bug diagnostic, got:\n" + output);
+        }
+    }
+
+    @Trusted
+    static class Listener implements TaskListener {
+        @Override
+        public void started(TaskEvent e) {
+            throw new AssertionError();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/diags/examples/RuleCompletesNormally.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+// key: compiler.err.rule.completes.normally
+// key: compiler.note.preview.filename
+// key: compiler.note.preview.recompile
+// options: --enable-preview -source 12
+
+class RuleCompletesNormally {
+    public String convert(int i) {
+        return switch (i) {
+            default -> {}
+        };
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/diags/examples/SwitchExpressionCompletesNormally.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+// key: compiler.err.switch.expression.completes.normally
+// key: compiler.note.preview.filename
+// key: compiler.note.preview.recompile
+// options: --enable-preview -source 12
+
+class SwitchExpressionCompletesNormally {
+    public String convert(int i) {
+        return switch (i) {
+            default:
+        };
+    }
+}
--- a/test/langtools/tools/javac/expswitch/ExpSwitchNestingTest.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/tools/javac/expswitch/ExpSwitchNestingTest.java	Wed Nov 21 13:53:17 2018 -0500
@@ -46,7 +46,7 @@
     private static final String ESWITCH_S = "String res_string = switch (x) { case 0 -> { # } default -> \"default\"; };";
     private static final String INT_FN_ESWITCH = "java.util.function.IntSupplier r = switch (x) { case 0 -> { # } default -> null; };";
     private static final String INT_ESWITCH_DEFAULT = "int res = switch (x) { default -> { # } };";
-    private static final String IF = "if (cond) { # }";
+    private static final String IF = "if (cond) { # } else throw new RuntimeException();";
     private static final String BLOCK = "{ # }";
     private static final String BREAK_Z = "break 0;";
     private static final String BREAK_S = "break \"hello world\";";
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/lambda/methodReference/MethodRefStuck2.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2018, Google LLC. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8213908
+ * @summary AssertionError in DeferredAttr at setOverloadKind
+ * @compile MethodRefStuck2.java
+ */
+
+import java.util.Optional;
+import java.util.stream.Stream;
+
+public abstract class MethodRefStuck2 {
+
+    abstract void f(long c);
+
+    interface I {
+        I g(String o);
+    }
+
+    private void test(Stream<I> is, Optional<String> o) {
+        f(
+                is.map(
+                                i -> {
+                                    o.ifPresent(i::g);
+                                    return null;
+                                })
+                        .count());
+    }
+}
--- a/test/langtools/tools/javac/parser/JavacParserTest.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/langtools/tools/javac/parser/JavacParserTest.java	Wed Nov 21 13:53:17 2018 -0500
@@ -1041,6 +1041,28 @@
         assertEquals("the error message is not correct, actual: " + actualErrors, expectedErrors, actualErrors);
     }
 
+    @Test //JDK-821742
+    void testCompDeclVarType() throws IOException {
+        String code = "package test; public class Test {"
+                + "private void test() {"
+                + "var v1 = 10,v2 = 12;"
+                + "} private Test() {}}";
+
+        JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(null, fm, null,
+                null, null, Arrays.asList(new MyFileObject(code)));
+        CompilationUnitTree cut = ct.parse().iterator().next();
+        ct.enter();
+        ct.analyze();
+        ClassTree clazz = (ClassTree) cut.getTypeDecls().get(0);
+        MethodTree method = (MethodTree) clazz.getMembers().get(0);
+        VariableTree stmt1 = (VariableTree) method.getBody().getStatements().get(0);
+        VariableTree stmt2 = (VariableTree) method.getBody().getStatements().get(1);
+        Tree v1Type = stmt1.getType();
+        Tree v2Type = stmt2.getType();
+        assertEquals("Implicit type for v1 is not correct: ", Kind.PRIMITIVE_TYPE, v1Type.getKind());
+        assertEquals("Implicit type for v2 is not correct: ", Kind.PRIMITIVE_TYPE, v2Type.getKind());
+    }
+
     @Test
     void testCaseBodyStatements() throws IOException {
         String code = "class C {" +
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/switchexpr/ExpressionSwitchFlow.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,66 @@
+/*
+ * @test /nodynamiccopyright/
+ * @bug 8212982
+ * @summary Verify a compile-time error is produced if switch expression does not provide a value
+ * @compile/fail/ref=ExpressionSwitchFlow.out --enable-preview -source 12 -XDrawDiagnostics ExpressionSwitchFlow.java
+ */
+
+public class ExpressionSwitchFlow {
+    private String test1(int i) {
+        return switch (i) {
+            case 0 -> {}
+            default -> { break "other"; }
+        };
+    }
+    private String test2(int i) {
+        return switch (i) {
+            case 0 -> {
+            }
+            default -> "other";
+        };
+    }
+    private String test3(int i) {
+        return switch (i) {
+            case 0 -> {}
+            default -> throw new IllegalStateException();
+        };
+    }
+    private String test4(int i) {
+        return switch (i) {
+            case 0 -> { break "other"; }
+            default -> {}
+        };
+    }
+    private String test5(int i) {
+        return switch (i) {
+            case 0 -> "other";
+            default -> {}
+        };
+    }
+    private String test6(int i) {
+        return switch (i) {
+            case 0 -> throw new IllegalStateException();
+            default -> {}
+        };
+    }
+    private String test7(int i) {
+        return switch (i) {
+            case 0: throw new IllegalStateException();
+            default:
+        };
+    }
+    private String test8(int i) {
+        return switch (i) {
+            case 0: i++;
+            default: {
+            }
+        };
+    }
+    private String test9(int i) {
+        return switch (i) {
+            case 0:
+            default:
+                System.err.println();
+        };
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/switchexpr/ExpressionSwitchFlow.out	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,12 @@
+ExpressionSwitchFlow.java:11:24: compiler.err.rule.completes.normally
+ExpressionSwitchFlow.java:18:13: compiler.err.rule.completes.normally
+ExpressionSwitchFlow.java:24:24: compiler.err.rule.completes.normally
+ExpressionSwitchFlow.java:31:25: compiler.err.rule.completes.normally
+ExpressionSwitchFlow.java:37:25: compiler.err.rule.completes.normally
+ExpressionSwitchFlow.java:43:25: compiler.err.rule.completes.normally
+ExpressionSwitchFlow.java:50:9: compiler.err.switch.expression.completes.normally
+ExpressionSwitchFlow.java:57:9: compiler.err.switch.expression.completes.normally
+ExpressionSwitchFlow.java:64:9: compiler.err.switch.expression.completes.normally
+- compiler.note.preview.filename: ExpressionSwitchFlow.java
+- compiler.note.preview.recompile
+9 errors
--- a/test/lib/jdk/test/lib/cds/CDSOptions.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/lib/jdk/test/lib/cds/CDSOptions.java	Wed Nov 21 13:53:17 2018 -0500
@@ -33,6 +33,9 @@
     public ArrayList<String> suffix = new ArrayList<String>();
     public boolean useSystemArchive = false;
 
+    // classes to be archived
+    public String[] classList;
+
     // Indicate whether to append "-version" when using CDS Archive.
     // Most of tests will use '-version'
     public boolean useVersion = true;
@@ -74,4 +77,16 @@
         this.useSystemArchive = use;
         return this;
     }
+
+    public CDSOptions setClassList(String[] list) {
+        this.classList = list;
+        return this;
+    }
+    public CDSOptions setClassList(ArrayList<String> list) {
+        String array[] = new String[list.size()];
+        list.toArray(array);
+        this.classList = array;
+        return this;
+    }
+
 }
--- a/test/lib/jdk/test/lib/cds/CDSTestUtils.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/lib/jdk/test/lib/cds/CDSTestUtils.java	Wed Nov 21 13:53:17 2018 -0500
@@ -248,6 +248,11 @@
             opts.archiveName = getDefaultArchiveName();
         cmd.add("-XX:SharedArchiveFile=./" + opts.archiveName);
 
+        if (opts.classList != null) {
+            File classListFile = makeClassList(opts.classList);
+            cmd.add("-XX:ExtraSharedClassListFile=" + classListFile.getPath());
+        }
+
         for (String s : opts.suffix) cmd.add(s);
 
         String[] cmdLine = cmd.toArray(new String[cmd.size()]);
--- a/test/lib/jdk/test/lib/jfr/EventNames.java	Wed Nov 21 13:20:52 2018 -0500
+++ b/test/lib/jdk/test/lib/jfr/EventNames.java	Wed Nov 21 13:53:17 2018 -0500
@@ -169,6 +169,10 @@
     public final static String JavaErrorThrow = PREFIX + "JavaErrorThrow";
     public final static String ModuleRequire = PREFIX + "ModuleRequire";
     public final static String ModuleExport = PREFIX + "ModuleExport";
+    public final static String TLSHandshake = PREFIX + "TLSHandshake";
+    public final static String X509Certificate = PREFIX + "X509Certificate";
+    public final static String X509Validation = PREFIX + "X509Validation";
+    public final static String SecurityProperty = PREFIX + "SecurityPropertyModification";
 
     // Flight Recorder
     public final static String DumpReason = PREFIX + "DumpReason";
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/lib/jdk/test/lib/security/JDKSecurityProperties.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.test.lib.security;
+
+import java.util.List;
+import java.security.Security;
+
+public final class JDKSecurityProperties {
+
+    public static final List<String> jdkProps = List.of(
+        "com.sun.CORBA.ORBIorTypeCheckRegistryFilter",
+        "crypto.policy",
+        "jceks.key.serialFilter",
+        "jdk.certpath.disabledAlgorithms",
+        "keystore.type",
+        "krb5.kdc.bad.policy",
+        "login.config",
+        "networkaddress.cache.ttl",
+        "ocsp.responderURL",
+        "package.access",
+        "policy.allowSystemProperty",
+        "securerandom.drbg.config",
+        "security.provider.1",
+        "ssl.KeyManagerFactory.algorithm",
+        "sun.rmi.registry.registryFilter"
+    );
+
+    public static List getKeys() {
+        return jdkProps;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/lib/jdk/test/lib/security/SSLSocketTest.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,891 @@
+/*
+ * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.test.lib.security;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import javax.net.ssl.KeyManagerFactory;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLServerSocket;
+import javax.net.ssl.SSLServerSocketFactory;
+import javax.net.ssl.SSLSocket;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManagerFactory;
+import java.net.InetSocketAddress;
+import java.net.SocketTimeoutException;
+import java.security.KeyStore;
+import java.security.PrivateKey;
+import java.security.KeyFactory;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateFactory;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.util.Base64;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Template to help speed up your client/server tests.
+ *
+ * Two examples that use this template:
+ *    test/sun/security/ssl/ServerHandshaker/AnonCipherWithWantClientAuth.java
+ *    test/sun/net/www/protocol/https/HttpsClient/ServerIdentityTest.java
+ */
+public abstract class SSLSocketTest {
+
+    /*
+     * Run the test case.
+     */
+    public void run() throws Exception {
+        bootup();
+    }
+
+    /*
+     * Define the server side application of the test for the specified socket.
+     */
+    protected abstract void runServerApplication(SSLSocket socket) throws Exception;
+
+    /*
+     * Define the client side application of the test for the specified socket.
+     * This method is used if the returned value of
+     * isCustomizedClientConnection() is false.
+     *
+     * @param socket may be null is no client socket is generated.
+     *
+     * @see #isCustomizedClientConnection()
+     */
+    protected abstract void runClientApplication(SSLSocket socket) throws Exception;
+
+    /*
+     * Define the client side application of the test for the specified
+     * server port.  This method is used if the returned value of
+     * isCustomizedClientConnection() is true.
+     *
+     * Note that the client need to connect to the server port by itself
+     * for the actual message exchange.
+     *
+     * @see #isCustomizedClientConnection()
+     */
+    protected void runClientApplication(int serverPort) throws Exception {
+        // blank
+    }
+
+    /*
+     * Create an instance of SSLContext for client use.
+     */
+    protected SSLContext createClientSSLContext() throws Exception {
+        return createSSLContext(trustedCertStrs,
+                endEntityCertStrs, endEntityPrivateKeys,
+                endEntityPrivateKeyAlgs,
+                endEntityPrivateKeyNames,
+                getClientContextParameters());
+    }
+
+    /*
+     * Create an instance of SSLContext for server use.
+     */
+    protected SSLContext createServerSSLContext() throws Exception {
+        return createSSLContext(trustedCertStrs,
+                endEntityCertStrs, endEntityPrivateKeys,
+                endEntityPrivateKeyAlgs,
+                endEntityPrivateKeyNames,
+                getServerContextParameters());
+    }
+
+    /*
+     * The parameters used to configure SSLContext.
+     */
+    protected static final class ContextParameters {
+        final String contextProtocol;
+        final String tmAlgorithm;
+        final String kmAlgorithm;
+
+        ContextParameters(String contextProtocol,
+                String tmAlgorithm, String kmAlgorithm) {
+
+            this.contextProtocol = contextProtocol;
+            this.tmAlgorithm = tmAlgorithm;
+            this.kmAlgorithm = kmAlgorithm;
+        }
+    }
+
+    /*
+     * Get the client side parameters of SSLContext.
+     */
+    protected ContextParameters getClientContextParameters() {
+        return new ContextParameters("TLS", "PKIX", "NewSunX509");
+    }
+
+    /*
+     * Get the server side parameters of SSLContext.
+     */
+    protected ContextParameters getServerContextParameters() {
+        return new ContextParameters("TLS", "PKIX", "NewSunX509");
+    }
+
+    /*
+     * Does the client side use customized connection other than
+     * explicit Socket.connect(), for example, URL.openConnection()?
+     */
+    protected boolean isCustomizedClientConnection() {
+        return false;
+    }
+
+    /*
+     * Configure the server side socket.
+     */
+    protected void configureServerSocket(SSLServerSocket socket) {
+
+    }
+
+    /*
+     * =============================================
+     * Define the client and server side operations.
+     *
+     * If the client or server is doing some kind of object creation
+     * that the other side depends on, and that thread prematurely
+     * exits, you may experience a hang.  The test harness will
+     * terminate all hung threads after its timeout has expired,
+     * currently 3 minutes by default, but you might try to be
+     * smart about it....
+     */
+
+    /*
+     * Is the server ready to serve?
+     */
+    private final CountDownLatch serverCondition = new CountDownLatch(1);
+
+    /*
+     * Is the client ready to handshake?
+     */
+    private final CountDownLatch clientCondition = new CountDownLatch(1);
+
+    /*
+     * What's the server port?  Use any free port by default
+     */
+    private volatile int serverPort = 0;
+
+    /*
+     * Define the server side of the test.
+     */
+    private void doServerSide() throws Exception {
+        // kick start the server side service
+        SSLContext context = createServerSSLContext();
+        SSLServerSocketFactory sslssf = context.getServerSocketFactory();
+        SSLServerSocket sslServerSocket =
+                (SSLServerSocket)sslssf.createServerSocket(serverPort);
+        configureServerSocket(sslServerSocket);
+        serverPort = sslServerSocket.getLocalPort();
+
+        // Signal the client, the server is ready to accept connection.
+        serverCondition.countDown();
+
+        // Try to accept a connection in 30 seconds.
+        SSLSocket sslSocket;
+        try {
+            sslServerSocket.setSoTimeout(30000);
+            sslSocket = (SSLSocket)sslServerSocket.accept();
+        } catch (SocketTimeoutException ste) {
+            // Ignore the test case if no connection within 30 seconds.
+            System.out.println(
+                "No incoming client connection in 30 seconds. " +
+                "Ignore in server side.");
+            return;
+        } finally {
+            sslServerSocket.close();
+        }
+
+        // handle the connection
+        try {
+            // Is it the expected client connection?
+            //
+            // Naughty test cases or third party routines may try to
+            // connection to this server port unintentionally.  In
+            // order to mitigate the impact of unexpected client
+            // connections and avoid intermittent failure, it should
+            // be checked that the accepted connection is really linked
+            // to the expected client.
+            boolean clientIsReady =
+                    clientCondition.await(30L, TimeUnit.SECONDS);
+
+            if (clientIsReady) {
+                // Run the application in server side.
+                runServerApplication(sslSocket);
+            } else {    // Otherwise, ignore
+                // We don't actually care about plain socket connections
+                // for TLS communication testing generally.  Just ignore
+                // the test if the accepted connection is not linked to
+                // the expected client or the client connection timeout
+                // in 30 seconds.
+                System.out.println(
+                        "The client is not the expected one or timeout. " +
+                        "Ignore in server side.");
+            }
+        } finally {
+            sslSocket.close();
+        }
+    }
+
+    /*
+     * Define the client side of the test.
+     */
+    private void doClientSide() throws Exception {
+
+        // Wait for server to get started.
+        //
+        // The server side takes care of the issue if the server cannot
+        // get started in 90 seconds.  The client side would just ignore
+        // the test case if the serer is not ready.
+        boolean serverIsReady =
+                serverCondition.await(90L, TimeUnit.SECONDS);
+        if (!serverIsReady) {
+            System.out.println(
+                    "The server is not ready yet in 90 seconds. " +
+                    "Ignore in client side.");
+            return;
+        }
+
+        if (isCustomizedClientConnection()) {
+            // Signal the server, the client is ready to communicate.
+            clientCondition.countDown();
+
+            // Run the application in client side.
+            runClientApplication(serverPort);
+
+            return;
+        }
+
+        SSLContext context = createClientSSLContext();
+        SSLSocketFactory sslsf = context.getSocketFactory();
+
+        try (SSLSocket sslSocket = (SSLSocket)sslsf.createSocket()) {
+            try {
+                sslSocket.connect(
+                        new InetSocketAddress("localhost", serverPort), 15000);
+            } catch (IOException ioe) {
+                // The server side may be impacted by naughty test cases or
+                // third party routines, and cannot accept connections.
+                //
+                // Just ignore the test if the connection cannot be
+                // established.
+                System.out.println(
+                        "Cannot make a connection in 15 seconds. " +
+                        "Ignore in client side.");
+                return;
+            }
+
+            // OK, here the client and server get connected.
+
+            // Signal the server, the client is ready to communicate.
+            clientCondition.countDown();
+
+            // There is still a chance in theory that the server thread may
+            // wait client-ready timeout and then quit.  The chance should
+            // be really rare so we don't consider it until it becomes a
+            // real problem.
+
+            // Run the application in client side.
+            runClientApplication(sslSocket);
+        }
+    }
+
+    /*
+     * =============================================
+     * Stuffs to customize the SSLContext instances.
+     */
+
+    /*
+     * =======================================
+     * Certificates and keys used in the test.
+     */
+    // Trusted certificates.
+    private final static String[] trustedCertStrs = {
+        // SHA256withECDSA, curve prime256v1
+        // Validity
+        //     Not Before: May 22 07:18:16 2018 GMT
+        //     Not After : May 17 07:18:16 2038 GMT
+        // Subject Key Identifier:
+        //     60:CF:BD:73:FF:FA:1A:30:D2:A4:EC:D3:49:71:46:EF:1A:35:A0:86
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIIBvjCCAWOgAwIBAgIJAIvFG6GbTroCMAoGCCqGSM49BAMCMDsxCzAJBgNVBAYT\n" +
+        "AlVTMQ0wCwYDVQQKDARKYXZhMR0wGwYDVQQLDBRTdW5KU1NFIFRlc3QgU2VyaXZj\n" +
+        "ZTAeFw0xODA1MjIwNzE4MTZaFw0zODA1MTcwNzE4MTZaMDsxCzAJBgNVBAYTAlVT\n" +
+        "MQ0wCwYDVQQKDARKYXZhMR0wGwYDVQQLDBRTdW5KU1NFIFRlc3QgU2VyaXZjZTBZ\n" +
+        "MBMGByqGSM49AgEGCCqGSM49AwEHA0IABBz1WeVb6gM2mh85z3QlvaB/l11b5h0v\n" +
+        "LIzmkC3DKlVukZT+ltH2Eq1oEkpXuf7QmbM0ibrUgtjsWH3mULfmcWmjUDBOMB0G\n" +
+        "A1UdDgQWBBRgz71z//oaMNKk7NNJcUbvGjWghjAfBgNVHSMEGDAWgBRgz71z//oa\n" +
+        "MNKk7NNJcUbvGjWghjAMBgNVHRMEBTADAQH/MAoGCCqGSM49BAMCA0kAMEYCIQCG\n" +
+        "6wluh1r2/T6L31mZXRKf9JxeSf9pIzoLj+8xQeUChQIhAJ09wAi1kV8yePLh2FD9\n" +
+        "2YEHlSQUAbwwqCDEVB5KxaqP\n" +
+        "-----END CERTIFICATE-----",
+        // -----BEGIN PRIVATE KEY-----
+        // MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg/HcHdoLJCdq3haVd
+        // XZTSKP00YzM3xX97l98vGL/RI1KhRANCAAQc9VnlW+oDNpofOc90Jb2gf5ddW+Yd
+        // LyyM5pAtwypVbpGU/pbR9hKtaBJKV7n+0JmzNIm61ILY7Fh95lC35nFp
+        // -----END PRIVATE KEY-----
+
+        // SHA256withRSA, 2048 bits
+        // Validity
+        //     Not Before: May 22 07:18:16 2018 GMT
+        //     Not After : May 17 07:18:16 2038 GMT
+        // Subject Key Identifier:
+        //     0D:DD:93:C9:FE:4B:BD:35:B7:E8:99:78:90:FB:DB:5A:3D:DB:15:4C
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIIDSTCCAjGgAwIBAgIJAI4ZF3iy8zG+MA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNV\n" +
+        "BAYTAlVTMQ0wCwYDVQQKDARKYXZhMR0wGwYDVQQLDBRTdW5KU1NFIFRlc3QgU2Vy\n" +
+        "aXZjZTAeFw0xODA1MjIwNzE4MTZaFw0zODA1MTcwNzE4MTZaMDsxCzAJBgNVBAYT\n" +
+        "AlVTMQ0wCwYDVQQKDARKYXZhMR0wGwYDVQQLDBRTdW5KU1NFIFRlc3QgU2VyaXZj\n" +
+        "ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALpMcY7aWieXDEM1/YJf\n" +
+        "JW27b4nRIFZyEYhEloyGsKTuQiiQjc8cqRZFNXe2vwziDB4IyTEl0Hjl5QF6ZaQE\n" +
+        "huPzzwvQm1pv64KrRXrmj3FisQK8B5OWLty9xp6xDqsaMRoyObLK+oIb20T5fSlE\n" +
+        "evmo1vYjnh8CX0Yzx5Gr5ye6YSEHQvYOWEws8ad17OlyToR2KMeC8w4qo6rs59pW\n" +
+        "g7Mxn9vo22ImDzrtAbTbXbCias3xlE0Bp0h5luyf+5U4UgksoL9B9r2oP4GrLNEV\n" +
+        "oJk57t8lwaR0upiv3CnS8LcJELpegZub5ggqLY8ZPYFQPjlK6IzLOm6rXPgZiZ3m\n" +
+        "RL0CAwEAAaNQME4wHQYDVR0OBBYEFA3dk8n+S701t+iZeJD721o92xVMMB8GA1Ud\n" +
+        "IwQYMBaAFA3dk8n+S701t+iZeJD721o92xVMMAwGA1UdEwQFMAMBAf8wDQYJKoZI\n" +
+        "hvcNAQELBQADggEBAJTRC3rKUUhVH07/1+stUungSYgpM08dY4utJq0BDk36BbmO\n" +
+        "0AnLDMbkwFdHEoqF6hQIfpm7SQTmXk0Fss6Eejm8ynYr6+EXiRAsaXOGOBCzF918\n" +
+        "/RuKOzqABfgSU4UBKECLM5bMfQTL60qx+HdbdVIpnikHZOFfmjCDVxoHsGyXc1LW\n" +
+        "Jhkht8IGOgc4PMGvyzTtRFjz01kvrVQZ75aN2E0GQv6dCxaEY0i3ypSzjUWAKqDh\n" +
+        "3e2OLwUSvumcdaxyCdZAOUsN6pDBQ+8VRG7KxnlRlY1SMEk46QgQYLbPDe/+W/yH\n" +
+        "ca4PejicPeh+9xRAwoTpiE2gulfT7Lm+fVM7Ruc=\n" +
+        "-----END CERTIFICATE-----",
+        // -----BEGIN PRIVATE KEY-----
+        // MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC6THGO2lonlwxD
+        // Nf2CXyVtu2+J0SBWchGIRJaMhrCk7kIokI3PHKkWRTV3tr8M4gweCMkxJdB45eUB
+        // emWkBIbj888L0Jtab+uCq0V65o9xYrECvAeTli7cvcaesQ6rGjEaMjmyyvqCG9tE
+        // +X0pRHr5qNb2I54fAl9GM8eRq+cnumEhB0L2DlhMLPGndezpck6EdijHgvMOKqOq
+        // 7OfaVoOzMZ/b6NtiJg867QG0212womrN8ZRNAadIeZbsn/uVOFIJLKC/Qfa9qD+B
+        // qyzRFaCZOe7fJcGkdLqYr9wp0vC3CRC6XoGbm+YIKi2PGT2BUD45SuiMyzpuq1z4
+        // GYmd5kS9AgMBAAECggEAFHSoU2MuWwJ+2jJnb5U66t2V1bAcuOE1g5zkWvG/G5z9
+        // rq6Qo5kmB8f5ovdx6tw3MGUOklLwnRXBG3RxDJ1iokz3AvkY1clMNsDPlDsUrQKF
+        // JSO4QUBQTPSZhnsyfR8XHSU+qJ8Y+ohMfzpVv95BEoCzebtXdVgxVegBlcEmVHo2
+        // kMmkRN+bYNsr8eb2r+b0EpyumS39ZgKYh09+cFb78y3T6IFMGcVJTP6nlGBFkmA/
+        // 25pYeCF2tSki08qtMJZQAvKfw0Kviibk7ZxRbJqmc7B1yfnOEHP6ftjuvKl2+RP/
+        // +5P5f8CfIP6gtA0LwSzAqQX/hfIKrGV5j0pCqrD0kQKBgQDeNR6Xi4sXVq79lihO
+        // a1bSeV7r8yoQrS8x951uO+ox+UIZ1MsAULadl7zB/P0er92p198I9M/0Jth3KBuS
+        // zj45mucvpiiGvmQlMKMEfNq4nN7WHOu55kufPswQB2mR4J3xmwI+4fM/nl1zc82h
+        // De8JSazRldJXNhfx0RGFPmgzbwKBgQDWoVXrXLbCAn41oVnWB8vwY9wjt92ztDqJ
+        // HMFA/SUohjePep9UDq6ooHyAf/Lz6oE5NgeVpPfTDkgvrCFVKnaWdwALbYoKXT2W
+        // 9FlyJox6eQzrtHAacj3HJooXWuXlphKSizntfxj3LtMR9BmrmRJOfK+SxNOVJzW2
+        // +MowT20EkwKBgHmpB8jdZBgxI7o//m2BI5Y1UZ1KE5vx1kc7VXzHXSBjYqeV9FeF
+        // 2ZZLP9POWh/1Fh4pzTmwIDODGT2UPhSQy0zq3O0fwkyT7WzXRknsuiwd53u/dejg
+        // iEL2NPAJvulZ2+AuiHo5Z99LK8tMeidV46xoJDDUIMgTG+UQHNGhK5gNAoGAZn/S
+        // Cn7SgMC0CWSvBHnguULXZO9wH1wZAFYNLL44OqwuaIUFBh2k578M9kkke7woTmwx
+        // HxQTjmWpr6qimIuY6q6WBN8hJ2Xz/d1fwhYKzIp20zHuv5KDUlJjbFfqpsuy3u1C
+        // kts5zwI7pr1ObRbDGVyOdKcu7HI3QtR5qqyjwaUCgYABo7Wq6oHva/9V34+G3Goh
+        // 63bYGUnRw2l5BD11yhQv8XzGGZFqZVincD8gltNThB0Dc/BI+qu3ky4YdgdZJZ7K
+        // z51GQGtaHEbrHS5caV79yQ8QGY5mUVH3E+VXSxuIqb6pZq2DH4sTAEFHyncddmOH
+        // zoXBInYwRG9KE/Bw5elhUw==
+        // -----END PRIVATE KEY-----
+
+        // SHA256withDSA, 2048 bits
+        // Validity
+        //     Not Before: May 22 07:18:18 2018 GMT
+        //     Not After : May 17 07:18:18 2038 GMT
+        // Subject Key Identifier:
+        //     76:66:9E:F7:3B:DD:45:E5:3B:D9:72:3C:3F:F0:54:39:86:31:26:53
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIIErjCCBFSgAwIBAgIJAOktYLNCbr02MAsGCWCGSAFlAwQDAjA7MQswCQYDVQQG\n" +
+        "EwJVUzENMAsGA1UECgwESmF2YTEdMBsGA1UECwwUU3VuSlNTRSBUZXN0IFNlcml2\n" +
+        "Y2UwHhcNMTgwNTIyMDcxODE4WhcNMzgwNTE3MDcxODE4WjA7MQswCQYDVQQGEwJV\n" +
+        "UzENMAsGA1UECgwESmF2YTEdMBsGA1UECwwUU3VuSlNTRSBUZXN0IFNlcml2Y2Uw\n" +
+        "ggNHMIICOQYHKoZIzjgEATCCAiwCggEBAO5GyPhSm0ze3LSu+gicdULLj05iOfTL\n" +
+        "UvZQ29sYz41zmqrLBQbdKiHqgJu2Re9sgTb5suLNjF047TOLPnU3jhPtWm2X8Xzi\n" +
+        "VGIcHym/Q/MeZxStt/88seqroI3WOKzIML2GcrishT+lcGrtH36Tf1+ue2Snn3PS\n" +
+        "WyxygNqPjllP5uUjYmFLvAf4QLMldkd/D2VxcwsHjB8y5iUZsXezc/LEhRZS/02m\n" +
+        "ivqlRw3AMkq/OVe/ZtxFWsP0nsfxEGdZuaUFpppGfixxFvymrB3+J51cTt+pZBDq\n" +
+        "D2y0DYfc+88iCs4jwHTfcDIpLb538HBjBj2rEgtQESQmB0ooD/+wsPsCIQC1bYch\n" +
+        "gElNtDYL3FgpLgNSUYp7gIWv9ehaC7LO2z7biQKCAQBitvFOnDkUja8NAF7lDpOV\n" +
+        "b5ipQ8SicBLW3kQamxhyuyxgZyy/PojZ/oPorkqW/T/A0rhnG6MssEpAtdiwVB+c\n" +
+        "rBYGo3bcwmExJhdOJ6dYuKFppPWhCwKMHs9npK+lqBMl8l5j58xlcFeC7ZfGf8GY\n" +
+        "GkhFW0c44vEQhMMbac6ZTTP4mw+1t7xJfmDMlLEyIpTXaAAk8uoVLWzQWnR40sHi\n" +
+        "ybvS0u3JxQkb7/y8tOOZu8qlz/YOS7lQ6UxUGX27Ce1E0+agfPphetoRAlS1cezq\n" +
+        "Wa7r64Ga0nkj1kwkcRqjgTiJx0NwnUXr78VAXFhVF95+O3lfqhvdtEGtkhDGPg7N\n" +
+        "A4IBBgACggEBAMmSHQK0w2i+iqUjOPzn0yNEZrzepLlLeQ1tqtn0xnlv5vBAeefD\n" +
+        "Pm9dd3tZOjufVWP7hhEz8xPobb1CS4e3vuQiv5UBfhdPL3f3l9T7JMAKPH6C9Vve\n" +
+        "OQXE5eGqbjsySbcmseHoYUt1WCSnSda1opX8zchX04e7DhGfE2/L9flpYEoSt8lI\n" +
+        "vMNjgOwvKdW3yvPt1/eBBHYNFG5gWPv/Q5KoyCtHS03uqGm4rNc/wZTIEEfd66C+\n" +
+        "QRaUltjOaHmtwOdDHaNqwhYZSVOip+Mo+TfyzHFREcdHLapo7ZXqbdYkRGxRR3d+\n" +
+        "3DfHaraJO0OKoYlPkr3JMvM/MSGR9AnZOcejUDBOMB0GA1UdDgQWBBR2Zp73O91F\n" +
+        "5TvZcjw/8FQ5hjEmUzAfBgNVHSMEGDAWgBR2Zp73O91F5TvZcjw/8FQ5hjEmUzAM\n" +
+        "BgNVHRMEBTADAQH/MAsGCWCGSAFlAwQDAgNHADBEAiBzriYE41M2y9Hy5ppkL0Qn\n" +
+        "dIlNc8JhXT/PHW7GDtViagIgMko8Qoj9gDGPK3+O9E8DC3wGiiF9CObM4LN387ok\n" +
+        "J+g=\n" +
+        "-----END CERTIFICATE-----"
+        // -----BEGIN PRIVATE KEY-----
+        // MIICZQIBADCCAjkGByqGSM44BAEwggIsAoIBAQDuRsj4UptM3ty0rvoInHVCy49O
+        // Yjn0y1L2UNvbGM+Nc5qqywUG3Soh6oCbtkXvbIE2+bLizYxdOO0ziz51N44T7Vpt
+        // l/F84lRiHB8pv0PzHmcUrbf/PLHqq6CN1jisyDC9hnK4rIU/pXBq7R9+k39frntk
+        // p59z0lsscoDaj45ZT+blI2JhS7wH+ECzJXZHfw9lcXMLB4wfMuYlGbF3s3PyxIUW
+        // Uv9Npor6pUcNwDJKvzlXv2bcRVrD9J7H8RBnWbmlBaaaRn4scRb8pqwd/iedXE7f
+        // qWQQ6g9stA2H3PvPIgrOI8B033AyKS2+d/BwYwY9qxILUBEkJgdKKA//sLD7AiEA
+        // tW2HIYBJTbQ2C9xYKS4DUlGKe4CFr/XoWguyzts+24kCggEAYrbxTpw5FI2vDQBe
+        // 5Q6TlW+YqUPEonAS1t5EGpsYcrssYGcsvz6I2f6D6K5Klv0/wNK4ZxujLLBKQLXY
+        // sFQfnKwWBqN23MJhMSYXTienWLihaaT1oQsCjB7PZ6SvpagTJfJeY+fMZXBXgu2X
+        // xn/BmBpIRVtHOOLxEITDG2nOmU0z+JsPtbe8SX5gzJSxMiKU12gAJPLqFS1s0Fp0
+        // eNLB4sm70tLtycUJG+/8vLTjmbvKpc/2Dku5UOlMVBl9uwntRNPmoHz6YXraEQJU
+        // tXHs6lmu6+uBmtJ5I9ZMJHEao4E4icdDcJ1F6+/FQFxYVRfefjt5X6ob3bRBrZIQ
+        // xj4OzQQjAiEAsceWOM8do4etxp2zgnoNXV8PUUyqWhz1+0srcKV7FR4=
+        // -----END PRIVATE KEY-----
+        };
+
+    // End entity certificate.
+    private final static String[] endEntityCertStrs = {
+        // SHA256withECDSA, curve prime256v1
+        // Validity
+        //     Not Before: May 22 07:18:16 2018 GMT
+        //     Not After : May 17 07:18:16 2038 GMT
+        // Authority Key Identifier:
+        //     60:CF:BD:73:FF:FA:1A:30:D2:A4:EC:D3:49:71:46:EF:1A:35:A0:86
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIIBqjCCAVCgAwIBAgIJAPLY8qZjgNRAMAoGCCqGSM49BAMCMDsxCzAJBgNVBAYT\n" +
+        "AlVTMQ0wCwYDVQQKDARKYXZhMR0wGwYDVQQLDBRTdW5KU1NFIFRlc3QgU2VyaXZj\n" +
+        "ZTAeFw0xODA1MjIwNzE4MTZaFw0zODA1MTcwNzE4MTZaMFUxCzAJBgNVBAYTAlVT\n" +
+        "MQ0wCwYDVQQKDARKYXZhMR0wGwYDVQQLDBRTdW5KU1NFIFRlc3QgU2VyaXZjZTEY\n" +
+        "MBYGA1UEAwwPUmVncmVzc2lvbiBUZXN0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD\n" +
+        "QgAEb+9n05qfXnfHUb0xtQJNS4JeSi6IjOfW5NqchvKnfJey9VkJzR7QHLuOESdf\n" +
+        "xlR7q8YIWgih3iWLGfB+wxHiOqMjMCEwHwYDVR0jBBgwFoAUYM+9c//6GjDSpOzT\n" +
+        "SXFG7xo1oIYwCgYIKoZIzj0EAwIDSAAwRQIgWpRegWXMheiD3qFdd8kMdrkLxRbq\n" +
+        "1zj8nQMEwFTUjjQCIQDRIrAjZX+YXHN9b0SoWWLPUq0HmiFIi8RwMnO//wJIGQ==\n" +
+        "-----END CERTIFICATE-----",
+
+        // SHA256withRSA, 2048 bits
+        // Validity
+        //     Not Before: May 22 07:18:16 2018 GMT
+        //     Not After : May 17 07:18:16 2038 GMT
+        // Authority Key Identifier:
+        //     0D:DD:93:C9:FE:4B:BD:35:B7:E8:99:78:90:FB:DB:5A:3D:DB:15:4C
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIIDNjCCAh6gAwIBAgIJAO2+yPcFryUTMA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNV\n" +
+        "BAYTAlVTMQ0wCwYDVQQKDARKYXZhMR0wGwYDVQQLDBRTdW5KU1NFIFRlc3QgU2Vy\n" +
+        "aXZjZTAeFw0xODA1MjIwNzE4MTZaFw0zODA1MTcwNzE4MTZaMFUxCzAJBgNVBAYT\n" +
+        "AlVTMQ0wCwYDVQQKDARKYXZhMR0wGwYDVQQLDBRTdW5KU1NFIFRlc3QgU2VyaXZj\n" +
+        "ZTEYMBYGA1UEAwwPUmVncmVzc2lvbiBUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOC\n" +
+        "AQ8AMIIBCgKCAQEAszfBobWfZIp8AgC6PiWDDavP65mSvgCXUGxACbxVNAfkLhNR\n" +
+        "QOsHriRB3X1Q3nvO9PetC6wKlvE9jlnDDj7D+1j1r1CHO7ms1fq8rfcQYdkanDtu\n" +
+        "4AlHo8v+SSWX16MIXFRYDj2VVHmyPtgbltcg4zGAuwT746FdLI94uXjJjq1IOr/v\n" +
+        "0VIlwE5ORWH5Xc+5Tj+oFWK0E4a4GHDgtKKhn2m72hN56/GkPKGkguP5NRS1qYYV\n" +
+        "/EFkdyQMOV8J1M7HaicSft4OL6eKjTrgo93+kHk+tv0Dc6cpVBnalX3TorG8QI6B\n" +
+        "cHj1XQd78oAlAC+/jF4pc0mwi0un49kdK9gRfQIDAQABoyMwITAfBgNVHSMEGDAW\n" +
+        "gBQN3ZPJ/ku9NbfomXiQ+9taPdsVTDANBgkqhkiG9w0BAQsFAAOCAQEApXS0nKwm\n" +
+        "Kp8gpmO2yG1rpd1+2wBABiMU4JZaTqmma24DQ3RzyS+V2TeRb29dl5oTUEm98uc0\n" +
+        "GPZvhK8z5RFr4YE17dc04nI/VaNDCw4y1NALXGs+AHkjoPjLyGbWpi1S+gfq2sNB\n" +
+        "Ekkjp6COb/cb9yiFXOGVls7UOIjnVZVd0r7KaPFjZhYh82/f4PA/A1SnIKd1+nfH\n" +
+        "2yk7mSJNC7Z3qIVDL8MM/jBVwiC3uNe5GPB2uwhd7k5LGAVN3j4HQQGB0Sz+VC1h\n" +
+        "92oi6xDa+YBva2fvHuCd8P50DDjxmp9CemC7rnZ5j8egj88w14X44Xjb/Fd/ApG9\n" +
+        "e57NnbT7KM+Grw==\n" +
+        "-----END CERTIFICATE-----",
+
+        // SHA256withRSA, curv prime256v1
+        // Validity
+        //     Not Before: May 22 07:18:16 2018 GMT
+        //     Not After : May 21 07:18:16 2028 GMT
+        // Authority Key Identifier:
+        //     0D:DD:93:C9:FE:4B:BD:35:B7:E8:99:78:90:FB:DB:5A:3D:DB:15:4C
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIICazCCAVOgAwIBAgIJAO2+yPcFryUUMA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNV\n" +
+        "BAYTAlVTMQ0wCwYDVQQKDARKYXZhMR0wGwYDVQQLDBRTdW5KU1NFIFRlc3QgU2Vy\n" +
+        "aXZjZTAeFw0xODA1MjIwNzE4MTZaFw0yODA1MjEwNzE4MTZaMFUxCzAJBgNVBAYT\n" +
+        "AlVTMQ0wCwYDVQQKDARKYXZhMR0wGwYDVQQLDBRTdW5KU1NFIFRlc3QgU2VyaXZj\n" +
+        "ZTEYMBYGA1UEAwwPUmVncmVzc2lvbiBUZXN0MFkwEwYHKoZIzj0CAQYIKoZIzj0D\n" +
+        "AQcDQgAE59MERNTlVZ1eeps8Z3Oue5ZkgQdPtD+WIE6tj3PbIKpxGPDxvfNP959A\n" +
+        "yQjEK/ehWQVrCMmNoEkIzY+IIBgB06MjMCEwHwYDVR0jBBgwFoAUDd2Tyf5LvTW3\n" +
+        "6Jl4kPvbWj3bFUwwDQYJKoZIhvcNAQELBQADggEBAFOTVEqs70ykhZiIdrEsF1Ra\n" +
+        "I3B2rLvwXZk52uSltk2/bzVvewA577ZCoxQ1pL7ynkisPfBN1uVYtHjM1VA3RC+4\n" +
+        "+TAK78dnI7otYjWoHp5rvs4l6c/IbOspS290IlNuDUxMErEm5wxIwj+Aukx/1y68\n" +
+        "hOyCvHBLMY2c1LskH1MMBbDuS1aI+lnGpToi+MoYObxGcV458vxuT8+wwV8Fkpvd\n" +
+        "ll8IIFmeNPRv+1E+lXbES6CSNCVaZ/lFhPgdgYKleN7sfspiz50DG4dqafuEAaX5\n" +
+        "xaK1NWXJxTRz0ROH/IUziyuDW6jphrlgit4+3NCzp6vP9hAJQ8Vhcj0n15BKHIQ=\n" +
+        "-----END CERTIFICATE-----",
+
+        // SHA256withDSA, 2048 bits
+        // Validity
+        //     Not Before: May 22 07:18:20 2018 GMT
+        //     Not After : May 17 07:18:20 2038 GMT
+        // Authority Key Identifier:
+        //     76:66:9E:F7:3B:DD:45:E5:3B:D9:72:3C:3F:F0:54:39:86:31:26:53
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIIEnDCCBEGgAwIBAgIJAP/jh1qVhNVjMAsGCWCGSAFlAwQDAjA7MQswCQYDVQQG\n" +
+        "EwJVUzENMAsGA1UECgwESmF2YTEdMBsGA1UECwwUU3VuSlNTRSBUZXN0IFNlcml2\n" +
+        "Y2UwHhcNMTgwNTIyMDcxODIwWhcNMzgwNTE3MDcxODIwWjBVMQswCQYDVQQGEwJV\n" +
+        "UzENMAsGA1UECgwESmF2YTEdMBsGA1UECwwUU3VuSlNTRSBUZXN0IFNlcml2Y2Ux\n" +
+        "GDAWBgNVBAMMD1JlZ3Jlc3Npb24gVGVzdDCCA0cwggI6BgcqhkjOOAQBMIICLQKC\n" +
+        "AQEAmlavgoJrMcjqWRVcDE2dmWAPREgnzQvneEDef68cprDzjSwvOs5QeFyx75ib\n" +
+        "ado1e6jO/rW1prCGWHDD1oA/Tn4Pk3vu0nUxzvl1qATc+aJbpUU5Op0bvp6LbCsQ\n" +
+        "QslV9FeRh7Eb7bP6gpc/kHCBzEgC1VCK7prccXWy+t6SMOHbND3h+UbckfSaUuaV\n" +
+        "sVJNTD1D6GElfRj4Nmz1BGPfSYvKorwNZEU3gXwFgtDoAcGx7tcyClLpDHfqRfw/\n" +
+        "7yiqLyeiP7D4hl5lMNouJWDlAdMFp0FMgS3s9VDFinIcr6VtBWMTG7+4+czHAB+3\n" +
+        "fvrwlqNzhBn3uFHrekN/w8fNxwIhAJo7Sae1za7IMW0Q6hE5B4b+s2B/FaKPoA4E\n" +
+        "jtZu13B9AoIBAQCOZqLMKfvqZWUgT0PQ3QjR7dAFdd06I9Y3+TOQzZk1+j+vw/6E\n" +
+        "X4vFItX4gihb/u5Q9CdmpwhVGi7bvo+7+/IKeTgoQ6f5+PSug7SrWWUQ5sPwaZui\n" +
+        "zXZJ5nTeZDucFc2yFx0wgnjbPwiUxZklOT7xGiOMtzOTa2koCz5KuIBL+/wPKKxm\n" +
+        "ypo9VoY9xfbdU6LMXZv/lpD5XTM9rYHr/vUTNkukvV6Hpm0YMEWhVZKUJiqCqTqG\n" +
+        "XHaleOxSw6uQWB/+TznifcC7gB48UOQjCqOKf5VuwQneJLhlhU/jhRV3xtr+hLZa\n" +
+        "hW1wYhVi8cjLDrZFKlgEQqhB4crnJU0mJY+tA4IBBQACggEAID0ezl00/X8mv7eb\n" +
+        "bzovum1+DEEP7FM57k6HZEG2N3ve4CW+0m9Cd+cWPz8wkZ+M0j/Eqa6F0IdbkXEc\n" +
+        "Q7CuzvUyJ57xQ3L/WCgXsiS+Bh8O4Mz7GwW22CGmHqafbVv+hKBfr8MkskO6GJUt\n" +
+        "SUF/CVLzB4gMIvZMH26tBP2xK+i7FeEK9kT+nGdzQSZBAhFYpEVCBplHZO24/OYq\n" +
+        "1DNoU327nUuXIhmsfA8N0PjiWbIZIjTPwBGr9H0LpATI7DIDNcvRRvtROP+pBU9y\n" +
+        "fuykPkptg9C0rCM9t06bukpOSaEz/2VIQdLE8fHYFA6pHZ6CIc2+5cfvMgTPhcjz\n" +
+        "W2jCt6MjMCEwHwYDVR0jBBgwFoAUdmae9zvdReU72XI8P/BUOYYxJlMwCwYJYIZI\n" +
+        "AWUDBAMCA0gAMEUCIQCeI5fN08b9BpOaHdc3zQNGjp24FOL/RxlBLeBAorswJgIg\n" +
+        "JEZ8DhYxQy1O7mmZ2UIT7op6epWMB4dENjs0qWPmcKo=\n" +
+        "-----END CERTIFICATE-----"
+        };
+
+    // Private key in the format of PKCS#8.
+    private final static String[] endEntityPrivateKeys = {
+        //
+        // EC private key related to cert endEntityCertStrs[0].
+        //
+        "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgn5K03bpTLjEtFQRa\n" +
+        "JUtx22gtmGEvvSUSQdimhGthdtihRANCAARv72fTmp9ed8dRvTG1Ak1Lgl5KLoiM\n" +
+        "59bk2pyG8qd8l7L1WQnNHtAcu44RJ1/GVHurxghaCKHeJYsZ8H7DEeI6",
+
+        //
+        // RSA private key related to cert endEntityCertStrs[1].
+        //
+        "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCzN8GhtZ9kinwC\n" +
+        "ALo+JYMNq8/rmZK+AJdQbEAJvFU0B+QuE1FA6weuJEHdfVDee870960LrAqW8T2O\n" +
+        "WcMOPsP7WPWvUIc7uazV+ryt9xBh2RqcO27gCUejy/5JJZfXowhcVFgOPZVUebI+\n" +
+        "2BuW1yDjMYC7BPvjoV0sj3i5eMmOrUg6v+/RUiXATk5FYfldz7lOP6gVYrQThrgY\n" +
+        "cOC0oqGfabvaE3nr8aQ8oaSC4/k1FLWphhX8QWR3JAw5XwnUzsdqJxJ+3g4vp4qN\n" +
+        "OuCj3f6QeT62/QNzpylUGdqVfdOisbxAjoFwePVdB3vygCUAL7+MXilzSbCLS6fj\n" +
+        "2R0r2BF9AgMBAAECggEASIkPkMCuw4WdTT44IwERus3IOIYOs2IP3BgEDyyvm4B6\n" +
+        "JP/iihDWKfA4zEl1Gqcni1RXMHswSglXra682J4kui02Ov+vzEeJIY37Ibn2YnP5\n" +
+        "ZjRT2s9GtI/S2o4hl8A/mQb2IMViFC+xKehTukhV4j5d6NPKk0XzLR7gcMjnYxwn\n" +
+        "l21fS6D2oM1xRG/di7sL+uLF8EXLRzfiWDNi12uQv4nwtxPKvuKhH6yzHt7YqMH0\n" +
+        "46pmDKDaxV4w1JdycjCb6NrCJOYZygoQobuZqOQ30UZoZsPJrtovkncFr1e+lNcO\n" +
+        "+aWDfOLCtTH046dEQh5oCShyXMybNlry/QHsOtHOwQKBgQDh2iIjs+FPpQy7Z3EX\n" +
+        "DGEvHYqPjrYO9an2KSRr1m9gzRlWYxKY46WmPKwjMerYtra0GP+TBHrgxsfO8tD2\n" +
+        "wUAII6sd1qup0a/Sutgf2JxVilLykd0+Ge4/Cs51tCdJ8EqDV2B6WhTewOY2EGvg\n" +
+        "JiKYkeNwgRX/9M9CFSAMAk0hUQKBgQDLJAartL3DoGUPjYtpJnfgGM23yAGl6G5r\n" +
+        "NSXDn80BiYIC1p0bG3N0xm3yAjqOtJAUj9jZbvDNbCe3GJfLARMr23legX4tRrgZ\n" +
+        "nEdKnAFKAKL01oM+A5/lHdkwaZI9yyv+hgSVdYzUjB8rDmzeVQzo1BT7vXypt2yV\n" +
+        "6O1OnUpCbQKBgA/0rzDChopv6KRcvHqaX0tK1P0rYeVQqb9ATNhpf9jg5Idb3HZ8\n" +
+        "rrk91BNwdVz2G5ZBpdynFl9G69rNAMJOCM4KZw5mmh4XOEq09Ivba8AHU7DbaTv3\n" +
+        "7QL7KnbaUWRB26HHzIMYVh0el6T+KADf8NXCiMTr+bfpfbL3dxoiF3zhAoGAbCJD\n" +
+        "Qse1dBs/cKYCHfkSOsI5T6kx52Tw0jS6Y4X/FOBjyqr/elyEexbdk8PH9Ar931Qr\n" +
+        "NKMvn8oA4iA/PRrXX7M2yi3YQrWwbkGYWYjtzrzEAdzmg+5eARKAeJrZ8/bg9l3U\n" +
+        "ttKaItJsDPlizn8rngy3FsJpR9aSAMK6/+wOiYkCgYEA1tZkI1rD1W9NYZtbI9BE\n" +
+        "qlJVFi2PBOJMKNuWdouPX3HLQ72GJSQff2BFzLTELjweVVJ0SvY4IipzpQOHQOBy\n" +
+        "5qh/p6izXJZh3IHtvwVBjHoEVplg1b2+I5e3jDCfqnwcQw82dW5SxOJMg1h/BD0I\n" +
+        "qAL3go42DYeYhu/WnECMeis=",
+
+        //
+        // EC private key related to cert endEntityCertStrs[2].
+        //
+        "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgGVc7hICpmp91jbYe\n" +
+        "nrr8nYHD37RZP3VENY+szuA7WjuhRANCAATn0wRE1OVVnV56mzxnc657lmSBB0+0\n" +
+        "P5YgTq2Pc9sgqnEY8PG980/3n0DJCMQr96FZBWsIyY2gSQjNj4ggGAHT",
+
+        //
+        // DSA private key related to cert endEntityCertStrs[3].
+        //
+        "MIICZQIBADCCAjoGByqGSM44BAEwggItAoIBAQCaVq+CgmsxyOpZFVwMTZ2ZYA9E\n" +
+        "SCfNC+d4QN5/rxymsPONLC86zlB4XLHvmJtp2jV7qM7+tbWmsIZYcMPWgD9Ofg+T\n" +
+        "e+7SdTHO+XWoBNz5olulRTk6nRu+notsKxBCyVX0V5GHsRvts/qClz+QcIHMSALV\n" +
+        "UIrumtxxdbL63pIw4ds0PeH5RtyR9JpS5pWxUk1MPUPoYSV9GPg2bPUEY99Ji8qi\n" +
+        "vA1kRTeBfAWC0OgBwbHu1zIKUukMd+pF/D/vKKovJ6I/sPiGXmUw2i4lYOUB0wWn\n" +
+        "QUyBLez1UMWKchyvpW0FYxMbv7j5zMcAH7d++vCWo3OEGfe4Uet6Q3/Dx83HAiEA\n" +
+        "mjtJp7XNrsgxbRDqETkHhv6zYH8Voo+gDgSO1m7XcH0CggEBAI5moswp++plZSBP\n" +
+        "Q9DdCNHt0AV13Toj1jf5M5DNmTX6P6/D/oRfi8Ui1fiCKFv+7lD0J2anCFUaLtu+\n" +
+        "j7v78gp5OChDp/n49K6DtKtZZRDmw/Bpm6LNdknmdN5kO5wVzbIXHTCCeNs/CJTF\n" +
+        "mSU5PvEaI4y3M5NraSgLPkq4gEv7/A8orGbKmj1Whj3F9t1Tosxdm/+WkPldMz2t\n" +
+        "gev+9RM2S6S9XoembRgwRaFVkpQmKoKpOoZcdqV47FLDq5BYH/5POeJ9wLuAHjxQ\n" +
+        "5CMKo4p/lW7BCd4kuGWFT+OFFXfG2v6EtlqFbXBiFWLxyMsOtkUqWARCqEHhyucl\n" +
+        "TSYlj60EIgIgLfA75+8KcKxdN8mr6gzGjQe7jPFGG42Ejhd7Q2F4wuw="
+        };
+
+    // Private key algorithm of endEntityPrivateKeys.
+    private final static String[] endEntityPrivateKeyAlgs = {
+        "EC",
+        "RSA",
+        "EC",
+        "DSA",
+        };
+
+    // Private key names of endEntityPrivateKeys.
+    private final static String[] endEntityPrivateKeyNames = {
+        "ecdsa",
+        "rsa",
+        "ec-rsa",
+        "dsa",
+        };
+
+    /*
+     * Create an instance of SSLContext with the specified trust/key materials.
+     */
+    private SSLContext createSSLContext(
+            String[] trustedMaterials,
+            String[] keyMaterialCerts,
+            String[] keyMaterialKeys,
+            String[] keyMaterialKeyAlgs,
+            String[] keyMaterialKeyNames,
+            ContextParameters params) throws Exception {
+
+        KeyStore ts = null;     // trust store
+        KeyStore ks = null;     // key store
+        char passphrase[] = "passphrase".toCharArray();
+
+        // Generate certificate from cert string.
+        CertificateFactory cf = CertificateFactory.getInstance("X.509");
+
+        // Import the trused certs.
+        ByteArrayInputStream is;
+        if (trustedMaterials != null && trustedMaterials.length != 0) {
+            ts = KeyStore.getInstance("JKS");
+            ts.load(null, null);
+
+            Certificate[] trustedCert =
+                    new Certificate[trustedMaterials.length];
+            for (int i = 0; i < trustedMaterials.length; i++) {
+                String trustedCertStr = trustedMaterials[i];
+
+                is = new ByteArrayInputStream(trustedCertStr.getBytes());
+                try {
+                    trustedCert[i] = cf.generateCertificate(is);
+                } finally {
+                    is.close();
+                }
+
+                ts.setCertificateEntry("trusted-cert-" + i, trustedCert[i]);
+            }
+        }
+
+        // Import the key materials.
+        //
+        // Note that certification pathes bigger than one are not supported yet.
+        boolean hasKeyMaterials =
+            (keyMaterialCerts != null) && (keyMaterialCerts.length != 0) &&
+            (keyMaterialKeys != null) && (keyMaterialKeys.length != 0) &&
+            (keyMaterialKeyAlgs != null) && (keyMaterialKeyAlgs.length != 0) &&
+            (keyMaterialCerts.length == keyMaterialKeys.length) &&
+            (keyMaterialCerts.length == keyMaterialKeyAlgs.length);
+        if (hasKeyMaterials) {
+            ks = KeyStore.getInstance("JKS");
+            ks.load(null, null);
+
+            for (int i = 0; i < keyMaterialCerts.length; i++) {
+                String keyCertStr = keyMaterialCerts[i];
+
+                // generate the private key.
+                PKCS8EncodedKeySpec priKeySpec = new PKCS8EncodedKeySpec(
+                    Base64.getMimeDecoder().decode(keyMaterialKeys[i]));
+                KeyFactory kf =
+                    KeyFactory.getInstance(keyMaterialKeyAlgs[i]);
+                PrivateKey priKey = kf.generatePrivate(priKeySpec);
+
+                // generate certificate chain
+                is = new ByteArrayInputStream(keyCertStr.getBytes());
+                Certificate keyCert = null;
+                try {
+                    keyCert = cf.generateCertificate(is);
+                } finally {
+                    is.close();
+                }
+
+                Certificate[] chain = new Certificate[] { keyCert };
+
+                // import the key entry.
+                ks.setKeyEntry("cert-" + keyMaterialKeyNames[i],
+                        priKey, passphrase, chain);
+            }
+        }
+
+        // Create an SSLContext object.
+        TrustManagerFactory tmf =
+                TrustManagerFactory.getInstance(params.tmAlgorithm);
+        tmf.init(ts);
+
+        SSLContext context = SSLContext.getInstance(params.contextProtocol);
+        if (hasKeyMaterials && ks != null) {
+            KeyManagerFactory kmf =
+                    KeyManagerFactory.getInstance(params.kmAlgorithm);
+            kmf.init(ks, passphrase);
+
+            context.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
+        } else {
+            context.init(null, tmf.getTrustManagers(), null);
+        }
+
+        return context;
+    }
+
+    /*
+     * =================================================
+     * Stuffs to boot up the client-server mode testing.
+     */
+    private Thread clientThread = null;
+    private Thread serverThread = null;
+    private volatile Exception serverException = null;
+    private volatile Exception clientException = null;
+
+    /*
+     * Should we run the client or server in a separate thread?
+     * Both sides can throw exceptions, but do you have a preference
+     * as to which side should be the main thread.
+     */
+    private static final boolean separateServerThread = false;
+
+    /*
+     * Boot up the testing, used to drive remainder of the test.
+     */
+    private void bootup() throws Exception {
+        Exception startException = null;
+        try {
+            if (separateServerThread) {
+                startServer(true);
+                startClient(false);
+            } else {
+                startClient(true);
+                startServer(false);
+            }
+        } catch (Exception e) {
+            startException = e;
+        }
+
+        /*
+         * Wait for other side to close down.
+         */
+        if (separateServerThread) {
+            if (serverThread != null) {
+                serverThread.join();
+            }
+        } else {
+            if (clientThread != null) {
+                clientThread.join();
+            }
+        }
+
+        /*
+         * When we get here, the test is pretty much over.
+         * Which side threw the error?
+         */
+        Exception local;
+        Exception remote;
+
+        if (separateServerThread) {
+            remote = serverException;
+            local = clientException;
+        } else {
+            remote = clientException;
+            local = serverException;
+        }
+
+        Exception exception = null;
+
+        /*
+         * Check various exception conditions.
+         */
+        if ((local != null) && (remote != null)) {
+            // If both failed, return the curthread's exception.
+            local.initCause(remote);
+            exception = local;
+        } else if (local != null) {
+            exception = local;
+        } else if (remote != null) {
+            exception = remote;
+        } else if (startException != null) {
+            exception = startException;
+        }
+
+        /*
+         * If there was an exception *AND* a startException,
+         * output it.
+         */
+        if (exception != null) {
+            if (exception != startException && startException != null) {
+                exception.addSuppressed(startException);
+            }
+            throw exception;
+        }
+
+        // Fall-through: no exception to throw!
+    }
+
+    private void startServer(boolean newThread) throws Exception {
+        if (newThread) {
+            serverThread = new Thread() {
+                @Override
+                public void run() {
+                    try {
+                        doServerSide();
+                    } catch (Exception e) {
+                        /*
+                         * Our server thread just died.
+                         *
+                         * Release the client, if not active already...
+                         */
+                        logException("Server died", e);
+                        serverException = e;
+                    }
+                }
+            };
+            serverThread.start();
+        } else {
+            try {
+                doServerSide();
+            } catch (Exception e) {
+                logException("Server failed", e);
+                serverException = e;
+            }
+        }
+    }
+
+    private void startClient(boolean newThread) throws Exception {
+        if (newThread) {
+            clientThread = new Thread() {
+                @Override
+                public void run() {
+                    try {
+                        doClientSide();
+                    } catch (Exception e) {
+                        /*
+                         * Our client thread just died.
+                         */
+                        logException("Client died", e);
+                        clientException = e;
+                    }
+                }
+            };
+            clientThread.start();
+        } else {
+            try {
+                doClientSide();
+            } catch (Exception e) {
+                logException("Client failed", e);
+                clientException = e;
+            }
+        }
+    }
+
+    private synchronized void logException(String prefix, Throwable cause) {
+        System.out.println(prefix + ": " + cause);
+        cause.printStackTrace(System.out);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/lib/jdk/test/lib/security/TestCertificate.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,175 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.test.lib.security;
+
+import java.io.ByteArrayInputStream;
+import java.security.cert.CertPath;
+import java.security.cert.CertPathValidator;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
+import java.security.cert.PKIXParameters;
+import java.security.cert.TrustAnchor;
+import java.security.cert.X509Certificate;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+// Certificates taken from old ValWithAnchorByName testcase ***
+public enum TestCertificate {
+    // Subject: CN=SSLCertificate, O=SomeCompany
+    // Issuer: CN=Intermediate CA Cert, O=SomeCompany
+    // Validity: Tue Aug 30 14:37:19 PDT 2016 to Wed Aug 30 14:37:19 PDT 2017
+    ONE("1000",
+        "CN=SSLCertificate, O=SomeCompany",
+        "CN=Intermediate CA Cert, O=SomeCompany",
+        -1063259762,
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIIDnTCCAoWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwNTEUMBIGA1UEChMLU29t\n" +
+        "ZUNvbXBhbnkxHTAbBgNVBAMTFEludGVybWVkaWF0ZSBDQSBDZXJ0MB4XDTE2MDgz\n" +
+        "MDIxMzcxOVoXDTE3MDgzMDIxMzcxOVowLzEUMBIGA1UEChMLU29tZUNvbXBhbnkx\n" +
+        "FzAVBgNVBAMTDlNTTENlcnRpZmljYXRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A\n" +
+        "MIIBCgKCAQEAjgv8KKE4CO0rbCjRLA1hXjRiSq30jeusCJ8frbRG+QOBgQ3j6jgc\n" +
+        "vk5wG1aTu7R4AFn0/HRDMzP9ZbRlZVIbJUTd8YiaNyZeyWapPnxHWrPCd5e1xopk\n" +
+        "ElieDdEH5FiLGtIrWy56CGA1hfQb1vUVYegyeY+TTtMFVHt0PrmMk4ZRgj/GtVNp\n" +
+        "BQQYIzaYAcrcWMeCn30ZrhaGAL1hsdgmEVV1wsTD4JeNMSwLwMYem7fg8ondGZIR\n" +
+        "kZuGtuSdOHu4Xz+mgDNXTeX/Bp/dQFucxCG+FOOM9Hoz72RY2W8YqgL38RlnwYWp\n" +
+        "nUNxhXWFH6vyINRQVEu3IgahR6HXjxM7LwIDAQABo4G8MIG5MBQGA1UdEQQNMAuC\n" +
+        "CWxvY2FsaG9zdDAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9s\n" +
+        "b2NhbGhvc3Q6NDIzMzMwHwYDVR0jBBgwFoAUYT525lwHCI4CmuWs8a7poaeKRJ4w\n" +
+        "HQYDVR0OBBYEFCaQnOX4L1ovqyfeKuoay+kI+lXgMA4GA1UdDwEB/wQEAwIFoDAd\n" +
+        "BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEB\n" +
+        "AD8dqQIqFasJcL8lm4mPTsBl0JgNiN8tQcXM7VCvcH+yDvEyh9vudDjuhpSORqPq\n" +
+        "f1o/EvJ+gfs269mBnYQujYRvmSd6EAcBntv5zn6amOh03o6PqTY9KaUC/mL9hB84\n" +
+        "Y5/LYioP16sME7egKnlrGUgKh0ZvGzm7c3SYx3Z5YoeFBOkZajc7Jm+cBw/uBQkF\n" +
+        "a9mLEczIvOgkq1wto8vr2ptH1gEuvFRcorN3muvq34bk40G08+AHlP3fCLFpI3FA\n" +
+        "IStJLJZRcO+Ib4sOcKuaBGnuMo/QVOCEMDUs6RgiWtSd93OZKFIUOASVp6YIkcSs\n" +
+        "5/rmc06sICqBjLfPEB68Jjw=\n" +
+        "-----END CERTIFICATE-----"),
+    // Subject: CN=Intermediate CA Cert, O=SomeCompany
+    // Issuer: CN=Root CA Cert, O=SomeCompany
+    // Validity: Sun Aug 07 14:37:19 PDT 2016 to Tue Aug 07 14:37:19 PDT 2018
+    TWO("64",
+        "CN=Intermediate CA Cert, O=SomeCompany",
+        "CN=Root CA Cert, O=SomeCompany",
+        -927189373,
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIIDdjCCAl6gAwIBAgIBZDANBgkqhkiG9w0BAQsFADAtMRQwEgYDVQQKEwtTb21l\n" +
+        "Q29tcGFueTEVMBMGA1UEAxMMUm9vdCBDQSBDZXJ0MB4XDTE2MDgwNzIxMzcxOVoX\n" +
+        "DTE4MDgwNzIxMzcxOVowNTEUMBIGA1UEChMLU29tZUNvbXBhbnkxHTAbBgNVBAMT\n" +
+        "FEludGVybWVkaWF0ZSBDQSBDZXJ0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\n" +
+        "CgKCAQEAnJR5CnE7GKlQjigExSJ6hHu302mc0PcA6TDgsIitPYD/r8RBbBuE51OQ\n" +
+        "7IP7AXmfPUV3/+pO/uxx6mgY5O6XeUl7KadhVPtPcL0BVVevCSOdTMVa3iV4zRpa\n" +
+        "C6Uy2ouUFnafKnDtlbieggyETUoNgVNJYA9L0XNhtSnENoLHC4Pq0v8OsNtsOWFR\n" +
+        "NiMTOA49NNDBw85WgPyFAxjqO4z0J0zxdWq3W4rSMB8xrkulv2Rvj3GcfYJK/ab8\n" +
+        "V1IJ6PMWCpujASY3BzvYPnN7BKuBjbWJPgZdPYfX1cxeG80u0tOuMfWWiNONSMSA\n" +
+        "7m9y304QA0gKqlrFFn9U4hU89kv1IwIDAQABo4GYMIGVMA8GA1UdEwEB/wQFMAMB\n" +
+        "Af8wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzABhhZodHRwOi8vbG9jYWxob3N0\n" +
+        "OjM5MTM0MB8GA1UdIwQYMBaAFJNMsejEyJUB9tiWycVczvpiMVQZMB0GA1UdDgQW\n" +
+        "BBRhPnbmXAcIjgKa5azxrumhp4pEnjAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcN\n" +
+        "AQELBQADggEBAE4nOFdW9OirPnRvxihQXYL9CXLuGQz5tr0XgN8wSY6Un9b6CRiK\n" +
+        "7obgIGimVdhvUC1qdRcwJqgOfJ2/jR5/5Qo0TVp+ww4dHNdUoj73tagJ7jTu0ZMz\n" +
+        "5Zdp0uwd4RD/syvTeVcbPc3m4awtgEvRgzpDMcSeKPZWInlo7fbnowKSAUAfO8de\n" +
+        "0cDkxEBkzPIzGNu256cdLZOqOK9wLJ9mQ0zKgi/2NsldNc2pl/6jkGpA6uL5lJsm\n" +
+        "fo9sDusWNHV1YggqjDQ19hrf40VuuC9GFl/qAW3marMuEzY/NiKVUxty1q1s48SO\n" +
+        "g5LoEPDDkbygOt7ICL3HYG1VufhC1Q2YY9c=\n" +
+        "-----END CERTIFICATE-----"),
+    // Subject: CN=Root CA Cert, O=SomeCompany
+    // Issuer: CN=Root CA Cert, O=SomeCompany
+    // Validity: Fri Jul 08 14:37:18 PDT 2016 to Fri Jun 28 14:37:18 PDT 2019
+    ROOT_CA("1",
+        "CN=Root CA Cert, O=SomeCompany",
+        "CN=Root CA Cert, O=SomeCompany",
+        -1299818863,
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIIDODCCAiCgAwIBAgIBATANBgkqhkiG9w0BAQsFADAtMRQwEgYDVQQKEwtTb21l\n" +
+        "Q29tcGFueTEVMBMGA1UEAxMMUm9vdCBDQSBDZXJ0MB4XDTE2MDcwODIxMzcxOFoX\n" +
+        "DTE5MDYyODIxMzcxOFowLTEUMBIGA1UEChMLU29tZUNvbXBhbnkxFTATBgNVBAMT\n" +
+        "DFJvb3QgQ0EgQ2VydDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIlN\n" +
+        "M3WYEqkU2elXEZrV9QSDbDKwyaLEHafLFciH8Edoag3q/7jEzFJxI7JZ831tdbWQ\n" +
+        "Bm6Hgo+8pvetOFW1BckL8eIjyOONP2CKfFaeMaozsWi1cgxa+rjpU/Rekc+zBqvv\n" +
+        "y4Sr97TwT6nQiLlgjC1nCfR1SVpO51qoDChS7n785rsKEZxw/p+kkVWSZffU7zN9\n" +
+        "c645cPg//L/kjiyeKMkaquGQOYS68gQgy8YZXQv1E3l/8e8Ci1s1DYA5wpCbaBqg\n" +
+        "Tw84Rr4zlUEQBgXzQlRt+mPzeaDpdG1EeGkXrcdkZ+0EMELoOVXOEn6VNsz6vT3I\n" +
+        "KrnvQBSnN06xq/iWwC0CAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSME\n" +
+        "GDAWgBSTTLHoxMiVAfbYlsnFXM76YjFUGTAdBgNVHQ4EFgQUk0yx6MTIlQH22JbJ\n" +
+        "xVzO+mIxVBkwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4IBAQAAi+Nl\n" +
+        "sxP9t2IhiZIHRJGSBZuQlXIjwYIwbq3ZWc/ApZ+0oxtl7DYQi5uRNt8/opcGNCHc\n" +
+        "IY0fG93SbkDubXbxPYBW6D/RUjbz59ZryaP5ym55p1MjHTOqy+AM8g41xNTJikc3\n" +
+        "UUFXXnckeFbawijCsb7vf71owzKuxgBXi9n1rmXXtncKoA/LrUVXoUlKefdgDnsU\n" +
+        "sl3Q29eibE3HSqziMMoAOLm0jjekFGWIgLeTtyRYR1d0dNaUwsHTrQpPjxxUTn1x\n" +
+        "sAPpXKfzPnsYAZeeiaaE75GwbWlHzrNinvxdZQd0zctpfBJfVqD/+lWANlw+rOaK\n" +
+        "J2GyCaJINsyaI/I2\n" +
+        "-----END CERTIFICATE-----");
+
+    public String serialNumber;
+    public String algorithm;
+    public String subject;
+    public String issuer;
+    public String keyType;
+    public long certId;
+    public int keyLength;
+    public String encoded;
+
+    TestCertificate(String serialNumber, String subject, String issuer,
+                    long certId, String encoded) {
+        this.serialNumber = serialNumber;
+        this.subject = subject;
+        this.issuer = issuer;
+        this.algorithm = "SHA256withRSA";
+        this.encoded = encoded;
+        this.certId = certId;
+        this.keyType = "RSA";
+        this.keyLength = 2048;
+    }
+
+    public X509Certificate generate(CertificateFactory cf) throws CertificateException {
+        ByteArrayInputStream is = new ByteArrayInputStream(encoded.getBytes());
+        return (X509Certificate) cf.generateCertificate(is);
+    }
+
+    public static void generateChain(boolean selfSignedTest) throws Exception {
+        // Do path validation as if it is always Tue, 06 Sep 2016 22:12:21 GMT
+        // This value is within the lifetimes of all certificates.
+        Date testDate = new Date(1473199941000L);
+
+        CertificateFactory cf = CertificateFactory.getInstance("X.509");
+        X509Certificate c1 = TestCertificate.ONE.generate(cf);
+        X509Certificate c2 = TestCertificate.TWO.generate(cf);
+        X509Certificate ca = TestCertificate.ROOT_CA.generate(cf);
+
+        TrustAnchor ta = new TrustAnchor(ca, null);
+        CertPathValidator validator = CertPathValidator.getInstance("PKIX");
+
+        PKIXParameters params = new PKIXParameters(Collections.singleton(ta));
+        params.setRevocationEnabled(false);
+        params.setDate(testDate);
+        if (!selfSignedTest) {
+            CertPath path = cf.generateCertPath(List.of(c1, c2));
+            validator.validate(path, params);
+        } else {
+            CertPath path = cf.generateCertPath(List.of(ca));
+            validator.validate(path, params);
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/lib/jdk/test/lib/security/TestTLSHandshake.java	Wed Nov 21 13:53:17 2018 -0500
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.test.lib.security;
+
+import java.io.*;
+
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.SSLSocket;
+
+
+public final class TestTLSHandshake extends SSLSocketTest {
+
+    public static final String CIPHER_SUITE =
+        "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384";
+    public static final long HASHCODE = -1057291798L;
+    public static final long ANCHOR_HASHCODE = 1688661792L;
+    public static final String CERT_SERIAL = "edbec8f705af2514";
+    public static final String ANCHOR_CERT_SERIAL = "8e191778b2f331be";
+
+    public String protocolVersion;
+    public String peerHost;
+    public int peerPort;
+
+    @Override
+    protected void runServerApplication(SSLSocket socket) throws Exception {
+        InputStream sslIS = socket.getInputStream();
+        OutputStream sslOS = socket.getOutputStream();
+
+        sslIS.read();
+        sslOS.write(85);
+        sslOS.flush();
+    }
+
+    @Override
+    protected void runClientApplication(SSLSocket socket) throws Exception {
+        socket.setEnabledCipherSuites(new String[] { CIPHER_SUITE });
+        InputStream sslIS = socket.getInputStream();
+        OutputStream sslOS = socket.getOutputStream();
+
+        sslOS.write(280);
+        sslOS.flush();
+        sslIS.read();
+
+        SSLSession sslSession = socket.getSession();
+        protocolVersion =  sslSession.getProtocol();
+        peerHost = sslSession.getPeerHost();
+        peerPort = sslSession.getPeerPort();
+    }
+}