aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/MANIFEST.json1398
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/border-color-interpolation.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/border-image-outset-interpolation.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/border-image-slice-interpolation.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/border-image-source-interpolation.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/border-image-width-interpolation.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/border-radius-interpolation.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/border-width-interpolation.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/parsing/border-image-source-computed.sub.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-001.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-002.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-003.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-004.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-005.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-006.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/transform-origin-interpolation.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-variables/variable-substitution-background-properties.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/getBoundingClientRect-empty-inline.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom-view/idlharness.html.ini301
-rw-r--r--tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini2
-rw-r--r--tests/wpt/metadata/css/cssom/idlharness.html.ini496
-rw-r--r--tests/wpt/metadata/css/filter-effects/idlharness.any.js.ini1374
-rw-r--r--tests/wpt/metadata/css/mediaqueries/aspect-ratio-005.html.ini2
-rw-r--r--tests/wpt/metadata/css/mediaqueries/aspect-ratio-006.html.ini2
-rw-r--r--tests/wpt/metadata/css/mediaqueries/test_media_queries.html.ini186
-rw-r--r--tests/wpt/metadata/dom/ranges/StaticRange-constructor.html.ini52
-rw-r--r--tests/wpt/metadata/domparsing/idlharness.window.js.ini4
-rw-r--r--tests/wpt/metadata/fetch/api/idlharness.any.js.ini175
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini12
-rw-r--r--tests/wpt/metadata/fetch/content-type/script.window.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain_feature_policy.tentative.sub.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/windows/document-access/document_access_feature_policy.tentative.sub.html.ini7
-rw-r--r--tests/wpt/metadata/html/browsers/windows/document-access/document_access_parent_access.tentative.html.ini4
-rw-r--r--tests/wpt/metadata/html/dom/idlharness.https.html.ini5180
-rw-r--r--tests/wpt/metadata/html/dom/idlharness.worker.js.ini718
-rw-r--r--tests/wpt/metadata/html/rendering/non-replaced-elements/form-controls/resets.html.ini4
-rw-r--r--tests/wpt/metadata/html/rendering/non-replaced-elements/form-controls/text-transform.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini4
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini4
-rw-r--r--tests/wpt/metadata/permissions/idlharness.any.js.ini10
-rw-r--r--tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini3
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini6
-rw-r--r--tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini2
-rw-r--r--tests/wpt/metadata/xhr/xmlhttprequest-sync-default-feature-policy.sub.html.ini3
-rw-r--r--tests/wpt/web-platform-tests/BackgroundSync/idlharness.https.any.js (renamed from tests/wpt/web-platform-tests/BackgroundSync/interfaces.https.any.js)0
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/frame-ancestors/support/frame-ancestors-test.sub.js3
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/inside-worker/support/connect-src-self.sub.js37
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/linebox/scrollable-overflow.tentative.html10
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-color-interpolation.html120
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-outset-interpolation.html125
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-slice-interpolation.html175
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-source-interpolation.html82
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-width-interpolation.html192
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-radius-interpolation.html141
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-width-interpolation.html175
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-source-computed.sub.html10
-rw-r--r--tests/wpt/web-platform-tests/css/css-properties-values-api/register-property-syntax-parsing.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/first-letter-property-whitelist.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-001.html252
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-002.html151
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-003.html128
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-004.html187
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-005.html268
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-006.html100
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/animation/transform-origin-interpolation.html125
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/idlharness.html (renamed from tests/wpt/web-platform-tests/css/css-typed-om/interfaces.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/css-variables/variable-substitution-background-properties.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001.html1557
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001a.html161
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001b.html181
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001c.html176
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001d.html153
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001e.html175
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001f.html197
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001g.html155
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001h.html131
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001i.html78
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001j.html151
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001k.html148
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001l.html137
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001m.html144
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001n.html133
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001o.html49
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001p.html59
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001q.html73
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/README.md1
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/gulpfile.js18
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/text-orientation-generator.js190
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/text-orientation-ref.ejs36
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/text-orientation-script.ejs53
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/ucd/Blocks.txt309
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/ucd/DerivedGeneralCategory.txt3878
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/ucd/VerticalOrientation-16.txt1033
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/unicode-data.js170
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/getBoundingClientRect-empty-inline.html32
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/idlharness.html (renamed from tests/wpt/web-platform-tests/css/cssom-view/interfaces.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/idlharness.html (renamed from tests/wpt/web-platform-tests/css/cssom/interfaces.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/idlharness.any.js (renamed from tests/wpt/web-platform-tests/css/filter-effects/interfaces.any.js)0
-rw-r--r--tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-001.html3
-rw-r--r--tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-003.html4
-rw-r--r--tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-005.html26
-rw-r--r--tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-006.html26
-rw-r--r--tests/wpt/web-platform-tests/css/mediaqueries/test_media_queries.html5
-rw-r--r--tests/wpt/web-platform-tests/dom/ranges/StaticRange-constructor.html200
-rw-r--r--tests/wpt/web-platform-tests/domparsing/idlharness.window.js (renamed from tests/wpt/web-platform-tests/domparsing/interfaces.any.js)0
-rw-r--r--tests/wpt/web-platform-tests/element-timing/text-with-display-style.html56
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/resources/featurepolicy.js10
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/idlharness.any.js (renamed from tests/wpt/web-platform-tests/fetch/api/idl.any.js)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/windows/document-access/document_access_feature_policy.tentative.sub.html28
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/windows/document-access/document_access_parent_access.tentative.html25
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/windows/document-access/resources/child.html6
-rw-r--r--tests/wpt/web-platform-tests/html/dom/idlharness.https.html (renamed from tests/wpt/web-platform-tests/html/dom/interfaces.https.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/dom/idlharness.worker.js (renamed from tests/wpt/web-platform-tests/html/dom/interfaces.worker.js)0
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/resets.html130
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/text-transform-ref.html39
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/text-transform.html40
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/srcdoc_change_hash.html73
-rw-r--r--tests/wpt/web-platform-tests/interfaces/css-fonts.idl9
-rw-r--r--tests/wpt/web-platform-tests/interfaces/dom.idl10
-rw-r--r--tests/wpt/web-platform-tests/interfaces/web-nfc.idl2
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webaudio.idl36
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webauthn.idl7
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webgl1.idl88
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webgl2.idl188
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl1
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webxr.idl8
-rw-r--r--tests/wpt/web-platform-tests/kv-storage/secure-context/import-maps.html6
-rw-r--r--tests/wpt/web-platform-tests/kv-storage/secure-context/import-statement.html13
-rw-r--r--tests/wpt/web-platform-tests/largest-contentful-paint/contracted-image.html18
-rw-r--r--tests/wpt/web-platform-tests/largest-contentful-paint/cross-origin-image.sub.html15
-rw-r--r--tests/wpt/web-platform-tests/largest-contentful-paint/expanded-image.html18
-rw-r--r--tests/wpt/web-platform-tests/largest-contentful-paint/first-letter-background.html22
-rw-r--r--tests/wpt/web-platform-tests/largest-contentful-paint/image-TAO.sub.html24
-rw-r--r--tests/wpt/web-platform-tests/largest-contentful-paint/image-src-change.html32
-rw-r--r--tests/wpt/web-platform-tests/largest-contentful-paint/invisible-images.html14
-rw-r--r--tests/wpt/web-platform-tests/largest-contentful-paint/larger-image.html23
-rw-r--r--tests/wpt/web-platform-tests/largest-contentful-paint/loadTime-after-appendChild.html16
-rw-r--r--tests/wpt/web-platform-tests/largest-contentful-paint/observe-after-untrusted-scroll.html27
-rw-r--r--tests/wpt/web-platform-tests/largest-contentful-paint/observe-image.html26
-rw-r--r--tests/wpt/web-platform-tests/largest-contentful-paint/repeated-image.html36
-rw-r--r--tests/wpt/web-platform-tests/largest-contentful-paint/resources/largest-contentful-paint-helpers.js32
-rw-r--r--tests/wpt/web-platform-tests/largest-contentful-paint/text-with-display-style.html77
-rw-r--r--tests/wpt/web-platform-tests/largest-contentful-paint/video-poster.html26
-rw-r--r--tests/wpt/web-platform-tests/longtask-timing/long-microtask.window.js29
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-001.html19
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/not-participating-to-parent-layout.html7
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/writing-mode/writing-mode-001.tentative.html111
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/writing-mode/writing-mode-002.tentative.html88
-rw-r--r--tests/wpt/web-platform-tests/permissions/idlharness.any.js (renamed from tests/wpt/web-platform-tests/permissions/interfaces.any.js)0
-rw-r--r--tests/wpt/web-platform-tests/pointerlock/idlharness.window.js (renamed from tests/wpt/web-platform-tests/pointerlock/interfaces.window.js)0
-rw-r--r--tests/wpt/web-platform-tests/resources/SVGAnimationTestCase-testharness.js9
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/webxr-test.js24
-rw-r--r--tests/wpt/web-platform-tests/resources/testdriver-actions.js14
-rw-r--r--tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment-target.html5
-rw-r--r--tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment.html1
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/getregistrations.https.html272
-rw-r--r--tests/wpt/web-platform-tests/service-workers/specgen.json658
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-3.1-service-worker-obj.html63
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-3.1.1-service-worker-scope.html46
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-3.1.2-service-worker-url.html43
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-3.1.3-service-worker-state.html76
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-3.1.4-service-worker-on-state-change.html35
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-3.2-navigator-service-worker.html84
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-3.2.1-navigator-service-worker-installing.html43
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-3.2.10-navigator-service-worker-oncontrollerchange.html45
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-3.2.11-navigator-service-worker-onreloadpage.html41
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-3.2.12-navigator-service-worker-onerror.html37
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-3.2.2-navigator-service-worker-waiting.html34
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-3.2.3-navigator-service-worker-active.html40
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-3.2.4-navigator-service-worker-controller.html37
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-3.2.5-navigator-service-worker-ready.html67
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-3.2.6-navigator-service-worker-getAll.html30
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-3.2.7-navigator-service-worker-register.html32
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-3.2.8-navigator-service-worker-unregister.html31
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-3.2.9-navigator-service-worker-onupdatefound.html42
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.1-service-worker-global-scope.html75
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.1.1-service-worker-global-scope-caches.html36
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.1.2-service-worker-global-scope-clients.html33
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.1.3-service-worker-global-scope-scope.html36
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.1.4-service-worker-global-scope-fetch.html55
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.1.5-service-worker-global-scope-update.html36
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.1.6-service-worker-global-scope-unregister.html31
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.1.7-service-worker-global-scope-onmessage.html45
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.2-client.html61
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.3-service-worker-clients.html48
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.3.1-get-serviced-method.html34
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.3.2-reloadall-method.html37
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.4-request-objects.html72
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.5-response-objects.html75
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.5.2-response.html36
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.5.4-opaque-response.html36
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.6-cache-objects.html37
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.6.1-cache-lifetimes.html38
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.6.2-cache.html64
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.6.3-cache-storage.html62
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.7.1-install-phase-event.html51
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.7.1.1-wait-until-method.html39
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.7.2-install-event.html35
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.7.2.1-install-event-section.html47
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.7.2.2-replace-method.html38
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.7.3-activate-event.html41
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.7.4.1-fetch-event-section.html71
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.7.4.2-respond-with-method.html46
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.7.4.3-default-method.html52
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-4.7.4.4-is-reload-attribute.html32
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-5.1-origin-relativity.html35
-rw-r--r--tests/wpt/web-platform-tests/service-workers/stub-5.2-cross-origin-resources.html48
-rw-r--r--tests/wpt/web-platform-tests/svg/animations/repeatn-remove-add-animation.html48
-rw-r--r--tests/wpt/web-platform-tests/svg/animations/slider-switch.html41
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html4
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/timelines/document-timelines.html6
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NFCReader.https.html79
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NFCReader_options.https.html88
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js32
222 files changed, 12778 insertions, 14479 deletions
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index de5217e8a5c..2843ff8414b 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -55641,6 +55641,18 @@
{}
]
],
+ "css/CSS2/linebox/scrollable-overflow.tentative.html": [
+ [
+ "css/CSS2/linebox/scrollable-overflow.tentative.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/CSS2/linebox/vertical-align-004.xht": [
[
"css/CSS2/linebox/vertical-align-004.xht",
@@ -181829,6 +181841,30 @@
{}
]
],
+ "css/mediaqueries/aspect-ratio-005.html": [
+ [
+ "css/mediaqueries/aspect-ratio-005.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/mediaqueries/aspect-ratio-006.html": [
+ [
+ "css/mediaqueries/aspect-ratio-006.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/mediaqueries/device-aspect-ratio-001.html": [
[
"css/mediaqueries/device-aspect-ratio-001.html",
@@ -201809,6 +201845,18 @@
{}
]
],
+ "html/rendering/non-replaced-elements/form-controls/text-transform.html": [
+ [
+ "html/rendering/non-replaced-elements/form-controls/text-transform.html",
+ [
+ [
+ "/html/rendering/non-replaced-elements/form-controls/text-transform-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"html/rendering/non-replaced-elements/lists/li-type-supported-xhtml.xhtml": [
[
"html/rendering/non-replaced-elements/lists/li-type-supported-xhtml.xhtml",
@@ -211934,308 +211982,6 @@
]
]
},
- "stub": {
- "service-workers/stub-3.1-service-worker-obj.html": [
- [
- "service-workers/stub-3.1-service-worker-obj.html",
- {}
- ]
- ],
- "service-workers/stub-3.1.1-service-worker-scope.html": [
- [
- "service-workers/stub-3.1.1-service-worker-scope.html",
- {}
- ]
- ],
- "service-workers/stub-3.1.2-service-worker-url.html": [
- [
- "service-workers/stub-3.1.2-service-worker-url.html",
- {}
- ]
- ],
- "service-workers/stub-3.1.3-service-worker-state.html": [
- [
- "service-workers/stub-3.1.3-service-worker-state.html",
- {}
- ]
- ],
- "service-workers/stub-3.1.4-service-worker-on-state-change.html": [
- [
- "service-workers/stub-3.1.4-service-worker-on-state-change.html",
- {}
- ]
- ],
- "service-workers/stub-3.2-navigator-service-worker.html": [
- [
- "service-workers/stub-3.2-navigator-service-worker.html",
- {}
- ]
- ],
- "service-workers/stub-3.2.1-navigator-service-worker-installing.html": [
- [
- "service-workers/stub-3.2.1-navigator-service-worker-installing.html",
- {}
- ]
- ],
- "service-workers/stub-3.2.10-navigator-service-worker-oncontrollerchange.html": [
- [
- "service-workers/stub-3.2.10-navigator-service-worker-oncontrollerchange.html",
- {}
- ]
- ],
- "service-workers/stub-3.2.11-navigator-service-worker-onreloadpage.html": [
- [
- "service-workers/stub-3.2.11-navigator-service-worker-onreloadpage.html",
- {}
- ]
- ],
- "service-workers/stub-3.2.12-navigator-service-worker-onerror.html": [
- [
- "service-workers/stub-3.2.12-navigator-service-worker-onerror.html",
- {}
- ]
- ],
- "service-workers/stub-3.2.2-navigator-service-worker-waiting.html": [
- [
- "service-workers/stub-3.2.2-navigator-service-worker-waiting.html",
- {}
- ]
- ],
- "service-workers/stub-3.2.3-navigator-service-worker-active.html": [
- [
- "service-workers/stub-3.2.3-navigator-service-worker-active.html",
- {}
- ]
- ],
- "service-workers/stub-3.2.4-navigator-service-worker-controller.html": [
- [
- "service-workers/stub-3.2.4-navigator-service-worker-controller.html",
- {}
- ]
- ],
- "service-workers/stub-3.2.5-navigator-service-worker-ready.html": [
- [
- "service-workers/stub-3.2.5-navigator-service-worker-ready.html",
- {}
- ]
- ],
- "service-workers/stub-3.2.6-navigator-service-worker-getAll.html": [
- [
- "service-workers/stub-3.2.6-navigator-service-worker-getAll.html",
- {}
- ]
- ],
- "service-workers/stub-3.2.7-navigator-service-worker-register.html": [
- [
- "service-workers/stub-3.2.7-navigator-service-worker-register.html",
- {}
- ]
- ],
- "service-workers/stub-3.2.8-navigator-service-worker-unregister.html": [
- [
- "service-workers/stub-3.2.8-navigator-service-worker-unregister.html",
- {}
- ]
- ],
- "service-workers/stub-3.2.9-navigator-service-worker-onupdatefound.html": [
- [
- "service-workers/stub-3.2.9-navigator-service-worker-onupdatefound.html",
- {}
- ]
- ],
- "service-workers/stub-4.1-service-worker-global-scope.html": [
- [
- "service-workers/stub-4.1-service-worker-global-scope.html",
- {}
- ]
- ],
- "service-workers/stub-4.1.1-service-worker-global-scope-caches.html": [
- [
- "service-workers/stub-4.1.1-service-worker-global-scope-caches.html",
- {}
- ]
- ],
- "service-workers/stub-4.1.2-service-worker-global-scope-clients.html": [
- [
- "service-workers/stub-4.1.2-service-worker-global-scope-clients.html",
- {}
- ]
- ],
- "service-workers/stub-4.1.3-service-worker-global-scope-scope.html": [
- [
- "service-workers/stub-4.1.3-service-worker-global-scope-scope.html",
- {}
- ]
- ],
- "service-workers/stub-4.1.4-service-worker-global-scope-fetch.html": [
- [
- "service-workers/stub-4.1.4-service-worker-global-scope-fetch.html",
- {}
- ]
- ],
- "service-workers/stub-4.1.5-service-worker-global-scope-update.html": [
- [
- "service-workers/stub-4.1.5-service-worker-global-scope-update.html",
- {}
- ]
- ],
- "service-workers/stub-4.1.6-service-worker-global-scope-unregister.html": [
- [
- "service-workers/stub-4.1.6-service-worker-global-scope-unregister.html",
- {}
- ]
- ],
- "service-workers/stub-4.1.7-service-worker-global-scope-onmessage.html": [
- [
- "service-workers/stub-4.1.7-service-worker-global-scope-onmessage.html",
- {}
- ]
- ],
- "service-workers/stub-4.2-client.html": [
- [
- "service-workers/stub-4.2-client.html",
- {}
- ]
- ],
- "service-workers/stub-4.3-service-worker-clients.html": [
- [
- "service-workers/stub-4.3-service-worker-clients.html",
- {}
- ]
- ],
- "service-workers/stub-4.3.1-get-serviced-method.html": [
- [
- "service-workers/stub-4.3.1-get-serviced-method.html",
- {}
- ]
- ],
- "service-workers/stub-4.3.2-reloadall-method.html": [
- [
- "service-workers/stub-4.3.2-reloadall-method.html",
- {}
- ]
- ],
- "service-workers/stub-4.4-request-objects.html": [
- [
- "service-workers/stub-4.4-request-objects.html",
- {}
- ]
- ],
- "service-workers/stub-4.5-response-objects.html": [
- [
- "service-workers/stub-4.5-response-objects.html",
- {}
- ]
- ],
- "service-workers/stub-4.5.2-response.html": [
- [
- "service-workers/stub-4.5.2-response.html",
- {}
- ]
- ],
- "service-workers/stub-4.5.4-opaque-response.html": [
- [
- "service-workers/stub-4.5.4-opaque-response.html",
- {}
- ]
- ],
- "service-workers/stub-4.6-cache-objects.html": [
- [
- "service-workers/stub-4.6-cache-objects.html",
- {}
- ]
- ],
- "service-workers/stub-4.6.1-cache-lifetimes.html": [
- [
- "service-workers/stub-4.6.1-cache-lifetimes.html",
- {}
- ]
- ],
- "service-workers/stub-4.6.2-cache.html": [
- [
- "service-workers/stub-4.6.2-cache.html",
- {}
- ]
- ],
- "service-workers/stub-4.6.3-cache-storage.html": [
- [
- "service-workers/stub-4.6.3-cache-storage.html",
- {}
- ]
- ],
- "service-workers/stub-4.7.1-install-phase-event.html": [
- [
- "service-workers/stub-4.7.1-install-phase-event.html",
- {}
- ]
- ],
- "service-workers/stub-4.7.1.1-wait-until-method.html": [
- [
- "service-workers/stub-4.7.1.1-wait-until-method.html",
- {}
- ]
- ],
- "service-workers/stub-4.7.2-install-event.html": [
- [
- "service-workers/stub-4.7.2-install-event.html",
- {}
- ]
- ],
- "service-workers/stub-4.7.2.1-install-event-section.html": [
- [
- "service-workers/stub-4.7.2.1-install-event-section.html",
- {}
- ]
- ],
- "service-workers/stub-4.7.2.2-replace-method.html": [
- [
- "service-workers/stub-4.7.2.2-replace-method.html",
- {}
- ]
- ],
- "service-workers/stub-4.7.3-activate-event.html": [
- [
- "service-workers/stub-4.7.3-activate-event.html",
- {}
- ]
- ],
- "service-workers/stub-4.7.4.1-fetch-event-section.html": [
- [
- "service-workers/stub-4.7.4.1-fetch-event-section.html",
- {}
- ]
- ],
- "service-workers/stub-4.7.4.2-respond-with-method.html": [
- [
- "service-workers/stub-4.7.4.2-respond-with-method.html",
- {}
- ]
- ],
- "service-workers/stub-4.7.4.3-default-method.html": [
- [
- "service-workers/stub-4.7.4.3-default-method.html",
- {}
- ]
- ],
- "service-workers/stub-4.7.4.4-is-reload-attribute.html": [
- [
- "service-workers/stub-4.7.4.4-is-reload-attribute.html",
- {}
- ]
- ],
- "service-workers/stub-5.1-origin-relativity.html": [
- [
- "service-workers/stub-5.1-origin-relativity.html",
- {}
- ]
- ],
- "service-workers/stub-5.2-cross-origin-resources.html": [
- [
- "service-workers/stub-5.2-cross-origin-resources.html",
- {}
- ]
- ]
- },
"support": {
".azure-pipelines.yml": [
[]
@@ -261293,27 +261039,6 @@
"css/css-writing-modes/tools/generators/package.json": [
[]
],
- "css/css-writing-modes/tools/generators/text-orientation-generator.js": [
- []
- ],
- "css/css-writing-modes/tools/generators/text-orientation-ref.ejs": [
- []
- ],
- "css/css-writing-modes/tools/generators/text-orientation-script.ejs": [
- []
- ],
- "css/css-writing-modes/tools/generators/ucd/Blocks.txt": [
- []
- ],
- "css/css-writing-modes/tools/generators/ucd/DerivedGeneralCategory.txt": [
- []
- ],
- "css/css-writing-modes/tools/generators/ucd/VerticalOrientation-16.txt": [
- []
- ],
- "css/css-writing-modes/tools/generators/unicode-data.js": [
- []
- ],
"css/css-writing-modes/vertical-alignment-002-ref.xht": [
[]
],
@@ -269252,6 +268977,9 @@
"html/browsers/windows/browsing-context-names/resources/report-is-top.html": [
[]
],
+ "html/browsers/windows/document-access/resources/child.html": [
+ []
+ ],
"html/browsers/windows/nested-browsing-contexts/resources/frameElement-nested-frame.html": [
[]
],
@@ -272558,6 +272286,9 @@
"html/rendering/non-replaced-elements/flow-content-0/support/dialog-framed.html": [
[]
],
+ "html/rendering/non-replaced-elements/form-controls/text-transform-ref.html": [
+ []
+ ],
"html/rendering/non-replaced-elements/lists/TODO-lists.html": [
[]
],
@@ -275843,6 +275574,9 @@
"largest-contentful-paint/resources/iframe-stores-entry.html": [
[]
],
+ "largest-contentful-paint/resources/largest-contentful-paint-helpers.js": [
+ []
+ ],
"layout-instability/resources/slow-image.py": [
[]
],
@@ -281978,9 +281712,6 @@
"service-workers/service-worker/resources/xslt-pass.xsl": [
[]
],
- "service-workers/specgen.json": [
- []
- ],
"service-workers/tools/blink-import.py": [
[]
],
@@ -296202,9 +295933,9 @@
{}
]
],
- "BackgroundSync/interfaces.https.any.js": [
+ "BackgroundSync/idlharness.https.any.js": [
[
- "BackgroundSync/interfaces.https.any.html",
+ "BackgroundSync/idlharness.https.any.html",
{
"script_metadata": [
[
@@ -296219,7 +295950,7 @@
}
],
[
- "BackgroundSync/interfaces.https.any.worker.html",
+ "BackgroundSync/idlharness.https.any.worker.html",
{
"script_metadata": [
[
@@ -315452,6 +315183,48 @@
{}
]
],
+ "css/css-backgrounds/animations/border-color-interpolation.html": [
+ [
+ "css/css-backgrounds/animations/border-color-interpolation.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/animations/border-image-outset-interpolation.html": [
+ [
+ "css/css-backgrounds/animations/border-image-outset-interpolation.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/animations/border-image-slice-interpolation.html": [
+ [
+ "css/css-backgrounds/animations/border-image-slice-interpolation.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/animations/border-image-source-interpolation.html": [
+ [
+ "css/css-backgrounds/animations/border-image-source-interpolation.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/animations/border-image-width-interpolation.html": [
+ [
+ "css/css-backgrounds/animations/border-image-width-interpolation.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/animations/border-radius-interpolation.html": [
+ [
+ "css/css-backgrounds/animations/border-radius-interpolation.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/animations/border-width-interpolation.html": [
+ [
+ "css/css-backgrounds/animations/border-width-interpolation.html",
+ {}
+ ]
+ ],
"css/css-backgrounds/background-331.html": [
[
"css/css-backgrounds/background-331.html",
@@ -326282,6 +326055,48 @@
{}
]
],
+ "css/css-transforms/animation/transform-interpolation-001.html": [
+ [
+ "css/css-transforms/animation/transform-interpolation-001.html",
+ {}
+ ]
+ ],
+ "css/css-transforms/animation/transform-interpolation-002.html": [
+ [
+ "css/css-transforms/animation/transform-interpolation-002.html",
+ {}
+ ]
+ ],
+ "css/css-transforms/animation/transform-interpolation-003.html": [
+ [
+ "css/css-transforms/animation/transform-interpolation-003.html",
+ {}
+ ]
+ ],
+ "css/css-transforms/animation/transform-interpolation-004.html": [
+ [
+ "css/css-transforms/animation/transform-interpolation-004.html",
+ {}
+ ]
+ ],
+ "css/css-transforms/animation/transform-interpolation-005.html": [
+ [
+ "css/css-transforms/animation/transform-interpolation-005.html",
+ {}
+ ]
+ ],
+ "css/css-transforms/animation/transform-interpolation-006.html": [
+ [
+ "css/css-transforms/animation/transform-interpolation-006.html",
+ {}
+ ]
+ ],
+ "css/css-transforms/animation/transform-origin-interpolation.html": [
+ [
+ "css/css-transforms/animation/transform-origin-interpolation.html",
+ {}
+ ]
+ ],
"css/css-transforms/animation/translate-interpolation.html": [
[
"css/css-transforms/animation/translate-interpolation.html",
@@ -326948,9 +326763,9 @@
{}
]
],
- "css/css-typed-om/interfaces.html": [
+ "css/css-typed-om/idlharness.html": [
[
- "css/css-typed-om/interfaces.html",
+ "css/css-typed-om/idlharness.html",
{}
]
],
@@ -330116,144 +329931,6 @@
{}
]
],
- "css/css-writing-modes/text-orientation-script-001.html": [
- [
- "css/css-writing-modes/text-orientation-script-001.html",
- {}
- ]
- ],
- "css/css-writing-modes/text-orientation-script-001a.html": [
- [
- "css/css-writing-modes/text-orientation-script-001a.html",
- {
- "timeout": "long"
- }
- ]
- ],
- "css/css-writing-modes/text-orientation-script-001b.html": [
- [
- "css/css-writing-modes/text-orientation-script-001b.html",
- {
- "timeout": "long"
- }
- ]
- ],
- "css/css-writing-modes/text-orientation-script-001c.html": [
- [
- "css/css-writing-modes/text-orientation-script-001c.html",
- {
- "timeout": "long"
- }
- ]
- ],
- "css/css-writing-modes/text-orientation-script-001d.html": [
- [
- "css/css-writing-modes/text-orientation-script-001d.html",
- {
- "timeout": "long"
- }
- ]
- ],
- "css/css-writing-modes/text-orientation-script-001e.html": [
- [
- "css/css-writing-modes/text-orientation-script-001e.html",
- {
- "timeout": "long"
- }
- ]
- ],
- "css/css-writing-modes/text-orientation-script-001f.html": [
- [
- "css/css-writing-modes/text-orientation-script-001f.html",
- {
- "timeout": "long"
- }
- ]
- ],
- "css/css-writing-modes/text-orientation-script-001g.html": [
- [
- "css/css-writing-modes/text-orientation-script-001g.html",
- {
- "timeout": "long"
- }
- ]
- ],
- "css/css-writing-modes/text-orientation-script-001h.html": [
- [
- "css/css-writing-modes/text-orientation-script-001h.html",
- {
- "timeout": "long"
- }
- ]
- ],
- "css/css-writing-modes/text-orientation-script-001i.html": [
- [
- "css/css-writing-modes/text-orientation-script-001i.html",
- {
- "timeout": "long"
- }
- ]
- ],
- "css/css-writing-modes/text-orientation-script-001j.html": [
- [
- "css/css-writing-modes/text-orientation-script-001j.html",
- {
- "timeout": "long"
- }
- ]
- ],
- "css/css-writing-modes/text-orientation-script-001k.html": [
- [
- "css/css-writing-modes/text-orientation-script-001k.html",
- {
- "timeout": "long"
- }
- ]
- ],
- "css/css-writing-modes/text-orientation-script-001l.html": [
- [
- "css/css-writing-modes/text-orientation-script-001l.html",
- {
- "timeout": "long"
- }
- ]
- ],
- "css/css-writing-modes/text-orientation-script-001m.html": [
- [
- "css/css-writing-modes/text-orientation-script-001m.html",
- {
- "timeout": "long"
- }
- ]
- ],
- "css/css-writing-modes/text-orientation-script-001n.html": [
- [
- "css/css-writing-modes/text-orientation-script-001n.html",
- {
- "timeout": "long"
- }
- ]
- ],
- "css/css-writing-modes/text-orientation-script-001o.html": [
- [
- "css/css-writing-modes/text-orientation-script-001o.html",
- {
- "timeout": "long"
- }
- ]
- ],
- "css/css-writing-modes/text-orientation-script-001p.html": [
- [
- "css/css-writing-modes/text-orientation-script-001p.html",
- {}
- ]
- ],
- "css/css-writing-modes/text-orientation-script-001q.html": [
- [
- "css/css-writing-modes/text-orientation-script-001q.html",
- {}
- ]
- ],
"css/css-writing-modes/unicode-bidi-parsing-001.html": [
[
"css/css-writing-modes/unicode-bidi-parsing-001.html",
@@ -330554,6 +330231,12 @@
{}
]
],
+ "css/cssom-view/getBoundingClientRect-empty-inline.html": [
+ [
+ "css/cssom-view/getBoundingClientRect-empty-inline.html",
+ {}
+ ]
+ ],
"css/cssom-view/getClientRects-br-htb-ltr.html": [
[
"css/cssom-view/getClientRects-br-htb-ltr.html",
@@ -330602,15 +330285,15 @@
{}
]
],
- "css/cssom-view/inheritance.html": [
+ "css/cssom-view/idlharness.html": [
[
- "css/cssom-view/inheritance.html",
+ "css/cssom-view/idlharness.html",
{}
]
],
- "css/cssom-view/interfaces.html": [
+ "css/cssom-view/inheritance.html": [
[
- "css/cssom-view/interfaces.html",
+ "css/cssom-view/inheritance.html",
{}
]
],
@@ -331420,6 +331103,12 @@
{}
]
],
+ "css/cssom/idlharness.html": [
+ [
+ "css/cssom/idlharness.html",
+ {}
+ ]
+ ],
"css/cssom/inline-style-001.html": [
[
"css/cssom/inline-style-001.html",
@@ -331456,12 +331145,6 @@
{}
]
],
- "css/cssom/interfaces.html": [
- [
- "css/cssom/interfaces.html",
- {}
- ]
- ],
"css/cssom/medialist-interfaces-001.html": [
[
"css/cssom/medialist-interfaces-001.html",
@@ -331660,15 +331343,9 @@
{}
]
],
- "css/filter-effects/inheritance.html": [
- [
- "css/filter-effects/inheritance.html",
- {}
- ]
- ],
- "css/filter-effects/interfaces.any.js": [
+ "css/filter-effects/idlharness.any.js": [
[
- "css/filter-effects/interfaces.any.html",
+ "css/filter-effects/idlharness.any.html",
{
"script_metadata": [
[
@@ -331683,7 +331360,7 @@
}
],
[
- "css/filter-effects/interfaces.any.worker.html",
+ "css/filter-effects/idlharness.any.worker.html",
{
"script_metadata": [
[
@@ -331698,6 +331375,12 @@
}
]
],
+ "css/filter-effects/inheritance.html": [
+ [
+ "css/filter-effects/inheritance.html",
+ {}
+ ]
+ ],
"css/filter-effects/parsing/backdrop-filter-computed.html": [
[
"css/filter-effects/parsing/backdrop-filter-computed.html",
@@ -335309,6 +334992,12 @@
}
]
],
+ "dom/ranges/StaticRange-constructor.html": [
+ [
+ "dom/ranges/StaticRange-constructor.html",
+ {}
+ ]
+ ],
"dom/traversal/NodeFilter-constants.html": [
[
"dom/traversal/NodeFilter-constants.html",
@@ -335435,6 +335124,23 @@
{}
]
],
+ "domparsing/idlharness.window.js": [
+ [
+ "domparsing/idlharness.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/resources/WebIDLParser.js"
+ ],
+ [
+ "script",
+ "/resources/idlharness.js"
+ ]
+ ]
+ }
+ ]
+ ],
"domparsing/innerhtml-01.xhtml": [
[
"domparsing/innerhtml-01.xhtml",
@@ -335495,38 +335201,6 @@
{}
]
],
- "domparsing/interfaces.any.js": [
- [
- "domparsing/interfaces.any.html",
- {
- "script_metadata": [
- [
- "script",
- "/resources/WebIDLParser.js"
- ],
- [
- "script",
- "/resources/idlharness.js"
- ]
- ]
- }
- ],
- [
- "domparsing/interfaces.any.worker.html",
- {
- "script_metadata": [
- [
- "script",
- "/resources/WebIDLParser.js"
- ],
- [
- "script",
- "/resources/idlharness.js"
- ]
- ]
- }
- ]
- ],
"domparsing/outerhtml-01.html": [
[
"domparsing/outerhtml-01.html",
@@ -336568,6 +336242,12 @@
{}
]
],
+ "element-timing/text-with-display-style.html": [
+ [
+ "element-timing/text-with-display-style.html",
+ {}
+ ]
+ ],
"element-timing/toJSON.html": [
[
"element-timing/toJSON.html",
@@ -348607,9 +348287,9 @@
{}
]
],
- "fetch/api/idl.any.js": [
+ "fetch/api/idlharness.any.js": [
[
- "fetch/api/idl.any.html",
+ "fetch/api/idlharness.any.html",
{
"script_metadata": [
[
@@ -348628,7 +348308,7 @@
}
],
[
- "fetch/api/idl.any.serviceworker.html",
+ "fetch/api/idlharness.any.serviceworker.html",
{
"script_metadata": [
[
@@ -348647,7 +348327,7 @@
}
],
[
- "fetch/api/idl.any.sharedworker.html",
+ "fetch/api/idlharness.any.sharedworker.html",
{
"script_metadata": [
[
@@ -348666,7 +348346,7 @@
}
],
[
- "fetch/api/idl.any.worker.html",
+ "fetch/api/idlharness.any.worker.html",
{
"script_metadata": [
[
@@ -352899,6 +352579,18 @@
{}
]
],
+ "html/browsers/windows/document-access/document_access_feature_policy.tentative.sub.html": [
+ [
+ "html/browsers/windows/document-access/document_access_feature_policy.tentative.sub.html",
+ {}
+ ]
+ ],
+ "html/browsers/windows/document-access/document_access_parent_access.tentative.html": [
+ [
+ "html/browsers/windows/document-access/document_access_parent_access.tentative.html",
+ {}
+ ]
+ ],
"html/browsers/windows/embedded-opener-a-form.html": [
[
"html/browsers/windows/embedded-opener-a-form.html",
@@ -353684,29 +353376,29 @@
{}
]
],
- "html/dom/interfaces.https.html": [
+ "html/dom/idlharness.https.html": [
[
- "html/dom/interfaces.https.html?exclude=(Document|Window|HTML.*)",
+ "html/dom/idlharness.https.html?exclude=(Document|Window|HTML.*)",
{
"timeout": "long"
}
],
[
- "html/dom/interfaces.https.html?include=(Document|Window)",
+ "html/dom/idlharness.https.html?include=(Document|Window)",
{
"timeout": "long"
}
],
[
- "html/dom/interfaces.https.html?include=HTML.*",
+ "html/dom/idlharness.https.html?include=HTML.*",
{
"timeout": "long"
}
]
],
- "html/dom/interfaces.worker.js": [
+ "html/dom/idlharness.worker.js": [
[
- "html/dom/interfaces.worker.html",
+ "html/dom/idlharness.worker.html",
{}
]
],
@@ -354471,6 +354163,12 @@
{}
]
],
+ "html/rendering/non-replaced-elements/form-controls/resets.html": [
+ [
+ "html/rendering/non-replaced-elements/form-controls/resets.html",
+ {}
+ ]
+ ],
"html/rendering/non-replaced-elements/margin-collapsing-quirks/multicol-quirks-mode.html": [
[
"html/rendering/non-replaced-elements/margin-collapsing-quirks/multicol-quirks-mode.html",
@@ -358183,6 +357881,14 @@
{}
]
],
+ "html/semantics/embedded-content/the-iframe-element/srcdoc_change_hash.html": [
+ [
+ "html/semantics/embedded-content/the-iframe-element/srcdoc_change_hash.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"html/semantics/embedded-content/the-iframe-element/srcdoc_process_attributes.html": [
[
"html/semantics/embedded-content/the-iframe-element/srcdoc_process_attributes.html",
@@ -366960,12 +366666,24 @@
{}
]
],
+ "largest-contentful-paint/text-with-display-style.html": [
+ [
+ "largest-contentful-paint/text-with-display-style.html",
+ {}
+ ]
+ ],
"largest-contentful-paint/toJSON.html": [
[
"largest-contentful-paint/toJSON.html",
{}
]
],
+ "largest-contentful-paint/video-poster.html": [
+ [
+ "largest-contentful-paint/video-poster.html",
+ {}
+ ]
+ ],
"layout-instability/buffer-layout-shift.html": [
[
"layout-instability/buffer-layout-shift.html",
@@ -367140,6 +366858,12 @@
}
]
],
+ "longtask-timing/long-microtask.window.js": [
+ [
+ "longtask-timing/long-microtask.window.html",
+ {}
+ ]
+ ],
"longtask-timing/longtask-attributes.html": [
[
"longtask-timing/longtask-attributes.html",
@@ -367543,24 +367267,12 @@
{}
]
],
- "mathml/relations/css-styling/writing-mode/writing-mode-001.tentative.html": [
- [
- "mathml/relations/css-styling/writing-mode/writing-mode-001.tentative.html",
- {}
- ]
- ],
"mathml/relations/css-styling/writing-mode/writing-mode-002.html": [
[
"mathml/relations/css-styling/writing-mode/writing-mode-002.html",
{}
]
],
- "mathml/relations/css-styling/writing-mode/writing-mode-002.tentative.html": [
- [
- "mathml/relations/css-styling/writing-mode/writing-mode-002.tentative.html",
- {}
- ]
- ],
"mathml/relations/html5-tree/class-2.html": [
[
"mathml/relations/html5-tree/class-2.html",
@@ -382806,9 +382518,9 @@
{}
]
],
- "permissions/interfaces.any.js": [
+ "permissions/idlharness.any.js": [
[
- "permissions/interfaces.any.html",
+ "permissions/idlharness.any.html",
{
"script_metadata": [
[
@@ -382823,7 +382535,7 @@
}
],
[
- "permissions/interfaces.any.worker.html",
+ "permissions/idlharness.any.worker.html",
{
"script_metadata": [
[
@@ -383624,9 +383336,9 @@
{}
]
],
- "pointerlock/interfaces.window.js": [
+ "pointerlock/idlharness.window.js": [
[
- "pointerlock/interfaces.window.html",
+ "pointerlock/idlharness.window.html",
{
"script_metadata": [
[
@@ -404317,6 +404029,12 @@
{}
]
],
+ "svg/animations/slider-switch.html": [
+ [
+ "svg/animations/slider-switch.html",
+ {}
+ ]
+ ],
"svg/animations/spaces-at-end-of-path-data.html": [
[
"svg/animations/spaces-at-end-of-path-data.html",
@@ -449720,7 +449438,7 @@
"e5e6a2361f0d0716a27e5e7c5bf63a5527ea5ca8",
"support"
],
- "BackgroundSync/interfaces.https.any.js": [
+ "BackgroundSync/idlharness.https.any.js": [
"989139e99041d6ec8dd64181de7a994e4b88112c",
"testharness"
],
@@ -475377,7 +475095,7 @@
"support"
],
"content-security-policy/frame-ancestors/support/frame-ancestors-test.sub.js": [
- "dde04f0627e1e24b7bbc1b6d49be90bd467cda68",
+ "79b761a05ce523e41c54203a2a063ab65ef495da",
"support"
],
"content-security-policy/frame-ancestors/support/frame-ancestors.sub.html": [
@@ -475745,7 +475463,7 @@
"support"
],
"content-security-policy/inside-worker/support/connect-src-self.sub.js": [
- "8c533abdda3f555e9ea17b5a92cb0387a48d028e",
+ "327ffb74c203e35b5c87987e92e9fbcd34c3919e",
"support"
],
"content-security-policy/inside-worker/support/script-src-allow.sub.js": [
@@ -505108,6 +504826,10 @@
"6663b1949a73d61ea9d91f3f019c4d4fd66c8cd9",
"reftest"
],
+ "css/CSS2/linebox/scrollable-overflow.tentative.html": [
+ "8835455fa99c67da923451eae7ae46f7acda6f5e",
+ "reftest"
+ ],
"css/CSS2/linebox/support/1x1-green.png": [
"b98ca0ba0a03c580ac339e4a3653539cfa8edc71",
"support"
@@ -541336,6 +541058,34 @@
"f6a480c7bd2ccc4a6c46fa2eade5e7231fab4938",
"testharness"
],
+ "css/css-backgrounds/animations/border-color-interpolation.html": [
+ "3e7843b8a07577970279ef9a4e14bfb83c1816f0",
+ "testharness"
+ ],
+ "css/css-backgrounds/animations/border-image-outset-interpolation.html": [
+ "d4726e87d119462a703cc7ac504e8025f3874680",
+ "testharness"
+ ],
+ "css/css-backgrounds/animations/border-image-slice-interpolation.html": [
+ "60301e755bafeb699899b54988f3e3c055b13a4d",
+ "testharness"
+ ],
+ "css/css-backgrounds/animations/border-image-source-interpolation.html": [
+ "60dcfceddc791737487fab07ea7035fac40856d6",
+ "testharness"
+ ],
+ "css/css-backgrounds/animations/border-image-width-interpolation.html": [
+ "ea138201b15805cd86d8a63ed37b401b103bfee2",
+ "testharness"
+ ],
+ "css/css-backgrounds/animations/border-radius-interpolation.html": [
+ "195469e83164c965ee33b6277983870100bda111",
+ "testharness"
+ ],
+ "css/css-backgrounds/animations/border-width-interpolation.html": [
+ "11f92f41652a9f1b167c5a399849d1e1e61c4df7",
+ "testharness"
+ ],
"css/css-backgrounds/background-331.html": [
"121623453a61599fcc494a9582c31a79f78cfeb1",
"testharness"
@@ -544301,7 +544051,7 @@
"testharness"
],
"css/css-backgrounds/parsing/border-image-source-computed.sub.html": [
- "20343882096f2ce3fe1f0dbfb6d2164279e8aade",
+ "ad48aa987acfeb296d978a5485243dad32311031",
"testharness"
],
"css/css-backgrounds/parsing/border-image-source-invalid.html": [
@@ -571013,7 +570763,7 @@
"testharness"
],
"css/css-properties-values-api/register-property-syntax-parsing.html": [
- "fe2a63a57a168c8e791c6cec9d9d1843ca2c1216",
+ "6d7dbc63a1d38f108a3a10e99b09cddd84b135f7",
"testharness"
],
"css/css-properties-values-api/register-property.html": [
@@ -571177,7 +570927,7 @@
"reftest"
],
"css/css-pseudo/first-letter-property-whitelist.html": [
- "073e554a8c4c58d2c73d2adedfb0ec770de7c524",
+ "e3b3f532fefe0ed88b01e19457a747bd3013ac21",
"testharness"
],
"css/css-pseudo/first-line-and-placeholder-ref.html": [
@@ -585028,6 +584778,34 @@
"146575c902c10b8f34a6e9a12ee66abae1904223",
"testharness"
],
+ "css/css-transforms/animation/transform-interpolation-001.html": [
+ "4647c2c9119baa9d998f14f2f4973fc3607fd51b",
+ "testharness"
+ ],
+ "css/css-transforms/animation/transform-interpolation-002.html": [
+ "fec0de1f53544dd4314629fde9fe73bc1bfa1596",
+ "testharness"
+ ],
+ "css/css-transforms/animation/transform-interpolation-003.html": [
+ "4386bdbfa46bb7018b189906bfd387008c907be1",
+ "testharness"
+ ],
+ "css/css-transforms/animation/transform-interpolation-004.html": [
+ "a6b3c75c623f0e11c31f0452ba3520e4dc442958",
+ "testharness"
+ ],
+ "css/css-transforms/animation/transform-interpolation-005.html": [
+ "451850f2556058a32e48bd15c7ca195ba3b8d3d8",
+ "testharness"
+ ],
+ "css/css-transforms/animation/transform-interpolation-006.html": [
+ "c69bad7c93b8448b763e7f98d0ed6b50783ed7d2",
+ "testharness"
+ ],
+ "css/css-transforms/animation/transform-origin-interpolation.html": [
+ "02b8b59b0b92cb37c4cce43a06ff1e9eff2b41e4",
+ "testharness"
+ ],
"css/css-transforms/animation/translate-interpolation.html": [
"aed6c41cf641ffc3b5eb7ef22b4b7353d98004fb",
"testharness"
@@ -591316,7 +591094,7 @@
"56a544b32f4969d00a7299403d6c02393758ab39",
"testharness"
],
- "css/css-typed-om/interfaces.html": [
+ "css/css-typed-om/idlharness.html": [
"976bb32f2f8905be871fd62b38d38a43a6de6b75",
"testharness"
],
@@ -596337,7 +596115,7 @@
"testharness"
],
"css/css-variables/variable-substitution-background-properties.html": [
- "1f19bc5f4c0e3dc72a651d122ddd09f855068bbe",
+ "88108866209531d6a0eab00c1b86fd4e78f39254",
"testharness"
],
"css/css-variables/variable-substitution-basic.html": [
@@ -602764,78 +602542,6 @@
"848c581cb98992a1c5e9adda7897d3e887f54930",
"testharness"
],
- "css/css-writing-modes/text-orientation-script-001.html": [
- "cc86fd4a251b5be39cd7a30a2440d010dab38672",
- "testharness"
- ],
- "css/css-writing-modes/text-orientation-script-001a.html": [
- "9a5e3508312af1168120a33f55ef1b7ced32689a",
- "testharness"
- ],
- "css/css-writing-modes/text-orientation-script-001b.html": [
- "3c5df6ed4e217a6b68ed901f15c0268a12ad8c08",
- "testharness"
- ],
- "css/css-writing-modes/text-orientation-script-001c.html": [
- "559cc1cf3cf47d77e1ae634a03e1ce6b9cec518c",
- "testharness"
- ],
- "css/css-writing-modes/text-orientation-script-001d.html": [
- "f385dc40c89db2b4cac05d223241e52500f3df07",
- "testharness"
- ],
- "css/css-writing-modes/text-orientation-script-001e.html": [
- "4726741292fcfc68437453cf764202157d42c2d1",
- "testharness"
- ],
- "css/css-writing-modes/text-orientation-script-001f.html": [
- "a447fe8d9b8b3e9cc3a60a0475b9e8f33c5f6769",
- "testharness"
- ],
- "css/css-writing-modes/text-orientation-script-001g.html": [
- "f135b68b75a29cbca929db984db5616d35c5b82e",
- "testharness"
- ],
- "css/css-writing-modes/text-orientation-script-001h.html": [
- "bb20fa8c0b06b776f93199c83a38af6125a50a5b",
- "testharness"
- ],
- "css/css-writing-modes/text-orientation-script-001i.html": [
- "e01953ba41492881830701d0dac3f84ffe61c4eb",
- "testharness"
- ],
- "css/css-writing-modes/text-orientation-script-001j.html": [
- "210838ed636a7352d659e29828ba6813869e568a",
- "testharness"
- ],
- "css/css-writing-modes/text-orientation-script-001k.html": [
- "516e1281baae2d7a169d77652011552ffb5891f5",
- "testharness"
- ],
- "css/css-writing-modes/text-orientation-script-001l.html": [
- "3c2902a8d2b19dd4d0a2b66b48610030e2911bc6",
- "testharness"
- ],
- "css/css-writing-modes/text-orientation-script-001m.html": [
- "d2f568126f2cfd9c1ab6f0cea1f6d97ea0d41580",
- "testharness"
- ],
- "css/css-writing-modes/text-orientation-script-001n.html": [
- "7f5af1f1487fe5ff7608c4049dd085f352b83a92",
- "testharness"
- ],
- "css/css-writing-modes/text-orientation-script-001o.html": [
- "3ad3745132cc0896bf58873fc0cc3b1bdb7f4a34",
- "testharness"
- ],
- "css/css-writing-modes/text-orientation-script-001p.html": [
- "7f0532fd5d318c81204dff7fb05fad66b58245c9",
- "testharness"
- ],
- "css/css-writing-modes/text-orientation-script-001q.html": [
- "f0fd9014591e0dc9874ecf22570d108cceb4acc0",
- "testharness"
- ],
"css/css-writing-modes/text-orientation-sideways-001.xht": [
"377f8f9d3548312df5273b49b9b555dcd2230c08",
"visual"
@@ -602921,11 +602627,11 @@
"reftest"
],
"css/css-writing-modes/tools/generators/README.md": [
- "7c584899e3f99e8a5fb537a1e331f59b57f0b124",
+ "9bf89de07a89719dadad60e55167c84595a410ba",
"support"
],
"css/css-writing-modes/tools/generators/gulpfile.js": [
- "0ebd13cc882bd88ae0d3093898e68db035f4d23a",
+ "f364024084dc0c24d00bc417ab252feb9f8b1418",
"support"
],
"css/css-writing-modes/tools/generators/orthogonal-parent-shrink-to-fit.ejs": [
@@ -602936,34 +602642,6 @@
"8046cf4240aa37e0a3f8d8f866efe44f68155c7e",
"support"
],
- "css/css-writing-modes/tools/generators/text-orientation-generator.js": [
- "8fe911532cc24f0b6d187b5e0030004bea7ef11a",
- "support"
- ],
- "css/css-writing-modes/tools/generators/text-orientation-ref.ejs": [
- "f4bc801aa682dec42f5f932861f40a05044865fc",
- "support"
- ],
- "css/css-writing-modes/tools/generators/text-orientation-script.ejs": [
- "5366366f540e22e2b10d8d7ba0f65b2c94d18f7e",
- "support"
- ],
- "css/css-writing-modes/tools/generators/ucd/Blocks.txt": [
- "74c41e58a81349f0b580843babd19c6a40f919a6",
- "support"
- ],
- "css/css-writing-modes/tools/generators/ucd/DerivedGeneralCategory.txt": [
- "96dfb56f0e1f374b90a91001c43f86bee245697a",
- "support"
- ],
- "css/css-writing-modes/tools/generators/ucd/VerticalOrientation-16.txt": [
- "0e715b297ab22e0a142139ac2b4a357472ee8eb6",
- "support"
- ],
- "css/css-writing-modes/tools/generators/unicode-data.js": [
- "b3135a72a85e53c9bc5d1a1b43b6cce1be32bb58",
- "support"
- ],
"css/css-writing-modes/two-levels-of-orthogonal-flows-fixed.html": [
"d9e7d749841580351bf037b67961b696474c2878",
"reftest"
@@ -603724,6 +603402,10 @@
"bf883a1423a150a49fa3170014308a6252365810",
"testharness"
],
+ "css/cssom-view/getBoundingClientRect-empty-inline.html": [
+ "443ded230f465b40d1c327d4837ffcbe7c2a1ada",
+ "testharness"
+ ],
"css/cssom-view/getClientRects-br-htb-ltr.html": [
"e952d61b677164c3b5d49799c80063174120307f",
"testharness"
@@ -603760,6 +603442,10 @@
"9171997e2a9c59df4e4c1aaad58079593d496cf1",
"testharness"
],
+ "css/cssom-view/idlharness.html": [
+ "d3de0cfa595381e0b7c0f3188ac9322ef10608f5",
+ "testharness"
+ ],
"css/cssom-view/iframe.html": [
"e4413a7388a7a0463264a002985ef2525ec6034b",
"support"
@@ -603768,10 +603454,6 @@
"8c381e7119c9408f4d11ee77c0d7f8065dd08464",
"testharness"
],
- "css/cssom-view/interfaces.html": [
- "d3de0cfa595381e0b7c0f3188ac9322ef10608f5",
- "testharness"
- ],
"css/cssom-view/long_scroll_composited-ref.html": [
"6914cba30972387b929113817fa56c6bd1384387",
"support"
@@ -604536,6 +604218,10 @@
"44f3f6c8f15a13b2c32dad2672ea9383330e8082",
"testharness"
],
+ "css/cssom/idlharness.html": [
+ "3204fb8c7e750d5b121c34ba068e070e7cbddc5a",
+ "testharness"
+ ],
"css/cssom/inline-style-001.html": [
"d4bf3b92ab2c9a45614754807cdd5f2af79c1fa5",
"testharness"
@@ -604568,10 +604254,6 @@
"170213c8badbcddda70b2313902fa7c21a757333",
"testharness"
],
- "css/cssom/interfaces.html": [
- "3204fb8c7e750d5b121c34ba068e070e7cbddc5a",
- "testharness"
- ],
"css/cssom/medialist-dynamic-001-ref.html": [
"9715b5acb8fad7aae3949d255663c9ad958da932",
"support"
@@ -605560,12 +605242,12 @@
"69a7d54a7f82d96a419002e2e90c959af29e8b9a",
"reftest"
],
- "css/filter-effects/inheritance.html": [
- "acb811bfad154e5a0b18eaddb799fc5dc679b114",
+ "css/filter-effects/idlharness.any.js": [
+ "e7de16e8d62904986610a484b046a4caf0f161e3",
"testharness"
],
- "css/filter-effects/interfaces.any.js": [
- "e7de16e8d62904986610a484b046a4caf0f161e3",
+ "css/filter-effects/inheritance.html": [
+ "acb811bfad154e5a0b18eaddb799fc5dc679b114",
"testharness"
],
"css/filter-effects/parsing/backdrop-filter-computed.html": [
@@ -606121,7 +605803,7 @@
"support"
],
"css/mediaqueries/aspect-ratio-001.html": [
- "0dad9ea792918255a90455419da5e6f52ce249c0",
+ "09878061267683e7c4505a408bd68d0c5ace4ee6",
"reftest"
],
"css/mediaqueries/aspect-ratio-002.html": [
@@ -606129,13 +605811,21 @@
"reftest"
],
"css/mediaqueries/aspect-ratio-003.html": [
- "76bebd70272d4cb5f066b73f80be59898196a887",
+ "14868108ac46d074ab4de0e94e66511907cfd302",
"reftest"
],
"css/mediaqueries/aspect-ratio-004.html": [
"b4b2e860d872ae684615dce3c6848e0a4a5c369f",
"reftest"
],
+ "css/mediaqueries/aspect-ratio-005.html": [
+ "2c9d9edcf764802bf0b6a82c0fd2270e158e2679",
+ "reftest"
+ ],
+ "css/mediaqueries/aspect-ratio-006.html": [
+ "188a65b715291b33d93d8a6af88c2a7f6e25858c",
+ "reftest"
+ ],
"css/mediaqueries/device-aspect-ratio-001.html": [
"60f49b9b3cfedaf8136dcb568570ef71124cba8b",
"reftest"
@@ -606269,7 +605959,7 @@
"support"
],
"css/mediaqueries/test_media_queries.html": [
- "d08d83c34fd8112e2ecfee0f89893353e84df714",
+ "d368acf8b57da4b98825cb4ddc25ae4c44338745",
"testharness"
],
"css/mediaqueries/viewport-script-dynamic-ref.html": [
@@ -620404,6 +620094,10 @@
"f354ff758fca36d9fb156900225f1b33424bff31",
"support"
],
+ "dom/ranges/StaticRange-constructor.html": [
+ "55a969415ce62e9c14d02e58d63b2827ae2aa6bc",
+ "testharness"
+ ],
"dom/traversal/NodeFilter-constants.html": [
"1ce4736cc618046fdc3def9aa1bf1b9469beb56e",
"testharness"
@@ -620536,6 +620230,10 @@
"a885a5dcb5ab149098c9aa3ec826c27be2e2040e",
"testharness"
],
+ "domparsing/idlharness.window.js": [
+ "870c165b2156c45a6a6efb0848cad4180cb050d0",
+ "testharness"
+ ],
"domparsing/innerhtml-01.xhtml": [
"432cfbf41f583292e087e817b126c5b18439f17b",
"testharness"
@@ -620580,10 +620278,6 @@
"2451228d193e29666d4f1853f6ab2e73acf45396",
"support"
],
- "domparsing/interfaces.any.js": [
- "870c165b2156c45a6a6efb0848cad4180cb050d0",
- "testharness"
- ],
"domparsing/outerhtml-01.html": [
"2e8072e49f9724a0a838382670f9df3544a04c3e",
"testharness"
@@ -621396,6 +621090,10 @@
"15733d46f95c9079acfec06cdd25f70ca0e056a6",
"testharness"
],
+ "element-timing/text-with-display-style.html": [
+ "03939473be33d6ae868088dcab1cd273ad5b8759",
+ "testharness"
+ ],
"element-timing/toJSON.html": [
"d988934708116f29f9289511559079544aba1ba6",
"testharness"
@@ -624769,7 +624467,7 @@
"support"
],
"feature-policy/resources/featurepolicy.js": [
- "744c4c62069508061567d8ac758920beab8e1335",
+ "9aba0ab8c675352301802f2386f07470585d7e97",
"support"
],
"feature-policy/resources/nested-sandbox.html": [
@@ -625064,7 +624762,7 @@
"af676d258d29a29ec2e1de97901143cf59db468c",
"testharness"
],
- "fetch/api/idl.any.js": [
+ "fetch/api/idlharness.any.js": [
"ccd4d2c0b46234c40f2ff452c8ead112e32539de",
"testharness"
],
@@ -630332,6 +630030,18 @@
"5e99bb522f194e67b78bda958359f8ace011a59c",
"testharness"
],
+ "html/browsers/windows/document-access/document_access_feature_policy.tentative.sub.html": [
+ "2b3f512e381b07fdffac02013b6aea9167d97bd5",
+ "testharness"
+ ],
+ "html/browsers/windows/document-access/document_access_parent_access.tentative.html": [
+ "9a06d1beb4a067445296f90bb7913c692f464a7d",
+ "testharness"
+ ],
+ "html/browsers/windows/document-access/resources/child.html": [
+ "614b6a087ddb690eb6183287e90ba43a3967f3bc",
+ "support"
+ ],
"html/browsers/windows/embedded-opener-a-form.html": [
"e1ec760b926670e610a96f02c935cf169563714a",
"testharness"
@@ -631756,11 +631466,11 @@
"b79d35f0b8a383d026920d80d7374887f283a31b",
"testharness"
],
- "html/dom/interfaces.https.html": [
+ "html/dom/idlharness.https.html": [
"0d3f1160d2819601afb2168bc15bfeeaddfed6f1",
"testharness"
],
- "html/dom/interfaces.worker.js": [
+ "html/dom/idlharness.worker.js": [
"b720d54f3d953633bd7abd1e73097a31a369e825",
"testharness"
],
@@ -636516,6 +636226,18 @@
"2d23b4a77d716b5a4545aa180f4ddbddbbb52098",
"testharness"
],
+ "html/rendering/non-replaced-elements/form-controls/resets.html": [
+ "ae4da4540145dab0acb6db4455bc8a31522fed2d",
+ "testharness"
+ ],
+ "html/rendering/non-replaced-elements/form-controls/text-transform-ref.html": [
+ "5dc26a78dbb0133964bf248eef2d698f32ffa329",
+ "support"
+ ],
+ "html/rendering/non-replaced-elements/form-controls/text-transform.html": [
+ "f57f09298231cb394fa4e646206d23e216e480c9",
+ "reftest"
+ ],
"html/rendering/non-replaced-elements/lists/TODO-lists.html": [
"6d79efc3846c8e427627e9d95af5699ca7096197",
"support"
@@ -640660,6 +640382,10 @@
"2f77dfe164df3737cbbabf4efce6e28028e62537",
"testharness"
],
+ "html/semantics/embedded-content/the-iframe-element/srcdoc_change_hash.html": [
+ "457a07f9e2fb3340f7f874d7e434d38b1dd788d0",
+ "testharness"
+ ],
"html/semantics/embedded-content/the-iframe-element/srcdoc_process_attributes.html": [
"397c95a23911ef979718a3aa8b879d257803fb85",
"testharness"
@@ -648597,7 +648323,7 @@
"support"
],
"interfaces/css-fonts.idl": [
- "d9e6d21d4ed05235c274d236f6a3f63284c8b9e8",
+ "42e88e46c54589b8734263040e7b32217a1881b5",
"support"
],
"interfaces/css-images.idl": [
@@ -648645,7 +648371,7 @@
"support"
],
"interfaces/dom.idl": [
- "285e5f00b87e4033374024f705ccc78cd56364c7",
+ "91157033c82335d4eb835907680210bb2141fdb4",
"support"
],
"interfaces/element-timing.idl": [
@@ -648985,7 +648711,7 @@
"support"
],
"interfaces/web-nfc.idl": [
- "ff28d84de3d7f5387b39cc281c5ca1c7e041769f",
+ "76ed6f0d959e1bfcc31325ce8aff657b06fa9de7",
"support"
],
"interfaces/web-share.idl": [
@@ -648993,11 +648719,11 @@
"support"
],
"interfaces/webaudio.idl": [
- "19d807894231de9f3522f3845f44e212b9708580",
+ "1b6af25b3b363411bfb365b1b3b21639584cfa76",
"support"
],
"interfaces/webauthn.idl": [
- "67fd504a54e1bcb346c71cb27c89fca7e40c1876",
+ "cf86a25b1013e0e4102cc9cc67ae0791c963fac6",
"support"
],
"interfaces/webdriver.idl": [
@@ -649005,11 +648731,11 @@
"support"
],
"interfaces/webgl1.idl": [
- "8fb5e01b0449feb22d9d2f1a67f19f73da168d64",
+ "5edd66e21d039cde3029b8756ff4bcdfd8aaaff7",
"support"
],
"interfaces/webgl2.idl": [
- "11d0d8c2a3be65e2286387cb3ff727a0cf5e376a",
+ "be9365e38936fd414c47ef3ae95772742a658176",
"support"
],
"interfaces/webmidi.idl": [
@@ -649021,7 +648747,7 @@
"support"
],
"interfaces/webrtc-stats.idl": [
- "26ebc9ca7758b92e5099d5cdedd6fe565159c903",
+ "621f146108bb735d0605155c90c88c7f56af7587",
"support"
],
"interfaces/webrtc.idl": [
@@ -649037,7 +648763,7 @@
"support"
],
"interfaces/webxr.idl": [
- "3febf83ebe375474bb177e0ff5e42887d27e44e6",
+ "413fef85c8708aac6d66914a4c846ba48add492a",
"support"
],
"interfaces/worklets.idl": [
@@ -649489,11 +649215,11 @@
"testharness"
],
"kv-storage/secure-context/import-maps.html": [
- "64301f03032c0efe047297b21389ccf778949a76",
+ "211b9e43b1f18e9bdab85b890af000e47395c2ff",
"testharness"
],
"kv-storage/secure-context/import-statement.html": [
- "db01152a4e155e27dcdbc264a4291d0245c115d4",
+ "71e14b04e3144f866ff6cda980998dedaa6a559b",
"testharness"
],
"kv-storage/secure-context/resources/dummy-module.js": [
@@ -649525,11 +649251,11 @@
"testharness"
],
"largest-contentful-paint/contracted-image.html": [
- "e099a5e42f6d3fd7982a7e298c53b860258f8c70",
+ "2d4a84bf35cf895f6bc667f2e5c4352d86fd74d0",
"testharness"
],
"largest-contentful-paint/cross-origin-image.sub.html": [
- "7669d4647802f54f4d04b7b7a6b0a9ccc19b9f11",
+ "58e636e51b9f2b544b2c8f40324e61c97ee5c795",
"testharness"
],
"largest-contentful-paint/element-only-when-fully-active.html": [
@@ -649537,11 +649263,11 @@
"testharness"
],
"largest-contentful-paint/expanded-image.html": [
- "9f64189eda60bc74b41d2526e577dcd0e0cf88d2",
+ "6f7043dd8e426d6b4b5d4f89d8e64383cf7696e9",
"testharness"
],
"largest-contentful-paint/first-letter-background.html": [
- "19544c8edeedb163dc20fa9b2ef654255d050ddf",
+ "44d2a1a968083e8c91f61b33909ec115ea1b3a63",
"testharness"
],
"largest-contentful-paint/idlharness.html": [
@@ -649553,19 +649279,19 @@
"testharness"
],
"largest-contentful-paint/image-TAO.sub.html": [
- "9409fd8fc05c338dc74a3c7bf8fe94d356679633",
+ "41c8c748619aea00c2afe67dd5983ab7601121b0",
"testharness"
],
"largest-contentful-paint/image-src-change.html": [
- "84a49f7ea2220c43c083f91057763ae161035532",
+ "5ec860fa06f3281fd421912298e7b2c93dae19bb",
"testharness"
],
"largest-contentful-paint/invisible-images.html": [
- "cd71f30ae45cb438950ca94ecb39a6382b97d48f",
+ "d536f86dcf69da791efb442893d094c6a71d8db5",
"testharness"
],
"largest-contentful-paint/larger-image.html": [
- "7ff38cf2be10c6e20fc5f2ad3d1578755cfbb903",
+ "094c2096752fa52ee0a249cd26cb97b5376edae1",
"testharness"
],
"largest-contentful-paint/larger-text.html": [
@@ -649573,15 +649299,15 @@
"testharness"
],
"largest-contentful-paint/loadTime-after-appendChild.html": [
- "43ec9f6085d605098faeddce311b5ccbc626b073",
+ "0e40127b57683fa76392827003b15c2bb9c8d558",
"testharness"
],
"largest-contentful-paint/observe-after-untrusted-scroll.html": [
- "b551e7632b5ce20e2bbc40758f623fac972b3b73",
+ "1b2cd1d25b5bb9da740e5127526fed41dcebfae7",
"testharness"
],
"largest-contentful-paint/observe-image.html": [
- "a9556ebaa60d04c154c8043fe7c48fbd7ec38700",
+ "5856795cac49beea469b05ff06b57a163bc2756a",
"testharness"
],
"largest-contentful-paint/observe-text.html": [
@@ -649589,21 +649315,33 @@
"testharness"
],
"largest-contentful-paint/repeated-image.html": [
- "d25d4735c9747cb27bffdd640e1127f9fb9c075c",
+ "82d662d330ab74ce88773257dadfb75af87451d1",
"testharness"
],
"largest-contentful-paint/resources/iframe-stores-entry.html": [
"cd600254805570deab8447ea843657d7f268b7c5",
"support"
],
+ "largest-contentful-paint/resources/largest-contentful-paint-helpers.js": [
+ "0529e227b8094656361a7ab9d5ae81a92f0e8934",
+ "support"
+ ],
"largest-contentful-paint/supported-lcp-type.html": [
"25d4eaa0367f45440d286c6c1c14de4458465d7b",
"testharness"
],
+ "largest-contentful-paint/text-with-display-style.html": [
+ "2f1f254d7775e84c7bbfdc77125eb7265b627dcf",
+ "testharness"
+ ],
"largest-contentful-paint/toJSON.html": [
"7defcce1b6f9f2b681405988f74d3977fa3f29e8",
"testharness"
],
+ "largest-contentful-paint/video-poster.html": [
+ "9ad9c4cdfd09bfb3c3de4b77c29fff31a2d7089f",
+ "testharness"
+ ],
"layout-instability/buffer-layout-shift.html": [
"0cfce2f7124226cf4256284c1238ba1ef024c42b",
"testharness"
@@ -649772,6 +649510,10 @@
"fd9a3f042f6c9fc3ac605fc0dd4e23edfa5d683b",
"testharness"
],
+ "longtask-timing/long-microtask.window.js": [
+ "7b7d1848f8c9a85a147abab47769960e905f33c7",
+ "testharness"
+ ],
"longtask-timing/longtask-attributes.html": [
"b5d44b0db5d33ee44abf2690b27a233088491ab8",
"testharness"
@@ -650301,7 +650043,7 @@
"testharness"
],
"mathml/relations/css-styling/attribute-mapping-001.html": [
- "c7afa7a112a11ccabc13d971522b416ce82fe65d",
+ "c0c91dc23d119f85f693d2ccc5ec97c28a1a1f78",
"testharness"
],
"mathml/relations/css-styling/attribute-mapping-002.html": [
@@ -650661,7 +650403,7 @@
"reftest"
],
"mathml/relations/css-styling/not-participating-to-parent-layout.html": [
- "769449b97d4983efc19aa9c0999725cb5735c6dc",
+ "1caebf1e630de2fdc9c879aa76e0a4c666fbe841",
"testharness"
],
"mathml/relations/css-styling/padding-border-margin/border-001.html": [
@@ -650736,18 +650478,10 @@
"cbc8ce7da217a3b990cc2493cd8fe666b3517a8e",
"testharness"
],
- "mathml/relations/css-styling/writing-mode/writing-mode-001.tentative.html": [
- "642ee66965181d2894d0c5ea67e21939f48eb66f",
- "testharness"
- ],
"mathml/relations/css-styling/writing-mode/writing-mode-002.html": [
"85c869eba3bc3ebc5c1c209b81b29d6f03b0ae9a",
"testharness"
],
- "mathml/relations/css-styling/writing-mode/writing-mode-002.tentative.html": [
- "e86f03a4f0267bd2f62b36c7e1aa32352ee2adc6",
- "testharness"
- ],
"mathml/relations/html5-tree/class-1-ref.html": [
"5afa59ecf2bfd2ec071d735464cd3bd20b0b17ce",
"support"
@@ -662568,7 +662302,7 @@
"b055f50f636848ceb7b1750484cc12328a121398",
"support"
],
- "permissions/interfaces.any.js": [
+ "permissions/idlharness.any.js": [
"ff0a969badace39c3c4466c4528e30c21355e132",
"testharness"
],
@@ -663076,7 +662810,7 @@
"8c43cf6dafcf9ac9e9a9203e266472f7eecd47e5",
"testharness"
],
- "pointerlock/interfaces.window.js": [
+ "pointerlock/idlharness.window.js": [
"f176343a487de4d71bda196657c7958ac62f1553",
"testharness"
],
@@ -673513,7 +673247,7 @@
"support"
],
"resources/SVGAnimationTestCase-testharness.js": [
- "59febda86d63f3109e74901620d1c1562554c754",
+ "9ebaf6803922e940b2d3cc5fed5eb2a5fe2e74bd",
"support"
],
"resources/check-layout-th.js": [
@@ -673669,7 +673403,7 @@
"support"
],
"resources/chromium/webxr-test.js": [
- "bb6b0c1be55067641f57d039f8fcc930e9decc46",
+ "b52ee3bf32523e39d9619db8ede5b9b75c8a1501",
"support"
],
"resources/chromium/webxr-test.js.headers": [
@@ -674013,7 +673747,7 @@
"support"
],
"resources/testdriver-actions.js": [
- "43d8b1df00ae4c2f36114f58695a5314dbd41d60",
+ "292fe8889f5e21bd011ade89edf540cc615e35b2",
"support"
],
"resources/testdriver-vendor.js": [
@@ -674185,11 +673919,11 @@
"testharness"
],
"scroll-to-text-fragment/scroll-to-text-fragment-target.html": [
- "724132fab29bf75c3e2d0bd4cc20d53aa04c5456",
+ "fa229dd032f29d45e847d9f03f7cd877852dbd87",
"support"
],
"scroll-to-text-fragment/scroll-to-text-fragment.html": [
- "eaab18437063dce8621a49a8b1cecb10390114a7",
+ "db1b1ded3065775f7d763e21fa332c4d36b507c7",
"testharness"
],
"secure-contexts/META.yml": [
@@ -675933,7 +675667,7 @@
"testharness"
],
"service-workers/service-worker/getregistrations.https.html": [
- "11da27036d092c2f2c6d58df576b29e9bfb99537",
+ "3e48d5fe3618b36713d724b71e4026ea24553bd4",
"testharness"
],
"service-workers/service-worker/global-serviceworker.https.any.js": [
@@ -677728,210 +677462,6 @@
"1d3c36408a66a7785b884c9cdc39dcd2820f9af0",
"testharness"
],
- "service-workers/specgen.json": [
- "88c36ed04aada9b61dfe65f97dc6e73d7913a6a9",
- "support"
- ],
- "service-workers/stub-3.1-service-worker-obj.html": [
- "99c2cbe8597d7391defdd2057ef466a2445cec73",
- "stub"
- ],
- "service-workers/stub-3.1.1-service-worker-scope.html": [
- "8c75c608297a3dcf14d03d60ebc624ea233b6427",
- "stub"
- ],
- "service-workers/stub-3.1.2-service-worker-url.html": [
- "5674df7fc8d9ac493251a6c51a3d7ca34674a71d",
- "stub"
- ],
- "service-workers/stub-3.1.3-service-worker-state.html": [
- "8e729baf89f5e786e715ecadd071b06b00a43eaf",
- "stub"
- ],
- "service-workers/stub-3.1.4-service-worker-on-state-change.html": [
- "c87dce60163242a8d271bbc61f61d1c985afcb5d",
- "stub"
- ],
- "service-workers/stub-3.2-navigator-service-worker.html": [
- "d5b51475aa8c19f4e747fc39fbef3315ddb8c6c9",
- "stub"
- ],
- "service-workers/stub-3.2.1-navigator-service-worker-installing.html": [
- "59e4f3d6a0d3bfa3c928c921fdcc8f756d314c90",
- "stub"
- ],
- "service-workers/stub-3.2.10-navigator-service-worker-oncontrollerchange.html": [
- "478860146dcecb174bfb4b59d6c9db8d05315a01",
- "stub"
- ],
- "service-workers/stub-3.2.11-navigator-service-worker-onreloadpage.html": [
- "e2207db100a21a8f8f53c72a2cd8f86ae7f510a1",
- "stub"
- ],
- "service-workers/stub-3.2.12-navigator-service-worker-onerror.html": [
- "313f0bdfcd500a725bfaf5a59045ec7721f8c674",
- "stub"
- ],
- "service-workers/stub-3.2.2-navigator-service-worker-waiting.html": [
- "663ce82f9685858451bea7129106376b054b6fba",
- "stub"
- ],
- "service-workers/stub-3.2.3-navigator-service-worker-active.html": [
- "f7406f59012fc8e197177e1c37e43d045a1fd70b",
- "stub"
- ],
- "service-workers/stub-3.2.4-navigator-service-worker-controller.html": [
- "1a26cce6d4edc2c9130f28069e4d9664bf8a6d9d",
- "stub"
- ],
- "service-workers/stub-3.2.5-navigator-service-worker-ready.html": [
- "67a690ddc5b2d40c1c21a0bf021a49fbddb0c760",
- "stub"
- ],
- "service-workers/stub-3.2.6-navigator-service-worker-getAll.html": [
- "3c2afe99cbb492554522912c265f243902f74134",
- "stub"
- ],
- "service-workers/stub-3.2.7-navigator-service-worker-register.html": [
- "df469de42af5ea5868de91df77164dbf5af28a3e",
- "stub"
- ],
- "service-workers/stub-3.2.8-navigator-service-worker-unregister.html": [
- "6f1b43b6bdee80d5da06b4f3786f068c8a7648f9",
- "stub"
- ],
- "service-workers/stub-3.2.9-navigator-service-worker-onupdatefound.html": [
- "7babe7c245681870c3559baca65d976aaa437723",
- "stub"
- ],
- "service-workers/stub-4.1-service-worker-global-scope.html": [
- "c11feaca4c832bb90562868a6d78d4ac0ee017fc",
- "stub"
- ],
- "service-workers/stub-4.1.1-service-worker-global-scope-caches.html": [
- "f1fce5036a100e4e0fa324d647502a67e5d00a2b",
- "stub"
- ],
- "service-workers/stub-4.1.2-service-worker-global-scope-clients.html": [
- "cd5d28353a29634d75ed951316d740989582c98b",
- "stub"
- ],
- "service-workers/stub-4.1.3-service-worker-global-scope-scope.html": [
- "7b6ce78fa909730fe80c4b8c6c93825962d23ba7",
- "stub"
- ],
- "service-workers/stub-4.1.4-service-worker-global-scope-fetch.html": [
- "98345471f3b8f708850d019e897f7baf277cf793",
- "stub"
- ],
- "service-workers/stub-4.1.5-service-worker-global-scope-update.html": [
- "26e255dd4a0209f9492bfd327183f6915359ca36",
- "stub"
- ],
- "service-workers/stub-4.1.6-service-worker-global-scope-unregister.html": [
- "de1d64a6e45c45480a7eab230ddb33ba7f006444",
- "stub"
- ],
- "service-workers/stub-4.1.7-service-worker-global-scope-onmessage.html": [
- "b930439486efab516cd33807064d907a535fafde",
- "stub"
- ],
- "service-workers/stub-4.2-client.html": [
- "fda0e298f5e7f1c55a619e3858682d850844b5ef",
- "stub"
- ],
- "service-workers/stub-4.3-service-worker-clients.html": [
- "475df1952fba671b5a4f8a3b3a05d8dcc39c4f6c",
- "stub"
- ],
- "service-workers/stub-4.3.1-get-serviced-method.html": [
- "b3cd06fdf278f4f4d6a87b3bf97648f0e52528a1",
- "stub"
- ],
- "service-workers/stub-4.3.2-reloadall-method.html": [
- "c5a9dd45404a52c8175967e340ae04095964c127",
- "stub"
- ],
- "service-workers/stub-4.4-request-objects.html": [
- "2f471f80f6074a6a6ce27dde1d88199eb01d8bff",
- "stub"
- ],
- "service-workers/stub-4.5-response-objects.html": [
- "445982f51a3ab083ddb579d96f104452c149af51",
- "stub"
- ],
- "service-workers/stub-4.5.2-response.html": [
- "fbc72f30ad77c1d5591fcf359b4e4a7eb0263274",
- "stub"
- ],
- "service-workers/stub-4.5.4-opaque-response.html": [
- "a91306f4c3c85d1b3181e5bb62016157b71e3e14",
- "stub"
- ],
- "service-workers/stub-4.6-cache-objects.html": [
- "befd67cb378b0ea3e0f8d45cad3e344a4e2f9610",
- "stub"
- ],
- "service-workers/stub-4.6.1-cache-lifetimes.html": [
- "f6c9ecbd1919553af81429f1e16a6637ccc902f3",
- "stub"
- ],
- "service-workers/stub-4.6.2-cache.html": [
- "9270481d1837fb5c2c242de41e6653a26601cc3d",
- "stub"
- ],
- "service-workers/stub-4.6.3-cache-storage.html": [
- "29666d837fc05c0315043c97e7ab4f30efad0771",
- "stub"
- ],
- "service-workers/stub-4.7.1-install-phase-event.html": [
- "8b7ab81c5eff4a5ce03cb6939d75a1e38d5290d6",
- "stub"
- ],
- "service-workers/stub-4.7.1.1-wait-until-method.html": [
- "318318b13940cd9f5f8ebab8b93b6ec371ffb3ff",
- "stub"
- ],
- "service-workers/stub-4.7.2-install-event.html": [
- "77702ed02833c762b3cb12d3144c39844f5f8713",
- "stub"
- ],
- "service-workers/stub-4.7.2.1-install-event-section.html": [
- "d9b47e195af2b35f8d4f803caacd23e00e74f155",
- "stub"
- ],
- "service-workers/stub-4.7.2.2-replace-method.html": [
- "6981d3079c3e108d6f4c96a69db719e206d09c75",
- "stub"
- ],
- "service-workers/stub-4.7.3-activate-event.html": [
- "2a0162e5fd3eb48db2905bee9982fbe65e399793",
- "stub"
- ],
- "service-workers/stub-4.7.4.1-fetch-event-section.html": [
- "ace71967bdf868b11b2cca58e8893523b9121894",
- "stub"
- ],
- "service-workers/stub-4.7.4.2-respond-with-method.html": [
- "416b8ef517a85692348058595b27baeae9abe04d",
- "stub"
- ],
- "service-workers/stub-4.7.4.3-default-method.html": [
- "deff7ac4238eac47b82833814fe6f8babf941b5d",
- "stub"
- ],
- "service-workers/stub-4.7.4.4-is-reload-attribute.html": [
- "fffe5d5b29f1cd0bb46f2a2cd3a98a67bcedefd4",
- "stub"
- ],
- "service-workers/stub-5.1-origin-relativity.html": [
- "469ce2975cd5263829e2f9195b366db1c0268471",
- "stub"
- ],
- "service-workers/stub-5.2-cross-origin-resources.html": [
- "42c685b1d5525be8c3ed68a9112b2d546e78bcf6",
- "stub"
- ],
"service-workers/tools/blink-import.py": [
"552fdc054cc766f13ffe660b1f105b2c9b8c106c",
"support"
@@ -680009,7 +679539,7 @@
"testharness"
],
"svg/animations/repeatn-remove-add-animation.html": [
- "f192d27dfbd99352b6730b45be2a98f097d88f56",
+ "1715cd9d4711878d101e5b68963d2359521b4bfe",
"testharness"
],
"svg/animations/scripted/end-element-on-inactive-element.svg": [
@@ -680028,6 +679558,10 @@
"40aa3461866cf4c32316d86216dcfe4298be7718",
"testharness"
],
+ "svg/animations/slider-switch.html": [
+ "1e14ae55165a1955c5cbaad5247a320c11e677f7",
+ "testharness"
+ ],
"svg/animations/spaces-at-end-of-path-data.html": [
"235259beccadb2a7d52097918dbde91c07a49b5e",
"testharness"
@@ -693233,7 +692767,7 @@
"testharness"
],
"web-animations/timing-model/animations/pausing-an-animation.html": [
- "5383b520bb47ed2e4f5470d5c66438d1f12d8d75",
+ "bcec609d14206567ee25855f6dd7e684c69485ba",
"testharness"
],
"web-animations/timing-model/animations/play-states.html": [
@@ -693285,7 +692819,7 @@
"testharness"
],
"web-animations/timing-model/timelines/document-timelines.html": [
- "f45865ac7c0e37abeddee73ad5435dcc8acd6e89",
+ "4023bba55612b689d98a9773c9c6fafe11408e2b",
"testharness"
],
"web-animations/timing-model/timelines/timelines.html": [
@@ -693429,11 +692963,11 @@
"testharness"
],
"web-nfc/NFCReader.https.html": [
- "4488097d6ebee463545666b123ed4893b72080c6",
+ "6fcb9b161dd127e1f6e5a3e3e9fb77c35b18d657",
"testharness"
],
"web-nfc/NFCReader_options.https.html": [
- "ebda3859834c5bd146fba5d5b8a2982d5c6722df",
+ "7c77045afb3ee53ec69a758ad8d0719998465505",
"testharness"
],
"web-nfc/NFCReadingEvent_constructor.https.html": [
@@ -693457,7 +692991,7 @@
"testharness"
],
"web-nfc/resources/nfc-helpers.js": [
- "02f348ddf275d5f191e6cf4982c97d84900a59f9",
+ "f7ee7a4786eef391ec8025560c9b4718f23cef68",
"support"
],
"web-share/META.yml": [
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/border-color-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/border-color-interpolation.html.ini
new file mode 100644
index 00000000000..970058f0b3f
--- /dev/null
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/border-color-interpolation.html.ini
@@ -0,0 +1,4 @@
+[border-color-interpolation.html]
+ [border-color interpolation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/border-image-outset-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/border-image-outset-interpolation.html.ini
new file mode 100644
index 00000000000..96f888b78fb
--- /dev/null
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/border-image-outset-interpolation.html.ini
@@ -0,0 +1,4 @@
+[border-image-outset-interpolation.html]
+ [border-image-outset interpolation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/border-image-slice-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/border-image-slice-interpolation.html.ini
new file mode 100644
index 00000000000..7dd3d364d85
--- /dev/null
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/border-image-slice-interpolation.html.ini
@@ -0,0 +1,4 @@
+[border-image-slice-interpolation.html]
+ [border-image-slice interpolation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/border-image-source-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/border-image-source-interpolation.html.ini
new file mode 100644
index 00000000000..51817f63dfa
--- /dev/null
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/border-image-source-interpolation.html.ini
@@ -0,0 +1,4 @@
+[border-image-source-interpolation.html]
+ [border-image-source interpolation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/border-image-width-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/border-image-width-interpolation.html.ini
new file mode 100644
index 00000000000..7f71caea3b3
--- /dev/null
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/border-image-width-interpolation.html.ini
@@ -0,0 +1,4 @@
+[border-image-width-interpolation.html]
+ [border-image-width interpolation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/border-radius-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/border-radius-interpolation.html.ini
new file mode 100644
index 00000000000..211695f850a
--- /dev/null
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/border-radius-interpolation.html.ini
@@ -0,0 +1,4 @@
+[border-radius-interpolation.html]
+ [border-radius interpolation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/border-width-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/border-width-interpolation.html.ini
new file mode 100644
index 00000000000..09fe4f7ed4b
--- /dev/null
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/border-width-interpolation.html.ini
@@ -0,0 +1,4 @@
+[border-width-interpolation.html]
+ [border-width interpolation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/parsing/border-image-source-computed.sub.html.ini b/tests/wpt/metadata/css/css-backgrounds/parsing/border-image-source-computed.sub.html.ini
new file mode 100644
index 00000000000..7ffe55ac942
--- /dev/null
+++ b/tests/wpt/metadata/css/css-backgrounds/parsing/border-image-source-computed.sub.html.ini
@@ -0,0 +1,4 @@
+[border-image-source-computed.sub.html]
+ [Property border-image-source value 'conic-gradient(from 90deg at 80% 90%, lime, black)' computes to 'conic-gradient(from 90deg at 80% 90%, rgb(0, 255, 0), rgb(0, 0, 0))']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-001.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-001.html.ini
new file mode 100644
index 00000000000..e8fd8821a07
--- /dev/null
+++ b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-001.html.ini
@@ -0,0 +1,4 @@
+[transform-interpolation-001.html]
+ [transform interpolation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-002.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-002.html.ini
new file mode 100644
index 00000000000..8274a11ba82
--- /dev/null
+++ b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-002.html.ini
@@ -0,0 +1,4 @@
+[transform-interpolation-002.html]
+ [transform interpolation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-003.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-003.html.ini
new file mode 100644
index 00000000000..36fdde14172
--- /dev/null
+++ b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-003.html.ini
@@ -0,0 +1,4 @@
+[transform-interpolation-003.html]
+ [transform interpolation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-004.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-004.html.ini
new file mode 100644
index 00000000000..ca24607724d
--- /dev/null
+++ b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-004.html.ini
@@ -0,0 +1,4 @@
+[transform-interpolation-004.html]
+ [transform interpolation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-005.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-005.html.ini
new file mode 100644
index 00000000000..79ab5ae1a0f
--- /dev/null
+++ b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-005.html.ini
@@ -0,0 +1,4 @@
+[transform-interpolation-005.html]
+ [transform interpolation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-006.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-006.html.ini
new file mode 100644
index 00000000000..7f8c63ad11f
--- /dev/null
+++ b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-006.html.ini
@@ -0,0 +1,4 @@
+[transform-interpolation-006.html]
+ [transform interpolation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-origin-interpolation.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-origin-interpolation.html.ini
new file mode 100644
index 00000000000..28191ed3360
--- /dev/null
+++ b/tests/wpt/metadata/css/css-transforms/animation/transform-origin-interpolation.html.ini
@@ -0,0 +1,4 @@
+[transform-origin-interpolation.html]
+ [transform-origin interpolation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-variables/variable-substitution-background-properties.html.ini b/tests/wpt/metadata/css/css-variables/variable-substitution-background-properties.html.ini
index 3d0e60d281b..4a368b97c95 100644
--- a/tests/wpt/metadata/css/css-variables/variable-substitution-background-properties.html.ini
+++ b/tests/wpt/metadata/css/css-variables/variable-substitution-background-properties.html.ini
@@ -2,6 +2,3 @@
[background-position]
expected: FAIL
- [background-image-radial-gradient]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/cssom-view/getBoundingClientRect-empty-inline.html.ini b/tests/wpt/metadata/css/cssom-view/getBoundingClientRect-empty-inline.html.ini
new file mode 100644
index 00000000000..6042e6fb0d9
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/getBoundingClientRect-empty-inline.html.ini
@@ -0,0 +1,4 @@
+[getBoundingClientRect-empty-inline.html]
+ [getBoundingClientRect-empty-inline]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/idlharness.html.ini b/tests/wpt/metadata/css/cssom-view/idlharness.html.ini
new file mode 100644
index 00000000000..66b7c0b1ace
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/idlharness.html.ini
@@ -0,0 +1,301 @@
+[idlharness.html]
+ [Element interface: document.createElement("img") must inherit property "scrollIntoView([object Object\],[object Object\])" with the proper type]
+ expected: FAIL
+
+ [Stringification of document.caretPositionFromPoint(5, 5)]
+ expected: FAIL
+
+ [Element interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createElement("img") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Element interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)]
+ expected: FAIL
+
+ [Text interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)]
+ expected: FAIL
+
+ [Document interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Range interface: operation getBoundingClientRect()]
+ expected: FAIL
+
+ [Text interface: document.createTextNode("x") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type]
+ expected: FAIL
+
+ [Text interface: document.createTextNode("x") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type]
+ expected: FAIL
+
+ [MouseEvent interface: attribute pageX]
+ expected: FAIL
+
+ [MouseEvent interface: attribute pageY]
+ expected: FAIL
+
+ [HTMLImageElement interface: document.createElement("img") must inherit property "x" with the proper type]
+ expected: FAIL
+
+ [Text interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createTextNode("x") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Text interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createTextNode("x") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CaretPosition interface: document.caretPositionFromPoint(5, 5) must inherit property "offset" with the proper type]
+ expected: FAIL
+
+ [Element interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("img") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Text interface: document.createTextNode("x") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type]
+ expected: FAIL
+
+ [CaretPosition interface: operation getClientRect()]
+ expected: FAIL
+
+ [HTMLImageElement interface: attribute x]
+ expected: FAIL
+
+ [Document interface: operation getBoxQuads(BoxQuadOptions)]
+ expected: FAIL
+
+ [Element interface: calling scrollIntoView([object Object\],[object Object\]) on document.createElementNS("x", "y") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Element interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("div") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: operation caretPositionFromPoint(double, double)]
+ expected: FAIL
+
+ [Element interface: document.createElement("div") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type]
+ expected: FAIL
+
+ [CSSPseudoElement interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)]
+ expected: FAIL
+
+ [Text interface: operation getBoxQuads(BoxQuadOptions)]
+ expected: FAIL
+
+ [HTMLImageElement interface: document.createElement("img") must inherit property "y" with the proper type]
+ expected: FAIL
+
+ [Element interface: operation scrollIntoView([object Object\],[object Object\])]
+ expected: FAIL
+
+ [Element interface: document.createElement("img") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Element interface: document.createElement("img") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type]
+ expected: FAIL
+
+ [Element interface: calling getBoxQuads(BoxQuadOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CaretPosition interface: attribute offsetNode]
+ expected: FAIL
+
+ [Text interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)]
+ expected: FAIL
+
+ [Element interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Window interface: window must inherit property "screenLeft" with the proper type]
+ expected: FAIL
+
+ [Document interface: document must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type]
+ expected: FAIL
+
+ [Element interface: document.createElementNS("x", "y") must inherit property "scrollIntoView([object Object\],[object Object\])" with the proper type]
+ expected: FAIL
+
+ [CaretPosition interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [Document interface: document must inherit property "scrollingElement" with the proper type]
+ expected: FAIL
+
+ [CSSPseudoElement interface: operation getBoxQuads(BoxQuadOptions)]
+ expected: FAIL
+
+ [Element interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)]
+ expected: FAIL
+
+ [Range interface: operation getClientRects()]
+ expected: FAIL
+
+ [MouseEvent interface: attribute y]
+ expected: FAIL
+
+ [MouseEvent interface: attribute x]
+ expected: FAIL
+
+ [Element interface: calling scrollIntoView([object Object\],[object Object\]) on document.createElement("img") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Text interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createTextNode("x") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Element interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)]
+ expected: FAIL
+
+ [Text interface: calling getBoxQuads(BoxQuadOptions) on document.createTextNode("x") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Element interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("div") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Element interface: document.createElement("div") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type]
+ expected: FAIL
+
+ [Element interface: calling scrollIntoView([object Object\],[object Object\]) on document.createElement("div") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Element interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)]
+ expected: FAIL
+
+ [CaretPosition interface: document.caretPositionFromPoint(5, 5) must inherit property "getClientRect()" with the proper type]
+ expected: FAIL
+
+ [Document interface: document must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type]
+ expected: FAIL
+
+ [CaretPosition interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [Document interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)]
+ expected: FAIL
+
+ [Element interface: calling getBoxQuads(BoxQuadOptions) on document.createElement("img") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CaretPosition interface object name]
+ expected: FAIL
+
+ [Window interface: window must inherit property "screenTop" with the proper type]
+ expected: FAIL
+
+ [CaretPosition interface: document.caretPositionFromPoint(5, 5) must inherit property "offsetNode" with the proper type]
+ expected: FAIL
+
+ [Element interface: document.createElementNS("x", "y") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type]
+ expected: FAIL
+
+ [CaretPosition interface: existence and properties of interface object]
+ expected: FAIL
+
+ [Element interface: document.createElement("div") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type]
+ expected: FAIL
+
+ [Element interface: calling getBoxQuads(BoxQuadOptions) on document.createElement("div") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Window interface: attribute screenLeft]
+ expected: FAIL
+
+ [Range interface: new Range() must inherit property "getBoundingClientRect()" with the proper type]
+ expected: FAIL
+
+ [Element interface: document.createElementNS("x", "y") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type]
+ expected: FAIL
+
+ [Element interface: document.createElement("div") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type]
+ expected: FAIL
+
+ [Element interface: document.createElement("img") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type]
+ expected: FAIL
+
+ [Document interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)]
+ expected: FAIL
+
+ [Document interface: document must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type]
+ expected: FAIL
+
+ [Element interface: operation getBoxQuads(BoxQuadOptions)]
+ expected: FAIL
+
+ [Window interface: attribute screenTop]
+ expected: FAIL
+
+ [Element interface: document.createElementNS("x", "y") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type]
+ expected: FAIL
+
+ [Document interface: document must inherit property "caretPositionFromPoint(double, double)" with the proper type]
+ expected: FAIL
+
+ [Range interface: new Range() must inherit property "getClientRects()" with the proper type]
+ expected: FAIL
+
+ [Text interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)]
+ expected: FAIL
+
+ [Element interface: document.createElement("img") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type]
+ expected: FAIL
+
+ [Text interface: document.createTextNode("x") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type]
+ expected: FAIL
+
+ [Document interface: document must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type]
+ expected: FAIL
+
+ [Document interface: attribute scrollingElement]
+ expected: FAIL
+
+ [Element interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Element interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createElement("div") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [MouseEvent interface: attribute offsetX]
+ expected: FAIL
+
+ [MouseEvent interface: attribute offsetY]
+ expected: FAIL
+
+ [CSSPseudoElement interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)]
+ expected: FAIL
+
+ [CaretPosition interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [CSSPseudoElement interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)]
+ expected: FAIL
+
+ [HTMLImageElement interface: attribute y]
+ expected: FAIL
+
+ [Document interface: calling caretPositionFromPoint(double, double) on document with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CaretPosition must be primary interface of document.caretPositionFromPoint(5, 5)]
+ expected: FAIL
+
+ [CaretPosition interface object length]
+ expected: FAIL
+
+ [Element interface: document.createElementNS("x", "y") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling getBoxQuads(BoxQuadOptions) on document with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CaretPosition interface: attribute offset]
+ expected: FAIL
+
+ [Element interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("img") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Element interface: document.createElement("div") must inherit property "scrollIntoView([object Object\],[object Object\])" with the proper type]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini b/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini
new file mode 100644
index 00000000000..e6e1f29e274
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini
@@ -0,0 +1,2 @@
+[matchMedia-display-none-iframe.html]
+ expected: ERROR
diff --git a/tests/wpt/metadata/css/cssom/idlharness.html.ini b/tests/wpt/metadata/css/cssom/idlharness.html.ini
new file mode 100644
index 00000000000..fd06e75911e
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom/idlharness.html.ini
@@ -0,0 +1,496 @@
+[idlharness.html]
+ [CSSRule interface: attribute parentRule]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on sheet.cssRules[2\].style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: style_element.style must inherit property "parentRule" with the proper type]
+ expected: FAIL
+
+ [MediaList interface: sheet.media must inherit property "deleteMedium(CSSOMString)" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[2\].style must inherit property "removeProperty(CSSOMString)" with the proper type]
+ expected: FAIL
+
+ [Stringification of svg_element.style]
+ expected: FAIL
+
+ [MediaList interface: calling item(unsigned long) on sheet.media with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CSSStyleSheet interface: sheet must inherit property "ownerRule" with the proper type]
+ expected: FAIL
+
+ [CSSGroupingRule interface: operation insertRule(CSSOMString, unsigned long)]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[2\].cssRules[0\] must inherit property "parentRule" with the proper type]
+ expected: FAIL
+
+ [CSSStyleSheet interface: calling removeRule(unsigned long) on sheet with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: svg_element.style must inherit property "item(unsigned long)" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on sheet.cssRules[2\].cssRules[0\].style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [StyleSheet interface: attribute ownerNode]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[2\].cssRules[0\] must inherit property "STYLE_RULE" with the proper type]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[2\].cssRules[0\] must inherit property "FONT_FACE_RULE" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, CSSOMString) on sheet.cssRules[2\].style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[4\].style must inherit property "parentRule" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration must be primary interface of sheet.cssRules[4\].style]
+ expected: FAIL
+
+ [CSSMarginRule interface: sheet.cssRules[2\].cssRules[0\] must inherit property "style" with the proper type]
+ expected: FAIL
+
+ [MediaList interface: sheet.media must inherit property "item(unsigned long)" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: svg_element.style must inherit property "getPropertyValue(CSSOMString)" with the proper type]
+ expected: FAIL
+
+ [MediaList interface: sheet.media must inherit property "length" with the proper type]
+ expected: FAIL
+
+ [StyleSheet interface: sheet must inherit property "media" with the proper type]
+ expected: FAIL
+
+ [SVGStyleElement interface: attribute sheet]
+ expected: FAIL
+
+ [CSSStyleSheet interface: attribute rules]
+ expected: FAIL
+
+ [CSSStyleSheet interface: operation removeRule(unsigned long)]
+ expected: FAIL
+
+ [SVGElement interface: attribute style]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: svg_element.style must inherit property "getPropertyPriority(CSSOMString)" with the proper type]
+ expected: FAIL
+
+ [StyleSheet interface: attribute type]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[2\].cssRules[0\] must inherit property "MARGIN_RULE" with the proper type]
+ expected: FAIL
+
+ [Stringification of sheet.cssRules[2\].cssRules[0\]]
+ expected: FAIL
+
+ [MediaList interface: stringifier]
+ expected: FAIL
+
+ [CSSImportRule interface: attribute media]
+ expected: FAIL
+
+ [CSSStyleSheet interface: sheet must inherit property "addRule(DOMString, DOMString, unsigned long)" with the proper type]
+ expected: FAIL
+
+ [CSSPageRule interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on sheet.cssRules[2\].cssRules[0\].style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CSSMarginRule interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [CSSMarginRule interface: existence and properties of interface object]
+ expected: FAIL
+
+ [CSSStyleRule must be primary interface of sheet.cssRules[4\]]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[4\] must inherit property "PAGE_RULE" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: svg_element.style must inherit property "cssFloat" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration must be primary interface of sheet.cssRules[2\].cssRules[0\].style]
+ expected: FAIL
+
+ [CSSMarginRule interface: sheet.cssRules[2\].cssRules[0\] must inherit property "name" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling item(unsigned long) on sheet.cssRules[2\].style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Stringification of sheet.cssRules[4\].style]
+ expected: FAIL
+
+ [CSSMarginRule interface: attribute name]
+ expected: FAIL
+
+ [StyleSheet interface: attribute parentStyleSheet]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on sheet.cssRules[4\].style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Stringification of sheet.cssRules[2\].style]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: svg_element.style must inherit property "setProperty(CSSOMString, CSSOMString, CSSOMString)" with the proper type]
+ expected: FAIL
+
+ [CSSPageRule interface object length]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[4\] must inherit property "MARGIN_RULE" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration must be primary interface of svg_element.style]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[1\] must inherit property "parentRule" with the proper type]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[4\] must inherit property "type" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on sheet.cssRules[2\].style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling item(unsigned long) on sheet.cssRules[4\].style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CSSImportRule interface: attribute href]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[2\] must inherit property "parentRule" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[2\].style must inherit property "parentRule" with the proper type]
+ expected: FAIL
+
+ [CSSPageRule interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [CSSPageRule interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[2\].cssRules[0\].style must inherit property "removeProperty(CSSOMString)" with the proper type]
+ expected: FAIL
+
+ [CSSImportRule interface: attribute styleSheet]
+ expected: FAIL
+
+ [CSSStyleSheet interface: operation addRule(DOMString, DOMString, unsigned long)]
+ expected: FAIL
+
+ [CSSPageRule interface: existence and properties of interface object]
+ expected: FAIL
+
+ [CSSStyleSheet interface: sheet must inherit property "rules" with the proper type]
+ expected: FAIL
+
+ [CSSPageRule must be primary interface of sheet.cssRules[2\]]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[4\] must inherit property "STYLE_RULE" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[4\].style must inherit property "cssText" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling item(unsigned long) on sheet.cssRules[2\].cssRules[0\].style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on sheet.cssRules[4\].style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CSSPageRule interface: sheet.cssRules[2\] must inherit property "style" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on svg_element.style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CSSMarginRule must be primary interface of sheet.cssRules[2\].cssRules[0\]]
+ expected: FAIL
+
+ [CSSStyleSheet interface: attribute ownerRule]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[2\].cssRules[0\].style must inherit property "getPropertyValue(CSSOMString)" with the proper type]
+ expected: FAIL
+
+ [MediaList interface: calling appendMedium(CSSOMString) on sheet.media with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[4\] must inherit property "cssText" with the proper type]
+ expected: FAIL
+
+ [CSSImportRule interface: sheet.cssRules[0\] must inherit property "styleSheet" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: svg_element.style must inherit property "removeProperty(CSSOMString)" with the proper type]
+ expected: FAIL
+
+ [CSSPageRule interface: attribute selectorText]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, CSSOMString) on sheet.cssRules[4\].style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[2\].cssRules[0\].style must inherit property "getPropertyPriority(CSSOMString)" with the proper type]
+ expected: FAIL
+
+ [MediaList interface: calling deleteMedium(CSSOMString) on sheet.media with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CSSPageRule interface: sheet.cssRules[2\] must inherit property "selectorText" with the proper type]
+ expected: FAIL
+
+ [CSSMarginRule interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[4\].style must inherit property "getPropertyPriority(CSSOMString)" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: svg_element.style must inherit property "parentRule" with the proper type]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[4\] must inherit property "NAMESPACE_RULE" with the proper type]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[2\].cssRules[0\] must inherit property "NAMESPACE_RULE" with the proper type]
+ expected: FAIL
+
+ [CSSStyleSheet interface: sheet must inherit property "removeRule(unsigned long)" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[2\].style must inherit property "getPropertyPriority(CSSOMString)" with the proper type]
+ expected: FAIL
+
+ [MediaList interface: sheet.media must inherit property "mediaText" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[2\].style must inherit property "length" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on svg_element.style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CSSStyleDeclaration must be primary interface of sheet.cssRules[2\].style]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on sheet.cssRules[2\].style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CSSStyleSheet interface: calling addRule(DOMString, DOMString, unsigned long) on sheet with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "parentRule" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[2\].style must inherit property "setProperty(CSSOMString, CSSOMString, CSSOMString)" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[4\].style must inherit property "removeProperty(CSSOMString)" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, CSSOMString) on svg_element.style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on sheet.cssRules[4\].style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [MediaList interface: sheet.media must inherit property "appendMedium(CSSOMString)" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[4\].style must inherit property "length" with the proper type]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[0\] must inherit property "parentRule" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[2\].cssRules[0\].style must inherit property "length" with the proper type]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[4\] must inherit property "MEDIA_RULE" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[2\].style must inherit property "cssText" with the proper type]
+ expected: FAIL
+
+ [Stringification of sheet.cssRules[4\]]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, CSSOMString) on sheet.cssRules[2\].cssRules[0\].style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [SVGElement interface: svg_element must inherit property "style" with the proper type]
+ expected: FAIL
+
+ [StyleSheet interface: attribute media]
+ expected: FAIL
+
+ [CSSPageRule interface: attribute style]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[2\].cssRules[0\].style must inherit property "parentRule" with the proper type]
+ expected: FAIL
+
+ [StyleSheet interface: sheet must inherit property "type" with the proper type]
+ expected: FAIL
+
+ [StyleSheet interface: sheet must inherit property "ownerNode" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[2\].cssRules[0\].style must inherit property "cssText" with the proper type]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[4\] must inherit property "parentStyleSheet" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[4\].style must inherit property "getPropertyValue(CSSOMString)" with the proper type]
+ expected: FAIL
+
+ [MediaList must be primary interface of sheet.media]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[2\].cssRules[0\] must inherit property "PAGE_RULE" with the proper type]
+ expected: FAIL
+
+ [CSSStyleRule interface: sheet.cssRules[4\] must inherit property "style" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: svg_element.style must inherit property "length" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[2\].style must inherit property "item(unsigned long)" with the proper type]
+ expected: FAIL
+
+ [CSSMarginRule interface object length]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[2\].cssRules[0\] must inherit property "IMPORT_RULE" with the proper type]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[4\] must inherit property "FONT_FACE_RULE" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling item(unsigned long) on svg_element.style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[4\].style must inherit property "cssFloat" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on sheet.cssRules[2\].cssRules[0\].style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [ProcessingInstruction interface: xmlss_pi must inherit property "sheet" with the proper type]
+ expected: FAIL
+
+ [CSSMarginRule interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[2\].cssRules[0\] must inherit property "MEDIA_RULE" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on svg_element.style with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CSSPageRule interface object name]
+ expected: FAIL
+
+ [ProcessingInstruction interface: attribute sheet]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[4\] must inherit property "CHARSET_RULE" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: svg_element.style must inherit property "cssText" with the proper type]
+ expected: FAIL
+
+ [Stringification of sheet.media]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[2\].cssRules[0\] must inherit property "type" with the proper type]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[4\] must inherit property "IMPORT_RULE" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[2\].cssRules[0\].style must inherit property "cssFloat" with the proper type]
+ expected: FAIL
+
+ [CSSImportRule interface: sheet.cssRules[0\] must inherit property "media" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[2\].style must inherit property "cssFloat" with the proper type]
+ expected: FAIL
+
+ [StyleSheet interface: sheet must inherit property "parentStyleSheet" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[4\].style must inherit property "item(unsigned long)" with the proper type]
+ expected: FAIL
+
+ [Stringification of sheet.cssRules[2\].cssRules[0\].style]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[2\].cssRules[0\].style must inherit property "setProperty(CSSOMString, CSSOMString, CSSOMString)" with the proper type]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[2\].cssRules[0\] must inherit property "CHARSET_RULE" with the proper type]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[4\] must inherit property "parentRule" with the proper type]
+ expected: FAIL
+
+ [CSSMarginRule interface: attribute style]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[2\].style must inherit property "getPropertyValue(CSSOMString)" with the proper type]
+ expected: FAIL
+
+ [Stringification of sheet.cssRules[2\]]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[2\].cssRules[0\] must inherit property "parentStyleSheet" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: attribute style]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: attribute parentRule]
+ expected: FAIL
+
+ [CSSStyleRule interface: sheet.cssRules[4\] must inherit property "selectorText" with the proper type]
+ expected: FAIL
+
+ [CSSRule interface: sheet.cssRules[2\].cssRules[0\] must inherit property "cssText" with the proper type]
+ expected: FAIL
+
+ [CSSImportRule interface: sheet.cssRules[0\] must inherit property "href" with the proper type]
+ expected: FAIL
+
+ [CSSMarginRule interface object name]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[4\].style must inherit property "setProperty(CSSOMString, CSSOMString, CSSOMString)" with the proper type]
+ expected: FAIL
+
+ [CSSStyleDeclaration interface: sheet.cssRules[2\].cssRules[0\].style must inherit property "item(unsigned long)" with the proper type]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/filter-effects/idlharness.any.js.ini b/tests/wpt/metadata/css/filter-effects/idlharness.any.js.ini
new file mode 100644
index 00000000000..9f231740cd1
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/idlharness.any.js.ini
@@ -0,0 +1,1374 @@
+[idlharness.any.worker.html]
+
+[idlharness.any.html]
+ [SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_UNKNOWN on interface object]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface object name]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_ATOP on interface object]
+ expected: FAIL
+
+ [SVGFESpotLightElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: constant SVG_EDGEMODE_NONE on interface prototype object]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: attribute result]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_EXCLUSION on interface prototype object]
+ expected: FAIL
+
+ [SVGFEOffsetElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFilterElement interface: attribute width]
+ expected: FAIL
+
+ [SVGFETileElement interface: attribute in1]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_UNKNOWN on interface prototype object]
+ expected: FAIL
+
+ [SVGFEComponentTransferElement interface: attribute result]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFETileElement interface object length]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: attribute yChannelSelector]
+ expected: FAIL
+
+ [SVGFEDropShadowElement interface: attribute width]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: attribute height]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_TABLE on interface object]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_SATURATION on interface prototype object]
+ expected: FAIL
+
+ [SVGFESpotLightElement interface: attribute specularExponent]
+ expected: FAIL
+
+ [SVGFEFuncBElement interface object name]
+ expected: FAIL
+
+ [SVGFEImageElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: attribute height]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: constant SVG_STITCHTYPE_UNKNOWN on interface prototype object]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_MATRIX on interface prototype object]
+ expected: FAIL
+
+ [SVGFEDropShadowElement interface: attribute in1]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: attribute values]
+ expected: FAIL
+
+ [SVGFEDropShadowElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: attribute type]
+ expected: FAIL
+
+ [SVGFEOffsetElement interface: attribute in1]
+ expected: FAIL
+
+ [SVGFEComponentTransferElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: attribute y]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: attribute kernelUnitLengthY]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: attribute kernelUnitLengthX]
+ expected: FAIL
+
+ [SVGFEFuncBElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFEFuncGElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEDiffuseLightingElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFEPointLightElement interface object name]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: attribute slope]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: attribute in1]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_COLOR on interface prototype object]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_OVERLAY on interface prototype object]
+ expected: FAIL
+
+ [SVGFEDiffuseLightingElement interface object name]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: constant SVG_EDGEMODE_WRAP on interface object]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface: attribute radiusY]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: constant SVG_EDGEMODE_UNKNOWN on interface object]
+ expected: FAIL
+
+ [SVGFEDiffuseLightingElement interface: attribute kernelUnitLengthY]
+ expected: FAIL
+
+ [SVGFEFuncRElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFEMergeNodeElement interface object length]
+ expected: FAIL
+
+ [SVGFEMergeElement interface object name]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_MULTIPLY on interface prototype object]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE on interface prototype object]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_NORMAL on interface object]
+ expected: FAIL
+
+ [SVGFilterElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEImageElement interface: attribute result]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_LINEAR on interface object]
+ expected: FAIL
+
+ [SVGFEFuncAElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFEDiffuseLightingElement interface: attribute in1]
+ expected: FAIL
+
+ [SVGFEDropShadowElement interface: attribute x]
+ expected: FAIL
+
+ [SVGFEDropShadowElement interface: attribute y]
+ expected: FAIL
+
+ [SVGFEImageElement interface: attribute width]
+ expected: FAIL
+
+ [SVGFEMergeElement interface: attribute height]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: constant SVG_STITCHTYPE_NOSTITCH on interface prototype object]
+ expected: FAIL
+
+ [SVGFESpotLightElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEFuncGElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFESpecularLightingElement interface: attribute specularExponent]
+ expected: FAIL
+
+ [SVGFEMergeElement interface object length]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_DARKEN on interface prototype object]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_A on interface object]
+ expected: FAIL
+
+ [SVGFilterElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFEMergeElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFETileElement interface: attribute y]
+ expected: FAIL
+
+ [SVGFETileElement interface: attribute x]
+ expected: FAIL
+
+ [SVGFESpecularLightingElement interface: attribute in1]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface object name]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface object length]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: attribute y]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: attribute x]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY on interface prototype object]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: attribute preserveAlpha]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_IN on interface prototype object]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFilterElement interface object length]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: attribute offset]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_R on interface prototype object]
+ expected: FAIL
+
+ [SVGFilterElement interface object name]
+ expected: FAIL
+
+ [SVGFEDiffuseLightingElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEDiffuseLightingElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: attribute scale]
+ expected: FAIL
+
+ [SVGFEDropShadowElement interface: operation setStdDeviation(float, float)]
+ expected: FAIL
+
+ [SVGFESpecularLightingElement interface: attribute surfaceScale]
+ expected: FAIL
+
+ [SVGFEDropShadowElement interface: attribute stdDeviationX]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface object length]
+ expected: FAIL
+
+ [SVGFEBlendElement interface object name]
+ expected: FAIL
+
+ [SVGFEDiffuseLightingElement interface: attribute x]
+ expected: FAIL
+
+ [SVGFEDiffuseLightingElement interface: attribute y]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: attribute k1]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: attribute k3]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: attribute k2]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: attribute k4]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFEFloodElement interface: attribute height]
+ expected: FAIL
+
+ [SVGFEDropShadowElement interface: attribute stdDeviationY]
+ expected: FAIL
+
+ [SVGFEImageElement interface: attribute preserveAspectRatio]
+ expected: FAIL
+
+ [SVGFilterElement interface: attribute primitiveUnits]
+ expected: FAIL
+
+ [SVGFEMergeElement interface: attribute width]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_SCREEN on interface prototype object]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: attribute orderY]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: attribute orderX]
+ expected: FAIL
+
+ [SVGFEFuncBElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: attribute operator]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: attribute baseFrequencyY]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_UNKNOWN on interface object]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: attribute width]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface object name]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_XOR on interface object]
+ expected: FAIL
+
+ [SVGFEFuncAElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: constant SVG_EDGEMODE_WRAP on interface prototype object]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA on interface object]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: attribute in2]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_COLOR_DODGE on interface object]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: attribute in2]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: attribute in1]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: constant SVG_TURBULENCE_TYPE_TURBULENCE on interface object]
+ expected: FAIL
+
+ [SVGFEComponentTransferElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: attribute height]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: constant SVG_EDGEMODE_DUPLICATE on interface object]
+ expected: FAIL
+
+ [SVGFEOffsetElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface: constant SVG_MORPHOLOGY_OPERATOR_DILATE on interface prototype object]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface object length]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: constant SVG_EDGEMODE_UNKNOWN on interface prototype object]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: attribute width]
+ expected: FAIL
+
+ [SVGFEFuncRElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_UNKNOWN on interface object]
+ expected: FAIL
+
+ [SVGFEFuncBElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_TABLE on interface prototype object]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface object name]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: attribute width]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_HUEROTATE on interface object]
+ expected: FAIL
+
+ [SVGFEDropShadowElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_IN on interface object]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_ARITHMETIC on interface prototype object]
+ expected: FAIL
+
+ [SVGFEDistantLightElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface: constant SVG_MORPHOLOGY_OPERATOR_ERODE on interface prototype object]
+ expected: FAIL
+
+ [SVGFEDiffuseLightingElement interface: attribute result]
+ expected: FAIL
+
+ [SVGFEDistantLightElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFilterElement interface: attribute height]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_B on interface prototype object]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEFuncGElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: constant SVG_EDGEMODE_NONE on interface object]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_SOFT_LIGHT on interface object]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_OVER on interface prototype object]
+ expected: FAIL
+
+ [SVGFEFloodElement interface: attribute x]
+ expected: FAIL
+
+ [SVGFEFloodElement interface: attribute y]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_UNKNOWN on interface object]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: attribute tableValues]
+ expected: FAIL
+
+ [SVGFECompositeElement interface object name]
+ expected: FAIL
+
+ [SVGFEComponentTransferElement interface: attribute in1]
+ expected: FAIL
+
+ [SVGFEFuncRElement interface object name]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: constant SVG_TURBULENCE_TYPE_UNKNOWN on interface prototype object]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFEOffsetElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface: attribute in1]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_SATURATE on interface prototype object]
+ expected: FAIL
+
+ [SVGFEFuncRElement interface object length]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: attribute divisor]
+ expected: FAIL
+
+ [SVGFEComponentTransferElement interface: attribute height]
+ expected: FAIL
+
+ [SVGFEMergeNodeElement interface object name]
+ expected: FAIL
+
+ [SVGFEDropShadowElement interface object length]
+ expected: FAIL
+
+ [SVGFESpotLightElement interface: attribute pointsAtX]
+ expected: FAIL
+
+ [SVGFESpotLightElement interface: attribute pointsAtY]
+ expected: FAIL
+
+ [SVGFESpotLightElement interface: attribute pointsAtZ]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFEDistantLightElement interface: attribute azimuth]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: attribute type]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEImageElement interface: attribute height]
+ expected: FAIL
+
+ [SVGFEImageElement interface object name]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: constant SVG_EDGEMODE_UNKNOWN on interface prototype object]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: attribute width]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: attribute xChannelSelector]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_HARD_LIGHT on interface prototype object]
+ expected: FAIL
+
+ [SVGFEImageElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_NORMAL on interface prototype object]
+ expected: FAIL
+
+ [SVGFEFuncAElement interface object name]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_B on interface object]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: attribute height]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN on interface object]
+ expected: FAIL
+
+ [SVGFEFuncRElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFEDropShadowElement interface: attribute dy]
+ expected: FAIL
+
+ [SVGFEDropShadowElement interface: attribute dx]
+ expected: FAIL
+
+ [SVGFEPointLightElement interface object length]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_MULTIPLY on interface object]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface object name]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_EXCLUSION on interface object]
+ expected: FAIL
+
+ [SVGFEDropShadowElement interface object name]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_COLOR_DODGE on interface prototype object]
+ expected: FAIL
+
+ [SVGFEComponentTransferElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface object name]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: constant SVG_EDGEMODE_DUPLICATE on interface prototype object]
+ expected: FAIL
+
+ [SVGFEFuncGElement interface object name]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_G on interface object]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: attribute mode]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: constant SVG_EDGEMODE_DUPLICATE on interface prototype object]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_COLOR_BURN on interface object]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: constant SVG_TURBULENCE_TYPE_UNKNOWN on interface object]
+ expected: FAIL
+
+ [SVGFESpecularLightingElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEComponentTransferElement interface: attribute x]
+ expected: FAIL
+
+ [SVGFEComponentTransferElement interface: attribute y]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_SATURATE on interface object]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFEFloodElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: attribute result]
+ expected: FAIL
+
+ [SVGFESpecularLightingElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: operation setStdDeviation(float, float)]
+ expected: FAIL
+
+ [SVGFEDiffuseLightingElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFETileElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: attribute kernelMatrix]
+ expected: FAIL
+
+ [SVGFETileElement interface object name]
+ expected: FAIL
+
+ [SVGFEFuncBElement interface object length]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface object length]
+ expected: FAIL
+
+ [SVGFETileElement interface: attribute result]
+ expected: FAIL
+
+ [SVGFEDropShadowElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: attribute targetY]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: attribute targetX]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface: attribute height]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_MATRIX on interface object]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: attribute height]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: attribute width]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFESpotLightElement interface: attribute z]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: attribute result]
+ expected: FAIL
+
+ [SVGFESpotLightElement interface: attribute x]
+ expected: FAIL
+
+ [SVGFESpotLightElement interface: attribute y]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_COLOR_BURN on interface prototype object]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: attribute in1]
+ expected: FAIL
+
+ [SVGFESpecularLightingElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFEFuncAElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_OVER on interface object]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: attribute edgeMode]
+ expected: FAIL
+
+ [SVGFEImageElement interface: attribute crossOrigin]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: attribute x]
+ expected: FAIL
+
+ [SVGFETileElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEPointLightElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_SOFT_LIGHT on interface prototype object]
+ expected: FAIL
+
+ [SVGFEDropShadowElement interface: attribute height]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: attribute seed]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: attribute stdDeviationY]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: attribute stdDeviationX]
+ expected: FAIL
+
+ [SVGFEPointLightElement interface: attribute z]
+ expected: FAIL
+
+ [SVGFEPointLightElement interface: attribute y]
+ expected: FAIL
+
+ [SVGFEPointLightElement interface: attribute x]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: attribute result]
+ expected: FAIL
+
+ [SVGFETileElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: attribute stitchTiles]
+ expected: FAIL
+
+ [SVGFEFloodElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEDropShadowElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFEImageElement interface object length]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface: attribute width]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: constant SVG_STITCHTYPE_STITCH on interface prototype object]
+ expected: FAIL
+
+ [SVGFESpecularLightingElement interface object length]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: attribute result]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: attribute in1]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: constant SVG_EDGEMODE_DUPLICATE on interface object]
+ expected: FAIL
+
+ [SVGFESpotLightElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFEMergeElement interface: attribute y]
+ expected: FAIL
+
+ [SVGFESpotLightElement interface object name]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: attribute y]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: attribute x]
+ expected: FAIL
+
+ [SVGFEDistantLightElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_DIFFERENCE on interface prototype object]
+ expected: FAIL
+
+ [SVGFEDropShadowElement interface: attribute result]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_HUE on interface prototype object]
+ expected: FAIL
+
+ [SVGFEMergeNodeElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFEFloodElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFECompositeElement interface object length]
+ expected: FAIL
+
+ [SVGFEComponentTransferElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFESpecularLightingElement interface: attribute width]
+ expected: FAIL
+
+ [SVGFEMergeNodeElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: constant SVG_TURBULENCE_TYPE_TURBULENCE on interface prototype object]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: constant SVG_STITCHTYPE_STITCH on interface object]
+ expected: FAIL
+
+ [SVGFEFloodElement interface object name]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: attribute intercept]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEMergeNodeElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: attribute in2]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: attribute in1]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface object length]
+ expected: FAIL
+
+ [SVGFEDiffuseLightingElement interface object length]
+ expected: FAIL
+
+ [SVGFETileElement interface: attribute height]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: constant SVG_EDGEMODE_WRAP on interface object]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface object length]
+ expected: FAIL
+
+ [SVGFEFuncAElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface: attribute radiusX]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface: constant SVG_MORPHOLOGY_OPERATOR_DILATE on interface object]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_DIFFERENCE on interface object]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface: constant SVG_MORPHOLOGY_OPERATOR_UNKNOWN on interface object]
+ expected: FAIL
+
+ [SVGFEImageElement interface: attribute y]
+ expected: FAIL
+
+ [SVGFEImageElement interface: attribute x]
+ expected: FAIL
+
+ [SVGFEMergeElement interface: attribute x]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: attribute result]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: constant SVG_EDGEMODE_WRAP on interface prototype object]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_DARKEN on interface object]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: attribute x]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: attribute y]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_LUMINOSITY on interface prototype object]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_HUEROTATE on interface prototype object]
+ expected: FAIL
+
+ [SVGFEComponentTransferElement interface object length]
+ expected: FAIL
+
+ [SVGFEFuncGElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_COLOR on interface object]
+ expected: FAIL
+
+ [SVGFESpecularLightingElement interface: attribute x]
+ expected: FAIL
+
+ [SVGFESpecularLightingElement interface: attribute y]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: attribute result]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_HUE on interface object]
+ expected: FAIL
+
+ [SVGFEDiffuseLightingElement interface: attribute kernelUnitLengthX]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: attribute x]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: attribute y]
+ expected: FAIL
+
+ [SVGFEImageElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: constant SVG_EDGEMODE_NONE on interface object]
+ expected: FAIL
+
+ [SVGFEFloodElement interface: attribute width]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: attribute width]
+ expected: FAIL
+
+ [SVGFEBlendElement interface object length]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: constant SVG_EDGEMODE_UNKNOWN on interface object]
+ expected: FAIL
+
+ [SVGFEOffsetElement interface: attribute x]
+ expected: FAIL
+
+ [SVGFEOffsetElement interface: attribute y]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE on interface object]
+ expected: FAIL
+
+ [SVGFEOffsetElement interface: attribute height]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_SCREEN on interface object]
+ expected: FAIL
+
+ [SVGFEDistantLightElement interface object name]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: attribute amplitude]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_XOR on interface prototype object]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA on interface prototype object]
+ expected: FAIL
+
+ [SVGFESpotLightElement interface: attribute limitingConeAngle]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEFloodElement interface object length]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_UNKNOWN on interface prototype object]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: constant SVG_TURBULENCE_TYPE_FRACTALNOISE on interface prototype object]
+ expected: FAIL
+
+ [SVGFilterElement interface: attribute filterUnits]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEOffsetElement interface: attribute result]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_OVERLAY on interface object]
+ expected: FAIL
+
+ [SVGFilterElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface: constant SVG_MORPHOLOGY_OPERATOR_UNKNOWN on interface prototype object]
+ expected: FAIL
+
+ [SVGFEComponentTransferElement interface: attribute width]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN on interface prototype object]
+ expected: FAIL
+
+ [SVGFEMergeElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: attribute numOctaves]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_OUT on interface prototype object]
+ expected: FAIL
+
+ [SVGFEDiffuseLightingElement interface: attribute diffuseConstant]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: attribute type]
+ expected: FAIL
+
+ [SVGFEFuncAElement interface object length]
+ expected: FAIL
+
+ [SVGFEFuncBElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEPointLightElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFEDistantLightElement interface object length]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_HARD_LIGHT on interface object]
+ expected: FAIL
+
+ [SVGFEDiffuseLightingElement interface: attribute surfaceScale]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: constant SVG_EDGEMODE_NONE on interface prototype object]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_LIGHTEN on interface prototype object]
+ expected: FAIL
+
+ [SVGFEMergeElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: attribute height]
+ expected: FAIL
+
+ [SVGFESpecularLightingElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: constant SVG_FECOLORMATRIX_TYPE_UNKNOWN on interface prototype object]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface object length]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_G on interface prototype object]
+ expected: FAIL
+
+ [SVGFEFuncRElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface: constant SVG_MORPHOLOGY_OPERATOR_ERODE on interface object]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: attribute in1]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: attribute y]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: attribute x]
+ expected: FAIL
+
+ [SVGFEMergeElement interface: attribute result]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: attribute width]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_LINEAR on interface prototype object]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_SATURATION on interface object]
+ expected: FAIL
+
+ [SVGFEFloodElement interface: attribute result]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface: attribute operator]
+ expected: FAIL
+
+ [SVGFEOffsetElement interface: attribute width]
+ expected: FAIL
+
+ [SVGFEDistantLightElement interface: attribute elevation]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_R on interface object]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: attribute baseFrequencyX]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: attribute height]
+ expected: FAIL
+
+ [SVGFETileElement interface: attribute width]
+ expected: FAIL
+
+ [SVGFEDisplacementMapElement interface: constant SVG_CHANNEL_A on interface prototype object]
+ expected: FAIL
+
+ [SVGFESpotLightElement interface object length]
+ expected: FAIL
+
+ [SVGFESpecularLightingElement interface: attribute height]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_GAMMA on interface prototype object]
+ expected: FAIL
+
+ [SVGFEColorMatrixElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFEMergeNodeElement interface: attribute in1]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: constant SVG_STITCHTYPE_UNKNOWN on interface object]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_GAMMA on interface object]
+ expected: FAIL
+
+ [SVGFEFloodElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: constant SVG_STITCHTYPE_NOSTITCH on interface object]
+ expected: FAIL
+
+ [SVGFEDistantLightElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFESpecularLightingElement interface: attribute result]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_ARITHMETIC on interface object]
+ expected: FAIL
+
+ [SVGFEPointLightElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_OUT on interface object]
+ expected: FAIL
+
+ [SVGFEMergeNodeElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFEImageElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFEOffsetElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface object name]
+ expected: FAIL
+
+ [SVGFETileElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEComponentTransferElement interface object name]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_LUMINOSITY on interface object]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFETurbulenceElement interface: constant SVG_TURBULENCE_TYPE_FRACTALNOISE on interface object]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: constant SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY on interface object]
+ expected: FAIL
+
+ [SVGFESpecularLightingElement interface: attribute kernelUnitLengthY]
+ expected: FAIL
+
+ [SVGFESpecularLightingElement interface: attribute kernelUnitLengthX]
+ expected: FAIL
+
+ [SVGFEOffsetElement interface object name]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: attribute bias]
+ expected: FAIL
+
+ [SVGFEDiffuseLightingElement interface: attribute height]
+ expected: FAIL
+
+ [SVGComponentTransferFunctionElement interface: attribute exponent]
+ expected: FAIL
+
+ [SVGFEPointLightElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGFilterElement interface: attribute x]
+ expected: FAIL
+
+ [SVGFilterElement interface: attribute y]
+ expected: FAIL
+
+ [SVGFEBlendElement interface: constant SVG_FEBLEND_MODE_LIGHTEN on interface object]
+ expected: FAIL
+
+ [SVGFESpotLightElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGFEOffsetElement interface object length]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFEMergeElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: attribute y]
+ expected: FAIL
+
+ [SVGFEGaussianBlurElement interface: attribute x]
+ expected: FAIL
+
+ [SVGFEDiffuseLightingElement interface: attribute width]
+ expected: FAIL
+
+ [SVGFilterElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGFESpecularLightingElement interface object name]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface: attribute result]
+ expected: FAIL
+
+ [SVGFEConvolveMatrixElement interface: attribute edgeMode]
+ expected: FAIL
+
+ [SVGFEOffsetElement interface: attribute dy]
+ expected: FAIL
+
+ [SVGFEOffsetElement interface: attribute dx]
+ expected: FAIL
+
+ [SVGFESpecularLightingElement interface: attribute specularConstant]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface: attribute y]
+ expected: FAIL
+
+ [SVGFEMorphologyElement interface: attribute x]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_ATOP on interface prototype object]
+ expected: FAIL
+
+ [SVGFECompositeElement interface: constant SVG_FECOMPOSITE_OPERATOR_UNKNOWN on interface prototype object]
+ expected: FAIL
+
+ [SVGFEFuncGElement interface object length]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/mediaqueries/aspect-ratio-005.html.ini b/tests/wpt/metadata/css/mediaqueries/aspect-ratio-005.html.ini
new file mode 100644
index 00000000000..04914089239
--- /dev/null
+++ b/tests/wpt/metadata/css/mediaqueries/aspect-ratio-005.html.ini
@@ -0,0 +1,2 @@
+[aspect-ratio-005.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/mediaqueries/aspect-ratio-006.html.ini b/tests/wpt/metadata/css/mediaqueries/aspect-ratio-006.html.ini
new file mode 100644
index 00000000000..3d27d6e52c4
--- /dev/null
+++ b/tests/wpt/metadata/css/mediaqueries/aspect-ratio-006.html.ini
@@ -0,0 +1,2 @@
+[aspect-ratio-006.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/mediaqueries/test_media_queries.html.ini b/tests/wpt/metadata/css/mediaqueries/test_media_queries.html.ini
index 2fd4a75ade7..5622ef16fae 100644
--- a/tests/wpt/metadata/css/mediaqueries/test_media_queries.html.ini
+++ b/tests/wpt/metadata/css/mediaqueries/test_media_queries.html.ini
@@ -1533,21 +1533,9 @@
[subtest_608]
expected: FAIL
- [subtest_609]
- expected: FAIL
-
[subtest_610]
expected: FAIL
- [subtest_612]
- expected: FAIL
-
- [subtest_614]
- expected: FAIL
-
- [subtest_615]
- expected: FAIL
-
[subtest_616]
expected: FAIL
@@ -1563,15 +1551,9 @@
[subtest_620]
expected: FAIL
- [subtest_621]
- expected: FAIL
-
[subtest_622]
expected: FAIL
- [subtest_623]
- expected: FAIL
-
[subtest_624]
expected: FAIL
@@ -1614,27 +1596,12 @@
[subtest_642]
expected: FAIL
- [subtest_643]
- expected: FAIL
-
[subtest_644]
expected: FAIL
- [subtest_645]
- expected: FAIL
-
[subtest_646]
expected: FAIL
- [subtest_647]
- expected: FAIL
-
- [subtest_648]
- expected: FAIL
-
- [subtest_649]
- expected: FAIL
-
[subtest_650]
expected: FAIL
@@ -1743,39 +1710,21 @@
[subtest_690]
expected: FAIL
- [subtest_693]
- expected: FAIL
-
[subtest_695]
expected: FAIL
[subtest_696]
expected: FAIL
- [subtest_697]
- expected: FAIL
-
[subtest_698]
expected: FAIL
- [subtest_699]
- expected: FAIL
-
[subtest_700]
expected: FAIL
- [subtest_701]
- expected: FAIL
-
- [subtest_702]
- expected: FAIL
-
[subtest_703]
expected: FAIL
- [subtest_704]
- expected: FAIL
-
[subtest_708]
expected: FAIL
@@ -1797,15 +1746,6 @@
[subtest_714]
expected: FAIL
- [subtest_715]
- expected: FAIL
-
- [subtest_716]
- expected: FAIL
-
- [subtest_717]
- expected: FAIL
-
[subtest_719]
expected: FAIL
@@ -1827,9 +1767,6 @@
[subtest_726]
expected: FAIL
- [subtest_728]
- expected: FAIL
-
[subtest_730]
expected: FAIL
@@ -1839,48 +1776,141 @@
[subtest_733]
expected: FAIL
- [subtest_739]
+ [subtest_743]
+ expected: FAIL
+
+ [subtest_752]
expected: FAIL
- [subtest_742]
+ [subtest_753]
expected: FAIL
- [subtest_743]
+ [subtest_756]
+ expected: FAIL
+
+ [subtest_757]
expected: FAIL
- [subtest_746]
+ [subtest_749]
expected: FAIL
- [subtest_747]
+ [subtest_761]
expected: FAIL
- [subtest_750]
+ [subtest_741]
expected: FAIL
- [subtest_751]
+ [subtest_718]
expected: FAIL
- [subtest_752]
+ [subtest_599]
expected: FAIL
- [subtest_753]
+ [subtest_611]
expected: FAIL
- [subtest_758]
+ [subtest_613]
expected: FAIL
- [subtest_754]
+ [subtest_729]
expected: FAIL
- [subtest_755]
+ [subtest_727]
expected: FAIL
- [subtest_756]
+ [subtest_722]
expected: FAIL
- [subtest_757]
+ [subtest_769]
+ expected: FAIL
+
+ [subtest_768]
+ expected: FAIL
+
+ [subtest_760]
+ expected: FAIL
+
+ [subtest_763]
+ expected: FAIL
+
+ [subtest_762]
+ expected: FAIL
+
+ [subtest_765]
+ expected: FAIL
+
+ [subtest_764]
+ expected: FAIL
+
+ [subtest_767]
+ expected: FAIL
+
+ [subtest_766]
+ expected: FAIL
+
+ [subtest_602]
+ expected: FAIL
+
+ [subtest_604]
+ expected: FAIL
+
+ [subtest_605]
+ expected: FAIL
+
+ [subtest_691]
+ expected: FAIL
+
+ [subtest_639]
+ expected: FAIL
+
+ [subtest_638]
+ expected: FAIL
+
+ [subtest_736]
+ expected: FAIL
+
+ [subtest_734]
+ expected: FAIL
+
+ [subtest_735]
+ expected: FAIL
+
+ [subtest_633]
+ expected: FAIL
+
+ [subtest_637]
+ expected: FAIL
+
+ [subtest_635]
+ expected: FAIL
+
+ [subtest_689]
+ expected: FAIL
+
+ [subtest_682]
+ expected: FAIL
+
+ [subtest_683]
+ expected: FAIL
+
+ [subtest_687]
+ expected: FAIL
+
+ [subtest_684]
+ expected: FAIL
+
+ [subtest_740]
+ expected: FAIL
+
+ [subtest_707]
+ expected: FAIL
+
+ [subtest_706]
+ expected: FAIL
+
+ [subtest_705]
expected: FAIL
- [subtest_759]
+ [subtest_738]
expected: FAIL
diff --git a/tests/wpt/metadata/dom/ranges/StaticRange-constructor.html.ini b/tests/wpt/metadata/dom/ranges/StaticRange-constructor.html.ini
new file mode 100644
index 00000000000..5fc3d40a097
--- /dev/null
+++ b/tests/wpt/metadata/dom/ranges/StaticRange-constructor.html.ini
@@ -0,0 +1,52 @@
+[StaticRange-constructor.html]
+ [Construct static range with endpoints in disconnected trees]
+ expected: FAIL
+
+ [Construct static range with Element startContainer and Text endContainer]
+ expected: FAIL
+
+ [Construct collapsed static range]
+ expected: FAIL
+
+ [Construct static range with Document container]
+ expected: FAIL
+
+ [Construct static range with standalone Node container]
+ expected: FAIL
+
+ [Construct static range with offset greater than length]
+ expected: FAIL
+
+ [Construct static range with Comment container]
+ expected: FAIL
+
+ [Construct inverted static range]
+ expected: FAIL
+
+ [Throw on DocumentType or Attr container]
+ expected: FAIL
+
+ [Construct static range with CDATASection container]
+ expected: FAIL
+
+ [Construct static range with Text container]
+ expected: FAIL
+
+ [Construct static range with Text startContainer and Element endContainer]
+ expected: FAIL
+
+ [Construct static range with DocumentFragment container]
+ expected: FAIL
+
+ [Throw on missing or invalid arguments]
+ expected: FAIL
+
+ [Construct static range with Element container]
+ expected: FAIL
+
+ [Construct static range with ProcessingInstruction container]
+ expected: FAIL
+
+ [Construct static range with endpoints in disconnected documents]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/domparsing/idlharness.window.js.ini b/tests/wpt/metadata/domparsing/idlharness.window.js.ini
new file mode 100644
index 00000000000..5474d5b3bea
--- /dev/null
+++ b/tests/wpt/metadata/domparsing/idlharness.window.js.ini
@@ -0,0 +1,4 @@
+[idlharness.window.html]
+ [ShadowRoot interface: attribute innerHTML]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/idlharness.any.js.ini b/tests/wpt/metadata/fetch/api/idlharness.any.js.ini
new file mode 100644
index 00000000000..a6ac97ab1e0
--- /dev/null
+++ b/tests/wpt/metadata/fetch/api/idlharness.any.js.ini
@@ -0,0 +1,175 @@
+[idlharness.any.serviceworker.html]
+ [idlharness]
+ expected: FAIL
+
+
+[idlharness.any.html]
+ [Response interface: new Response() must inherit property "body" with the proper type]
+ expected: FAIL
+
+ [Response interface: attribute body]
+ expected: FAIL
+
+ [Response interface: operation blob()]
+ expected: FAIL
+
+ [Response interface: operation formData()]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "isHistoryNavigation" with the proper type]
+ expected: FAIL
+
+ [Request interface: attribute signal]
+ expected: FAIL
+
+ [Window interface: operation fetch(RequestInfo, RequestInit)]
+ expected: FAIL
+
+ [Request interface: attribute keepalive]
+ expected: FAIL
+
+ [Window interface: calling fetch(RequestInfo, RequestInit) on window with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Request interface: operation formData()]
+ expected: FAIL
+
+ [Request interface: operation json()]
+ expected: FAIL
+
+ [Request interface: operation text()]
+ expected: FAIL
+
+ [Response interface: operation text()]
+ expected: FAIL
+
+ [Request interface: operation blob()]
+ expected: FAIL
+
+ [Request interface: attribute isHistoryNavigation]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "keepalive" with the proper type]
+ expected: FAIL
+
+ [Request interface: attribute isReloadNavigation]
+ expected: FAIL
+
+ [Response interface: operation json()]
+ expected: FAIL
+
+ [Response interface: operation arrayBuffer()]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "isReloadNavigation" with the proper type]
+ expected: FAIL
+
+ [Headers interface: iterable<ByteString, ByteString>]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "signal" with the proper type]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "body" with the proper type]
+ expected: FAIL
+
+ [Request interface: operation arrayBuffer()]
+ expected: FAIL
+
+ [Response interface: new Response() must inherit property "trailer" with the proper type]
+ expected: FAIL
+
+ [Response interface: attribute trailer]
+ expected: FAIL
+
+ [Request interface: attribute body]
+ expected: FAIL
+
+
+[idlharness.any.worker.html]
+ [Response interface: new Response() must inherit property "body" with the proper type]
+ expected: FAIL
+
+ [Response interface: attribute body]
+ expected: FAIL
+
+ [Response interface: operation blob()]
+ expected: FAIL
+
+ [Response interface: operation formData()]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "isHistoryNavigation" with the proper type]
+ expected: FAIL
+
+ [Request interface: attribute signal]
+ expected: FAIL
+
+ [Request interface: attribute keepalive]
+ expected: FAIL
+
+ [Request interface: operation formData()]
+ expected: FAIL
+
+ [Request interface: operation json()]
+ expected: FAIL
+
+ [Request interface: operation text()]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: calling fetch(RequestInfo, RequestInit) on self with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Response interface: operation text()]
+ expected: FAIL
+
+ [Request interface: operation blob()]
+ expected: FAIL
+
+ [Request interface: attribute isHistoryNavigation]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "keepalive" with the proper type]
+ expected: FAIL
+
+ [Request interface: attribute isReloadNavigation]
+ expected: FAIL
+
+ [Response interface: operation json()]
+ expected: FAIL
+
+ [Response interface: operation arrayBuffer()]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: operation fetch(RequestInfo, RequestInit)]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "isReloadNavigation" with the proper type]
+ expected: FAIL
+
+ [Headers interface: iterable<ByteString, ByteString>]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "signal" with the proper type]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "body" with the proper type]
+ expected: FAIL
+
+ [Request interface: operation arrayBuffer()]
+ expected: FAIL
+
+ [Response interface: new Response() must inherit property "trailer" with the proper type]
+ expected: FAIL
+
+ [Response interface: attribute trailer]
+ expected: FAIL
+
+ [Request interface: attribute body]
+ expected: FAIL
+
+
+[idlharness.any.sharedworker.html]
+ [idlharness]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
index 72cf300d494..a3dc44b47ff 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -315,12 +315,18 @@
[<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html */*]
+ [<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*]
+ [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/html;x=" text/plain]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
index 279734168dc..d2df9b78483 100644
--- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
@@ -56,6 +56,3 @@
[separate text/javascript x/x]
expected: FAIL
- [separate text/javascript;charset=windows-1252 text/javascript]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
index 87c807a49ff..a639f15230c 100644
--- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,3 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
+ [Content-Type-Options%3A%20nosniff]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
deleted file mode 100644
index 87b07c3e670..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_1.html]
- [Multiple history traversals from the same task]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
deleted file mode 100644
index 75d75b4cda2..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_2.html]
- [Multiple history traversals, last would be aborted]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
deleted file mode 100644
index 385376c7321..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_4.html]
- [Multiple history traversals, last would be aborted]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain_feature_policy.tentative.sub.html.ini b/tests/wpt/metadata/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain_feature_policy.tentative.sub.html.ini
index fc9081cad22..515c522cda5 100644
--- a/tests/wpt/metadata/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain_feature_policy.tentative.sub.html.ini
+++ b/tests/wpt/metadata/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain_feature_policy.tentative.sub.html.ini
@@ -2,3 +2,6 @@
[Feature policy "document-domain" can be disabled in cross-origin iframes using "allow" attribute.]
expected: FAIL
+ [Feature policy "document-domain" can be disabled in same-origin iframes using "allow" attribute.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini
index dec4c579137..16fa2c5cfc1 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini
@@ -1,5 +1,4 @@
[creating_browsing_context_test_01.html]
- expected: TIMEOUT
[first argument: absolute url]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
index 42327fedd27..7a1b258d52e 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-innerwidth.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerwidth`]
expected: FAIL
[features "innerwidth=405e-1" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405*3" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405.5" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405e1" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405.32" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405 " should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405LLl" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405/5" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405^4" should set "width=405"]
- expected: TIMEOUT
-
- [features "innerwidth=/404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "innerwidth=_404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "innerwidth=L404" should NOT set "width=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini
index 10f617db69e..8540f53d8d6 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini
@@ -1,32 +1,42 @@
[open-features-non-integer-top.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `top`]
expected: FAIL
[features "top=105/5" should set "top=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "top=105*3" should set "top=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "top=105LLl" should set "top=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "top=105e-1" should set "top=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "top=105.32" should set "top=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "top=105e1" should set "top=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "top=105 " should set "top=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "top=105^4" should set "top=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "top=105.5" should set "top=105"]
- expected: FAIL
+ expected: TIMEOUT
+
+ [features "top=/104" should NOT set "top=104"]
+ expected: TIMEOUT
+
+ [features "top=_104" should NOT set "top=104"]
+ expected: TIMEOUT
+
+ [features "top=L104" should NOT set "top=104"]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/windows/document-access/document_access_feature_policy.tentative.sub.html.ini b/tests/wpt/metadata/html/browsers/windows/document-access/document_access_feature_policy.tentative.sub.html.ini
new file mode 100644
index 00000000000..6ff9d2e555e
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/windows/document-access/document_access_feature_policy.tentative.sub.html.ini
@@ -0,0 +1,7 @@
+[document_access_feature_policy.tentative.sub.html]
+ [Feature policy "document-access" can be disabled in same-origin iframes using "allow" attribute.]
+ expected: FAIL
+
+ [Feature policy "document-access" can be disabled in cross-origin iframes using "allow" attribute.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/windows/document-access/document_access_parent_access.tentative.html.ini b/tests/wpt/metadata/html/browsers/windows/document-access/document_access_parent_access.tentative.html.ini
new file mode 100644
index 00000000000..3acd1aaa231
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/windows/document-access/document_access_parent_access.tentative.html.ini
@@ -0,0 +1,4 @@
+[document_access_parent_access.tentative.html]
+ [document_access_parent_access]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/dom/idlharness.https.html.ini b/tests/wpt/metadata/html/dom/idlharness.https.html.ini
new file mode 100644
index 00000000000..3de3d614305
--- /dev/null
+++ b/tests/wpt/metadata/html/dom/idlharness.https.html.ini
@@ -0,0 +1,5180 @@
+[idlharness.https.html?exclude=(Document|Window|HTML.*)]
+ [ImageBitmapRenderingContext interface: operation transferFromImageBitmap(ImageBitmap)]
+ expected: FAIL
+
+ [ElementInternals interface: operation setValidity(ValidityStateFlags, DOMString, HTMLElement)]
+ expected: FAIL
+
+ [MessageChannel interface: existence and properties of interface object]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "patternMismatch" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation lineTo(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "onupdateready" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute globalAlpha]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "DOWNLOADING" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createRadialGradient(double, double, double, double, double, double)]
+ expected: FAIL
+
+ [SVGElement interface: attribute onmouseout]
+ expected: FAIL
+
+ [ImageBitmap interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getLineDash()" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation measureText(DOMString)]
+ expected: FAIL
+
+ [ElementInternals interface: existence and properties of interface object]
+ expected: FAIL
+
+ [MessagePort interface: attribute onmessage]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "imageSmoothingQuality" with the proper type]
+ expected: FAIL
+
+ [SVGElement interface: attribute ondrop]
+ expected: FAIL
+
+ [SVGElement interface: attribute onreset]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: existence and properties of interface object]
+ expected: FAIL
+
+ [Navigator interface: attribute onLine]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "ondownloading" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getTransform()" with the proper type]
+ expected: FAIL
+
+ [CustomElementRegistry interface: operation upgrade(Node)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingEnabled]
+ expected: FAIL
+
+ [DataTransferItemList interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGElement interface: attribute oncontextmenu]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute shadowOffsetX]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation getLineDash()]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: attribute lineDashOffset]
+ expected: FAIL
+
+ [DragEvent interface object length]
+ expected: FAIL
+
+ [SVGSVGElement interface: attribute onstorage]
+ expected: FAIL
+
+ [Navigator interface: window.navigator must inherit property "languages" with the proper type]
+ expected: FAIL
+
+ [Navigator interface: attribute oscpu]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute strokeStyle]
+ expected: FAIL
+
+ [DataTransferItem interface: attribute kind]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: calling drawFocusIfNeeded(Element) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface object length]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation clearRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation getLineDash()]
+ expected: FAIL
+
+ [SVGAElement interface: attribute port]
+ expected: FAIL
+
+ [DataTransfer interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [History interface: window.history must inherit property "scrollRestoration" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "direction" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: constant UPDATEREADY on interface prototype object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute globalCompositeOperation]
+ expected: FAIL
+
+ [ApplicationCache interface: attribute onprogress]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "measureText(DOMString)" with the proper type]
+ expected: FAIL
+
+ [SVGElement interface: attribute ondragleave]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "rangeOverflow" with the proper type]
+ expected: FAIL
+
+ [SVGElement interface: attribute onblur]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation drawFocusIfNeeded(Element)]
+ expected: FAIL
+
+ [SharedWorker interface: existence and properties of interface object]
+ expected: FAIL
+
+ [DataTransferItemList interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGElement interface: attribute onmousemove]
+ expected: FAIL
+
+ [MessagePort interface object length]
+ expected: FAIL
+
+ [DOMStringList interface object length]
+ expected: FAIL
+
+ [Navigator interface: window.navigator must inherit property "onLine" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation isPointInStroke(Path2D, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [ApplicationCache interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [DOMStringList interface: operation item(unsigned long)]
+ expected: FAIL
+
+ [Navigator interface: attribute hardwareConcurrency]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: attribute textAlign]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation restore()]
+ expected: FAIL
+
+ [Navigator interface: attribute languages]
+ expected: FAIL
+
+ [Path2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [Stringification of window.external]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation putImageData(ImageData, long, long)]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation scrollPathIntoView()]
+ expected: FAIL
+
+ [SharedWorker interface: attribute port]
+ expected: FAIL
+
+ [ApplicationCache interface: attribute onnoupdate]
+ expected: FAIL
+
+ [SVGAElement interface: attribute hash]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getContextAttributes()" with the proper type]
+ expected: FAIL
+
+ [DataTransferItem interface: existence and properties of interface object]
+ expected: FAIL
+
+ [DataTransferItem interface: operation getAsFile()]
+ expected: FAIL
+
+ [Path2D interface: existence and properties of interface object]
+ expected: FAIL
+
+ [ApplicationCache interface: constant OBSOLETE on interface prototype object]
+ expected: FAIL
+
+ [ApplicationCache interface: constant OBSOLETE on interface object]
+ expected: FAIL
+
+ [ElementInternals interface: operation setFormValue([object Object\],[object Object\],[object Object\], [object Object\],[object Object\],[object Object\])]
+ expected: FAIL
+
+ [TextMetrics interface object length]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation measureText(DOMString)]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "strokeText(DOMString, unrestricted double, unrestricted double, unrestricted double)" with the proper type]
+ expected: FAIL
+
+ [DataTransferItemList interface: operation add(File)]
+ expected: FAIL
+
+ [SVGElement interface: attribute onended]
+ expected: FAIL
+
+ [DataTransfer interface object length]
+ expected: FAIL
+
+ [SVGElement interface: operation blur()]
+ expected: FAIL
+
+ [TextMetrics interface: attribute ideographicBaseline]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation beginPath()]
+ expected: FAIL
+
+ [ElementInternals interface object length]
+ expected: FAIL
+
+ [SVGElement interface: attribute onchange]
+ expected: FAIL
+
+ [MessageEvent interface: calling initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object\]) on new MessageEvent("message", { data: 5 }) with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation strokeText(DOMString, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [ElementInternals interface: operation reportValidity()]
+ expected: FAIL
+
+ [SharedWorker interface object name]
+ expected: FAIL
+
+ [MessageChannel interface: attribute port1]
+ expected: FAIL
+
+ [SVGSVGElement interface: attribute onbeforeprint]
+ expected: FAIL
+
+ [BarProp interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute lineWidth]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute shadowColor]
+ expected: FAIL
+
+ [ElementInternals interface: operation checkValidity()]
+ expected: FAIL
+
+ [SVGElement interface: attribute tabIndex]
+ expected: FAIL
+
+ [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "ports" with the proper type]
+ expected: FAIL
+
+ [TextMetrics interface: attribute emHeightDescent]
+ expected: FAIL
+
+ [Location interface: window.location must have own property "ancestorOrigins"]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: calling setLineDash([object Object\]) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [DataTransferItemList interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [DragEvent interface: attribute dataTransfer]
+ expected: FAIL
+
+ [SVGElement interface: attribute onprogress]
+ expected: FAIL
+
+ [ApplicationCache interface: constant UNCACHED on interface object]
+ expected: FAIL
+
+ [MessageEvent interface: attribute ports]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute filter]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation drawFocusIfNeeded(Path2D, Element)]
+ expected: FAIL
+
+ [DataTransferItemList interface: operation remove(unsigned long)]
+ expected: FAIL
+
+ [DragEvent interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGAElement interface: attribute protocol]
+ expected: FAIL
+
+ [SVGElement interface: attribute onclose]
+ expected: FAIL
+
+ [SVGElement interface: attribute oncancel]
+ expected: FAIL
+
+ [SVGElement interface: attribute onabort]
+ expected: FAIL
+
+ [SVGElement interface: attribute oncopy]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation isPointInStroke(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [ApplicationCache interface: attribute onupdateready]
+ expected: FAIL
+
+ [External interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation fill(CanvasFillRule)]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation scrollPathIntoView(Path2D)]
+ expected: FAIL
+
+ [BroadcastChannel interface: attribute name]
+ expected: FAIL
+
+ [ApplicationCache interface object name]
+ expected: FAIL
+
+ [DOMStringList interface: calling item(unsigned long) on location.ancestorOrigins with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [BroadcastChannel interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [BarProp interface object length]
+ expected: FAIL
+
+ [SVGSVGElement interface: attribute onoffline]
+ expected: FAIL
+
+ [MessagePort interface object name]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [DataTransfer interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: attribute direction]
+ expected: FAIL
+
+ [DataTransferItemList interface: existence and properties of interface object]
+ expected: FAIL
+
+ [Path2D interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation translate(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "isPointInStroke(Path2D, unrestricted double, unrestricted double)" with the proper type]
+ expected: FAIL
+
+ [Path2D interface: operation moveTo(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [Navigator interface: calling unregisterProtocolHandler(DOMString, USVString) on window.navigator with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [TextTrack interface: document.createElement("track").track must inherit property "inBandMetadataTrackDispatchType" with the proper type]
+ expected: FAIL
+
+ [MessageChannel interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [TextMetrics interface: attribute actualBoundingBoxAscent]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "tooShort" with the proper type]
+ expected: FAIL
+
+ [SVGElement interface: attribute onplaying]
+ expected: FAIL
+
+ [OffscreenCanvas interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [DOMStringList interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [DataTransferItemList interface object length]
+ expected: FAIL
+
+ [ImageBitmap interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [TextMetrics interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [DataTransfer interface: attribute items]
+ expected: FAIL
+
+ [External must be primary interface of window.external]
+ expected: FAIL
+
+ [SVGElement interface: attribute onclick]
+ expected: FAIL
+
+ [SVGElement interface: attribute onloadstart]
+ expected: FAIL
+
+ [SVGAElement interface: stringifier]
+ expected: FAIL
+
+ [ImageBitmap interface: operation close()]
+ expected: FAIL
+
+ [External interface: window.external must inherit property "AddSearchProvider()" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface object length]
+ expected: FAIL
+
+ [BarProp interface: attribute visible]
+ expected: FAIL
+
+ [MessageEvent interface: operation initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object\])]
+ expected: FAIL
+
+ [DragEvent interface object name]
+ expected: FAIL
+
+ [SVGSVGElement interface: attribute onpageshow]
+ expected: FAIL
+
+ [Path2D interface object name]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: calling scrollPathIntoView(Path2D) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "stepMismatch" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: attribute onchecking]
+ expected: FAIL
+
+ [SVGElement interface: attribute onsecuritypolicyviolation]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "font" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation getContextAttributes()]
+ expected: FAIL
+
+ [PromiseRejectionEvent interface: attribute promise]
+ expected: FAIL
+
+ [SharedWorker interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation resetTransform()]
+ expected: FAIL
+
+ [SVGElement interface: attribute ontoggle]
+ expected: FAIL
+
+ [SVGElement interface: attribute onload]
+ expected: FAIL
+
+ [SharedWorker interface: attribute onerror]
+ expected: FAIL
+
+ [SVGAElement interface: attribute search]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: attribute canvas]
+ expected: FAIL
+
+ [OffscreenCanvas interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [External interface object name]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute shadowOffsetY]
+ expected: FAIL
+
+ [DataTransferItem interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingQuality]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "onerror" with the proper type]
+ expected: FAIL
+
+ [Path2D interface object length]
+ expected: FAIL
+
+ [SVGSVGElement interface: attribute onunload]
+ expected: FAIL
+
+ [ApplicationCache interface: existence and properties of interface object]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "typeMismatch" with the proper type]
+ expected: FAIL
+
+ [External interface: window.external must inherit property "IsSearchProviderInstalled()" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation fillText(DOMString, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [ApplicationCache interface: constant CHECKING on interface prototype object]
+ expected: FAIL
+
+ [ApplicationCache interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: attribute imageSmoothingQuality]
+ expected: FAIL
+
+ [SVGElement interface: attribute onplay]
+ expected: FAIL
+
+ [Navigator interface: calling registerProtocolHandler(DOMString, USVString, DOMString) on window.navigator with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CanvasPattern interface: operation setTransform(DOMMatrix2DInit)]
+ expected: FAIL
+
+ [Path2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [SVGElement interface: attribute onsuspend]
+ expected: FAIL
+
+ [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object\])" with the proper type]
+ expected: FAIL
+
+ [DragEvent interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute lineCap]
+ expected: FAIL
+
+ [DOMStringList interface: calling contains(DOMString) on location.ancestorOrigins with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: calling isPointInStroke(Path2D, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [DataTransferItem interface object length]
+ expected: FAIL
+
+ [BarProp interface: existence and properties of interface object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation save()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation scale(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvas interface: attribute width]
+ expected: FAIL
+
+ [ApplicationCache interface: constant CHECKING on interface object]
+ expected: FAIL
+
+ [ApplicationCache interface: constant DOWNLOADING on interface object]
+ expected: FAIL
+
+ [DataTransferItem interface: attribute type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation stroke()]
+ expected: FAIL
+
+ [SVGElement interface: attribute onwheel]
+ expected: FAIL
+
+ [SVGElement interface: attribute onmouseup]
+ expected: FAIL
+
+ [DataTransfer interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGSVGElement interface: attribute onbeforeunload]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute lineJoin]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [SVGSVGElement interface: attribute onmessageerror]
+ expected: FAIL
+
+ [Navigator interface: window.navigator must inherit property "registerProtocolHandler(DOMString, USVString, DOMString)" with the proper type]
+ expected: FAIL
+
+ [WebSocket interface: attribute extensions]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGElement interface: attribute oncanplay]
+ expected: FAIL
+
+ [OffscreenCanvas interface: existence and properties of interface object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute direction]
+ expected: FAIL
+
+ [TextTrack interface: attribute inBandMetadataTrackDispatchType]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute shadowBlur]
+ expected: FAIL
+
+ [Stringification of window.applicationCache]
+ expected: FAIL
+
+ [Path2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [TextMetrics interface: attribute actualBoundingBoxDescent]
+ expected: FAIL
+
+ [DataTransferItem interface object name]
+ expected: FAIL
+
+ [Path2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface object name]
+ expected: FAIL
+
+ [DataTransferItem interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation isPointInPath(unrestricted double, unrestricted double, CanvasFillRule)]
+ expected: FAIL
+
+ [TextMetrics interface: attribute actualBoundingBoxLeft]
+ expected: FAIL
+
+ [DataTransfer interface: attribute dropEffect]
+ expected: FAIL
+
+ [DataTransfer interface: attribute files]
+ expected: FAIL
+
+ [DOMStringList interface: location.ancestorOrigins must inherit property "contains(DOMString)" with the proper type]
+ expected: FAIL
+
+ [SVGSVGElement interface: attribute onmessage]
+ expected: FAIL
+
+ [DataTransferItemList interface: attribute length]
+ expected: FAIL
+
+ [ApplicationCache interface: attribute ondownloading]
+ expected: FAIL
+
+ [OffscreenCanvas interface: attribute height]
+ expected: FAIL
+
+ [SVGAElement interface: attribute hostname]
+ expected: FAIL
+
+ [ImageBitmap interface object name]
+ expected: FAIL
+
+ [SVGElement interface: attribute oncut]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [Stringification of location.ancestorOrigins]
+ expected: FAIL
+
+ [SVGAElement interface: attribute pathname]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: calling strokeText(DOMString, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: calling drawFocusIfNeeded(Path2D, Element) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [DOMStringList interface: existence and properties of interface object]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "scrollPathIntoView(Path2D)" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation isPointInPath(Path2D, unrestricted double, unrestricted double, CanvasFillRule)]
+ expected: FAIL
+
+ [SVGElement interface: attribute onwaiting]
+ expected: FAIL
+
+ [DOMStringList interface: location.ancestorOrigins must inherit property "item(unsigned long)" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface object name]
+ expected: FAIL
+
+ [BroadcastChannel interface: attribute onmessage]
+ expected: FAIL
+
+ [ElementInternals interface object name]
+ expected: FAIL
+
+ [ElementInternals interface: attribute labels]
+ expected: FAIL
+
+ [SVGAElement interface: attribute host]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [DataTransfer interface: operation setData(DOMString, DOMString)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute miterLimit]
+ expected: FAIL
+
+ [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "source" with the proper type]
+ expected: FAIL
+
+ [Path2D interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGElement interface: attribute onseeked]
+ expected: FAIL
+
+ [SVGSVGElement interface: attribute onlanguagechange]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation strokeRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: existence and properties of interface object]
+ expected: FAIL
+
+ [ApplicationCache interface: attribute oncached]
+ expected: FAIL
+
+ [ElementInternals interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [MessageChannel interface object length]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation commit()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation getTransform()]
+ expected: FAIL
+
+ [ApplicationCache interface: attribute status]
+ expected: FAIL
+
+ [DataTransferItem interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute textAlign]
+ expected: FAIL
+
+ [SVGElement interface: attribute onmouseenter]
+ expected: FAIL
+
+ [Navigator interface: operation registerProtocolHandler(DOMString, USVString, DOMString)]
+ expected: FAIL
+
+ [MessagePort interface: existence and properties of interface object]
+ expected: FAIL
+
+ [DataTransferItemList interface object name]
+ expected: FAIL
+
+ [SVGElement interface: attribute onstalled]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "onnoupdate" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute lineDashOffset]
+ expected: FAIL
+
+ [SVGElement interface: attribute onscroll]
+ expected: FAIL
+
+ [SVGSVGElement interface: attribute onunhandledrejection]
+ expected: FAIL
+
+ [MessageChannel interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGElement interface: attribute onloadedmetadata]
+ expected: FAIL
+
+ [SVGSVGElement interface: attribute onrejectionhandled]
+ expected: FAIL
+
+ [ElementInternals interface: attribute form]
+ expected: FAIL
+
+ [ApplicationCache interface: attribute onerror]
+ expected: FAIL
+
+ [BroadcastChannel interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SVGElement interface: attribute onsubmit]
+ expected: FAIL
+
+ [SVGElement interface: attribute ondragenter]
+ expected: FAIL
+
+ [Navigator interface: operation unregisterProtocolHandler(DOMString, USVString)]
+ expected: FAIL
+
+ [TextMetrics interface: existence and properties of interface object]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "customError" with the proper type]
+ expected: FAIL
+
+ [External interface: operation AddSearchProvider()]
+ expected: FAIL
+
+ [SVGElement interface: attribute onratechange]
+ expected: FAIL
+
+ [SVGElement interface: attribute oninput]
+ expected: FAIL
+
+ [BarProp interface object name]
+ expected: FAIL
+
+ [SVGSVGElement interface: attribute onhashchange]
+ expected: FAIL
+
+ [ApplicationCache interface: constant IDLE on interface prototype object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createImageData(long, long)]
+ expected: FAIL
+
+ [ImageBitmap interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGElement interface: attribute onauxclick]
+ expected: FAIL
+
+ [ApplicationCache interface: constant DOWNLOADING on interface prototype object]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "setLineDash([object Object\])" with the proper type]
+ expected: FAIL
+
+ [DOMStringList must be primary interface of location.ancestorOrigins]
+ expected: FAIL
+
+ [Path2D interface: operation lineTo(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [DragEvent interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGAElement interface: attribute origin]
+ expected: FAIL
+
+ [DataTransferItemList interface: operation clear()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createImageData(ImageData)]
+ expected: FAIL
+
+ [BarProp interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [CustomElementRegistry interface: operation whenDefined(DOMString)]
+ expected: FAIL
+
+ [MessagePort interface: operation postMessage(any, PostMessageOptions)]
+ expected: FAIL
+
+ [DragEvent interface: existence and properties of interface object]
+ expected: FAIL
+
+ [Navigator interface: window.navigator must inherit property "hardwareConcurrency" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: operation update()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute font]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation putImageData(ImageData, long, long, long, long, long, long)]
+ expected: FAIL
+
+ [ElementInternals interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [DOMStringList interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [ElementInternals interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SharedWorker interface object length]
+ expected: FAIL
+
+ [DataTransfer interface: operation setDragImage(Element, long, long)]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "onchecking" with the proper type]
+ expected: FAIL
+
+ [SVGElement interface: attribute onmouseleave]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "rangeUnderflow" with the proper type]
+ expected: FAIL
+
+ [ElementInternals interface: attribute willValidate]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation moveTo(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "valueMissing" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvas interface object length]
+ expected: FAIL
+
+ [DataTransfer interface: operation getData(DOMString)]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "onprogress" with the proper type]
+ expected: FAIL
+
+ [TextMetrics interface: attribute hangingBaseline]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation setTransform(DOMMatrix2DInit)]
+ expected: FAIL
+
+ [Path2D interface: operation closePath()]
+ expected: FAIL
+
+ [ApplicationCache interface: constant UNCACHED on interface prototype object]
+ expected: FAIL
+
+ [DataTransferItem interface: operation getAsString(FunctionStringCallback)]
+ expected: FAIL
+
+ [SVGElement interface: attribute onpaste]
+ expected: FAIL
+
+ [SVGElement interface: attribute onselect]
+ expected: FAIL
+
+ [TextMetrics interface: attribute width]
+ expected: FAIL
+
+ [ApplicationCache interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: attribute font]
+ expected: FAIL
+
+ [OffscreenCanvas interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createLinearGradient(double, double, double, double)]
+ expected: FAIL
+
+ [SVGElement interface: attribute ondragexit]
+ expected: FAIL
+
+ [MessagePort interface: attribute onmessageerror]
+ expected: FAIL
+
+ [Navigator interface: window.navigator must inherit property "oscpu" with the proper type]
+ expected: FAIL
+
+ [External interface: operation IsSearchProviderInstalled()]
+ expected: FAIL
+
+ [TextMetrics interface: attribute actualBoundingBoxRight]
+ expected: FAIL
+
+ [SVGElement interface: attribute onkeydown]
+ expected: FAIL
+
+ [BroadcastChannel interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [Path2D interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "UPDATEREADY" with the proper type]
+ expected: FAIL
+
+ [SVGElement interface: attribute nonce]
+ expected: FAIL
+
+ [SVGElement interface: attribute ondurationchange]
+ expected: FAIL
+
+ [SharedWorker interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [TextMetrics interface: attribute fontBoundingBoxAscent]
+ expected: FAIL
+
+ [MessageChannel interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [MessagePort interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createPattern(CanvasImageSource, DOMString)]
+ expected: FAIL
+
+ [ImageBitmap interface: existence and properties of interface object]
+ expected: FAIL
+
+ [History interface: attribute scrollRestoration]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: calling measureText(DOMString) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [ImageBitmap interface: attribute height]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "filter" with the proper type]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "badInput" with the proper type]
+ expected: FAIL
+
+ [SVGElement interface: attribute ondragstart]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation transform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation rotate(unrestricted double)]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "swapCache()" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation strokeText(DOMString, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [TextMetrics interface: attribute alphabeticBaseline]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation stroke(Path2D)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation setTransform(DOMMatrix2DInit)]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "abort()" with the proper type]
+ expected: FAIL
+
+ [DataTransfer interface: operation clearData(DOMString)]
+ expected: FAIL
+
+ [SVGElement interface: attribute ontimeupdate]
+ expected: FAIL
+
+ [BarProp interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SVGElement interface: operation focus(FocusOptions)]
+ expected: FAIL
+
+ [TextMetrics interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "UNCACHED" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation fill(Path2D, CanvasFillRule)]
+ expected: FAIL
+
+ [ValidityState must be primary interface of document.createElement("input").validity]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation getImageData(long, long, long, long)]
+ expected: FAIL
+
+ [DOMStringList interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGSVGElement interface: attribute onpopstate]
+ expected: FAIL
+
+ [SVGElement interface: attribute onfocus]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "oncached" with the proper type]
+ expected: FAIL
+
+ [DOMStringList interface: location.ancestorOrigins must inherit property "length" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvas interface object name]
+ expected: FAIL
+
+ [BroadcastChannel interface: operation close()]
+ expected: FAIL
+
+ [DOMStringList interface: attribute length]
+ expected: FAIL
+
+ [SVGElement interface: attribute onresize]
+ expected: FAIL
+
+ [External interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SVGElement interface: attribute onerror]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [Path2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)]
+ expected: FAIL
+
+ [SVGSVGElement interface: attribute onpagehide]
+ expected: FAIL
+
+ [External interface: existence and properties of interface object]
+ expected: FAIL
+
+ [WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "extensions" with the proper type]
+ expected: FAIL
+
+ [TextMetrics interface: attribute fontBoundingBoxDescent]
+ expected: FAIL
+
+ [DOMStringList interface object name]
+ expected: FAIL
+
+ [ApplicationCache must be primary interface of window.applicationCache]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "update()" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute textBaseline]
+ expected: FAIL
+
+ [SVGElement interface: attribute dataset]
+ expected: FAIL
+
+ [SVGSVGElement interface: attribute onafterprint]
+ expected: FAIL
+
+ [DataTransferItemList interface: operation add(DOMString, DOMString)]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "OBSOLETE" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "CHECKING" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: constant UPDATEREADY on interface object]
+ expected: FAIL
+
+ [Navigator interface: window.navigator must inherit property "unregisterProtocolHandler(DOMString, USVString)" with the proper type]
+ expected: FAIL
+
+ [SVGElement interface: attribute onpause]
+ expected: FAIL
+
+ [Stringification of document.createElement("input").validity]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation isPointInStroke(Path2D, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvas interface: operation transferToImageBitmap()]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation isPointInStroke(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [ImageData interface: new ImageData(10, 10) must inherit property "data" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawFocusIfNeeded(Element)" with the proper type]
+ expected: FAIL
+
+ [MessagePort interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation closePath()]
+ expected: FAIL
+
+ [PromiseRejectionEvent interface object length]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "textAlign" with the proper type]
+ expected: FAIL
+
+ [Path2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation setLineDash([object Object\])]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: calling isPointInStroke(unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [SVGSVGElement interface: attribute ononline]
+ expected: FAIL
+
+ [ImageBitmap interface: attribute width]
+ expected: FAIL
+
+ [BroadcastChannel interface: operation postMessage(any)]
+ expected: FAIL
+
+ [DataTransfer interface: attribute types]
+ expected: FAIL
+
+ [External interface object length]
+ expected: FAIL
+
+ [MessagePort interface: operation postMessage(any, [object Object\])]
+ expected: FAIL
+
+ [MessageChannel interface: attribute port2]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation getTransform()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [TextMetrics interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [DataTransfer interface: attribute effectAllowed]
+ expected: FAIL
+
+ [MessagePort interface: operation close()]
+ expected: FAIL
+
+ [OffscreenCanvas interface: operation getContext(OffscreenRenderingContextId, any)]
+ expected: FAIL
+
+ [SVGElement interface: attribute onemptied]
+ expected: FAIL
+
+ [ApplicationCache interface: constant IDLE on interface object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute fillStyle]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute canvas]
+ expected: FAIL
+
+ [SVGAElement interface: attribute href]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "status" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawFocusIfNeeded(Path2D, Element)" with the proper type]
+ expected: FAIL
+
+ [SVGElement interface: attribute onvolumechange]
+ expected: FAIL
+
+ [BroadcastChannel interface object name]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: attribute textBaseline]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface object length]
+ expected: FAIL
+
+ [BroadcastChannel interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [Path2D interface: operation addPath(Path2D, DOMMatrix2DInit)]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: attribute filter]
+ expected: FAIL
+
+ [SVGAElement interface: attribute password]
+ expected: FAIL
+
+ [MessagePort interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SharedWorker interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [MessageChannel interface object name]
+ expected: FAIL
+
+ [DataTransfer interface object name]
+ expected: FAIL
+
+ [SVGElement interface: attribute oninvalid]
+ expected: FAIL
+
+ [SVGElement interface: attribute oncuechange]
+ expected: FAIL
+
+ [SVGElement interface: attribute onseeking]
+ expected: FAIL
+
+ [SVGElement interface: attribute onmouseover]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation clip(Path2D, CanvasFillRule)]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "onobsolete" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation setLineDash([object Object\])]
+ expected: FAIL
+
+ [ApplicationCache interface: operation abort()]
+ expected: FAIL
+
+ [SVGElement interface: attribute onloadeddata]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [MessagePort interface: operation start()]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "isPointInStroke(unrestricted double, unrestricted double)" with the proper type]
+ expected: FAIL
+
+ [DataTransfer interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [ApplicationCache interface: operation swapCache()]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineDashOffset" with the proper type]
+ expected: FAIL
+
+ [SVGAElement interface: attribute username]
+ expected: FAIL
+
+ [SVGElement interface: attribute onkeypress]
+ expected: FAIL
+
+ [ImageBitmap interface object length]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "IDLE" with the proper type]
+ expected: FAIL
+
+ [SVGElement interface: attribute onmousedown]
+ expected: FAIL
+
+ [SVGElement interface: attribute ondragend]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "scrollPathIntoView()" with the proper type]
+ expected: FAIL
+
+ [BroadcastChannel interface: attribute onmessageerror]
+ expected: FAIL
+
+ [OffscreenCanvas interface: operation convertToBlob(ImageEncodeOptions)]
+ expected: FAIL
+
+ [ElementInternals interface: attribute validationMessage]
+ expected: FAIL
+
+ [SVGElement interface: attribute onformdata]
+ expected: FAIL
+
+ [SVGElement interface: attribute ondragover]
+ expected: FAIL
+
+ [ApplicationCache interface: attribute onobsolete]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "tooLong" with the proper type]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "valid" with the proper type]
+ expected: FAIL
+
+ [BroadcastChannel interface object length]
+ expected: FAIL
+
+ [Location interface: stringifier]
+ expected: FAIL
+
+ [SVGElement interface: attribute ondblclick]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation clip(CanvasFillRule)]
+ expected: FAIL
+
+ [TextMetrics interface: attribute emHeightAscent]
+ expected: FAIL
+
+ [TextMetrics interface object name]
+ expected: FAIL
+
+ [DOMStringList interface: operation contains(DOMString)]
+ expected: FAIL
+
+ [External interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SVGElement interface: attribute oncanplaythrough]
+ expected: FAIL
+
+ [SVGElement interface: attribute onkeyup]
+ expected: FAIL
+
+ [SVGElement interface: attribute ondrag]
+ expected: FAIL
+
+ [ElementInternals interface: attribute validity]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "textBaseline" with the proper type]
+ expected: FAIL
+
+
+[idlharness.https.html?include=(Document|Window)]
+ [Document interface: documentWithHandlers must inherit property "queryCommandEnabled(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "external" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "statusbar" with the proper type]
+ expected: FAIL
+
+ [Document interface: documentWithHandlers must inherit property "onsecuritypolicyviolation" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandEnabled(DOMString) on documentWithHandlers with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "designMode" with the proper type]
+ expected: FAIL
+
+ [Window interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [Document interface: calling queryCommandIndeterm(DOMString) on documentWithHandlers with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "dir" with the proper type]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "queryCommandSupported(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Window interface: attribute onsecuritypolicyviolation]
+ expected: FAIL
+
+ [Window interface: window must inherit property "applicationCache" with the proper type]
+ expected: FAIL
+
+ [Document interface: attribute onauxclick]
+ expected: FAIL
+
+ [Window interface: window must inherit property "menubar" with the proper type]
+ expected: FAIL
+
+ [Window interface: internal [[SetPrototypeOf\]\] method of interface prototype object - setting to a new value via Reflect.setPrototypeOf should return false]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "execCommand(DOMString, boolean, DOMString)" with the proper type]
+ expected: FAIL
+
+ [Window interface: attribute menubar]
+ expected: FAIL
+
+ [Document interface: calling queryCommandSupported(DOMString) on documentWithHandlers with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: attribute designMode]
+ expected: FAIL
+
+ [Document interface: attribute dir]
+ expected: FAIL
+
+ [Window interface: window must inherit property "print()" with the proper type]
+ expected: FAIL
+
+ [Document interface: documentWithHandlers must inherit property "execCommand(DOMString, boolean, DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandEnabled(DOMString) on new Document() with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Window interface: attribute locationbar]
+ expected: FAIL
+
+ [Document interface: documentWithHandlers must inherit property "vlinkColor" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "createImageBitmap(ImageBitmapSource, long, long, long, long, ImageBitmapOptions)" with the proper type]
+ expected: FAIL
+
+ [Document interface: operation queryCommandEnabled(DOMString)]
+ expected: FAIL
+
+ [Window interface: window must inherit property "prompt(DOMString, DOMString)" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "onsecuritypolicyviolation" with the proper type]
+ expected: FAIL
+
+ [Document interface: attribute all]
+ expected: FAIL
+
+ [Window interface: window must inherit property "queueMicrotask(VoidFunction)" with the proper type]
+ expected: FAIL
+
+ [Window interface: operation postMessage(any, WindowPostMessageOptions)]
+ expected: FAIL
+
+ [Document interface: calling execCommand(DOMString, boolean, DOMString) on new Document() with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: calling queryCommandSupported(DOMString) on new Document() with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Window interface: calling confirm(DOMString) on window with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Window interface: operation focus()]
+ expected: FAIL
+
+ [Document interface: documentWithHandlers must inherit property "queryCommandSupported(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Window interface: attribute scrollbars]
+ expected: FAIL
+
+ [Document interface: documentWithHandlers must inherit property "designMode" with the proper type]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "linkColor" with the proper type]
+ expected: FAIL
+
+ [Window interface: operation prompt(DOMString, DOMString)]
+ expected: FAIL
+
+ [Window interface: window must inherit property "self" with the proper type]
+ expected: FAIL
+
+ [Document interface: documentWithHandlers must inherit property "dir" with the proper type]
+ expected: FAIL
+
+ [Window interface: attribute applicationCache]
+ expected: FAIL
+
+ [Document interface: documentWithHandlers must inherit property "onauxclick" with the proper type]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "onsecuritypolicyviolation" with the proper type]
+ expected: FAIL
+
+ [Window interface: attribute onformdata]
+ expected: FAIL
+
+ [Document interface: calling queryCommandIndeterm(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "queryCommandValue(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "confirm(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: operation queryCommandSupported(DOMString)]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "all" with the proper type]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "alinkColor" with the proper type]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "vlinkColor" with the proper type]
+ expected: FAIL
+
+ [Document interface: attribute linkColor]
+ expected: FAIL
+
+ [Document interface: documentWithHandlers must inherit property "onformdata" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "scrollbars" with the proper type]
+ expected: FAIL
+
+ [Window interface: calling queueMicrotask(VoidFunction) on window with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Window interface: attribute personalbar]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "queryCommandIndeterm(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "queryCommandIndeterm(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "designMode" with the proper type]
+ expected: FAIL
+
+ [Window interface: attribute toolbar]
+ expected: FAIL
+
+ [Window interface: attribute statusbar]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "linkColor" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "onauxclick" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "parent" with the proper type]
+ expected: FAIL
+
+ [Window interface: calling createImageBitmap(ImageBitmapSource, long, long, long, long, ImageBitmapOptions) on window with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: attribute alinkColor]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "queryCommandState(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "frames" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "onformdata" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandEnabled(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: documentWithHandlers must inherit property "queryCommandValue(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: operation queryCommandValue(DOMString)]
+ expected: FAIL
+
+ [Window interface: window must inherit property "personalbar" with the proper type]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "onformdata" with the proper type]
+ expected: FAIL
+
+ [Window interface: internal [[SetPrototypeOf\]\] method of interface prototype object - setting to a new value via __proto__ should throw a TypeError]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "dir" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "blur()" with the proper type]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "queryCommandSupported(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling execCommand(DOMString, boolean, DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: attribute onsecuritypolicyviolation]
+ expected: FAIL
+
+ [Document interface: documentWithHandlers must inherit property "alinkColor" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandValue(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Window interface: operation createImageBitmap(ImageBitmapSource, long, long, long, long, ImageBitmapOptions)]
+ expected: FAIL
+
+ [Window interface: window must inherit property "createImageBitmap(ImageBitmapSource, ImageBitmapOptions)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandState(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: operation queryCommandState(DOMString)]
+ expected: FAIL
+
+ [Document interface: attribute vlinkColor]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "onformdata" with the proper type]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "queryCommandEnabled(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandSupported(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Window interface: operation blur()]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "alinkColor" with the proper type]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "defaultView" with the proper type]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "queryCommandEnabled(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Window interface: operation print()]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "all" with the proper type]
+ expected: FAIL
+
+ [Document interface: documentWithHandlers must inherit property "all" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "focus()" with the proper type]
+ expected: FAIL
+
+ [Window interface: calling prompt(DOMString, DOMString) on window with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: attribute onformdata]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "onauxclick" with the proper type]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "execCommand(DOMString, boolean, DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "onauxclick" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandValue(DOMString) on documentWithHandlers with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Window interface: attribute external]
+ expected: FAIL
+
+ [Document interface: calling queryCommandState(DOMString) on new Document() with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Window interface: attribute onauxclick]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "queryCommandState(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Window interface: operation postMessage(any, USVString, [object Object\])]
+ expected: FAIL
+
+ [Window interface: operation queueMicrotask(VoidFunction)]
+ expected: FAIL
+
+ [Window interface: internal [[SetPrototypeOf\]\] method of interface prototype object - setting to a new value via Object.setPrototypeOf should throw a TypeError]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "onsecuritypolicyviolation" with the proper type]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "queryCommandValue(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: operation execCommand(DOMString, boolean, DOMString)]
+ expected: FAIL
+
+ [Window interface: operation confirm(DOMString)]
+ expected: FAIL
+
+ [Window interface: window must inherit property "toolbar" with the proper type]
+ expected: FAIL
+
+ [Document interface: documentWithHandlers must inherit property "linkColor" with the proper type]
+ expected: FAIL
+
+ [Document interface: operation queryCommandIndeterm(DOMString)]
+ expected: FAIL
+
+ [Document interface: calling execCommand(DOMString, boolean, DOMString) on documentWithHandlers with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Window interface: operation createImageBitmap(ImageBitmapSource, ImageBitmapOptions)]
+ expected: FAIL
+
+ [Document interface: calling queryCommandIndeterm(DOMString) on new Document() with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Window interface: calling createImageBitmap(ImageBitmapSource, ImageBitmapOptions) on window with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: documentWithHandlers must inherit property "queryCommandState(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "vlinkColor" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "locationbar" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandValue(DOMString) on new Document() with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: documentWithHandlers must inherit property "queryCommandIndeterm(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandState(DOMString) on documentWithHandlers with too few arguments must throw TypeError]
+ expected: FAIL
+
+
+[idlharness.https.html?include=HTML.*]
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("hidden") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLMeterElement interface: document.createElement("meter") must inherit property "low" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute valueAsDate]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("checkbox") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLMenuElement interface: attribute compact]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "getSVGDocument()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLFieldSetElement interface: operation reportValidity()]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLButtonElement interface: document.createElement("button") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLMeterElement interface: attribute value]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("thead") must inherit property "chOff" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLLinkElement interface: document.createElement("link") must inherit property "sizes" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("number") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("color") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLButtonElement interface: attribute willValidate]
+ expected: FAIL
+
+ [HTMLAllCollection interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute relList]
+ expected: FAIL
+
+ [HTMLPreElement interface: document.createElement("listing") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("password") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLHRElement interface: document.createElement("hr") must inherit property "noShade" with the proper type]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: attribute ping]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: attribute marginHeight]
+ expected: FAIL
+
+ [HTMLMenuElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [HTMLFormElement interface: document.createElement("form") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "origin" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute list]
+ expected: FAIL
+
+ [HTMLElement interface: operation attachInternals()]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: calling setCustomValidity(DOMString) on document.createElement("output") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLVideoElement interface: attribute playsInline]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "htmlFor" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("reset") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLTableElement interface: document.createElement("table") must inherit property "summary" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("time") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLSelectElement interface: document.createElement("select") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("checkbox") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLButtonElement interface: operation reportValidity()]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("text") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: operation stepUp(long)]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("submit") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLMediaElement interface: attribute seekable]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "spellcheck" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute codeBase]
+ expected: FAIL
+
+ [HTMLSlotElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: attribute required]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("image") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute src]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLTableRowElement interface: attribute ch]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute loop]
+ expected: FAIL
+
+ [HTMLAllCollection interface: operation namedItem(DOMString)]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameSetElement interface: attribute cols]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: attribute accessKey]
+ expected: FAIL
+
+ [HTMLFormElement interface: attribute rel]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "vspace" with the proper type]
+ expected: FAIL
+
+ [HTMLHRElement interface: attribute size]
+ expected: FAIL
+
+ [HTMLBodyElement interface: document.createElement("body") must inherit property "aLink" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLImageElement interface: attribute sizes]
+ expected: FAIL
+
+ [HTMLParamElement interface: attribute value]
+ expected: FAIL
+
+ [HTMLTableColElement interface: attribute width]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: document.createElement("a") must inherit property "referrerPolicy" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface object length]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "value" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "start()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: attribute referrerPolicy]
+ expected: FAIL
+
+ [HTMLAllCollection interface object length]
+ expected: FAIL
+
+ [HTMLTableRowElement interface: attribute chOff]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLAllCollection interface: attribute length]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("week") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLLegendElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLSelectElement interface: attribute willValidate]
+ expected: FAIL
+
+ [HTMLOptionElement interface: named constructor]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute hspace]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute vspace]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute vAlign]
+ expected: FAIL
+
+ [HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toBlob(BlobCallback, DOMString, any)" with the proper type]
+ expected: FAIL
+
+ [HTMLQuoteElement interface: attribute cite]
+ expected: FAIL
+
+ [HTMLModElement interface: document.createElement("ins") must inherit property "dateTime" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLMapElement interface: attribute name]
+ expected: FAIL
+
+ [HTMLAllCollection interface: calling namedItem(DOMString) on document.all with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: attribute ch]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: attribute dirName]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "codeBase" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("datetime-local") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("file") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute marginWidth]
+ expected: FAIL
+
+ [HTMLImageElement interface: new Image() must inherit property "sizes" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [Stringification of document.createElement("marquee")]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "protocol" with the proper type]
+ expected: FAIL
+
+ [HTMLSlotElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute protocol]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLTableRowElement interface: attribute vAlign]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("radio") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLButtonElement interface: calling setCustomValidity(DOMString) on document.createElement("button") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: attribute referrerPolicy]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: document.createElement("embed") must inherit property "name" with the proper type]
+ expected: FAIL
+
+ [HTMLFormElement interface: document.createElement("form") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLFieldSetElement interface: attribute type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLSlotElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLOptionElement interface: named constructor prototype property]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: attribute autofocus]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLOListElement interface: attribute type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLButtonElement interface: operation setCustomValidity(DOMString)]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "hostname" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: operation getSVGDocument()]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute longDesc]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: attribute name]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute hspace]
+ expected: FAIL
+
+ [HTMLTableElement interface: document.createElement("table") must inherit property "cellSpacing" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLImageElement interface: attribute decoding]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: attribute vAlign]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: attribute validationMessage]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "ch" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLOptionElement interface: new Option() must inherit property "index" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "src" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("col") must inherit property "ch" with the proper type]
+ expected: FAIL
+
+ [HTMLStyleElement interface: attribute media]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: operation getSVGDocument()]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "ping" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "autocapitalize" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: attribute onsecuritypolicyviolation]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("col") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: attribute selectedOptions]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("radio") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLAllCollection interface: calling item(DOMString) on document.all with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLBodyElement interface: attribute aLink]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute noResize]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute noWrap]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: stringifier]
+ expected: FAIL
+
+ [HTMLSlotElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [HTMLTableColElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLLIElement interface: document.createElement("li") must inherit property "type" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "behavior" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLFormElement interface: operation checkValidity()]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "axis" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("submit") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "vAlign" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "host" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("thead") must inherit property "vAlign" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute name]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "translate" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "srcObject" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "contentWindow" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLHeadingElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("image") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("text") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: operation play()]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("datetime-local") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "hspace" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLAllCollection interface object name]
+ expected: FAIL
+
+ [HTMLTableElement interface: attribute border]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLImageElement interface: document.createElement("img") must inherit property "decoding" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLVideoElement interface: attribute width]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: attribute marginWidth]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "href" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: document.createElement("select") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "contentDocument" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: attribute dir]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLButtonElement interface: document.createElement("button") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLMeterElement interface: document.createElement("meter") must inherit property "max" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "noWrap" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "shape" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLMeterElement interface: attribute low]
+ expected: FAIL
+
+ [HTMLLinkElement interface: attribute relList]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: attribute height]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: document.createElement("select") must inherit property "selectedOptions" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLDirectoryElement interface: attribute compact]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLButtonElement interface: document.createElement("button") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("col") must inherit property "vAlign" with the proper type]
+ expected: FAIL
+
+ [HTMLAudioElement interface: named constructor without 'new']
+ expected: FAIL
+
+ [HTMLProgressElement interface: document.createElement("progress") must inherit property "value" with the proper type]
+ expected: FAIL
+
+ [HTMLMenuElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("tel") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: attribute name]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "referrerPolicy" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute contentDocument]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute onstart]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLProgressElement interface: document.createElement("progress") must inherit property "position" with the proper type]
+ expected: FAIL
+
+ [HTMLProgressElement interface: attribute position]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute shape]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute vspace]
+ expected: FAIL
+
+ [HTMLSlotElement must be primary interface of document.createElement("slot")]
+ expected: FAIL
+
+ [HTMLMapElement interface: document.createElement("map") must inherit property "name" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("tel") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "password" with the proper type]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: document.createElement("embed") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onbounce" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: operation reportValidity()]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: attribute type]
+ expected: FAIL
+
+ [Stringification of document.createElement("menu")]
+ expected: FAIL
+
+ [HTMLOutputElement interface: attribute defaultValue]
+ expected: FAIL
+
+ [HTMLCanvasElement interface: calling toBlob(BlobCallback, DOMString, any) on document.createElement("canvas") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLImageElement interface: document.createElement("img") must inherit property "sizes" with the proper type]
+ expected: FAIL
+
+ [HTMLMeterElement interface: document.createElement("meter") must inherit property "optimum" with the proper type]
+ expected: FAIL
+
+ [HTMLMeterElement interface: document.createElement("meter") must inherit property "value" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: attribute isContentEditable]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "ch" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute axis]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("url") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "scrollDelay" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "vspace" with the proper type]
+ expected: FAIL
+
+ [HTMLLinkElement interface: attribute referrerPolicy]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLSlotElement interface: operation assignedElements(AssignedNodesOptions)]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLMenuElement interface object length]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on document.createElement("input") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute files]
+ expected: FAIL
+
+ [Stringification of document.all]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "cols" with the proper type]
+ expected: FAIL
+
+ [HTMLBRElement interface: document.createElement("br") must inherit property "clear" with the proper type]
+ expected: FAIL
+
+ [HTMLTableElement interface: attribute frame]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("month") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: attribute willValidate]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "span" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLParamElement interface: attribute valueType]
+ expected: FAIL
+
+ [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "rows" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLMenuElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLTableElement interface: attribute summary]
+ expected: FAIL
+
+ [HTMLDialogElement interface: operation show()]
+ expected: FAIL
+
+ [HTMLUListElement interface: attribute type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "bgColor" with the proper type]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: attribute longDesc]
+ expected: FAIL
+
+ [HTMLSelectElement interface: calling setCustomValidity(DOMString) on document.createElement("select") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute abbr]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute scrollDelay]
+ expected: FAIL
+
+ [HTMLSelectElement interface: document.createElement("select") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLAllCollection interface: document.all must inherit property "item(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLProgressElement interface: document.createElement("progress") must inherit property "max" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "seekable" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute ch]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute validationMessage]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "ch" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLScriptElement interface: attribute noModule]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLBodyElement interface: attribute vLink]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "archive" with the proper type]
+ expected: FAIL
+
+ [Stringification of document.createElement("slot")]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("col") must inherit property "chOff" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLImageElement interface: operation decode()]
+ expected: FAIL
+
+ [HTMLTableRowElement interface: document.createElement("tr") must inherit property "vAlign" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute contentWindow]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("button") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLImageElement interface: attribute lowsrc]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: document.createElement("a") must inherit property "download" with the proper type]
+ expected: FAIL
+
+ [HTMLHtmlElement interface: document.createElement("html") must inherit property "version" with the proper type]
+ expected: FAIL
+
+ [HTMLTableElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: attribute enterKeyHint]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "marginWidth" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "srcObject" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on document.createElement("input") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLMeterElement interface: attribute optimum]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "rel" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLFormElement interface: attribute relList]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "onauxclick" with the proper type]
+ expected: FAIL
+
+ [HTMLParagraphElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: document.createElement("a") must inherit property "ping" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "code" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "isContentEditable" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("checkbox") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLButtonElement interface: operation checkValidity()]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute ping]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute width]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: document.createElement("a") must inherit property "type" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: attribute hreflang]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: document.createElement("a") must inherit property "charset" with the proper type]
+ expected: FAIL
+
+ [HTMLTableElement interface: attribute cellSpacing]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "vAlign" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("time") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLMarqueeElement must be primary interface of document.createElement("marquee")]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "noResize" with the proper type]
+ expected: FAIL
+
+ [HTMLMetaElement interface: document.createElement("meta") must inherit property "scheme" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("password") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLOptionElement interface: named constructor object]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "frameBorder" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "direction" with the proper type]
+ expected: FAIL
+
+ [HTMLButtonElement interface: document.createElement("button") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLScriptElement interface: attribute referrerPolicy]
+ expected: FAIL
+
+ [HTMLLinkElement interface: document.createElement("link") must inherit property "referrerPolicy" with the proper type]
+ expected: FAIL
+
+ [HTMLUListElement interface: attribute compact]
+ expected: FAIL
+
+ [HTMLElement interface: attribute tabIndex]
+ expected: FAIL
+
+ [HTMLObjectElement interface: calling setCustomValidity(DOMString) on document.createElement("object") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute willValidate]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("month") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: operation stop()]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "contentDocument" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLMenuElement interface object name]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute frameBorder]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute rel]
+ expected: FAIL
+
+ [HTMLImageElement interface: new Image() must inherit property "decode()" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("col") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute validity]
+ expected: FAIL
+
+ [HTMLAllCollection must be primary interface of document.all]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("hidden") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLImageElement interface: document.createElement("img") must inherit property "referrerPolicy" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "name" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "dir" with the proper type]
+ expected: FAIL
+
+ [HTMLDialogElement interface: operation showModal()]
+ expected: FAIL
+
+ [HTMLTableElement interface: document.createElement("table") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute bgColor]
+ expected: FAIL
+
+ [Stringification of new Option()]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: document.createElement("select") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: operation reportValidity()]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "hspace" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute data]
+ expected: FAIL
+
+ [HTMLCanvasElement interface: operation transferControlToOffscreen()]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface object name]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "seekable" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "coords" with the proper type]
+ expected: FAIL
+
+ [HTMLOptionElement interface: new Option() must inherit property "label" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "chOff" with the proper type]
+ expected: FAIL
+
+ [HTMLSlotElement interface: operation assignedNodes(AssignedNodesOptions)]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "getStartDate()" with the proper type]
+ expected: FAIL
+
+ [HTMLOListElement interface: attribute compact]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("email") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLMeterElement interface: attribute high]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("file") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLMenuElement interface: document.createElement("menu") must inherit property "compact" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLProgressElement interface: attribute max]
+ expected: FAIL
+
+ [HTMLBRElement interface: attribute clear]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "scrollAmount" with the proper type]
+ expected: FAIL
+
+ [HTMLOptionElement interface: new Option() must inherit property "form" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLHtmlElement interface: attribute version]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute download]
+ expected: FAIL
+
+ [HTMLOutputElement interface: attribute willValidate]
+ expected: FAIL
+
+ [HTMLMeterElement interface: attribute max]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("hidden") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: operation setCustomValidity(DOMString)]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: calling setCustomValidity(DOMString) on document.createElement("textarea") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLMeterElement interface: document.createElement("meter") must inherit property "high" with the proper type]
+ expected: FAIL
+
+ [HTMLParagraphElement interface: document.createElement("p") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on document.createElement("input") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute trueSpeed]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("date") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "noWrap" with the proper type]
+ expected: FAIL
+
+ [HTMLBodyElement interface: attribute link]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: attribute download]
+ expected: FAIL
+
+ [HTMLSelectElement interface: operation setCustomValidity(DOMString)]
+ expected: FAIL
+
+ [HTMLOptionElement interface: named constructor name]
+ expected: FAIL
+
+ [HTMLVideoElement interface: document.createElement("video") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: operation setCustomValidity(DOMString)]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLTableElement interface: attribute rules]
+ expected: FAIL
+
+ [HTMLOptionElement interface: named constructor length]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute origin]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: attribute chOff]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLButtonElement interface: attribute validationMessage]
+ expected: FAIL
+
+ [HTMLSelectElement interface: document.createElement("select") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [HTMLAllCollection interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("button") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLAllCollection interface: document.all must inherit property "length" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: operation setCustomValidity(DOMString)]
+ expected: FAIL
+
+ [HTMLTableElement interface: document.createElement("table") must inherit property "frame" with the proper type]
+ expected: FAIL
+
+ [HTMLParamElement interface: document.createElement("param") must inherit property "type" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLLegendElement interface: document.createElement("legend") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: operation reportValidity()]
+ expected: FAIL
+
+ [HTMLElement interface: attribute inputMode]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute behavior]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "longDesc" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: attribute validationMessage]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute height]
+ expected: FAIL
+
+ [HTMLFormElement interface: operation reportValidity()]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLScriptElement interface: document.createElement("script") must inherit property "referrerPolicy" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("reset") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "hash" with the proper type]
+ expected: FAIL
+
+ [HTMLLIElement interface: attribute type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute scope]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: document.createElement("embed") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: operation checkValidity()]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute href]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("week") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: attribute ch]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute chOff]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLOListElement interface: attribute reversed]
+ expected: FAIL
+
+ [HTMLElement interface: attribute onformdata]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: document.createElement("a") must inherit property "hreflang" with the proper type]
+ expected: FAIL
+
+ [HTMLTableRowElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute headers]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: operation setCustomValidity(DOMString)]
+ expected: FAIL
+
+ [HTMLModElement interface: attribute cite]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "stop()" with the proper type]
+ expected: FAIL
+
+ [HTMLTableRowElement interface: document.createElement("tr") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLVideoElement interface: attribute height]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("thead") must inherit property "ch" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute height]
+ expected: FAIL
+
+ [HTMLCanvasElement interface: operation toBlob(BlobCallback, DOMString, any)]
+ expected: FAIL
+
+ [HTMLParamElement interface: document.createElement("param") must inherit property "valueType" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute password]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("tel") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLFieldSetElement interface: attribute willValidate]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("datetime-local") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "codeType" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "headers" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "axis" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: operation reportValidity()]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("month") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "scope" with the proper type]
+ expected: FAIL
+
+ [HTMLMeterElement interface: document.createElement("meter") must inherit property "min" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: operation stepDown(long)]
+ expected: FAIL
+
+ [HTMLLinkElement interface: attribute as]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute referrerPolicy]
+ expected: FAIL
+
+ [HTMLPreElement interface: attribute width]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: operation checkValidity()]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("range") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLOptionElement interface: attribute index]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLOptionElement interface: new Option() must inherit property "disabled" with the proper type]
+ expected: FAIL
+
+ [HTMLFieldSetElement interface: attribute name]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: attribute value]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute declare]
+ expected: FAIL
+
+ [HTMLMetaElement interface: attribute scheme]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLLinkElement interface: attribute imageSizes]
+ expected: FAIL
+
+ [HTMLTableCaptionElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute alt]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("url") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLVideoElement interface: document.createElement("video") must inherit property "playsInline" with the proper type]
+ expected: FAIL
+
+ [HTMLCanvasElement interface: document.createElement("canvas") must inherit property "transferControlToOffscreen()" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute contentWindow]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLBaseElement interface: document.createElement("base") must inherit property "target" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute valueAsNumber]
+ expected: FAIL
+
+ [HTMLTableRowElement interface: document.createElement("tr") must inherit property "chOff" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLParamElement interface: attribute name]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: document.createElement("embed") must inherit property "getSVGDocument()" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "accessKey" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: attribute accessKeyLabel]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLScriptElement interface: document.createElement("script") must inherit property "noModule" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("thead") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute height]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "inputMode" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [HTMLLinkElement interface: document.createElement("link") must inherit property "imageSizes" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLImageElement interface: attribute referrerPolicy]
+ expected: FAIL
+
+ [HTMLSelectElement interface: document.createElement("select") must inherit property "required" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: document.createElement("embed") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLHRElement interface: document.createElement("hr") must inherit property "size" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "declare" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "vAlign" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("email") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: attribute charset]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "ch" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute coords]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("url") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute useMap]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("search") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLFieldSetElement interface: operation checkValidity()]
+ expected: FAIL
+
+ [HTMLElement interface: attribute spellcheck]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute archive]
+ expected: FAIL
+
+ [HTMLMetaElement interface: attribute httpEquiv]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute onbounce]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "loop" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "type" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("file") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: document.createElement("embed") must inherit property "src" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "enterKeyHint" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLLinkElement interface: document.createElement("link") must inherit property "as" with the proper type]
+ expected: FAIL
+
+ [HTMLFieldSetElement interface: operation setCustomValidity(DOMString)]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute noHref]
+ expected: FAIL
+
+ [HTMLOptionElement interface: new Option() must inherit property "value" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onfinish" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: attribute vAlign]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute onfinish]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: attribute onauxclick]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute useMap]
+ expected: FAIL
+
+ [HTMLElement interface: attribute draggable]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute direction]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("number") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "attachInternals()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLFormElement interface: document.createElement("form") must inherit property "requestSubmit(HTMLElement)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("email") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute border]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "scrolling" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "abbr" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: attribute autofocus]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: attribute autocomplete]
+ expected: FAIL
+
+ [HTMLObjectElement interface: operation checkValidity()]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("text") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLMapElement interface: document.createElement("map") must inherit property "areas" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute port]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLOptGroupElement interface: document.createElement("optgroup") must inherit property "label" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLSlotElement interface: attribute name]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLModElement interface: document.createElement("del") must inherit property "dateTime" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute hostname]
+ expected: FAIL
+
+ [HTMLElement interface: attribute translate]
+ expected: FAIL
+
+ [HTMLTableColElement interface: attribute span]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLSlotElement interface object name]
+ expected: FAIL
+
+ [HTMLTableElement interface: document.createElement("table") must inherit property "border" with the proper type]
+ expected: FAIL
+
+ [HTMLMapElement interface: attribute areas]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute marginHeight]
+ expected: FAIL
+
+ [HTMLButtonElement interface: document.createElement("button") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute codeType]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "trueSpeed" with the proper type]
+ expected: FAIL
+
+ [HTMLOptionElement interface: new Option() must inherit property "selected" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: attribute contentEditable]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "search" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("button") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: attribute srcdoc]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLParamElement interface: document.createElement("param") must inherit property "name" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "srcObject" with the proper type]
+ expected: FAIL
+
+ [HTMLMenuElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [HTMLModElement interface: document.createElement("ins") must inherit property "cite" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: attribute src]
+ expected: FAIL
+
+ [HTMLAllCollection interface: existence and properties of interface object]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "border" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLImageElement interface: new Image() must inherit property "lowsrc" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute width]
+ expected: FAIL
+
+ [HTMLImageElement interface: new Image() must inherit property "referrerPolicy" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: operation checkValidity()]
+ expected: FAIL
+
+ [HTMLObjectElement interface: operation getSVGDocument()]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLButtonElement interface: attribute autofocus]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: attribute relList]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLFormElement interface: document.createElement("form") must inherit property "rel" with the proper type]
+ expected: FAIL
+
+ [HTMLOptionElement must be primary interface of new Option()]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: attribute allowPaymentRequest]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "draggable" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("search") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("range") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute host]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: document.createElement("select") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute code]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "tabIndex" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLBodyElement interface: document.createElement("body") must inherit property "link" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLOListElement interface: attribute start]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLVideoElement interface: document.createElement("video") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLBodyElement interface: document.createElement("body") must inherit property "vLink" with the proper type]
+ expected: FAIL
+
+ [HTMLOptionElement interface: new Option() must inherit property "text" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "seekable" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLLinkElement interface: attribute sizes]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLBaseElement interface: attribute target]
+ expected: FAIL
+
+ [HTMLStyleElement interface: document.createElement("style") must inherit property "type" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute autofocus]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLSlotElement interface: document.createElement("slot") must inherit property "assignedNodes(AssignedNodesOptions)" with the proper type]
+ expected: FAIL
+
+ [HTMLSlotElement interface: calling assignedNodes(AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("radio") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "alt" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "marginHeight" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("number") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLTableElement interface: document.createElement("table") must inherit property "rules" with the proper type]
+ expected: FAIL
+
+ [HTMLFieldSetElement interface: attribute validationMessage]
+ expected: FAIL
+
+ [HTMLOutputElement interface: attribute htmlFor]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "name" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute standby]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "dirName" with the proper type]
+ expected: FAIL
+
+ [HTMLParamElement interface: attribute type]
+ expected: FAIL
+
+ [HTMLPreElement interface: document.createElement("xmp") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "onformdata" with the proper type]
+ expected: FAIL
+
+ [HTMLTableRowElement interface: document.createElement("tr") must inherit property "ch" with the proper type]
+ expected: FAIL
+
+ [HTMLParamElement interface: document.createElement("param") must inherit property "value" with the proper type]
+ expected: FAIL
+
+ [HTMLQuoteElement interface: document.createElement("q") must inherit property "cite" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: operation start()]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: attribute validity]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: attribute type]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute willValidate]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute name]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute search]
+ expected: FAIL
+
+ [HTMLStyleElement interface: document.createElement("style") must inherit property "media" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "chOff" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLImageElement interface: document.createElement("img") must inherit property "decode()" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "username" with the proper type]
+ expected: FAIL
+
+ [HTMLFormElement interface: document.createElement("form") must inherit property "relList" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: operation getStartDate()]
+ expected: FAIL
+
+ [HTMLOptionElement interface: new Option() must inherit property "defaultSelected" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLQuoteElement interface: document.createElement("blockquote") must inherit property "cite" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("week") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute validationMessage]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "name" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLSlotElement interface: document.createElement("slot") must inherit property "assignedElements(AssignedNodesOptions)" with the proper type]
+ expected: FAIL
+
+ [HTMLAllCollection interface: document.all must inherit property "namedItem(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLLinkElement interface: document.createElement("link") must inherit property "imageSrcset" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "port" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("date") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: attribute width]
+ expected: FAIL
+
+ [HTMLOutputElement interface: attribute type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "standby" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "scope" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "abbr" with the proper type]
+ expected: FAIL
+
+ [HTMLDirectoryElement interface: document.createElement("dir") must inherit property "compact" with the proper type]
+ expected: FAIL
+
+ [HTMLHeadingElement interface: document.createElement("h1") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute width]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute height]
+ expected: FAIL
+
+ [HTMLMetaElement interface: document.createElement("meta") must inherit property "httpEquiv" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("search") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLImageElement interface: new Image() must inherit property "decoding" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLAllCollection interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [HTMLImageElement interface: named constructor without 'new']
+ expected: FAIL
+
+ [HTMLModElement interface: document.createElement("del") must inherit property "cite" with the proper type]
+ expected: FAIL
+
+ [HTMLSlotElement interface object length]
+ expected: FAIL
+
+ [HTMLAllCollection interface: operation item(DOMString)]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "getStartDate()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: attribute autocomplete]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("range") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLFormElement interface: operation requestSubmit(HTMLElement)]
+ expected: FAIL
+
+ [HTMLTableElement interface: document.createElement("table") must inherit property "cellPadding" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLMenuElement must be primary interface of document.createElement("menu")]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute username]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "chOff" with the proper type]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: document.createElement("embed") must inherit property "type" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: attribute nonce]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCaptionElement interface: document.createElement("caption") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: operation checkValidity()]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute autocomplete]
+ expected: FAIL
+
+ [HTMLSlotElement interface: document.createElement("slot") must inherit property "name" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute hash]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "chOff" with the proper type]
+ expected: FAIL
+
+ [HTMLSlotElement interface: calling assignedElements(AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "ch" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "contentEditable" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: operation reportValidity()]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLTableElement interface: attribute cellPadding]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("time") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("color") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLStyleElement interface: attribute type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("image") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "data" with the proper type]
+ expected: FAIL
+
+ [HTMLMeterElement interface: attribute min]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "onsecuritypolicyviolation" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute contentDocument]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLButtonElement interface: document.createElement("button") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: document.createElement("select") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "defaultValue" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("reset") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLElement interface: attribute autocapitalize]
+ expected: FAIL
+
+ [HTMLFrameSetElement interface: attribute rows]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLLinkElement interface: attribute imageSrcset]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "pathname" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "vAlign" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "contentWindow" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: attribute chOff]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute scrolling]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("col") must inherit property "span" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "accessKeyLabel" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("color") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLModElement interface: attribute dateTime]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("password") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "vAlign" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute scrollAmount]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: attribute scrolling]
+ expected: FAIL
+
+ [HTMLDListElement interface: attribute compact]
+ expected: FAIL
+
+ [HTMLHRElement interface: attribute noShade]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("submit") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: attribute allow]
+ expected: FAIL
+
+ [HTMLImageElement interface: document.createElement("img") must inherit property "lowsrc" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "download" with the proper type]
+ expected: FAIL
+
+ [HTMLFormElement interface: calling requestSubmit(HTMLElement) on document.createElement("form") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("date") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLProgressElement interface: attribute value]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "chOff" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "getStartDate()" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "nonce" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute pathname]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "headers" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLPreElement interface: document.createElement("pre") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: attribute validationMessage]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLOptionElement interface: document.createElement("option") must inherit property "index" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLOptGroupElement interface: attribute label]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "noHref" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onstart" with the proper type]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/dom/idlharness.worker.js.ini b/tests/wpt/metadata/html/dom/idlharness.worker.js.ini
new file mode 100644
index 00000000000..d65f2f13fc0
--- /dev/null
+++ b/tests/wpt/metadata/html/dom/idlharness.worker.js.ini
@@ -0,0 +1,718 @@
+[idlharness.worker.html]
+ [ImageBitmapRenderingContext interface: operation transferFromImageBitmap(ImageBitmap)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation lineTo(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute globalAlpha]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: self must inherit property "onmessageerror" with the proper type]
+ expected: FAIL
+
+ [MessagePort interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute filter]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation measureText(DOMString)]
+ expected: FAIL
+
+ [MessagePort interface: attribute onmessage]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: existence and properties of interface object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingEnabled]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute shadowOffsetX]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute shadowOffsetY]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute strokeStyle]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface object length]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation clearRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation getLineDash()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute globalCompositeOperation]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: calling createImageBitmap(ImageBitmapSource, long, long, long, long, ImageBitmapOptions) on self with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: operation createImageBitmap(ImageBitmapSource, long, long, long, long, ImageBitmapOptions)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation getImageData(long, long, long, long)]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: self must inherit property "onlanguagechange" with the proper type]
+ expected: FAIL
+
+ [MessagePort interface: attribute onmessageerror]
+ expected: FAIL
+
+ [WorkerNavigator interface: attribute languages]
+ expected: FAIL
+
+ [MessagePort interface object length]
+ expected: FAIL
+
+ [DOMStringList interface object length]
+ expected: FAIL
+
+ [DOMStringList interface: operation item(unsigned long)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation strokeText(DOMString, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation restore()]
+ expected: FAIL
+
+ [PromiseRejectionEvent interface object length]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: calling createImageBitmap(ImageBitmapSource, ImageBitmapOptions) on self with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [MessagePort interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [Path2D interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SharedWorker interface: existence and properties of interface object]
+ expected: FAIL
+
+ [TextMetrics interface object length]
+ expected: FAIL
+
+ [TextMetrics interface: attribute emHeightAscent]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: self must inherit property "ononline" with the proper type]
+ expected: FAIL
+
+ [BroadcastChannel interface: operation close()]
+ expected: FAIL
+
+ [MessageChannel interface: existence and properties of interface object]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: calling requestAnimationFrame(FrameRequestCallback) on self with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [TextMetrics interface: attribute ideographicBaseline]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation beginPath()]
+ expected: FAIL
+
+ [MessageEvent interface: calling initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object\]) on new MessageEvent("message", { data: 5 }) with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [MessageChannel interface: attribute port1]
+ expected: FAIL
+
+ [MessageChannel interface: attribute port2]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute lineWidth]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute shadowColor]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: self must inherit property "queueMicrotask(VoidFunction)" with the proper type]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: attribute name]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation isPointInStroke(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvas interface: existence and properties of interface object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation fill(CanvasFillRule)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [WorkerNavigator interface: self.navigator must inherit property "onLine" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation translate(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: operation queueMicrotask(VoidFunction)]
+ expected: FAIL
+
+ [Path2D interface: operation moveTo(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [MessageChannel interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [TextMetrics interface: attribute actualBoundingBoxAscent]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [BroadcastChannel interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [OffscreenCanvas interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation stroke(Path2D)]
+ expected: FAIL
+
+ [DOMStringList interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [ImageBitmap interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [TextMetrics interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [MessagePort interface: existence and properties of interface object]
+ expected: FAIL
+
+ [Path2D interface object name]
+ expected: FAIL
+
+ [MessageEvent interface: operation initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object\])]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: self must inherit property "onrejectionhandled" with the proper type]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: self must inherit property "createImageBitmap(ImageBitmapSource, ImageBitmapOptions)" with the proper type]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: calling queueMicrotask(VoidFunction) on self with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: self must inherit property "cancelAnimationFrame(unsigned long)" with the proper type]
+ expected: FAIL
+
+ [PromiseRejectionEvent interface: attribute promise]
+ expected: FAIL
+
+ [SharedWorker interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation resetTransform()]
+ expected: FAIL
+
+ [OffscreenCanvas interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingQuality]
+ expected: FAIL
+
+ [Path2D interface object length]
+ expected: FAIL
+
+ [TextMetrics interface: attribute emHeightDescent]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: operation createImageBitmap(ImageBitmapSource, ImageBitmapOptions)]
+ expected: FAIL
+
+ [BroadcastChannel interface: attribute name]
+ expected: FAIL
+
+ [Path2D interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation fillText(DOMString, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [CanvasPattern interface: operation setTransform(DOMMatrix2DInit)]
+ expected: FAIL
+
+ [Path2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object\])" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute lineCap]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: attribute canvas]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation scale(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvas interface: attribute width]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf\]\] method of interface prototype object - setting to a new value via Reflect.setPrototypeOf should return false]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation stroke()]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: attribute onunhandledrejection]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute lineJoin]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [ImageBitmap interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [WebSocket interface: attribute extensions]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: attribute onmessageerror]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute direction]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute shadowBlur]
+ expected: FAIL
+
+ [Path2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [TextMetrics interface: attribute actualBoundingBoxDescent]
+ expected: FAIL
+
+ [Path2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation isPointInPath(unrestricted double, unrestricted double, CanvasFillRule)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [TextMetrics interface: attribute actualBoundingBoxLeft]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf\]\] method of interface prototype object - setting to a new value via __proto__ should throw a TypeError]
+ expected: FAIL
+
+ [OffscreenCanvas interface: attribute height]
+ expected: FAIL
+
+ [BroadcastChannel interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [ImageBitmap interface object name]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [DOMStringList interface: existence and properties of interface object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface object name]
+ expected: FAIL
+
+ [WorkerNavigator interface: attribute onLine]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute miterLimit]
+ expected: FAIL
+
+ [MessageChannel interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation strokeRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: existence and properties of interface object]
+ expected: FAIL
+
+ [MessageChannel interface object length]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation commit()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation getTransform()]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: self must inherit property "onoffline" with the proper type]
+ expected: FAIL
+
+ [MessageEvent interface: attribute ports]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute lineDashOffset]
+ expected: FAIL
+
+ [WorkerNavigator interface: self.navigator must inherit property "hardwareConcurrency" with the proper type]
+ expected: FAIL
+
+ [BroadcastChannel interface: existence and properties of interface object]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface object name]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation isPointInPath(Path2D, unrestricted double, unrestricted double, CanvasFillRule)]
+ expected: FAIL
+
+ [TextMetrics interface: existence and properties of interface object]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: self must inherit property "name" with the proper type]
+ expected: FAIL
+
+ [History interface: existence and properties of interface object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createImageData(long, long)]
+ expected: FAIL
+
+ [ImageBitmap interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SharedWorker interface object length]
+ expected: FAIL
+
+ [Path2D interface: operation lineTo(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createLinearGradient(double, double, double, double)]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: attribute onrejectionhandled]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createImageData(ImageData)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute font]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation putImageData(ImageData, long, long, long, long, long, long)]
+ expected: FAIL
+
+ [DOMStringList interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [WorkerNavigator interface: member taintEnabled]
+ expected: FAIL
+
+ [DOMStringList interface: operation contains(DOMString)]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: calling cancelAnimationFrame(unsigned long) on self with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation moveTo(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvas interface object length]
+ expected: FAIL
+
+ [TextMetrics interface: attribute hangingBaseline]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [Path2D interface: operation closePath()]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: attribute onoffline]
+ expected: FAIL
+
+ [TextMetrics interface: attribute width]
+ expected: FAIL
+
+ [Path2D interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [TextMetrics interface: attribute actualBoundingBoxRight]
+ expected: FAIL
+
+ [TextMetrics interface: attribute fontBoundingBoxAscent]
+ expected: FAIL
+
+ [MessageChannel interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [MessagePort interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createPattern(CanvasImageSource, DOMString)]
+ expected: FAIL
+
+ [ImageBitmap interface: existence and properties of interface object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation transform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation rotate(unrestricted double)]
+ expected: FAIL
+
+ [SharedWorker interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [TextMetrics interface: attribute alphabeticBaseline]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf\]\] method of interface prototype object - setting to a new value via Object.setPrototypeOf should throw a TypeError]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation setTransform(DOMMatrix2DInit)]
+ expected: FAIL
+
+ [ImageBitmap interface: operation close()]
+ expected: FAIL
+
+ [TextMetrics interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation fill(Path2D, CanvasFillRule)]
+ expected: FAIL
+
+ [BroadcastChannel interface: attribute onmessage]
+ expected: FAIL
+
+ [DOMStringList interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [Path2D interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createRadialGradient(double, double, double, double, double, double)]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: attribute onlanguagechange]
+ expected: FAIL
+
+ [OffscreenCanvas interface object name]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: self must inherit property "onunhandledrejection" with the proper type]
+ expected: FAIL
+
+ [DOMStringList interface: attribute length]
+ expected: FAIL
+
+ [Path2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)]
+ expected: FAIL
+
+ [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "ports" with the proper type]
+ expected: FAIL
+
+ [TextMetrics interface: attribute fontBoundingBoxDescent]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: attribute ononline]
+ expected: FAIL
+
+ [DOMStringList interface object name]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute textBaseline]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation isPointInStroke(Path2D, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [BroadcastChannel interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute textAlign]
+ expected: FAIL
+
+ [OffscreenCanvas interface: operation transferToImageBitmap()]
+ expected: FAIL
+
+ [WorkerNavigator interface: attribute hardwareConcurrency]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [BroadcastChannel interface: attribute onmessageerror]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation closePath()]
+ expected: FAIL
+
+ [Path2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation setLineDash([object Object\])]
+ expected: FAIL
+
+ [ImageBitmap interface: attribute width]
+ expected: FAIL
+
+ [BroadcastChannel interface: operation postMessage(any)]
+ expected: FAIL
+
+ [MessageChannel interface object name]
+ expected: FAIL
+
+ [SharedWorker interface: attribute port]
+ expected: FAIL
+
+ [MessagePort interface: operation postMessage(any, [object Object\])]
+ expected: FAIL
+
+ [WorkerNavigator interface: self.navigator must not have property "taintEnabled"]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)]
+ expected: FAIL
+
+ [TextMetrics interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SharedWorker interface: attribute onerror]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: self must inherit property "requestAnimationFrame(FrameRequestCallback)" with the proper type]
+ expected: FAIL
+
+ [SharedWorker interface object name]
+ expected: FAIL
+
+ [MessagePort interface object name]
+ expected: FAIL
+
+ [OffscreenCanvas interface: operation getContext(OffscreenRenderingContextId, any)]
+ expected: FAIL
+
+ [Path2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute fillStyle]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute canvas]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)]
+ expected: FAIL
+
+ [BroadcastChannel interface object name]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation putImageData(ImageData, long, long)]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface object length]
+ expected: FAIL
+
+ [Path2D interface: operation addPath(Path2D, DOMMatrix2DInit)]
+ expected: FAIL
+
+ [SharedWorker interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: operation cancelAnimationFrame(unsigned long)]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: self must inherit property "createImageBitmap(ImageBitmapSource, long, long, long, long, ImageBitmapOptions)" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation save()]
+ expected: FAIL
+
+ [DedicatedWorkerGlobalScope interface: operation requestAnimationFrame(FrameRequestCallback)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation clip(Path2D, CanvasFillRule)]
+ expected: FAIL
+
+ [MessagePort interface: operation postMessage(any, PostMessageOptions)]
+ expected: FAIL
+
+ [MessagePort interface: operation start()]
+ expected: FAIL
+
+ [MessagePort interface: operation close()]
+ expected: FAIL
+
+ [WebSocket interface: new WebSocket("ws://foo") must inherit property "extensions" with the proper type]
+ expected: FAIL
+
+ [OffscreenCanvas interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [ImageBitmap interface: attribute height]
+ expected: FAIL
+
+ [WorkerNavigator interface: self.navigator must inherit property "languages" with the proper type]
+ expected: FAIL
+
+ [ImageBitmap interface object length]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvas interface: operation convertToBlob(ImageEncodeOptions)]
+ expected: FAIL
+
+ [BroadcastChannel interface object length]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation clip(CanvasFillRule)]
+ expected: FAIL
+
+ [TextMetrics interface object name]
+ expected: FAIL
+
+ [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "source" with the proper type]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/rendering/non-replaced-elements/form-controls/resets.html.ini b/tests/wpt/metadata/html/rendering/non-replaced-elements/form-controls/resets.html.ini
new file mode 100644
index 00000000000..66eb9017221
--- /dev/null
+++ b/tests/wpt/metadata/html/rendering/non-replaced-elements/form-controls/resets.html.ini
@@ -0,0 +1,4 @@
+[resets.html]
+ [default style resets]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/rendering/non-replaced-elements/form-controls/text-transform.html.ini b/tests/wpt/metadata/html/rendering/non-replaced-elements/form-controls/text-transform.html.ini
new file mode 100644
index 00000000000..b36256b8ec7
--- /dev/null
+++ b/tests/wpt/metadata/html/rendering/non-replaced-elements/form-controls/text-transform.html.ini
@@ -0,0 +1,2 @@
+[text-transform.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
index b3bd9f4c289..5f60c78e73c 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
@@ -1,6 +1,6 @@
[iframe_sandbox_popups_escaping-3.html]
type: testharness
- expected: CRASH
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini
index 127392316de..702af61a3c4 100644
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-submission-algorithm.html.ini
@@ -1,7 +1,11 @@
[form-submission-algorithm.html]
+ expected: TIMEOUT
[If form's firing submission events is true, then return; 'submit' event]
expected: FAIL
[If form's firing submission events is true, then return; 'invalid' event]
expected: FAIL
+ [Cannot navigate (after constructing the entry list)]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
new file mode 100644
index 00000000000..a9677391662
--- /dev/null
+++ b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
@@ -0,0 +1,4 @@
+[DOMContentLoaded-defer.html]
+ [The end: DOMContentLoaded and defer scripts]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/permissions/idlharness.any.js.ini b/tests/wpt/metadata/permissions/idlharness.any.js.ini
new file mode 100644
index 00000000000..ec3d06ab7a6
--- /dev/null
+++ b/tests/wpt/metadata/permissions/idlharness.any.js.ini
@@ -0,0 +1,10 @@
+[idlharness.any.worker.html]
+ expected: CRASH
+
+[idlharness.any.html]
+ [Permissions interface: operation query(object)]
+ expected: FAIL
+
+ [Permissions interface: calling query(object) on navigator.permissions with too few arguments must throw TypeError]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini b/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini
index aa36a14c6a6..494f0d4a752 100644
--- a/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini
+++ b/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini
@@ -20,6 +20,3 @@
[domainLookupStart should be 0 in cross-origin request.]
expected: FAIL
- [responseEnd should be greater than 0 in cross-origin request.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
index 4a15eb13c69..8043387d873 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
@@ -35,3 +35,9 @@
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t1.9724091887474060e-1\t9.5236867666244507e-1\t7.5512775778770447e-1\t7.9289436569253091e-1\t3.8985999999999999e-3\n\t[60\]\t-2.2450675070285797e-1\t-5.8084785938262939e-1\t3.5634110867977142e-1\t6.1348441407448528e-1\t3.8985999999999999e-3\n\t[90\]\t-3.7808802723884583e-1\t-5.9811043739318848e-1\t2.2002241015434265e-1\t3.6786251568070089e-1\t3.8985999999999999e-3\n\t[120\]\t7.6881676912307739e-1\t9.4563448429107666e-1\t1.7681771516799927e-1\t1.8698315057805445e-1\t3.8985999999999999e-3\n\t[151\]\t5.4644601186737418e-4\t-4.1306272149085999e-2\t4.1852718160953373e-2\t1.0132291292202573e+0\t3.8985999999999999e-3\n\t...and 1419 more errors.\n\tMax AbsError of 9.0185146037803418e+17 at index of 20238.\n\t[20238\]\t-9.0185146037803418e+17\t-4.7574958205223083e-1\t9.0185146037803418e+17\t1.8956432005420513e+18\t3.8985999999999999e-3\n\tMax RelError of 1.8956432005420513e+18 at index of 20238.\n\t[20238\]\t-9.0185146037803418e+17\t-4.7574958205223083e-1\t9.0185146037803418e+17\t1.8956432005420513e+18\t3.8985999999999999e-3\n]
expected: FAIL
+ [X SNR (-186.6715132179901 dB) is not greater than or equal to 65.737. Got -186.6715132179901.]
+ expected: FAIL
+
+ [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t1.9724091887474060e-1\t9.5236867666244507e-1\t7.5512775778770447e-1\t7.9289436569253091e-1\t3.8985999999999999e-3\n\t[60\]\t-2.2450675070285797e-1\t-5.8084785938262939e-1\t3.5634110867977142e-1\t6.1348441407448528e-1\t3.8985999999999999e-3\n\t[90\]\t-3.7808802723884583e-1\t-5.9811043739318848e-1\t2.2002241015434265e-1\t3.6786251568070089e-1\t3.8985999999999999e-3\n\t[120\]\t7.6881676912307739e-1\t9.4563448429107666e-1\t1.7681771516799927e-1\t1.8698315057805445e-1\t3.8985999999999999e-3\n\t[151\]\t5.4644601186737418e-4\t-4.1306272149085999e-2\t4.1852718160953373e-2\t1.0132291292202573e+0\t3.8985999999999999e-3\n\t...and 1419 more errors.\n\tMax AbsError of 3.1438349926352423e+11 at index of 20238.\n\t[20238\]\t-3.1438349926400000e+11\t-4.7574958205223083e-1\t3.1438349926352423e+11\t6.6081718434175989e+11\t3.8985999999999999e-3\n\tMax RelError of 6.6081718434175989e+11 at index of 20238.\n\t[20238\]\t-3.1438349926400000e+11\t-4.7574958205223083e-1\t3.1438349926352423e+11\t6.6081718434175989e+11\t3.8985999999999999e-3\n]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
deleted file mode 100644
index 80f9a4f15b8..00000000000
--- a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[Worker-constructor.html]
- expected: ERROR
diff --git a/tests/wpt/metadata/xhr/xmlhttprequest-sync-default-feature-policy.sub.html.ini b/tests/wpt/metadata/xhr/xmlhttprequest-sync-default-feature-policy.sub.html.ini
index e76c77300bc..66a80544640 100644
--- a/tests/wpt/metadata/xhr/xmlhttprequest-sync-default-feature-policy.sub.html.ini
+++ b/tests/wpt/metadata/xhr/xmlhttprequest-sync-default-feature-policy.sub.html.ini
@@ -2,3 +2,6 @@
[Feature policy "sync-xhr" can be disabled in cross-origin iframes using "allow" attribute.]
expected: FAIL
+ [Feature policy "sync-xhr" can be disabled in same-origin iframes using "allow" attribute.]
+ expected: FAIL
+
diff --git a/tests/wpt/web-platform-tests/BackgroundSync/interfaces.https.any.js b/tests/wpt/web-platform-tests/BackgroundSync/idlharness.https.any.js
index 989139e9904..989139e9904 100644
--- a/tests/wpt/web-platform-tests/BackgroundSync/interfaces.https.any.js
+++ b/tests/wpt/web-platform-tests/BackgroundSync/idlharness.https.any.js
diff --git a/tests/wpt/web-platform-tests/content-security-policy/frame-ancestors/support/frame-ancestors-test.sub.js b/tests/wpt/web-platform-tests/content-security-policy/frame-ancestors/support/frame-ancestors-test.sub.js
index dde04f0627e..79b761a05ce 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/frame-ancestors/support/frame-ancestors-test.sub.js
+++ b/tests/wpt/web-platform-tests/content-security-policy/frame-ancestors/support/frame-ancestors-test.sub.js
@@ -26,7 +26,7 @@ window.addEventListener("message", function (e) {
window.parent.postMessage(e.data, "*");
else
if (e.data.type === 'test_result')
- endTest(e.data.failed, "Inner IFrame msg: " + e.data.msg);
+ endTest(e.data.failed, "Inner IFrame msg: " + e.data.message);
});
function injectNestedIframe(policy, parent, child, expectation, isSandboxed) {
@@ -67,6 +67,7 @@ function iframeLoaded(expectBlock) {
var failed = true;
var message = "";
try {
+ ev.target.contentWindow.location.href;
if (expectBlock) {
message = "The IFrame should have been blocked (or cross-origin). It wasn't.";
failed = true;
diff --git a/tests/wpt/web-platform-tests/content-security-policy/inside-worker/support/connect-src-self.sub.js b/tests/wpt/web-platform-tests/content-security-policy/inside-worker/support/connect-src-self.sub.js
index 8c533abdda3..327ffb74c20 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/inside-worker/support/connect-src-self.sub.js
+++ b/tests/wpt/web-platform-tests/content-security-policy/inside-worker/support/connect-src-self.sub.js
@@ -2,40 +2,42 @@ importScripts("{{location[server]}}/resources/testharness.js");
importScripts("{{location[server]}}/content-security-policy/support/testharness-helper.js");
// Same-origin
-async_test(t => {
+promise_test(t => {
var url = "{{location[server]}}/common/text-plain.txt?same-origin-fetch";
assert_no_csp_event_for_url(t, url);
- fetch(url)
- .then(t.step_func_done(r => assert_equals(r.status, 200)));
+ return fetch(url)
+ .then(t.step_func(r => assert_equals(r.status, 200)));
}, "Same-origin 'fetch()' in " + self.location.protocol + self.location.search);
-async_test(t => {
+promise_test(t => {
var url = "{{location[server]}}/common/text-plain.txt?same-origin-xhr";
assert_no_csp_event_for_url(t, url);
- var xhr = new XMLHttpRequest();
- xhr.open("GET", url);
- xhr.onload = t.step_func_done();
- xhr.onerror = t.unreached_func();
- xhr.send();
+ return new Promise((resolve, reject) => {
+ var xhr = new XMLHttpRequest();
+ xhr.open("GET", url);
+ xhr.onload = t.step_func(resolve);
+ xhr.onerror = t.step_func(_ => reject("xhr.open should success."));
+ xhr.send();
+ });
}, "Same-origin XHR in " + self.location.protocol + self.location.search);
// Cross-origin
-async_test(t => {
+promise_test(t => {
var url = "http://{{domains[www]}}:{{ports[http][1]}}/common/text-plain.txt?cross-origin-fetch";
- Promise.all([
+ return Promise.all([
// TODO(mkwst): A 'securitypolicyviolation' event should fire.
fetch(url)
.catch(t.step_func(e => assert_true(e instanceof TypeError)))
- ]).then(t.step_func_done());
+ ]);
}, "Cross-origin 'fetch()' in " + self.location.protocol + self.location.search);
-async_test(t => {
+promise_test(t => {
var url = "http://{{domains[www]}}:{{ports[http][1]}}/common/text-plain.txt?cross-origin-xhr";
- Promise.all([
+ return Promise.all([
// TODO(mkwst): A 'securitypolicyviolation' event should fire.
new Promise((resolve, reject) => {
var xhr = new XMLHttpRequest();
@@ -44,16 +46,15 @@ async_test(t => {
xhr.onerror = t.step_func(resolve);
xhr.send();
})
- ]).then(t.step_func_done());
+ ]);
}, "Cross-origin XHR in " + self.location.protocol + self.location.search);
// Same-origin redirecting to cross-origin
-async_test(t => {
+promise_test(t => {
var url = "{{location[server]}}/common/redirect-opt-in.py?status=307&location=http://{{domains[www]}}:{{ports[http][1]}}/common/text-plain.txt?cross-origin-fetch";
// TODO(mkwst): A 'securitypolicyviolation' event should fire.
- fetch(url)
- .catch(t.step_func_done(e => assert_true(e instanceof TypeError)))
+ return promise_rejects(t, new TypeError, fetch(url));
}, "Same-origin => cross-origin 'fetch()' in " + self.location.protocol + self.location.search);
done();
diff --git a/tests/wpt/web-platform-tests/css/CSS2/linebox/scrollable-overflow.tentative.html b/tests/wpt/web-platform-tests/css/CSS2/linebox/scrollable-overflow.tentative.html
new file mode 100644
index 00000000000..8835455fa99
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/linebox/scrollable-overflow.tentative.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=996847">
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<meta name=assert content="This test checks that bottom half-leading of a line-box doesn't contribute to the scrollable overflow.">
+<p>Test passes if there is a filled green square.</p>
+<div style="overflow-y: auto; width: 100px; height: 100px;">
+ <div style="line-height: 120px; height: 100px; background: green;">
+ <span style="display: inline-block; width: 100px; height: 50px;"></span>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-color-interpolation.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-color-interpolation.html
new file mode 100644
index 00000000000..3e7843b8a07
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-color-interpolation.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>border-color interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#border-color">
+<meta name="assert" content="border-color supports animation by computed value">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ border-color: white;
+}
+.target {
+ width: 50px;
+ height: 50px;
+ background-color: blue;
+ display: inline-block;
+ border: 12px solid;
+ border-color: darkblue;
+}
+.expected {
+ background-color: green;
+ margin-right: 2px;
+}
+</style>
+
+<body></body>
+
+<script>
+// As per https://bugzilla.mozilla.org/show_bug.cgi?id=137688, Firefox does not
+// support getComputedStyle for shorthands. As such, we have one test for this
+// which explicitly checks the shorthand variant, but most tests use one of the
+// longhands instead.
+function compareNotEmpty(actual, expected) {
+ assert_equals(actual, expected);
+ assert_not_equals(actual, '');
+}
+
+test_interpolation({
+ property: 'border-color',
+ from: 'rgb(20, 30, 40) rgb(40, 50, 60)',
+ to: 'rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)',
+ comparisonFunction: compareNotEmpty,
+}, [
+ {at: -0.3, expect: 'rgb(23, 33, 43) rgb(40, 50, 60) rgb(17, 27, 37) rgb(37, 47, 57)'},
+ {at: 0, expect: 'rgb(20, 30, 40) rgb(40, 50, 60)'},
+ {at: 0.3, expect: 'rgb(17, 27, 37) rgb(40, 50, 60) rgb(23, 33, 43) rgb(43, 53, 63)'},
+ {at: 0.6, expect: 'rgb(14, 24, 34) rgb(40, 50, 60) rgb(26, 36, 46) rgb(46, 56, 66)'},
+ {at: 1, expect: 'rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)'},
+ {at: 1.5, expect: 'rgb(5, 15, 25) rgb(40, 50, 60) rgb(35, 45, 55) rgb(55, 65, 75)'},
+]);
+
+test_interpolation({
+ property: 'border-top-color',
+ from: neutralKeyframe,
+ to: 'orange',
+}, [
+ {at: -0.3, expect: 'rgb(0, 0, 181)'},
+ {at: 0, expect: 'rgb(0, 0, 139)'},
+ {at: 0.3, expect: 'rgb(77, 50, 97)'},
+ {at: 0.6, expect: 'rgb(153, 99, 56)'},
+ {at: 1, expect: 'rgb(255, 165, 0)'},
+ {at: 1.5, expect: 'rgb(255, 248, 0)'},
+]);
+
+test_interpolation({
+ property: 'border-top-color',
+ from: 'initial',
+ to: 'orange',
+}, [
+ {at: -0.3, expect: 'rgb(0, 0, 0)'},
+ {at: 0, expect: 'rgb(0, 0, 0)'},
+ {at: 0.3, expect: 'rgb(77, 50, 0)'},
+ {at: 0.6, expect: 'rgb(153, 99, 0)'},
+ {at: 1, expect: 'rgb(255, 165, 0)'},
+ {at: 1.5, expect: 'rgb(255, 248, 0)'},
+]);
+
+test_interpolation({
+ property: 'border-top-color',
+ from: 'inherit',
+ to: 'orange',
+}, [
+ {at: -0.3, expect: 'rgb(255, 255, 255)'},
+ {at: 0, expect: 'rgb(255, 255, 255)'},
+ {at: 0.3, expect: 'rgb(255, 228, 179)'},
+ {at: 0.6, expect: 'rgb(255, 201, 102)'},
+ {at: 1, expect: 'rgb(255, 165, 0)'},
+ {at: 1.5, expect: 'rgb(255, 120, 0)'},
+]);
+
+test_interpolation({
+ property: 'border-top-color',
+ from: 'unset',
+ to: 'orange',
+}, [
+ {at: -0.3, expect: 'rgb(0, 0, 0)'},
+ {at: 0, expect: 'rgb(0, 0, 0)'},
+ {at: 0.3, expect: 'rgb(77, 50, 0)'},
+ {at: 0.6, expect: 'rgb(153, 99, 0)'},
+ {at: 1, expect: 'rgb(255, 165, 0)'},
+ {at: 1.5, expect: 'rgb(255, 248, 0)'},
+]);
+
+test_interpolation({
+ property: 'border-top-color',
+ from: 'white',
+ to: 'orange'
+}, [
+ {at: -0.3, expect: 'white'},
+ {at: 0, expect: 'white'},
+ {at: 0.3, expect: 'rgb(255, 228, 179)'},
+ {at: 0.6, expect: 'rgb(255, 201, 102)'},
+ {at: 1, expect: 'orange'},
+ {at: 1.5, expect: 'rgb(255, 120, 0)'},
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-outset-interpolation.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-outset-interpolation.html
new file mode 100644
index 00000000000..d4726e87d11
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-outset-interpolation.html
@@ -0,0 +1,125 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>border-image-outset interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#border-image-outset">
+<meta name="assert" content="border-image-outset supports animation by computed value">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ border-image-outset: 10px;
+}
+.target {
+ width: 50px;
+ height: 50px;
+ background-color: black;
+ display: inline-block;
+ border: 25px;
+ margin-right: 50px;
+ border-image-slice: 30%;
+ background-clip: content-box;
+ border-image-source: linear-gradient(45deg, pink, blue, white, black, green);
+ border-image-outset: 1px;
+}
+.expected {
+ background-color: green;
+}
+</style>
+
+<body></body>
+
+<script>
+test_interpolation({
+ property: 'border-image-outset',
+ from: neutralKeyframe,
+ to: '2px',
+}, [
+ {at: -0.3, expect: '0.7px'},
+ {at: 0, expect: '1px'},
+ {at: 0.3, expect: '1.3px'},
+ {at: 0.6, expect: '1.6px'},
+ {at: 1, expect: '2px'},
+ {at: 1.5, expect: '2.5px'},
+]);
+
+test_interpolation({
+ property: 'border-image-outset',
+ from: 'initial',
+ to: '2px',
+}, [
+ {at: -0.3, expect: '0px'}, // Non-negative
+ {at: 0, expect: '0px'},
+ {at: 0.3, expect: '0.6px'},
+ {at: 0.6, expect: '1.2px'},
+ {at: 1, expect: '2px'},
+ {at: 1.5, expect: '3px'},
+]);
+
+test_interpolation({
+ property: 'border-image-outset',
+ from: 'inherit',
+ to: '2px',
+}, [
+ {at: -0.3, expect: '12.4px'},
+ {at: 0, expect: '10px'},
+ {at: 0.3, expect: '7.6px'},
+ {at: 0.6, expect: '5.2px'},
+ {at: 1, expect: '2px'},
+ {at: 1.5, expect: '0px'},
+]);
+
+test_interpolation({
+ property: 'border-image-outset',
+ from: 'unset',
+ to: '2px',
+}, [
+ {at: -0.3, expect: '0px'}, // Non-negative
+ {at: 0, expect: '0px'},
+ {at: 0.3, expect: '0.6px'},
+ {at: 0.6, expect: '1.2px'},
+ {at: 1, expect: '2px'},
+ {at: 1.5, expect: '3px'},
+]);
+
+test_interpolation({
+ property: 'border-image-outset',
+ from: '0px',
+ to: '5px',
+}, [
+ {at: -0.3, expect: '0px'}, // Non-negative
+ {at: 0, expect: '0px'},
+ {at: 0.3, expect: '1.5px'},
+ {at: 0.6, expect: '3px'},
+ {at: 1, expect: '5px'},
+ {at: 1.5, expect: '7.5px'},
+]);
+
+test_interpolation({
+ property: 'border-image-outset',
+ from: '0',
+ to: '1',
+}, [
+ {at: -0.3, expect: '0'}, // Non-negative
+ {at: 0, expect: '0'},
+ {at: 0.3, expect: '0.3'},
+ {at: 0.6, expect: '0.6'},
+ {at: 1, expect: '1'},
+ {at: 1.5, expect: '1.5'},
+]);
+
+test_interpolation({
+ property: 'border-image-outset',
+ from: '1 2 3px 4px',
+ to: '101 102 103px 104px',
+}, [
+ {at: -0.3, expect: '0 0 0px 0px'}, // Non-negative
+ {at: 0, expect: '1 2 3px 4px'},
+ {at: 0.3, expect: '31 32 33px 34px'},
+ {at: 0.6, expect: '61 62 63px 64px'},
+ {at: 1, expect: '101 102 103px 104px'},
+ {at: 1.5, expect: '151 152 153px 154px'},
+]);
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-slice-interpolation.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-slice-interpolation.html
new file mode 100644
index 00000000000..60301e755ba
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-slice-interpolation.html
@@ -0,0 +1,175 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>border-image-slice interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#border-image-slice">
+<meta name="assert" content="border-image-slice supports animation by computed value">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ border-image-slice: 50%;
+}
+.target {
+ width: 50px;
+ height: 50px;
+ background-color: black;
+ display: inline-block;
+ border: 25px;
+ border-image-source: linear-gradient(45deg, red, blue, green);
+ border-image-slice: 20%;
+}
+.expected {
+ background-color: green;
+ margin-right: 2px;
+}
+</style>
+
+<body></body>
+
+<script>
+test_interpolation({
+ property: 'border-image-slice',
+ from: neutralKeyframe,
+ to: '10%',
+}, [
+ {at: -0.3, expect: '23%'},
+ {at: 0, expect: '20%'},
+ {at: 0.3, expect: '17%'},
+ {at: 0.5, expect: '15%'},
+ {at: 0.6, expect: '14%'},
+ {at: 1, expect: '10%'},
+ {at: 1.5, expect: '5%'},
+]);
+
+test_interpolation({
+ property: 'border-image-slice',
+ from: 'initial',
+ to: '10%',
+}, [
+ {at: -0.3, expect: '127%'},
+ {at: 0, expect: '100%'},
+ {at: 0.3, expect: '73%'},
+ {at: 0.5, expect: '55%'},
+ {at: 0.6, expect: '46%'},
+ {at: 1, expect: '10%'},
+ {at: 1.5, expect: '0%'},
+]);
+
+test_interpolation({
+ property: 'border-image-slice',
+ from: 'inherit',
+ to: '10%',
+}, [
+ {at: -0.3, expect: '62%'},
+ {at: 0, expect: '50%'},
+ {at: 0.3, expect: '38%'},
+ {at: 0.5, expect: '30%'},
+ {at: 0.6, expect: '26%'},
+ {at: 1, expect: '10%'},
+ {at: 1.5, expect: '0%'},
+]);
+
+test_interpolation({
+ property: 'border-image-slice',
+ from: 'unset',
+ to: '10%',
+}, [
+ {at: -0.3, expect: '127%'},
+ {at: 0, expect: '100%'},
+ {at: 0.3, expect: '73%'},
+ {at: 0.5, expect: '55%'},
+ {at: 0.6, expect: '46%'},
+ {at: 1, expect: '10%'},
+ {at: 1.5, expect: '0%'},
+]);
+
+test_interpolation({
+ property: 'border-image-slice',
+ from: '0%',
+ to: '50%',
+}, [
+ {at: -0.3, expect: '0%'}, // CSS border-image-slice can't be negative.
+ {at: 0, expect: '0%'},
+ {at: 0.3, expect: '15%'},
+ {at: 0.5, expect: '25%'},
+ {at: 0.6, expect: '30%'},
+ {at: 1, expect: '50%'},
+ {at: 1.5, expect: '75%'},
+]);
+
+test_interpolation({
+ property: 'border-image-slice',
+ from: '0% 10% 20% 30%',
+ to: '40% 50% 60% 70%',
+}, [
+ {at: -0.5, expect: '0% 0% 0% 10%'},
+ {at: 0, expect: '0% 10% 20% 30%'},
+ {at: 0.3, expect: '12% 22% 32% 42%'},
+ {at: 0.5, expect: '20% 30% 40% 50%'},
+ {at: 0.6, expect: '24% 34% 44% 54%'},
+ {at: 1, expect: '40% 50% 60% 70%'},
+ {at: 1.5, expect: '60% 70% 80% 90%'},
+]);
+
+test_interpolation({
+ property: 'border-image-slice',
+ from: '0 10 20 30 fill',
+ to: '40 50 60 70 fill',
+}, [
+ {at: -0.5, expect: '0 0 0 10 fill'}, // CSS border-image-slice can't be negative.
+ {at: 0, expect: '0 10 20 30 fill'},
+ {at: 0.3, expect: '12 22 32 42 fill'},
+ {at: 0.5, expect: '20 30 40 50 fill'},
+ {at: 0.6, expect: '24 34 44 54 fill'},
+ {at: 1, expect: '40 50 60 70 fill'},
+ {at: 1.5, expect: '60 70 80 90 fill'},
+]);
+
+test_interpolation({
+ property: 'border-image-slice',
+ from: '0% 10 20% 30 fill',
+ to: '40% 50 60% 70 fill',
+}, [
+ {at: -0.5, expect: '0% 0 0% 10 fill'}, // CSS border-image-slice can't be negative.
+ {at: 0, expect: '0% 10 20% 30 fill'},
+ {at: 0.3, expect: '12% 22 32% 42 fill'},
+ {at: 0.5, expect: '20% 30 40% 50 fill'},
+ {at: 0.6, expect: '24% 34 44% 54 fill'},
+ {at: 1, expect: '40% 50 60% 70 fill'},
+ {at: 1.5, expect: '60% 70 80% 90 fill'},
+]);
+
+test_no_interpolation({
+ property: 'border-image-slice',
+ from: '0% fill',
+ to: '50%',
+});
+
+test_no_interpolation({
+ property: 'border-image-slice',
+ from: '50%',
+ to: '100',
+});
+
+test_no_interpolation({
+ property: 'border-image-slice',
+ from: '50% fill',
+ to: '100 fill',
+});
+
+test_no_interpolation({
+ property: 'border-image-slice',
+ from: '0% 10 20% 30 fill',
+ to: '40% 50 60% 70',
+});
+
+test_no_interpolation({
+ property: 'border-image-slice',
+ from: '0% 10 20 30 fill',
+ to: '40 50 60% 70',
+});
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-source-interpolation.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-source-interpolation.html
new file mode 100644
index 00000000000..60dcfceddc7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-source-interpolation.html
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>border-image-source interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#border-image-source">
+<meta name="assert" content="border-image-source has discrete animation">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ border-image-source: url(../support/green.png);
+}
+.target {
+ width: 50px;
+ height: 50px;
+ background-color: black;
+ display: inline-block;
+ border: 5px solid aqua;
+ border-image-source: url(../support/blue_color.png);
+ border-image-slice: 10%;
+}
+.expected {
+ background-color: green;
+ margin-right: 2px;
+}
+</style>
+
+<body></body>
+
+<script>
+// initial
+test_no_interpolation({
+ property: 'border-image-source',
+ from: 'initial',
+ to: 'url(../support/orange_color.png)',
+});
+
+// inherit
+test_no_interpolation({
+ property: 'border-image-source',
+ from: 'inherit',
+ to: 'url(../support/orange_color.png)',
+});
+
+// unset
+test_no_interpolation({
+ property: 'border-image-source',
+ from: 'unset',
+ to: 'url(../support/orange_color.png)',
+});
+
+// None to image
+test_no_interpolation({
+ property: 'border-image-source',
+ from: 'none',
+ to: 'url(../support/orange_color.png)',
+});
+
+// Image to image
+test_no_interpolation({
+ property: 'border-image-source',
+ from: 'url(../support/aqua_color.png)',
+ to: 'url(../support/orange_color.png)',
+});
+
+// Image to gradient
+test_no_interpolation({
+ property: 'border-image-source',
+ from: 'url(../support/aqua_color.png)',
+ to: 'linear-gradient(45deg, blue, orange)',
+});
+
+// Gradient to gradient
+test_no_interpolation({
+ property: 'border-image-source',
+ from: 'linear-gradient(-45deg, red, yellow)',
+ to: 'linear-gradient(45deg, blue, orange)',
+});
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-width-interpolation.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-width-interpolation.html
new file mode 100644
index 00000000000..ea138201b15
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-width-interpolation.html
@@ -0,0 +1,192 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>border-image-width interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#border-image-width">
+<meta name="assert" content="border-image-width supports animation by computed value">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ border-image-width: 100px;
+}
+.target {
+ width: 80px;
+ height: 80px;
+ background-color: black;
+ display: inline-block;
+ border: 10px;
+ border-image-source: linear-gradient(45deg, red, blue, green);
+ border-image-width: 10px;
+}
+.expected {
+ background-color: green;
+ margin-right: 2px;
+}
+</style>
+
+<body></body>
+
+<script>
+test_interpolation({
+ property: 'border-image-width',
+ from: neutralKeyframe,
+ to: '20px',
+}, [
+ {at: -0.3, expect: '7px'},
+ {at: 0, expect: '10px'},
+ {at: 0.3, expect: '13px'},
+ {at: 0.6, expect: '16px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '25px'},
+ {at: 5, expect: '60px'},
+ {at: 10, expect: '110px'},
+]);
+test_no_interpolation({
+ property: 'border-image-width',
+ from: 'initial',
+ to: '20px',
+});
+test_interpolation({
+ property: 'border-image-width',
+ from: 'inherit',
+ to: '20px',
+}, [
+ {at: -0.3, expect: '124px'},
+ {at: 0, expect: '100px'},
+ {at: 0.3, expect: '76px'},
+ {at: 0.6, expect: '52px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '0px'},
+ {at: 5, expect: '0px'},
+ {at: 10, expect: '0px'},
+]);
+test_no_interpolation({
+ property: 'border-image-width',
+ from: 'unset',
+ to: '20px',
+});
+test_interpolation({
+ property: 'border-image-width',
+ from: '0px',
+ to: '20px'
+}, [
+ {at: -0.3, expect: '0px'}, // CSS border-image-width can't be negative.
+ {at: 0, expect: '0px'},
+ {at: 0.3, expect: '6px'},
+ {at: 0.6, expect: '12px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '30px'},
+ {at: 5, expect: '100px'},
+ {at: 10, expect: '200px'}
+]);
+test_interpolation({
+ property: 'border-image-width',
+ from: '0%',
+ to: '20%'
+}, [
+ {at: -0.3, expect: '0%'}, // CSS border-image-width can't be negative.
+ {at: 0, expect: '0%'},
+ {at: 0.3, expect: '6%'},
+ {at: 0.6, expect: '12%'},
+ {at: 1, expect: '20%'},
+ {at: 1.5, expect: '30%'},
+ {at: 5, expect: '100%'},
+ {at: 10, expect: '200%'}
+]);
+test_interpolation({
+ property: 'border-image-width',
+ from: '0',
+ to: '20'
+}, [
+ {at: -0.3, expect: '0'}, // CSS border-image-width can't be negative.
+ {at: 0, expect: '0'},
+ {at: 0.3, expect: '6'},
+ {at: 0.6, expect: '12'},
+ {at: 1, expect: '20'},
+ {at: 1.5, expect: '30'},
+ {at: 5, expect: '100'},
+ {at: 10, expect: '200'}
+]);
+test_interpolation({
+ property: 'border-image-width',
+ from: '10px 20% 30 40px',
+ to: '80px 70% 60 50px'
+}, [
+ {at: -0.3, expect: '0px 5% 21 37px'}, // CSS border-image-width can't be negative.
+ {at: 0, expect: '10px 20% 30 40px'},
+ {at: 0.3, expect: '31px 35% 39 43px'},
+ {at: 0.6, expect: '52px 50% 48 46px'},
+ {at: 1, expect: '80px 70% 60 50px'},
+ {at: 1.5, expect: '115px 95% 75 55px'},
+ {at: 5, expect: '360px 270% 180 90px'},
+ {at: 10, expect: '710px 520% 330 140px'}
+]);
+test_interpolation({
+ property: 'border-image-width',
+ from: '10%',
+ to: '20px'
+}, [
+ // Percentages are relative to the size of the border image area, which is 120px.
+ {at: -0.3, expect: 'calc(13% + -6px)'}, // Should be parsed as 16px - 6px = 10px
+ {at: 0, expect: '10%'}, // Should be parsed as 12px
+ {at: 0.3, expect: 'calc(7% + 6px)'}, // Should be parsed as 8px + 6px = 14px
+ {at: 0.6, expect: 'calc(4% + 12px)'}, // Should be parsed as 5px + 12px = 17px
+ {at: 1, expect: 'calc(0% + 20px)'},
+ {at: 1.5, expect: 'calc(-5% + 30px)'}, // Should be parsed as -6px + 30px = 24px
+]);
+test_interpolation({
+ property: 'border-image-width',
+ from: '10px',
+ to: '20%'
+}, [
+ // Percentages are relative to the size of the border image area, which is 120px.
+ {at: -0.3, expect: 'calc(13px + -6%)'}, // Should be parsed as 13px - 7px = 6px
+ {at: 0, expect: 'calc(0% + 10px)'},
+ {at: 0.3, expect: 'calc(7px + 6%)'}, // Should be parsed as 7px + 7px = 14px
+ {at: 0.6, expect: 'calc(4px + 12%)'}, // Should be parsed as 4px + 14px = 18px
+ {at: 1, expect: '20%'}, // Should be parsed as 24px
+ {at: 1.5, expect: 'calc(-5px + 30%)'}, // Should be parsed as -5px + 36px = 31px
+]);
+
+test_interpolation({
+ property: 'border-image-width',
+ from: '10px auto auto 20',
+ to: '110px auto auto 120'
+}, [
+ {at: -0.3, expect: ' 0px auto auto 0'},
+ {at: 0, expect: ' 10px auto auto 20'},
+ {at: 0.3, expect: ' 40px auto auto 50'},
+ {at: 0.6, expect: ' 70px auto auto 80'},
+ {at: 1, expect: '110px auto auto 120'},
+ {at: 1.5, expect: '160px auto auto 170'},
+]);
+
+test_no_interpolation({
+ property: 'border-image-width',
+ from: '10px auto auto 20',
+ to: '110px auto 120 auto'
+});
+test_no_interpolation({
+ property: 'border-image-width',
+ from: '10px',
+ to: '20'
+});
+test_no_interpolation({
+ property: 'border-image-width',
+ from: '10',
+ to: '20px'
+});
+test_no_interpolation({
+ property: 'border-image-width',
+ from: '10%',
+ to: '20'
+});
+test_no_interpolation({
+ property: 'border-image-width',
+ from: '10',
+ to: '20%'
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-radius-interpolation.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-radius-interpolation.html
new file mode 100644
index 00000000000..195469e8316
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-radius-interpolation.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>border-radius interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#border-radius">
+<meta name="assert" content="border-radius supports animation by computed value">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ border-radius: 30px;
+}
+.target {
+ width: 80px;
+ height: 80px;
+ display: inline-block;
+ background-color: black;
+ margin-right: 5px;
+ border-radius: 10px;
+}
+.expected {
+ background-color: green;
+ margin-right: 15px;
+}
+</style>
+
+<body></body>
+
+<script>
+// As per https://bugzilla.mozilla.org/show_bug.cgi?id=137688, Firefox does not
+// support getComputedStyle for shorthands. As such, we have one test for this
+// which explicitly checks the shorthand variant, but most tests use one of the
+// longhands instead.
+function compareNotEmpty(actual, expected) {
+ assert_equals(actual, expected);
+ assert_not_equals(actual, '');
+}
+
+test_interpolation({
+ property: 'border-radius',
+ from: '20px 40px 60px 80px / 120px 140px 160px 180px',
+ to: '30px 50px 70px 90px / 130px 150px 170px 190px',
+ comparisonFunction: compareNotEmpty,
+}, [
+ {at: -0.3, expect: '17px 37px 57px 77px / 117px 137px 157px 177px'},
+ {at: 0, expect: '20px 40px 60px 80px / 120px 140px 160px 180px'},
+ {at: 0.3, expect: '23px 43px 63px 83px / 123px 143px 163px 183px'},
+ {at: 0.6, expect: '26px 46px 66px 86px / 126px 146px 166px 186px'},
+ {at: 1, expect: '30px 50px 70px 90px / 130px 150px 170px 190px'},
+ {at: 1.5, expect: '35px 55px 75px 95px / 135px 155px 175px 195px'}
+]);
+
+test_interpolation({
+ property: 'border-top-left-radius',
+ from: neutralKeyframe,
+ to: '20px',
+}, [
+ {at: -0.3, expect: '7px'},
+ {at: 0, expect: '10px'},
+ {at: 0.3, expect: '13px'},
+ {at: 0.6, expect: '16px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '25px'},
+]);
+test_interpolation({
+ property: 'border-top-left-radius',
+ from: 'initial',
+ to: '20px',
+}, [
+ {at: -0.3, expect: '0px'},
+ {at: 0, expect: '0px'},
+ {at: 0.3, expect: '6px'},
+ {at: 0.6, expect: '12px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '30px'},
+]);
+test_interpolation({
+ property: 'border-top-left-radius',
+ from: 'inherit',
+ to: '20px',
+}, [
+ {at: -0.3, expect: '33px'},
+ {at: 0, expect: '30px'},
+ {at: 0.3, expect: '27px'},
+ {at: 0.6, expect: '24px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '15px'},
+]);
+test_interpolation({
+ property: 'border-top-left-radius',
+ from: 'unset',
+ to: '20px',
+}, [
+ {at: -0.3, expect: '0px'},
+ {at: 0, expect: '0px'},
+ {at: 0.3, expect: '6px'},
+ {at: 0.6, expect: '12px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '30px'},
+]);
+test_interpolation({
+ property: 'border-top-left-radius',
+ from: '10px',
+ to: '50px'
+}, [
+ {at: -0.3, expect: '0px'}, // CSS border-top-left-radius can't be negative.
+ {at: 0, expect: '10px'},
+ {at: 0.3, expect: '22px'},
+ {at: 0.6, expect: '34px'},
+ {at: 1, expect: '50px'},
+ {at: 1.5, expect: '70px'},
+]);
+test_interpolation({
+ property: 'border-top-left-radius',
+ from: '10px',
+ to: '100%'
+}, [
+ {at: -0.3, expect: 'calc(13px + -30%)'},
+ {at: 0, expect: 'calc(10px + 0%)'},
+ {at: 0.3, expect: 'calc(7px + 30%)'},
+ {at: 0.6, expect: 'calc(4px + 60%)'},
+ {at: 1, expect: '100%'},
+ {at: 1.5, expect: 'calc(-5px + 150%)'},
+]);
+
+test_interpolation({
+ property: 'border-top-left-radius',
+ from: '20px',
+ to: '10px 30px'
+}, [
+ {at: -2, expect: '40px 0px'},
+ {at: -0.3, expect: '23px 17px'},
+ {at: 0, expect: '20px'},
+ {at: 0.3, expect: '17px 23px'},
+ {at: 0.6, expect: '14px 26px'},
+ {at: 1, expect: '10px 30px'},
+ {at: 1.5, expect: '5px 35px'}
+]);
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-width-interpolation.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-width-interpolation.html
new file mode 100644
index 00000000000..11f92f41652
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-width-interpolation.html
@@ -0,0 +1,175 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>border-width interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#border-width">
+<meta name="assert" content="border-width supports animation by computed value">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ border-width: 30px;
+}
+.target {
+ width: 50px;
+ height: 50px;
+ background-color: black;
+ display: inline-block;
+ border: 2px solid orange;
+ margin: 18px;
+ border-width: 10px;
+}
+.expected {
+ background-color: green;
+}
+</style>
+
+<body></body>
+
+<script>
+// As per https://bugzilla.mozilla.org/show_bug.cgi?id=137688, Firefox does not
+// support getComputedStyle for shorthands. As such, we have one test for this
+// which explicitly checks the shorthand variant, but most tests use one of the
+// longhands instead.
+function compareNotEmpty(actual, expected) {
+ assert_equals(actual, expected);
+ assert_not_equals(actual, '');
+}
+
+test_interpolation({
+ property: 'border-width',
+ from: '20px 40px 60px 80px',
+ to: '30px 50px 70px 90px',
+ comparisonFunction: compareNotEmpty,
+}, [
+ {at: -0.3, expect: '17px 37px 57px 77px'},
+ {at: 0, expect: '20px 40px 60px 80px'},
+ {at: 0.3, expect: '23px 43px 63px 83px'},
+ {at: 0.6, expect: '26px 46px 66px 86px'},
+ {at: 1, expect: '30px 50px 70px 90px'},
+ {at: 1.5, expect: '35px 55px 75px 95px'}
+]);
+
+test_interpolation({
+ property: 'border-left-width',
+ from: neutralKeyframe,
+ to: '20px',
+}, [
+ {at: -0.3, expect: '7px'},
+ {at: 0, expect: '10px'},
+ {at: 0.3, expect: '13px'},
+ {at: 0.6, expect: '16px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '25px'},
+]);
+
+test_interpolation({
+ property: 'border-left-width',
+ from: 'initial',
+ to: '20px',
+}, [
+ {at: -0.3, expect: '0px'},
+ {at: 0, expect: '3px'},
+ {at: 0.3, expect: '8.1px'},
+ {at: 0.6, expect: '13.2px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '28.5px'},
+]);
+
+test_interpolation({
+ property: 'border-left-width',
+ from: 'inherit',
+ to: '20px',
+}, [
+ {at: -0.3, expect: '0px'},
+ {at: 0, expect: '0px'},
+ {at: 0.3, expect: '6px'},
+ {at: 0.6, expect: '12px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '30px'},
+]);
+
+test_interpolation({
+ property: 'border-left-width',
+ from: 'unset',
+ to: '20px',
+}, [
+ {at: -0.3, expect: '0px'},
+ {at: 0, expect: '3px'},
+ {at: 0.3, expect: '8.1px'},
+ {at: 0.6, expect: '13.2px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '28.5px'},
+]);
+
+test_interpolation({
+ property: 'border-left-width',
+ from: '0px',
+ to: '10px'
+}, [
+ {at: -0.3, expect: '0px'}, // CSS border-left-width can't be negative.
+ {at: 0, expect: '0px'},
+ {at: 0.3, expect: '3px'},
+ {at: 0.6, expect: '6px'},
+ {at: 1, expect: '10px'},
+ {at: 1.5, expect: '15px'}
+]);
+
+test_interpolation({
+ property: 'border-bottom-width',
+ from: 'thick',
+ to: '15px'
+}, [
+ {at: -2, expect: '0px'}, // CSS border-bottom-width can't be negative.
+ {at: -0.3, expect: '2px'},
+ {at: 0, expect: '5px'},
+ {at: 0.3, expect: '8px'},
+ {at: 0.6, expect: '11px'},
+ {at: 1, expect: '15px'},
+ {at: 1.5, expect: '20px'}
+]);
+
+test_interpolation({
+ property: 'border-left-width',
+ from: 'medium',
+ to: '13px'
+}, [
+ {at: -2, expect: '0px'}, // CSS border-left-width can't be negative.
+ {at: -0.25, expect: '0.5px'},
+ {at: 0, expect: '3px'},
+ {at: 0.3, expect: '6px'},
+ {at: 0.6, expect: '9px'},
+ {at: 1, expect: '13px'},
+ {at: 1.5, expect: '18px'}
+]);
+
+test_interpolation({
+ property: 'border-right-width',
+ from: 'thin',
+ to: '11px'
+}, [
+ {at: -2, expect: '0px'}, // CSS border-right-width can't be negative.
+ {at: -0.3, expect: '0px'}, // CSS border-right-width can't be negative.
+ {at: 0, expect: '1px'},
+ {at: 0.3, expect: '4px'},
+ {at: 0.6, expect: '7px'},
+ {at: 1, expect: '11px'},
+ {at: 1.5, expect: '16px'}
+]);
+
+test_interpolation({
+ property: 'border-top-width',
+ from: '15px',
+ to: 'thick'
+}, [
+ {at: -2, expect: '35px'},
+ {at: -0.3, expect: '18px'},
+ {at: 0, expect: '15px'},
+ {at: 0.3, expect: '12px'},
+ {at: 0.6, expect: '9px'},
+ {at: 1, expect: '5px'},
+ {at: 1.5, expect: '0px'}
+]);
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-source-computed.sub.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-source-computed.sub.html
index 20343882096..ad48aa987ac 100644
--- a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-source-computed.sub.html
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-source-computed.sub.html
@@ -8,6 +8,11 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/computed-testcommon.js"></script>
+<style>
+ #target {
+ color: blue;
+ }
+</style>
</head>
<body>
<div id="target"></div>
@@ -15,6 +20,11 @@
test_computed_value("border-image-source", "none");
test_computed_value("border-image-source", 'url("http://{{host}}/")');
+test_computed_value('border-image-source', 'linear-gradient(-45deg, red, currentcolor)', 'linear-gradient(-45deg, rgb(255, 0, 0), rgb(0, 0, 255))');
+test_computed_value('border-image-source', 'repeating-linear-gradient(-45deg, red, 30%, currentcolor 70%, lime)', 'repeating-linear-gradient(-45deg, rgb(255, 0, 0), 30%, rgb(0, 0, 255) 70%, rgb(0, 255, 0))');
+test_computed_value('border-image-source', 'radial-gradient(10px at 20px 30px, currentcolor, lime)', 'radial-gradient(10px at 20px 30px, rgb(0, 0, 255), rgb(0, 255, 0))');
+test_computed_value('border-image-source', 'conic-gradient(from 90deg at 80% 90%, lime, black)', 'conic-gradient(from 90deg at 80% 90%, rgb(0, 255, 0), rgb(0, 0, 0))');
+
test(() => {
const target = document.getElementById('target');
target.style['border-image-source'] = 'url("a.b#c")';
diff --git a/tests/wpt/web-platform-tests/css/css-properties-values-api/register-property-syntax-parsing.html b/tests/wpt/web-platform-tests/css/css-properties-values-api/register-property-syntax-parsing.html
index fe2a63a57a1..6d7dbc63a1d 100644
--- a/tests/wpt/web-platform-tests/css/css-properties-values-api/register-property-syntax-parsing.html
+++ b/tests/wpt/web-platform-tests/css/css-properties-values-api/register-property-syntax-parsing.html
@@ -54,6 +54,8 @@ assert_valid("<percentage>", "-9.3e3%");
assert_valid("<length-percentage>", "-54%");
assert_valid("<length-percentage>", "0");
assert_valid("<length-percentage>", "calc(-11px + 10.4%)");
+assert_valid("<length>", "10vmin");
+assert_valid("<percentage> | <length>+", "calc(100vh - 10px) 30px");
assert_valid("<number>", "-109");
assert_valid("<number>", "2.3e4");
@@ -183,14 +185,12 @@ assert_invalid("<length>", "10%");
assert_invalid("<length>", "calc(5px + 10%)");
assert_invalid("<length>", "calc(5px * 3px / 6px)");
assert_invalid("<length>", "10em");
-assert_invalid("<length>", "10vmin");
assert_invalid("<length>", "calc(4px + 3em)");
assert_invalid("<length>", "calc(4px + calc(8 * 2em))");
assert_invalid("<length>+", "calc(2ex + 16px)");
assert_invalid("<length>+", "10px calc(20px + 4rem)");
assert_invalid("<length>+", "");
assert_invalid("<length>#", "");
-assert_invalid("<percentage> | <length>+", "calc(100vh - 10px) 30px");
assert_invalid("<length>", "10px;");
assert_invalid("<length-percentage>", "calc(2px + 10% + 7ex)");
assert_invalid("<percentage>", "0");
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-property-whitelist.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-property-whitelist.html
index 073e554a8c4..e3b3f532fef 100644
--- a/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-property-whitelist.html
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-letter-property-whitelist.html
@@ -26,13 +26,13 @@ var validProperties = {
backgroundBlendMode: 'hue',
backgroundClip: 'padding-box',
backgroundColor: 'rgb(10, 20, 30)',
- backgroundImage: 'linear-gradient(black, white)',
+ backgroundImage: 'linear-gradient(rgb(0, 0, 0), rgb(255, 255, 255))',
backgroundOrigin: 'border-box',
backgroundPosition: 'left 10px top 20px',
backgroundRepeat: 'no-repeat',
backgroundSize: '10px 20px',
border: '40px dotted rgb(10, 20, 30)',
- borderImage: 'linear-gradient(black, white) 10% / 20 / 30px repeat',
+ borderImage: 'linear-gradient(rgb(0, 0, 0), rgb(255, 255, 255)) 10% / 20 / 30px repeat',
borderRadius: '10px 20px',
boxShadow: 'rgb(10, 20, 30) 10px 20px 30px 40px inset',
color: 'rgba(10, 20, 30, 0.4)',
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-001.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-001.html
new file mode 100644
index 00000000000..4647c2c9119
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-001.html
@@ -0,0 +1,252 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>transform interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-transforms/#transform-property">
+<meta name="assert" content="transform supports animation as a transform list">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.target {
+ color: white;
+ width: 100px;
+ height: 100px;
+ background-color: black;
+ display: inline-block;
+ overflow: hidden;
+}
+.expected {
+ background-color: green;
+}
+.target > div {
+ width: 10px;
+ height: 10px;
+ display: inline-block;
+ background: orange;
+ margin: 1px;
+}
+.test {
+ overflow: hidden;
+}
+</style>
+
+<body>
+ <template id="target-template">
+ <div></div>
+ </template>
+</body>
+
+<script>
+// Perspective
+test_interpolation({
+ property: 'transform',
+ from: 'perspective(400px)',
+ to: 'perspective(500px)'
+}, [
+ {at: -1, expect: 'perspective(300px)'},
+ {at: 0, expect: 'perspective(400px)'},
+ {at: 0.25, expect: 'perspective(425px)'},
+ {at: 0.75, expect: 'perspective(475px)'},
+ {at: 1, expect: 'perspective(500px)'},
+ {at: 2, expect: 'perspective(600px)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'skewX(10rad) perspective(400px)',
+ to: 'skewX(20rad) perspective(500px)'
+}, [
+ {at: -1, expect: 'skewX(0rad) perspective(300px)'},
+ {at: 0, expect: 'skewX(10rad) perspective(400px)'},
+ {at: 0.25, expect: 'skewX(12.5rad) perspective(425px)'},
+ {at: 0.75, expect: 'skewX(17.5rad) perspective(475px)'},
+ {at: 1, expect: 'skewX(20rad) perspective(500px)'},
+ {at: 2, expect: 'skewX(30rad) perspective(600px)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'scaleZ(1) perspective(400px)',
+ to: 'scaleZ(2) perspective(500px)'
+}, [
+ {at: -1, expect: 'scaleZ(0) perspective(300px)'},
+ {at: 0, expect: 'scaleZ(1) perspective(400px)'},
+ {at: 0.25, expect: 'scaleZ(1.25) perspective(425px)'},
+ {at: 0.75, expect: 'scaleZ(1.75) perspective(475px)'},
+ {at: 1, expect: 'scaleZ(2) perspective(500px)'},
+ {at: 2, expect: 'scaleZ(3) perspective(600px)'},
+]);
+
+// Rotate
+test_interpolation({
+ property: 'transform',
+ from: 'rotate(30deg)',
+ to: 'rotate(330deg)'
+}, [
+ {at: -1, expect: 'rotate(-270deg)'},
+ {at: 0, expect: 'rotate(30deg)'},
+ {at: 0.25, expect: 'rotate(105deg)'},
+ {at: 0.75, expect: 'rotate(255deg)'},
+ {at: 1, expect: 'rotate(330deg)'},
+ {at: 2, expect: 'rotate(630deg)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'rotateX(0deg)',
+ to: 'rotateX(700deg)'
+}, [
+ {at: -1, expect: 'rotateX(-700deg)'},
+ {at: 0, expect: 'rotateX(0deg)'},
+ {at: 0.25, expect: 'rotateX(175deg)'},
+ {at: 0.75, expect: 'rotateX(525deg)'},
+ {at: 1, expect: 'rotateX(700deg)'},
+ {at: 2, expect: 'rotateX(1400deg)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'rotateY(0deg)',
+ to: 'rotateY(800deg)'
+}, [
+ {at: -1, expect: 'rotateY(-800deg)'},
+ {at: 0, expect: 'rotateY(0deg)'},
+ {at: 0.25, expect: 'rotateY(200deg)'},
+ {at: 0.75, expect: 'rotateY(600deg)'},
+ {at: 1, expect: 'rotateY(800deg)'},
+ {at: 2, expect: 'rotateY(1600deg)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'rotateZ(0deg)',
+ to: 'rotateZ(900deg)'
+}, [
+ {at: -1, expect: 'rotateZ(-900deg)'},
+ {at: 0, expect: 'rotateZ(0deg)'},
+ {at: 0.25, expect: 'rotateZ(225deg)'},
+ {at: 0.75, expect: 'rotateZ(675deg)'},
+ {at: 1, expect: 'rotateZ(900deg)'},
+ {at: 2, expect: 'rotateZ(1800deg)'},
+]);
+// Interpolation is about a common axis if either endpoint has a rotation angle
+// of zero.
+test_interpolation({
+ property: 'transform',
+ from: 'rotateX(0deg)',
+ to: 'rotateY(900deg)'
+}, [
+ {at: -1, expect: 'rotateY(-900deg)'},
+ {at: 0, expect: 'rotateY(0deg)'},
+ {at: 0.25, expect: 'rotateY(225deg)'},
+ {at: 0.75, expect: 'rotateY(675deg)'},
+ {at: 1, expect: 'rotateY(900deg)'},
+ {at: 2, expect: 'rotateY(1800deg)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'rotateY(900deg)',
+ to: 'rotateZ(0deg)'
+}, [
+ {at: -1, expect: 'rotateY(1800deg)'},
+ {at: 0, expect: 'rotateY(900deg)'},
+ {at: 0.25, expect: 'rotateY(675deg)'},
+ {at: 0.75, expect: 'rotateY(225deg)'},
+ {at: 1, expect: 'rotateY(0deg)'},
+ {at: 2, expect: 'rotateY(-900deg)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'rotate3d(7, 8, 9, 100deg)',
+ to: 'rotate3d(7, 8, 9, 260deg)'
+}, [
+ {at: -1, expect: 'rotate3d(7, 8, 9, -60deg)'},
+ {at: 0, expect: 'rotate3d(7, 8, 9, 100deg)'},
+ {at: 0.25, expect: 'rotate3d(7, 8, 9, 140deg)'},
+ {at: 0.75, expect: 'rotate3d(7, 8, 9, 220deg)'},
+ {at: 1, expect: 'rotate3d(7, 8, 9, 260deg)'},
+ {at: 2, expect: 'rotate3d(7, 8, 9, 420deg)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'rotate3d(7, 8, 9, 0deg)',
+ to: 'rotate3d(7, 8, 9, 450deg)'
+}, [
+ {at: -1, expect: 'rotate3d(7, 8, 9, -450deg)'},
+ {at: 0, expect: 'rotate3d(7, 8, 9, 0deg)'},
+ {at: 0.25, expect: 'rotate3d(7, 8, 9, 112.5deg)'},
+ {at: 0.75, expect: 'rotate3d(7, 8, 9, 337.5deg)'},
+ {at: 1, expect: 'rotate3d(7, 8, 9, 450deg)'},
+ {at: 2, expect: 'rotate3d(7, 8, 9, 900deg)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'rotate3d(0, 1, 0, 0deg)',
+ to: 'rotate3d(0, 1, 0, 450deg)'
+}, [
+ {at: -1, expect: 'rotate3d(0, 1, 0, -450deg)'},
+ {at: 0, expect: 'rotate3d(0, 1, 0, 0deg)'},
+ {at: 0.25, expect: 'rotate3d(0, 1, 0, 112.5deg)'},
+ {at: 0.75, expect: 'rotate3d(0, 1, 0, 337.5deg)'},
+ {at: 1, expect: 'rotate3d(0, 1, 0, 450deg)'},
+ {at: 2, expect: 'rotate3d(0, 1, 0, 900deg)'},
+]);
+// Rotation is about a common axis if the axes are colinear.
+test_interpolation({
+ property: 'transform',
+ from: 'rotate3d(0, 1, 0, 0deg)',
+ to: 'rotate3d(0, 2, 0, 450deg)'
+}, [
+ {at: -1, expect: 'rotate3d(0, 1, 0, -450deg)'},
+ {at: 0, expect: 'rotate3d(0, 1, 0, 0deg)'},
+ {at: 0.25, expect: 'rotate3d(0, 1, 0, 112.5deg)'},
+ {at: 0.75, expect: 'rotate3d(0, 1, 0, 337.5deg)'},
+ {at: 1, expect: 'rotate3d(0, 1, 0, 450deg)'},
+ {at: 2, expect: 'rotate3d(0, 1, 0, 900deg)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'rotate3d(1, 1, 0, 90deg)',
+ to: 'rotate3d(0, 1, 1, 180deg)'
+}, [
+ {at: -1, expect: 'rotate3d(0.41, -0.41, -0.82, 120deg)'},
+ {at: 0, expect: 'rotate3d(1, 1, 0, 90deg)'},
+ {at: 0.25, expect: 'rotate3d(0.524083, 0.804261, 0.280178, 106.91deg)'},
+ {at: 0.75, expect: 'rotate3d(0.163027, 0.774382, 0.611354, 153.99deg)'},
+ {at: 1, expect: 'rotate3d(0, 1, 1, 180deg)'},
+ {at: 2, expect: 'rotate3d(0.71, 0, -0.71, 90deg)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'none',
+ to: 'rotate(90deg)'
+}, [
+ {at: -1, expect: 'rotate(-90deg)'},
+ {at: 0, expect: 'rotate(0deg)'},
+ {at: 0.25, expect: 'rotate(22.5deg)'},
+ {at: 0.75, expect: 'rotate(67.5deg)'},
+ {at: 1, expect: 'rotate(90deg)'},
+ {at: 2, expect: 'rotate(180deg)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'rotate(90deg)',
+ to: 'none'
+}, [
+ {at: -1, expect: 'rotate(180deg)'},
+ {at: 0, expect: 'rotate(90deg)'},
+ {at: 0.25, expect: 'rotate(67.5deg)'},
+ {at: 0.75, expect: 'rotate(22.5deg)'},
+ {at: 1, expect: 'rotate(0deg)'},
+ {at: 2, expect: 'rotate(-90deg)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'rotateX(0deg) rotateY(0deg) rotateZ(0deg)',
+ to: 'rotateX(700deg) rotateY(800deg) rotateZ(900deg)'
+}, [
+ {at: -1, expect: 'rotateX(-700deg) rotateY(-800deg) rotateZ(-900deg)'},
+ {at: 0, expect: 'rotateX(0deg) rotateY(0deg) rotateZ(0deg)'},
+ {at: 0.25, expect: 'rotateX(175deg) rotateY(200deg) rotateZ(225deg)'},
+ {at: 0.75, expect: 'rotateX(525deg) rotateY(600deg) rotateZ(675deg)'},
+ {at: 1, expect: 'rotateX(700deg) rotateY(800deg) rotateZ(900deg)'},
+ {at: 2, expect: 'rotateX(1400deg) rotateY(1600deg) rotateZ(1800deg)'},
+]);
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-002.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-002.html
new file mode 100644
index 00000000000..fec0de1f535
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-002.html
@@ -0,0 +1,151 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>transform interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-transforms/#transform-property">
+<meta name="assert" content="transform supports animation as a transform list">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.target {
+ color: white;
+ width: 100px;
+ height: 100px;
+ background-color: black;
+ display: inline-block;
+ overflow: hidden;
+}
+.expected {
+ background-color: green;
+}
+.target > div {
+ width: 10px;
+ height: 10px;
+ display: inline-block;
+ background: orange;
+ margin: 1px;
+}
+.test {
+ overflow: hidden;
+}
+</style>
+
+<body>
+ <template id="target-template">
+ <div></div>
+ </template>
+</body>
+
+<script>
+// Scale
+test_interpolation({
+ property: 'transform',
+ from: 'scale(10, 5)',
+ to: 'scale(20, 9)'
+}, [
+ {at: -1, expect: 'scale(0, 1)'},
+ {at: 0, expect: 'scale(10, 5)'},
+ {at: 0.25, expect: 'scale(12.5, 6)'},
+ {at: 0.75, expect: 'scale(17.5, 8)'},
+ {at: 1, expect: 'scale(20, 9)'},
+ {at: 2, expect: 'scale(30, 13)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'scaleX(10)',
+ to: 'scaleX(20)'
+}, [
+ {at: -1, expect: 'scaleX(0)'},
+ {at: 0, expect: 'scaleX(10)'},
+ {at: 0.25, expect: 'scaleX(12.5)'},
+ {at: 0.75, expect: 'scaleX(17.5)'},
+ {at: 1, expect: 'scaleX(20)'},
+ {at: 2, expect: 'scaleX(30)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'scaleY(5)',
+ to: 'scaleY(9)'
+}, [
+ {at: -1, expect: 'scaleY(1)'},
+ {at: 0, expect: 'scaleY(5)'},
+ {at: 0.25, expect: 'scaleY(6)'},
+ {at: 0.75, expect: 'scaleY(8)'},
+ {at: 1, expect: 'scaleY(9)'},
+ {at: 2, expect: 'scaleY(13)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'scaleZ(1)',
+ to: 'scaleZ(2)'
+}, [
+ {at: -1, expect: 'scaleZ(0)'},
+ {at: 0, expect: 'scaleZ(1)'},
+ {at: 0.25, expect: 'scaleZ(1.25)'},
+ {at: 0.75, expect: 'scaleZ(1.75)'},
+ {at: 1, expect: 'scaleZ(2)'},
+ {at: 2, expect: 'scaleZ(3)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'scale3d(10, 0.5, 1)',
+ to: 'scale3d(20, 1, 2)'
+}, [
+ {at: -1, expect: 'scale3d(0, 0, 0)'},
+ {at: 0, expect: 'scale3d(10, 0.5, 1)'},
+ {at: 0.25, expect: 'scale3d(12.5, 0.625, 1.25)'},
+ {at: 0.75, expect: 'scale3d(17.5, 0.875, 1.75)'},
+ {at: 1, expect: 'scale3d(20, 1, 2)'},
+ {at: 2, expect: 'scale3d(30, 1.5, 3)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'scaleX(0)',
+ to: 'scaleY(0)',
+}, [
+ {at: -1, expect: 'scale(-1, 2)'},
+ {at: 0, expect: 'scale(0, 1)'},
+ {at: 0.25, expect: 'scale(0.25, 0.75)'},
+ {at: 0.75, expect: 'scale(0.75, 0.25)'},
+ {at: 1, expect: 'scale(1, 0)'},
+ {at: 2, expect: 'scale(2, -1)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'none',
+ to: 'scale3d(2, 3, 5)'
+}, [
+ {at: -1, expect: 'scale3d(0, -1, -3)'},
+ {at: 0, expect: 'scale3d(1, 1, 1)'},
+ {at: 0.25, expect: 'scale3d(1.25, 1.5, 2)'},
+ {at: 0.75, expect: 'scale3d(1.75, 2.5, 4)'},
+ {at: 1, expect: 'scale3d(2, 3, 5)'},
+ {at: 2, expect: 'scale3d(3, 5, 9)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'scale3d(2, 3, 5)',
+ to: 'none'
+}, [
+ {at: -1, expect: 'scale3d(3, 5, 9)'},
+ {at: 0, expect: 'scale3d(2, 3, 5)'},
+ {at: 0.25, expect: 'scale3d(1.75, 2.5, 4)'},
+ {at: 0.75, expect: 'scale3d(1.25, 1.5, 2)'},
+ {at: 1, expect: 'scale3d(1, 1, 1)'},
+ {at: 2, expect: 'scale3d(0, -1, -3)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'scaleX(10) scaleY(0.5) scaleZ(1)',
+ to: 'scaleX(20) scaleY(1) scaleZ(2)'
+}, [
+ {at: -1, expect: 'scaleX(0) scaleY(0) scaleZ(0)'},
+ {at: 0, expect: 'scaleX(10) scaleY(0.5) scaleZ(1)'},
+ {at: 0.25, expect: 'scaleX(12.5) scaleY(0.625) scaleZ(1.25)'},
+ {at: 0.75, expect: 'scaleX(17.5) scaleY(0.875) scaleZ(1.75)'},
+ {at: 1, expect: 'scaleX(20) scaleY(1) scaleZ(2)'},
+ {at: 2, expect: 'scaleX(30) scaleY(1.5) scaleZ(3)'},
+]);
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-003.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-003.html
new file mode 100644
index 00000000000..4386bdbfa46
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-003.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>transform interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-transforms/#transform-property">
+<meta name="assert" content="transform supports animation as a transform list">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.target {
+ color: white;
+ width: 100px;
+ height: 100px;
+ background-color: black;
+ display: inline-block;
+ overflow: hidden;
+}
+.expected {
+ background-color: green;
+}
+.target > div {
+ width: 10px;
+ height: 10px;
+ display: inline-block;
+ background: orange;
+ margin: 1px;
+}
+.test {
+ overflow: hidden;
+}
+</style>
+
+<body>
+<template id="target-template">
+<div></div>
+</template>
+</body>
+
+<script>
+test_interpolation({
+ property: 'transform',
+ from: 'skewX(10rad) scaleZ(1)',
+ to: 'skewX(20rad) scaleZ(2)'
+}, [
+ {at: -1, expect: 'skewX(0rad) scaleZ(0)'},
+ {at: 0, expect: 'skewX(10rad) scaleZ(1)'},
+ {at: 0.25, expect: 'skewX(12.5rad) scaleZ(1.25)'},
+ {at: 0.75, expect: 'skewX(17.5rad) scaleZ(1.75)'},
+ {at: 1, expect: 'skewX(20rad) scaleZ(2)'},
+ {at: 2, expect: 'skewX(30rad) scaleZ(3)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'skewX(10rad)',
+ to: 'skewX(20rad) scaleZ(2)'
+}, [
+ {at: -1, expect: 'skewX(0rad) scaleZ(0)'},
+ {at: 0, expect: 'skewX(10rad) scaleZ(1)'},
+ {at: 0.25, expect: 'skewX(12.5rad) scaleZ(1.25)'},
+ {at: 0.75, expect: 'skewX(17.5rad) scaleZ(1.75)'},
+ {at: 1, expect: 'skewX(20rad) scaleZ(2)'},
+ {at: 2, expect: 'skewX(30rad) scaleZ(3)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'scaleZ(3) perspective(400px)',
+ to: 'scaleZ(4) skewX(1rad) perspective(500px)'
+}, [
+ {at: -1, expect: 'scaleZ(2) matrix3d(1, 0, 0, 0, -1.55741, 1, 0, 0, 0, 0, 1, -0.003, 0, 0, 0, 1)'},
+ {at: 0, expect: 'scaleZ(3) matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)'},
+ {at: 0.25, expect: 'scaleZ(3.25) matrix3d(1, 0, 0, 0, 0.389352, 1, 0, 0, 0, 0, 1, -0.002375, 0, 0, 0, 1)'},
+ {at: 0.75, expect: 'scaleZ(3.75) matrix3d(1, 0, 0, 0, 1.16806, 1, 0, 0, 0, 0, 1, -0.002125, 0, 0, 0, 1)'},
+ {at: 1, expect: 'scaleZ(4) matrix3d(1, 0, 0, 0, 1.55741, 1, 0, 0, 0, 0, 1, -0.002, 0, 0, 0, 1)'},
+ {at: 2, expect: 'scaleZ(5) matrix3d(1, 0, 0, 0, 3.11482, 1, 0, 0, 0, 0, 1, -0.0015, 0, 0, 0, 1)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'translateY(70%) scaleZ(1)',
+ to: 'translateY(90%) scaleZ(2)'
+}, [
+ {at: -1, expect: 'translateY(50%) scaleZ(0)'},
+ {at: 0, expect: 'translateY(70%) scaleZ(1)'},
+ {at: 0.25, expect: 'translateY(75%) scaleZ(1.25)'},
+ {at: 0.75, expect: 'translateY(85%) scaleZ(1.75)'},
+ {at: 1, expect: 'translateY(90%) scaleZ(2)'},
+ {at: 2, expect: 'translateY(110%) scaleZ(3)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'translateY(70%)',
+ to: 'translateY(90%) scaleZ(2)'
+}, [
+ {at: -1, expect: 'translateY(50%) scaleZ(0)'},
+ {at: 0, expect: 'translateY(70%)'},
+ {at: 0.25, expect: 'translateY(75%) scaleZ(1.25)'},
+ {at: 0.75, expect: 'translateY(85%) scaleZ(1.75)'},
+ {at: 1, expect: 'translateY(90%) scaleZ(2)'},
+ {at: 2, expect: 'translateY(110%) scaleZ(3)'},
+]);
+
+// Skew
+test_interpolation({
+ property: 'transform',
+ from: 'skewX(10rad)',
+ to: 'skewX(20rad)'
+}, [
+ {at: -1, expect: 'skewX(0rad)'},
+ {at: 0, expect: 'skewX(10rad)'},
+ {at: 0.25, expect: 'skewX(12.5rad)'},
+ {at: 0.75, expect: 'skewX(17.5rad)'},
+ {at: 1, expect: 'skewX(20rad)'},
+ {at: 2, expect: 'skewX(30rad)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'skewY(10rad)',
+ to: 'skewY(20rad)'
+}, [
+ {at: -1, expect: 'skewY(0rad)'},
+ {at: 0, expect: 'skewY(10rad)'},
+ {at: 0.25, expect: 'skewY(12.5rad)'},
+ {at: 0.75, expect: 'skewY(17.5rad)'},
+ {at: 1, expect: 'skewY(20rad)'},
+ {at: 2, expect: 'skewY(30rad)'},
+]);
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-004.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-004.html
new file mode 100644
index 00000000000..a6b3c75c623
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-004.html
@@ -0,0 +1,187 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>transform interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-transforms/#transform-property">
+<meta name="assert" content="transform supports animation as a transform list">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.target {
+ color: white;
+ width: 100px;
+ height: 100px;
+ background-color: black;
+ display: inline-block;
+ overflow: hidden;
+}
+.expected {
+ background-color: green;
+}
+.target > div {
+ width: 10px;
+ height: 10px;
+ display: inline-block;
+ background: orange;
+ margin: 1px;
+}
+.test {
+ overflow: hidden;
+}
+</style>
+
+<body>
+ <template id="target-template">
+ <div></div>
+ </template>
+</body>
+
+<script>
+// Translate
+test_interpolation({
+ property: 'transform',
+ from: 'translate(12px, 70%)',
+ to: 'translate(13px, 90%)'
+}, [
+ {at: -1, expect: 'translate(11px, 50%)'},
+ {at: 0, expect: 'translate(12px, 70%)'},
+ {at: 0.25, expect: 'translate(12.25px, 75%)'},
+ {at: 0.75, expect: 'translate(12.75px, 85%)'},
+ {at: 1, expect: 'translate(13px, 90%)'},
+ {at: 2, expect: 'translate(14px, 110%)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'translateX(12px)',
+ to: 'translateX(13px)'
+}, [
+ {at: -1, expect: 'translateX(11px)'},
+ {at: 0, expect: 'translateX(12px)'},
+ {at: 0.25, expect: 'translateX(12.25px)'},
+ {at: 0.75, expect: 'translateX(12.75px)'},
+ {at: 1, expect: 'translateX(13px)'},
+ {at: 2, expect: 'translateX(14px)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'translateY(70%)',
+ to: 'translateY(90%)'
+}, [
+ {at: -1, expect: 'translateY(50%)'},
+ {at: 0, expect: 'translateY(70%)'},
+ {at: 0.25, expect: 'translateY(75%)'},
+ {at: 0.75, expect: 'translateY(85%)'},
+ {at: 1, expect: 'translateY(90%)'},
+ {at: 2, expect: 'translateY(110%)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'translateZ(2em)',
+ to: 'translateZ(3em)'
+}, [
+ {at: -1, expect: 'translateZ(1em)'},
+ {at: 0, expect: 'translateZ(2em)'},
+ {at: 0.25, expect: 'translateZ(2.25em)'},
+ {at: 0.75, expect: 'translateZ(2.75em)'},
+ {at: 1, expect: 'translateZ(3em)'},
+ {at: 2, expect: 'translateZ(4em)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'translate3d(12px, 70%, 2em)',
+ to: 'translate3d(13px, 90%, 3em)'
+}, [
+ {at: -1, expect: 'translate3d(11px, 50%, 1em)'},
+ {at: 0, expect: 'translate3d(12px, 70%, 2em)'},
+ {at: 0.25, expect: 'translate3d(12.25px, 75%, 2.25em)'},
+ {at: 0.75, expect: 'translate3d(12.75px, 85%, 2.75em)'},
+ {at: 1, expect: 'translate3d(13px, 90%, 3em)'},
+ {at: 2, expect: 'translate3d(14px, 110%, 4em)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'translateX(12px) translateY(70%) translateZ(2em)',
+ to: 'translateX(13px) translateY(90%) translateZ(3em)'
+}, [
+ {at: -1, expect: 'translateX(11px) translateY(50%) translateZ(1em)'},
+ {at: 0, expect: 'translateX(12px) translateY(70%) translateZ(2em)'},
+ {at: 0.25, expect: 'translateX(12.25px) translateY(75%) translateZ(2.25em)'},
+ {at: 0.75, expect: 'translateX(12.75px) translateY(85%) translateZ(2.75em)'},
+ {at: 1, expect: 'translateX(13px) translateY(90%) translateZ(3em)'},
+ {at: 2, expect: 'translateX(14px) translateY(110%) translateZ(4em)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'skewX(10rad) translateY(70%)',
+ to: 'skewX(20rad) translateY(90%)'
+}, [
+ {at: -1, expect: 'skewX(0rad) translateY(50%)'},
+ {at: 0, expect: 'skewX(10rad) translateY(70%)'},
+ {at: 0.25, expect: 'skewX(12.5rad) translateY(75%)'},
+ {at: 0.75, expect: 'skewX(17.5rad) translateY(85%)'},
+ {at: 1, expect: 'skewX(20rad) translateY(90%)'},
+ {at: 2, expect: 'skewX(30rad) translateY(110%)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'skewX(1rad)',
+ to: 'translate3d(8px, -4px, 12px) skewX(2rad)'
+}, [
+ {at: -1, expect: 'matrix3d(1, 0, 0, 0, 5.2998553125713235, 1, 0, 0, 0, 0, 1, 0, -8, 4, -12, 1)'},
+ {at: 0, expect: 'matrix(1, 0, 1.5574077246549023, 1, 0, 0)'},
+ {at: 0.25, expect: 'matrix3d(1, 0, 0, 0, 0.621795827675797, 1, 0, 0, 0, 0, 1, 0, 2, -1, 3, 1)'},
+ {at: 0.75, expect: 'matrix3d(1, 0, 0, 0, -1.2494279662824135, 1, 0, 0, 0, 0, 1, 0, 6, -3, 9, 1)'},
+ {at: 1, expect: 'matrix3d(1, 0, 0, 0, -2.185039863261519, 1, 0, 0, 0, 0, 1, 0, 8, -4, 12, 1)'},
+ {at: 2, expect: 'matrix3d(1, 0, 0, 0, -5.9274874511779405, 1, 0, 0, 0, 0, 1, 0, 16, -8, 24, 1)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)',
+ to: 'scaleY(2) skewX(2rad) perspective(500px)'
+}, [
+ {at: -1, expect: 'matrix3d(1, 0, 0, 0, 0, 0, 0, 0, -0.03876288659793814, 0.01938144329896907, 0.94, -0.0029653608247422686, 16, -8, 24, 0.986144329896907)'},
+ {at: 0, expect: 'matrix3d(1, 0, 0, 0, 1.5574077246549023, 1, 0, 0, -0.02, 0.01, 0.97, -0.0025, 8, -4, 12, 1)'},
+ {at: 0.25, expect: 'matrix3d(1, 0, 0, 0, 1.1186572632293585, 1.25, 0, 0, -0.0151159793814433, 0.00755798969072165, 0.9775, -0.002378247422680413, 6, -3, 9, 1.0012989690721648)'},
+ {at: 0.75, expect: 'matrix3d(1, 0, 0, 0, -0.7525665307288518, 1.75, 0, 0, -0.005115979381443298, 0.002557989690721649, 0.9924999999999999, -0.002128247422680412, 2, -1, 3, 1.001298969072165)'},
+ {at: 1, expect: 'matrix3d(1, 0, 0, 0, -2.185039863261519, 2, 0, 0, 0, 0, 1, -0.002, 0, 0, 0, 1)'},
+ {at: 2, expect: 'matrix3d(1, 0, 0, 0, -11.227342763749263, 3, 0, 0, 0.021237113402061854, -0.010618556701030927, 1.03, -0.0014653608247422677, -8, 4, -12, 0.9861443298969074)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)',
+ to: 'translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)'
+}, [
+ {at: -1, expect: 'translate3d(12px, 4px, 16px) matrix3d(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -0.003, 0, 0, 0, 1)'},
+ {at: 0, expect: 'translate3d(8px, -4px, 12px) matrix3d(1, 0, 0, 0, 1.55741, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)'},
+ {at: 0.25, expect: 'translate3d(7px, -6px, 11px) matrix3d(1, 0, 0, 0, 1.46007, 1.25, 0, 0, 0, 0, 1, -0.002375, 0, 0, 0, 1)'},
+ {at: 0.75, expect: 'translate3d(5px, -10px, 9px) matrix3d(1, 0, 0, 0, 0.681366, 1.75, 0, 0, 0, 0, 1, -0.002125, 0, 0, 0, 1)'},
+ {at: 1, expect: 'translate3d(4px, -12px, 8px) matrix3d(1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, -0.002, 0, 0, 0, 1)'},
+ {at: 2, expect: 'translate3d(0px, -20px, 4px) matrix3d(1, 0, 0, 0, -4.67222, 3, 0, 0, 0, 0, 1, -0.0015, 0, 0, 0, 1)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)',
+ to: 'translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)'
+}, [
+ {at: -1, expect: 'translate3d(12px, 4px, 16px) skewX(0rad) matrix3d(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -0.005, 0, 0, 0, 1)'},
+ {at: 0, expect: 'translate3d(8px, -4px, 12px) skewX(1rad) matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)'},
+ {at: 0.25, expect: 'translate3d(7px, -6px, 11px) skewX(1.25rad) matrix3d(1, 0, 0, 0, 0, 1.25, 0, 0, 0, 0, 1, -0.001875, 0, 0, 0, 1)'},
+ {at: 0.75, expect: 'translate3d(5px, -10px, 9px) skewX(1.75rad) matrix3d(1, 0, 0, 0, 0, 1.75, 0, 0, 0, 0, 1, -0.000625, 0, 0, 0, 1)'},
+ {at: 1, expect: 'translate3d(4px, -12px, 8px) skewX(2rad) matrix(1, 0, 0, 2, 0, 0)'},
+ {at: 2, expect: 'translate3d(0px, -20px, 4px) skewX(3rad) matrix3d(1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0.0025, 0, 0, 0, 1)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'translate3D(100px, 200px, 300px)',
+ to: 'none'
+}, [
+ {at: -1, expect: 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 400, 600, 1)'},
+ {at: 0, expect: 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 200, 300, 1)'},
+ {at: 0.25, expect: 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 75, 150, 225, 1)'},
+ {at: 0.75, expect: 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 25, 50, 75, 1)'},
+ {at: 1, expect: 'matrix(1, 0, 0, 1, 0, 0) '},
+ {at: 2, expect: 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -100, -200, -300, 1)'},
+]);
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-005.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-005.html
new file mode 100644
index 00000000000..451850f2556
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-005.html
@@ -0,0 +1,268 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>transform interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-transforms/#transform-property">
+<meta name="assert" content="transform supports animation as a transform list">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.target {
+ color: white;
+ width: 100px;
+ height: 100px;
+ background-color: black;
+ display: inline-block;
+ overflow: hidden;
+}
+.expected {
+ background-color: green;
+}
+.target > div {
+ width: 10px;
+ height: 10px;
+ display: inline-block;
+ background: orange;
+ margin: 1px;
+}
+.test {
+ overflow: hidden;
+}
+</style>
+
+<body>
+ <template id="target-template">
+ <div></div>
+ </template>
+</body>
+
+<script>
+// Matrix transforms:
+
+// 2D matrix transforms:
+//
+// [m11 m21 0 m41] [1 0 0 Tx] [cos(R) -sin(R) 0 0] [1 K 0 0] [Sx 0 0 0]
+// [m12 m22 0 m42] = [0 1 0 Ty] [sin(R) cos(R) 0 0] [0 1 0 0] [0 Sy 0 0]
+// [ 0 0 1 0 ] [0 0 1 0 ] [ 0 0 1 0] [0 0 1 0] [0 0 1 0]
+// [ 0 0 0 1 ] [0 0 0 1 ] [ 0 0 0 1] [0 0 0 1] [0 0 0 1]
+//
+// M = translate * rotate * skew * scale
+// See also webkit-transform-interpolation-005.html
+//
+
+const cos30 = Math.cos(Math.PI / 6);
+const sin30 = Math.sin(Math.PI / 6);
+const cos45 = Math.cos(Math.PI / 4);
+const sin45 = Math.sin(Math.PI / 4);
+const cos60 = Math.cos(Math.PI / 3);
+const sin60 = Math.sin(Math.PI / 3);
+
+// translateY(-6px) -> translateX(6px) rotate(90deg) scaleX(7)
+test_interpolation({
+ property: 'transform',
+ from: 'matrix(1, 0, 0, 1, 0, -6)',
+ to: 'matrix(0, 7, -1, 0, 6, 0)'
+}, [
+ {at: -1, expect: 'matrix(0, 5, 1, 0, -6, -12)'},
+ {at: 0, expect: 'matrix(1, 0, 0, 1, 0, -6)'},
+ {
+ at: 1/3,
+ expect: `matrix(${3 * cos30}, ${3 * sin30}, -${sin30}, ${cos30}, 2, -4)`
+ },
+ {
+ at: 0.5,
+ expect: `matrix(${4 * cos45}, ${4 * sin45}, -${sin45}, ${cos45}, 3, -3)`
+ },
+ {
+ at: 2/3,
+ expect: `matrix(${5 * cos60}, ${5 * sin60}, -${sin60}, ${cos60}, 4, -2)`
+ },
+ {at: 1, expect: 'matrix(0, 7, -1, 0, 6, 0)'},
+ {at: 2, expect: 'matrix(-13, 0, 0, -1, 12, 6)'}
+]);
+
+// translateX(6px) rotate(90deg) scaleX(7) -> translateY(-6px)
+test_interpolation({
+ property: 'transform',
+ from: 'matrix(0, 7, -1, 0, 6, 0)',
+ to: 'matrix(1, 0, 0, 1, 0, -6)',
+}, [
+ {at: -1, expect: 'matrix(-13, 0, 0, -1, 12, 6)'},
+ {at: 0, expect: 'matrix(0, 7, -1, 0, 6, 0)'},
+ {
+ at: 1/3,
+ expect: `matrix(${5 * cos60}, ${5 * sin60}, -${sin60}, ${cos60}, 4, -2)`
+ },
+ {
+ at: 0.5,
+ expect: `matrix(${4 * cos45}, ${4 * sin45}, -${sin45}, ${cos45}, 3, -3)`
+ },
+ {
+ at: 2/3,
+ expect: `matrix(${3 * cos30}, ${3 * sin30}, -${sin30}, ${cos30}, 2, -4)`
+ },
+ {at: 1, expect: 'matrix(1, 0, 0, 1, 0, -6)'},
+ {at: 2, expect: 'matrix(0, 5, 1, 0, -6, -12)'}
+]);
+
+// scaleY(7) -> skewX(45deg) scaleX(7)
+test_interpolation({
+ property: 'transform',
+ from: 'matrix(1, 0, 0, 7, 0, 0)',
+ to: 'matrix(7, 0, 1, 1, 0, 0)'
+}, [
+ {at: -1, expect: 'matrix(-5, 0, -13, 13, 0, 0)'},
+ {at: 0, expect: 'matrix(1, 0, 0, 7, 0, 0)'},
+ {at: 1/3, expect: 'matrix(3, 0, 1.6667, 5, 0, 0)'},
+ {at: 0.5, expect: 'matrix(4, 0, 2, 4, 0, 0)'},
+ {at: 2/3, expect: 'matrix(5, 0, 2, 3, 0, 0)'},
+ {at: 1, expect: `matrix(7, 0, 1, 1, 0, 0)`},
+ {at: 2, expect: `matrix(13, 0, -10, -5, 0, 0)`}
+]);
+
+// none -> translateX(6px) skewX(45deg) scaleX(7) scaleY(2)
+test_interpolation({
+ property: 'transform',
+ from: 'none',
+ to: 'matrix(7, 0, 2, 2, 6, 0)'
+}, [
+ {at: -1, expect: 'matrix(-5, 0, 0, 0, -6, 0)'},
+ {at: 0, expect: 'matrix(1, 0, 0, 1, 0, 0)'},
+ {at: 0.25, expect: 'matrix(2.5, 0, 0.31, 1.25, 1.5, 0)'},
+ {at: 0.5, expect: 'matrix(4, 0, 0.75, 1.5, 3, 0)'},
+ {at: 0.75, expect: 'matrix(5.5, 0, 1.31, 1.75, 4.5, 0)'},
+ {at: 1, expect: 'matrix(7, 0, 2, 2, 6, 0)'},
+ {at: 2, expect: 'matrix(13, 0, 6, 3, 12, 0)'}
+]);
+
+// translateY(-6px) scale(3, 5) -> none
+test_interpolation({
+ property: 'transform',
+ from: 'matrix(3, 0, 0, 5, 0, -6)',
+ to: 'none'
+}, [
+ {at: -1, expect: 'matrix(5, 0, 0, 9, 0, -12)'},
+ {at: 0, expect: 'matrix(3, 0, 0, 5, 0, -6)'},
+ {at: 0.25, expect: 'matrix(2.5, 0, 0, 4, 0, -4.5)'},
+ {at: 0.5, expect: 'matrix(2, 0, 0, 3, 0, -3)'},
+ {at: 0.75, expect: 'matrix(1.5, 0, 0, 2, 0, -1.5)'},
+ {at: 1, expect: 'matrix(1, 0, 0, 1, 0, 0)'},
+ {at: 2, expect: 'matrix(-1, 0, 0, -3, 0, 6)'}
+]);
+
+// 3-D matrix transforms.
+// TODO(kevers): Revisit 3D transform examples. It is difficult to infer
+// the quality of the matrix decompositions from the expected output.
+test_interpolation({
+ property: 'transform',
+ from: 'none',
+ to: 'matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)'
+}, [
+ {at: -1, expect: 'matrix3d(0, 0, 0, 0, 0, -1, 0, 0, 1.682941969615793, 0, -1.0806046117362795, 0, 0, 0, 0, 1)'},
+ {at: 0, expect: 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)'},
+ {at: 0.25, expect: 'matrix3d(1.211140527138306, 0, -0.30925494906815365, 0, 0, 1.5, 0, 0, 0.43295692869541513, 0, 1.6955967379936283, 0, 0, 0, 0, 1)'},
+ {at: 0.75, expect: 'matrix3d(1.2804555205291865, 0, -1.1928678300408346, 0, 0, 2.5, 0, 0, 2.215325970075836, 0, 2.377988823839918, 0, 0, 0, 0, 1)'},
+ {at: 1, expect: 'matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)'},
+ {at: 2, expect: 'matrix3d(-1.2484405096414273, 0, -2.727892280477045, 0, 0, 5, 0, 0, 6.365081987779772, 0, -2.9130278558299967, 0, 0, 0, 0, 1)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)',
+ to: 'none'
+}, [
+ {at: -1, expect: 'matrix3d(-1.2484405096414273, 0, -2.727892280477045, 0, 0, 5, 0, 0, 6.365081987779772, 0, -2.9130278558299967, 0, 0, 0, 0, 1)'},
+ {at: 0, expect: 'matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)'},
+ {at: 0.25, expect: 'matrix3d(1.2804555205291865, 0, -1.1928678300408346, 0, 0, 2.5, 0, 0, 2.215325970075836, 0, 2.377988823839918, 0, 0, 0, 0, 1)'},
+ {at: 0.75, expect: 'matrix3d(1.211140527138306, 0, -0.30925494906815365, 0, 0, 1.5, 0, 0, 0.43295692869541513, 0, 1.6955967379936283, 0, 0, 0, 0, 1)'},
+ {at: 1, expect: 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)'},
+ {at: 2, expect: 'matrix3d(0, 0, 0, 0, 0, -1, 0, 0, 1.682941969615793, 0, -1.0806046117362795, 0, 0, 0, 0, 1)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)',
+ to: 'matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)'
+}, [
+ {at: -1, expect: 'matrix3d(1.9877532948000005, 0.0, 0.0, 0.0, 0.0, 2.7492749567000003, 0.0, 0.0, 0.0, 0.0, 2.5165290423999997, 0.0, 20.2343946258, 21.1087405532, 21.371164870599998, 1.0)'},
+ {at: 0, expect: 'matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)'},
+ {at: 0.25, expect: 'matrix3d(2.441256919175, 0.0, 0.0, 0.0, 0.0, 2.571299218825, 0.0, 0.0, 0.0, 0.0, 2.6947530634, 0.0, 20.35889062555, 20.561444082325, 20.800684839349998, 1.0)'},
+ {at: 0.75, expect: 'matrix3d(2.622658368925, 0.0, 0.0, 0.0, 0.0, 2.500108923675, 0.0, 0.0, 0.0, 0.0, 2.7660426718, 0.0, 20.408689025450002, 20.342525493975, 20.572492826850002, 1.0)'},
+ {at: 1, expect: 'matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)'},
+ {at: 2, expect: 'matrix3d(3.0761619932999995, 0.0, 0.0, 0.0, 0.0, 2.3221331858, 0.0, 0.0, 0.0, 0.0, 2.9442666928000003, 0.0, 20.5331850252, 19.7952290231, 20.002012795600002, 1.0)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'none',
+ to: 'matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)'
+}, [
+ {at: -1, expect: 'matrix3d(-0.0000000000000002377810622383943, -1.0671050586638147, -0.08972656766237302, 1.3740432449326199, 0.98484601036295, -2.653201092395309, 0.6753819540610847, 3.6127240080250744, -2.7988839807429846, -1.2090004194153336, -0.5183744226115445, -0.7936088631686278, 1.1875, 0.0625, -1.3125, 5.340768914473683)'},
+ {at: 0, expect: 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)'},
+ {at: 0.25, expect: 'matrix3d(0.9041890962319094, 0.3522701519297133, -0.15240204298176957, -0.1428256720529315, -0.7579798772527586, 0.6803606288839232, -0.05133336076757235, 0.37904689530895724, -0.1957679784745485, 0.38554138029509327, 0.8226186974340638, 0.3370288143441876, -0.296875, -0.015625, 0.328125, 0.5930529142680923)'},
+ {at: 0.75, expect: 'matrix3d(0.35007413226026135, 0.7254385504141292, -0.4977009150941454, 0.09582061929004702, -1.1027525038949482, -0.5884810398827429, 0.4516829688651701, 0.5447944343861767, -0.68717798815684, 0.2657772247405681, 0.5465690479810023, 1.0836207863885503, -0.890625, -0.046875, 0.984375, 0.5930529142680927)'},
+ {at: 1, expect: 'matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)'},
+ {at: 2, expect: 'matrix3d(-0.5844534449366048, -0.42278005999296053, -0.4650580659922564, -0.6817595809063256, 0.9156938760088464, 0.3851647027225889, 0.9244443507516923, 0.7218225020358241, -0.0803568793574344, 0.1719974850210706, -0.49676609633513097, -0.25968177786904373, -2.375, -0.125, 2.625, 5.340768914473685)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)',
+ to: 'matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)'
+}, [
+ {at: -1, expect: 'matrix3d(-0.6299594065765657, -0.10825090106268696, -0.20133311671001855, 5.485724217214554, 6.358051978686152, 0.16496896269344588, 1.5760051143537075, -54.21568355620423, 0.7106057459805782, -1.1596356050622005, -0.11495342545397585, -4.913752963990824, -1.03125, -1.125, 3.5625, -5.901513951904114)'},
+ {at: 0, expect: 'matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)'},
+ {at: 0.25, expect: 'matrix3d(0.33652832679595723, 0.55254445148386, -0.7544724447833296, 0.22700224951774267, -0.69720168363685, -0.036373245768780864, 0.28149188169180933, -0.2845156818045006, -0.24737156018941048, 0.31207160370190334, 0.4564821058052897, 0.9220853089096839, -1.2265625, 0.203125, 0.75, 1.647016932991011)'},
+ {at: 0.75, expect: 'matrix3d(0.6861191524977764, -0.18025672746204927, -0.8710297237546482, 0.6072134247444672, 0.2819931018922366, 0.27778974607679663, -0.6540128246146626, 0.5063632314069845, 0.5509562084361049, -0.3215202993119732, 0.5459062603735321, 2.8697154005492105, -1.3046875, 0.734375, -0.375, 1.6470169329910096)'},
+ {at: 1, expect: 'matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)'},
+ {at: 2, expect: 'matrix3d(-1.1789992641434441, -0.7109729379601547, -0.4455746537954199, -21.703089533128907, -0.11137581475421703, -0.08822983871000473, -0.05695380894007451, -2.22667264132605, -3.1443917136741506, 1.8952588096345078, 2.426615889772007, -21.697523130750138, -1.5, 2.0625, -3.1875, -5.901513951904121)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)',
+ to: 'none'
+}, [
+ {at: -1, expect: 'matrix3d(-0.6413028394192518, -1.0702420910513302, -0.5807595966791961, -18.02447171345163, 0.8211815704840004, 1.0980679097347057, 0.9399408862655454, 22.460730852026064, 0.28421009261178104, -0.5408346238741739, 0.5194791363698213, 3.075163035391172, -2.6875, 2, -1.875, -14.881239394516232)'},
+ {at: 0, expect: 'matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)'},
+ {at: 0.25, expect: 'matrix3d(0.7912976716694541, -0.4517927901159618, -0.6868745974719376, 1.2522201536338506, 0.7952183069582651, 0.06340410955800829, -0.7956629784232128, 2.2561737435012983, 0.345639443327071, -0.8934490945546473, 0.830131443385676, 1.2606901484983566, -1.0078125, 0.75, -0.703125, 2.4888661932358946)'},
+ {at: 0.75, expect: 'matrix3d(1.0093457700315165, -0.12746048375025829, -0.24746788943106088, 1.3202120308857304, 0.6128364656690982, 0.7600694601651116, -0.22233359857303325, 1.4081483224940277, 0.21669805381113447, -0.3786082265932788, 0.908354523914928, 0.6747509193960347, -0.3359375, 0.25, -0.234375, 2.4888661932358964)'},
+ {at: 1, expect: 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)'},
+ {at: 2, expect: 'matrix3d(0.39048513570444376, 0.14780794797065988, 0.6963068100217401, -4.857907861239344, -2.967682789284791, 0.6004978769584385, -3.5472376016872444, 26.675324787979896, -2.5953724498995308, 1.6280843851961373, 0.8163834310586356, 9.001735256585825, 1.34375, -1, 0.9375, -14.881239394516227)'},
+]);
+
+// Mismatched interpolation with an empty list should not use decomposition.
+test_interpolation({
+ property: 'transform',
+ from: 'none',
+ to: 'rotate(180deg)'
+}, [
+ {at: -1, expect: 'rotate(-180deg)'},
+ {at: 0, expect: 'rotate(0deg)'},
+ {at: 0.25, expect: 'rotate(45deg)'},
+ {at: 0.75, expect: 'rotate(135deg)'},
+ {at: 1, expect: 'rotate(180deg)'},
+ {at: 2, expect: 'rotate(360deg)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'rotate(180deg)',
+ to: 'none'
+}, [
+ {at: -1, expect: 'rotate(360deg)'},
+ {at: 0, expect: 'rotate(180deg)'},
+ {at: 0.25, expect: 'rotate(135deg)'},
+ {at: 0.75, expect: 'rotate(45deg)'},
+ {at: 1, expect: 'rotate(0deg)'},
+ {at: 2, expect: 'rotate(-180deg)'},
+]);
+test_interpolation({
+ property: 'transform',
+ from: 'none',
+ to: 'rotate(360deg)'
+}, [
+ {at: -1, expect: 'rotate(-360deg)'},
+ {at: 0, expect: 'rotate(0deg)'},
+ {at: 0.25, expect: 'rotate(90deg)'},
+ {at: 0.75, expect: 'rotate(270deg)'},
+ {at: 1, expect: 'rotate(360deg)'},
+ {at: 2, expect: 'rotate(720deg)'},
+]);
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-006.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-006.html
new file mode 100644
index 00000000000..c69bad7c93b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-interpolation-006.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>transform interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-transforms/#transform-property">
+<meta name="assert" content="transform supports animation as a transform list">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ transform: translate(30px);
+}
+.target {
+ color: white;
+ width: 100px;
+ height: 100px;
+ background-color: black;
+ display: inline-block;
+ overflow: hidden;
+ transform: translate(10px);
+}
+.expected {
+ background-color: green;
+}
+.parent {
+ transform: 30px;
+}
+.target > div {
+ width: 10px;
+ height: 10px;
+ display: inline-block;
+ background: orange;
+ margin: 1px;
+}
+.test {
+ overflow: hidden;
+}
+</style>
+
+<body>
+ <template id="target-template">
+ <div></div>
+ </template>
+</body>
+
+<script>
+test_interpolation({
+ property: 'transform',
+ from: neutralKeyframe,
+ to: 'translate(20px)',
+}, [
+ {at: -1, expect: 'translate(0px)'},
+ {at: 0, expect: 'translate(10px)'},
+ {at: 0.25, expect: 'translate(12.5px)'},
+ {at: 0.75, expect: 'translate(17.5px)'},
+ {at: 1, expect: 'translate(20px)'},
+ {at: 2, expect: 'translate(30px)'},
+]);
+
+test_interpolation({
+ property: 'transform',
+ from: 'initial',
+ to: 'translate(20px)',
+}, [
+ {at: -1, expect: 'translate(-20px)'},
+ {at: 0, expect: 'translate(0px)'},
+ {at: 0.25, expect: 'translate(5px)'},
+ {at: 0.75, expect: 'translate(15px)'},
+ {at: 1, expect: 'translate(20px)'},
+ {at: 2, expect: 'translate(40px)'},
+]);
+
+test_interpolation({
+ property: 'transform',
+ from: 'inherit',
+ to: 'translate(20px)',
+}, [
+ {at: -1, expect: 'translate(40px)'},
+ {at: 0, expect: 'translate(30px)'},
+ {at: 0.25, expect: 'translate(27.5px)'},
+ {at: 0.75, expect: 'translate(22.5px)'},
+ {at: 1, expect: 'translate(20px)'},
+ {at: 2, expect: 'translate(10px)'},
+]);
+
+test_interpolation({
+ property: 'transform',
+ from: 'unset',
+ to: 'translate(20px)',
+}, [
+ {at: -1, expect: 'translate(-20px)'},
+ {at: 0, expect: 'translate(0px)'},
+ {at: 0.25, expect: 'translate(5px)'},
+ {at: 0.75, expect: 'translate(15px)'},
+ {at: 1, expect: 'translate(20px)'},
+ {at: 2, expect: 'translate(40px)'},
+]);
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-origin-interpolation.html b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-origin-interpolation.html
new file mode 100644
index 00000000000..02b8b59b0b9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transforms/animation/transform-origin-interpolation.html
@@ -0,0 +1,125 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>transform-origin interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-transforms/#transform-origin-property">
+<meta name="assert" content="transform supports animation by computed value">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ transform-origin: 30px 10px;
+}
+.target {
+ display: inline-block;
+ margin-top: 50px;
+ margin-bottom: 25px;
+ width: 50px;
+ height: 50px;
+ background: red;
+ transform: scale(1.5);
+ transform-origin: 10px 30px;
+}
+.expected {
+ background: green;
+ position: relative;
+ left: -50px;
+}
+</style>
+
+<body></body>
+
+<script>
+test_interpolation({
+ property: 'transform-origin',
+ from: neutralKeyframe,
+ to: '20px 20px',
+}, [
+ {at: -0.3, expect: '7px 33px'},
+ {at: 0, expect: '10px 30px'},
+ {at: 0.3, expect: '13px 27px'},
+ {at: 0.6, expect: '16px 24px'},
+ {at: 1, expect: '20px 20px'},
+ {at: 1.5, expect: '25px 15px'},
+]);
+
+test_interpolation({
+ property: 'transform-origin',
+ from: 'initial',
+ to: '20px 20px',
+}, [
+ {at: -0.3, expect: '26.5px 26.5px'},
+ {at: 0, expect: '25px 25px'},
+ {at: 0.3, expect: '23.5px 23.5px'},
+ {at: 0.6, expect: '22px 22px'},
+ {at: 1, expect: '20px 20px'},
+ {at: 1.5, expect: '17.5px 17.5px'},
+]);
+
+test_interpolation({
+ property: 'transform-origin',
+ from: 'inherit',
+ to: '20px 20px',
+}, [
+ {at: -0.3, expect: '33px 7px'},
+ {at: 0, expect: '30px 10px'},
+ {at: 0.3, expect: '27px 13px'},
+ {at: 0.6, expect: '24px 16px'},
+ {at: 1, expect: '20px 20px'},
+ {at: 1.5, expect: '15px 25px'},
+]);
+
+test_interpolation({
+ property: 'transform-origin',
+ from: 'unset',
+ to: '20px 20px',
+}, [
+ {at: -0.3, expect: '26.5px 26.5px'},
+ {at: 0, expect: '25px 25px'},
+ {at: 0.3, expect: '23.5px 23.5px'},
+ {at: 0.6, expect: '22px 22px'},
+ {at: 1, expect: '20px 20px'},
+ {at: 1.5, expect: '17.5px 17.5px'},
+]);
+
+test_interpolation({
+ property: 'transform-origin',
+ from: 'top left',
+ to: 'bottom right',
+}, [
+ {at: -0.3, expect: '-15px -15px'},
+ {at: 0, expect: '0px 0px'},
+ {at: 0.3, expect: '15px 15px'},
+ {at: 0.6, expect: '30px 30px'},
+ {at: 1, expect: '50px 50px'},
+ {at: 1.5, expect: '75px 75px'},
+]);
+
+test_interpolation({
+ property: 'transform-origin',
+ from: 'center center',
+ to: '0% 100px',
+}, [
+ {at: -0.3, expect: '32.5px 2.5px'},
+ {at: 0, expect: '25px 25px'},
+ {at: 0.3, expect: '17.5px 47.5px'},
+ {at: 0.6, expect: '10px 70px'},
+ {at: 1, expect: '0px 100px'},
+ {at: 1.5, expect: '-12.5px 137.5px'},
+]);
+
+test_interpolation({
+ property: 'transform-origin',
+ from: '0% 50% 5px',
+ to: '100% 150% 0px'
+}, [
+ {at: -0.3, expect: '-30% 20% 6.5px'},
+ {at: 0, expect: '0% 50% 5px'},
+ {at: 0.3, expect: '30% 80% 3.5px'},
+ {at: 0.6, expect: '60% 110% 2px'},
+ {at: 1, expect: '100% 150% 0px'},
+ {at: 1.5, expect: '150% 200% -2.5px'},
+]);
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/interfaces.html b/tests/wpt/web-platform-tests/css/css-typed-om/idlharness.html
index 976bb32f2f8..976bb32f2f8 100644
--- a/tests/wpt/web-platform-tests/css/css-typed-om/interfaces.html
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/idlharness.html
diff --git a/tests/wpt/web-platform-tests/css/css-variables/variable-substitution-background-properties.html b/tests/wpt/web-platform-tests/css/css-variables/variable-substitution-background-properties.html
index 1f19bc5f4c0..88108866209 100644
--- a/tests/wpt/web-platform-tests/css/css-variables/variable-substitution-background-properties.html
+++ b/tests/wpt/web-platform-tests/css/css-variables/variable-substitution-background-properties.html
@@ -83,7 +83,7 @@
{
testName:"background-image-radial-gradient",
propertyName:"background-image",
- expectedValue:"radial-gradient(at 25px 25px, black 10%, green 90%)",
+ expectedValue:"radial-gradient(at 25px 25px, rgb(0, 0, 0) 10%, rgb(0, 128, 0) 90%)",
},
];
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001.html
deleted file mode 100644
index cc86fd4a251..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001.html
+++ /dev/null
@@ -1,1557 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: Test orientation of characters.</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<meta name="assert" content="Test orientation of characters">
-<meta name="flags" content="dom combo">
-<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-.test {
- font: 16px/1 "orientation";
- height: 17em;
- writing-mode: vertical-rl;
-}
-.line {
- white-space: pre;
-}
-.U {
- text-orientation: upright;
-}
-.R {
- text-orientation: sideways;
-}
-#details {
- margin: 1em .5em;
-}
-summary {
- font-size: 1.2em;
- font-weight: bold;
- margin-top: .5em;
-}
-</style>
-<div id="log"></div>
-<div id="details"></div>
-<div id="container">
-<div data-vo="R" class="test">
-<div data-block="Basic">
-<div class="line"> !&#34;#$%&amp;&#39;()*+,-./0123456789:;&lt;=&gt;?</div>
-<div class="line">@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_</div>
-<div class="line">`abcdefghijklmnopqrstuvwxyz{|}~</div>
-</div>
-<div data-block="Latin">
-<div class="line"> ¡¢£¤¥¦¨ª«¬¯°²³´µ¶·¸¹º»¿ÀÁÂÃÄÅÆÇ</div>
-<div class="line">ÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçè</div>
-<div class="line">éêëìíîïðñòóôõöøùúûüýþÿĀāĂ㥹ĆćĈĉ</div>
-<div class="line">ĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩ</div>
-<div class="line">ĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼn</div>
-<div class="line">ŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũ</div>
-<div class="line">ŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſƀƁƂƃƄƅƆƇƈƉ</div>
-<div class="line">ƊƋƌƍƎƏƐƑƒƓƔƕƖƗƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩ</div>
-<div class="line">ƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿǀǁǂǃDŽDždžLJLjlj</div>
-<div class="line">NJNjnjǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜǝǞǟǠǡǢǣǤǥǦǧǨǩ</div>
-<div class="line">ǪǫǬǭǮǯǰDZDzdzǴǵǶǷǸǹǺǻǼǽǾǿȀȁȂȃȄȅȆȇȈȉ</div>
-<div class="line">ȊȋȌȍȎȏȐȑȒȓȔȕȖȗȘșȚțȜȝȞȟȠȡȢȣȤȥȦȧȨȩ</div>
-<div class="line">ȪȫȬȭȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀɁɂɃɄɅɆɇɈɉ</div>
-<div class="line">ɊɋɌɍɎɏ</div>
-</div>
-<div data-block="IPA">
-<div class="line">ɐɑɒɓɔɕɖɗɘəɚɛɜɝɞɟɠɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯ</div>
-<div class="line">ɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀʁʂʃʄʅʆʇʈʉʊʋʌʍʎʏ</div>
-<div class="line">ʐʑʒʓʔʕʖʗʘʙʚʛʜʝʞʟʠʡʢʣʤʥʦʧʨʩʪʫʬʭʮʯ</div>
-</div>
-<div data-block="Spacing">
-<div class="line">ʰʱʲʳʴʵʶʷʸʹʺʻʼʽʾʿˀˁ˂˃˄˅ˆˇˈˉˊˋˌˍˎˏ</div>
-<div class="line">ːˑ˒˓˔˕˖˗˘˙˚˛˜˝˞˟ˠˡˢˣˤ˥˦˧˨˩ˬ˭ˮ˯˰˱</div>
-<div class="line">˲˳˴˵˶˷˸˹˺˻˼˽˾˿</div>
-</div>
-<div data-block="Greek">
-<div class="line">ͰͱͲͳʹ͵Ͷͷͺͻͼͽ;Ϳ΄΅Ά·ΈΉΊΌΎΏΐΑΒΓΔΕΖΗ</div>
-<div class="line">ΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθ</div>
-<div class="line">ικλμνξοπρςστυφχψωϊϋόύώϏϐϑϒϓϔϕϖϗϘ</div>
-<div class="line">ϙϚϛϜϝϞϟϠϡϢϣϤϥϦϧϨϩϪϫϬϭϮϯϰϱϲϳϴϵ϶Ϸϸ</div>
-<div class="line">ϹϺϻϼϽϾϿ</div>
-</div>
-<div data-block="Cyrillic">
-<div class="line">ЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОП</div>
-<div class="line">РСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп</div>
-<div class="line">рстуфхцчшщъыьэюяѐёђѓєѕіїјљњћќѝўџ</div>
-<div class="line">ѠѡѢѣѤѥѦѧѨѩѪѫѬѭѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿ</div>
-<div class="line">Ҁҁ҂ҊҋҌҍҎҏҐґҒғҔҕҖҗҘҙҚқҜҝҞҟҠҡҢңҤҥҦ</div>
-<div class="line">ҧҨҩҪҫҬҭҮүҰұҲҳҴҵҶҷҸҹҺһҼҽҾҿӀӁӂӃӄӅӆ</div>
-<div class="line">ӇӈӉӊӋӌӍӎӏӐӑӒӓӔӕӖӗӘәӚӛӜӝӞӟӠӡӢӣӤӥӦ</div>
-<div class="line">ӧӨөӪӫӬӭӮӯӰӱӲӳӴӵӶӷӸӹӺӻӼӽӾӿԀԁԂԃԄԅԆ</div>
-<div class="line">ԇԈԉԊԋԌԍԎԏԐԑԒԓԔԕԖԗԘԙԚԛԜԝԞԟԠԡԢԣԤԥԦ</div>
-<div class="line">ԧԨԩԪԫԬԭԮԯ</div>
-</div>
-<div data-block="Armenian">
-<div class="line">ԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐ</div>
-<div class="line">ՑՒՓՔՕՖՙ՚՛՜՝՞՟աբգդեզէըթժիլխծկհձղճ</div>
-<div class="line">մյնշոչպջռսվտրցւփքօֆև։֊֍֎֏</div>
-</div>
-<div data-block="Hebrew">
-<div class="line">־׀׃׆אבגדהוזחטיךכלםמןנסעףפץצקרשתװ</div>
-<div class="line">ױײ׳״</div>
-</div>
-<div data-block="Arabic">
-<div class="line">؆؇؈؉؊؋،؍؎؏؛؞؟ؠءآأؤإئابةتثجحخدذرز</div>
-<div class="line">سشصضطظعغػؼؽؾؿـفقكلمنهوىي٠١٢٣٤٥٦٧</div>
-<div class="line">٨٩٪٫٬٭ٮٯٱٲٳٴٵٶٷٸٹٺٻټٽپٿڀځڂڃڄڅچڇڈ</div>
-<div class="line">ډڊڋڌڍڎڏڐڑڒړڔڕږڗژڙښڛڜڝڞڟڠڡڢڣڤڥڦڧڨ</div>
-<div class="line">کڪګڬڭڮگڰڱڲڳڴڵڶڷڸڹںڻڼڽھڿۀہۂۃۄۅۆۇۈ</div>
-<div class="line">ۉۊۋیۍێۏېۑےۓ۔ە۞ۥۦ۩ۮۯ۰۱۲۳۴۵۶۷۸۹ۺۻۼ</div>
-<div class="line">۽۾ۿ</div>
-</div>
-<div data-block="Syriac">
-<div class="line">܀܁܂܃܄܅܆܇܈܉܊܋܌܍ܐܒܓܔܕܖܗܘܙܚܛܜܝܞܟܠܡܢ</div>
-<div class="line">ܣܤܥܦܧܨܩܪܫܬܭܮܯݍݎݏ</div>
-</div>
-<div data-block="Arabic">
-<div class="line">ݐݑݒݓݔݕݖݗݘݙݚݛݜݝݞݟݠݡݢݣݤݥݦݧݨݩݪݫݬݭݮݯ</div>
-<div class="line">ݰݱݲݳݴݵݶݷݸݹݺݻݼݽݾݿ</div>
-</div>
-<div data-block="Thaana">
-<div class="line">ހށނރބޅކއވމފދތލގޏސޑޒޓޔޕޖޗޘޙޚޛޜޝޞޟ</div>
-<div class="line">ޠޡޢޣޤޥޱ</div>
-</div>
-<div data-block="NKo">
-<div class="line">߀߁߂߃߄߅߆߇߈߉ߊߋߌߍߎߏߐߑߒߓߔߕߖߗߘߙߚߛߜߝߞߟ</div>
-<div class="line">ߠߡߢߣߤߥߦߧߨߩߪߴߵ߶߷߸߹ߺ</div>
-</div>
-<div data-block="Samaritan">
-<div class="line">ࠀࠁࠂࠃࠄࠅࠆࠇࠈࠉࠊࠋࠌࠍࠎࠏࠐࠑࠒࠓࠔࠕࠚࠤࠨ࠰࠱࠲࠳࠴࠵࠶</div>
-<div class="line">࠷࠸࠹࠺࠻࠼࠽࠾</div>
-</div>
-<div data-block="Mandaic">
-<div class="line">ࡀࡁࡂࡃࡄࡅࡆࡇࡈࡉࡊࡋࡌࡍࡎࡏࡐࡑࡒࡓࡔࡕࡖࡗࡘ࡞</div>
-</div>
-<div data-block="Arabic">
-<div class="line">ࢠࢡࢢࢣࢤࢥࢦࢧࢨࢩࢪࢫࢬࢭࢮࢯࢰࢱࢲࢳࢴࢶࢷࢸࢹࢺࢻࢼࢽ</div>
-</div>
-<div data-block="Devanagari">
-<div class="line">ऄअआइईउऊऋऌऍऎएऐऑऒओऔकखगघङचछजझञटठडढण</div>
-<div class="line">तथदधनऩपफबभमयरऱलळऴवशषसहऽॐक़ख़ग़ज़ड़ढ़फ़य़</div>
-<div class="line">ॠॡ।॥०१२३४५६७८९॰ॱॲॳॴॵॶॷॸॹॺॻॼॽॾॿ</div>
-</div>
-<div data-block="Bengali">
-<div class="line">ঀঅআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধ</div>
-<div class="line">নপফবভমযরলশষসহঽৎড়ঢ়য়ৠৡ০১২৩৪৫৬৭৮৯ৰৱ</div>
-<div class="line">৲৳৴৵৶৷৸৹৺৻</div>
-</div>
-<div data-block="Gurmukhi">
-<div class="line">ਅਆਇਈਉਊਏਐਓਔਕਖਗਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਪਫ</div>
-<div class="line">ਬਭਮਯਰਲਲ਼ਵਸ਼ਸਹਖ਼ਗ਼ਜ਼ੜਫ਼੦੧੨੩੪੫੬੭੮੯ੲੳੴ</div>
-</div>
-<div data-block="Gujarati">
-<div class="line">અઆઇઈઉઊઋઌઍએઐઑઓઔકખગઘઙચછજઝઞટઠડઢણતથદ</div>
-<div class="line">ધનપફબભમયરલળવશષસહઽૐૠૡ૦૧૨૩૪૫૬૭૮૯૰૱</div>
-<div class="line">ૹ</div>
-</div>
-<div data-block="Oriya">
-<div class="line">ଅଆଇଈଉଊଋଌଏଐଓଔକଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନ</div>
-<div class="line">ପଫବଭମଯରଲଳଵଶଷସହଽଡ଼ଢ଼ୟୠୡ୦୧୨୩୪୫୬୭୮୯୰ୱ</div>
-<div class="line">୲୳୴୵୶୷</div>
-</div>
-<div data-block="Tamil">
-<div class="line">ஃஅஆஇஈஉஊஎஏஐஒஓஔகஙசஜஞடணதநனபமயரறலளழவ</div>
-<div class="line">ஶஷஸஹௐ௦௧௨௩௪௫௬௭௮௯௰௱௲௳௴௵௶௷௸௹௺</div>
-</div>
-<div data-block="Telugu">
-<div class="line">అఆఇఈఉఊఋఌఎఏఐఒఓఔకఖగఘఙచఛజఝఞటఠడఢణతథద</div>
-<div class="line">ధనపఫబభమయరఱలళఴవశషసహఽౘౙౚౠౡ౦౧౨౩౪౫౬౭</div>
-<div class="line">౮౯౸౹౺౻౼౽౾౿</div>
-</div>
-<div data-block="Kannada">
-<div class="line">ಀಅಆಇಈಉಊಋಌಎಏಐಒಓಔಕಖಗಘಙಚಛಜಝಞಟಠಡಢಣತಥ</div>
-<div class="line">ದಧನಪಫಬಭಮಯರಱಲಳವಶಷಸಹಽೞೠೡ೦೧೨೩೪೫೬೭೮೯</div>
-<div class="line">ೱೲ</div>
-</div>
-<div data-block="Malayalam">
-<div class="line">അആഇഈഉഊഋഌഎഏഐഒഓഔകഖഗഘങചഛജഝഞടഠഡഢണതഥദ</div>
-<div class="line">ധനഩപഫബഭമയരറലളഴവശഷസഹഺഽൎ൏ൔൕൖ൘൙൚൛൜൝</div>
-<div class="line">൞ൟൠൡ൦൧൨൩൪൫൬൭൮൯൰൱൲൳൴൵൶൷൸൹ൺൻർൽൾൿ</div>
-</div>
-<div data-block="Sinhala">
-<div class="line">අආඇඈඉඊඋඌඍඎඏඐඑඒඓඔඕඖකඛගඝඞඟචඡජඣඤඥඦට</div>
-<div class="line">ඨඩඪණඬතථදධනඳපඵබභමඹයරලවශෂසහළෆ෦෧෨෩෪</div>
-<div class="line">෫෬෭෮෯෴</div>
-</div>
-<div data-block="Thai">
-<div class="line">กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภ</div>
-<div class="line">มยรฤลฦวศษสหฬอฮฯะา฿เแโใไๅๆ๏๐๑๒๓๔๕</div>
-<div class="line">๖๗๘๙๚๛</div>
-</div>
-<div data-block="Lao">
-<div class="line">ກຂຄງຈຊຍດຕຖທນບປຜຝພຟມຢຣລວສຫອຮຯະາຽເ</div>
-<div class="line">ແໂໃໄໆ໐໑໒໓໔໕໖໗໘໙ໜໝໞໟ</div>
-</div>
-<div data-block="Tibetan">
-<div class="line">ༀ༁༂༃༄༅༆༇༈༉༊་༌།༎༏༐༑༒༓༔༕༖༗༚༛༜༝༞༟༠༡</div>
-<div class="line">༢༣༤༥༦༧༨༩༪༫༬༭༮༯༰༱༲༳༴༶༸༺༻༼༽ཀཁགགྷངཅཆ</div>
-<div class="line">ཇཉཊཋཌཌྷཎཏཐདདྷནཔཕབབྷམཙཚཛཛྷཝཞཟའཡརལཤཥསཧ</div>
-<div class="line">ཨཀྵཪཫཬ྅ྈྉྊྋྌ྾྿࿀࿁࿂࿃࿄࿅࿇࿈࿉࿊࿋࿌࿎࿏࿐࿑࿒࿓࿔</div>
-<div class="line">࿕࿖࿗࿘࿙࿚</div>
-</div>
-<div data-block="Myanmar">
-<div class="line">ကခဂဃငစဆဇဈဉညဋဌဍဎဏတထဒဓနပဖဗဘမယရလဝသဟ</div>
-<div class="line">ဠအဢဣဤဥဦဧဨဩဪဿ၀၁၂၃၄၅၆၇၈၉၊။၌၍၎၏ၐၑၒၓ</div>
-<div class="line">ၔၕၚၛၜၝၡၥၦၮၯၰၵၶၷၸၹၺၻၼၽၾၿႀႁႎ႐႑႒႓႔႕</div>
-<div class="line">႖႗႘႙႞႟</div>
-</div>
-<div data-block="Georgian">
-<div class="line">ႠႡႢႣႤႥႦႧႨႩႪႫႬႭႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿ</div>
-<div class="line">ჀჁჂჃჄჅჇჍაბგდევზთიკლმნოპჟრსტუფქღყ</div>
-<div class="line">შჩცძწჭხჯჰჱჲჳჴჵჶჷჸჹჺ჻ჼჽჾჿ</div>
-</div>
-<div data-block="Ethiopic">
-<div class="line">ሀሁሂሃሄህሆሇለሉሊላሌልሎሏሐሑሒሓሔሕሖሗመሙሚማሜምሞሟ</div>
-<div class="line">ሠሡሢሣሤሥሦሧረሩሪራሬርሮሯሰሱሲሳሴስሶሷሸሹሺሻሼሽሾሿ</div>
-<div class="line">ቀቁቂቃቄቅቆቇቈቊቋቌቍቐቑቒቓቔቕቖቘቚቛቜቝበቡቢባቤብቦ</div>
-<div class="line">ቧቨቩቪቫቬቭቮቯተቱቲታቴትቶቷቸቹቺቻቼችቾቿኀኁኂኃኄኅኆ</div>
-<div class="line">ኇኈኊኋኌኍነኑኒናኔንኖኗኘኙኚኛኜኝኞኟአኡኢኣኤእኦኧከኩ</div>
-<div class="line">ኪካኬክኮኯኰኲኳኴኵኸኹኺኻኼኽኾዀዂዃዄዅወዉዊዋዌውዎዏዐ</div>
-<div class="line">ዑዒዓዔዕዖዘዙዚዛዜዝዞዟዠዡዢዣዤዥዦዧየዩዪያዬይዮዯደዱ</div>
-<div class="line">ዲዳዴድዶዷዸዹዺዻዼዽዾዿጀጁጂጃጄጅጆጇገጉጊጋጌግጎጏጐጒ</div>
-<div class="line">ጓጔጕጘጙጚጛጜጝጞጟጠጡጢጣጤጥጦጧጨጩጪጫጬጭጮጯጰጱጲጳጴ</div>
-<div class="line">ጵጶጷጸጹጺጻጼጽጾጿፀፁፂፃፄፅፆፇፈፉፊፋፌፍፎፏፐፑፒፓፔ</div>
-<div class="line">ፕፖፗፘፙፚ፠፡።፣፤፥፦፧፨፩፪፫፬፭፮፯፰፱፲፳፴፵፶፷፸፹</div>
-<div class="line">፺፻፼ᎀᎁᎂᎃᎄᎅᎆᎇᎈᎉᎊᎋᎌᎍᎎᎏ᎐᎑᎒᎓᎔᎕᎖᎗᎘᎙</div>
-</div>
-<div data-block="Cherokee">
-<div class="line">ᎠᎡᎢᎣᎤᎥᎦᎧᎨᎩᎪᎫᎬᎭᎮᎯᎰᎱᎲᎳᎴᎵᎶᎷᎸᎹᎺᎻᎼᎽᎾᎿ</div>
-<div class="line">ᏀᏁᏂᏃᏄᏅᏆᏇᏈᏉᏊᏋᏌᏍᏎᏏᏐᏑᏒᏓᏔᏕᏖᏗᏘᏙᏚᏛᏜᏝᏞᏟ</div>
-<div class="line">ᏠᏡᏢᏣᏤᏥᏦᏧᏨᏩᏪᏫᏬᏭᏮᏯᏰᏱᏲᏳᏴᏵᏸᏹᏺᏻᏼᏽ</div>
-</div>
-<div data-block="Unified">
-<div class="line">᐀</div>
-</div>
-<div data-block="Ogham">
-<div class="line"> ᚁᚂᚃᚄᚅᚆᚇᚈᚉᚊᚋᚌᚍᚎᚏᚐᚑᚒᚓᚔᚕᚖᚗᚘᚙᚚ᚛᚜</div>
-</div>
-<div data-block="Runic">
-<div class="line">ᚠᚡᚢᚣᚤᚥᚦᚧᚨᚩᚪᚫᚬᚭᚮᚯᚰᚱᚲᚳᚴᚵᚶᚷᚸᚹᚺᚻᚼᚽᚾᚿ</div>
-<div class="line">ᛀᛁᛂᛃᛄᛅᛆᛇᛈᛉᛊᛋᛌᛍᛎᛏᛐᛑᛒᛓᛔᛕᛖᛗᛘᛙᛚᛛᛜᛝᛞᛟ</div>
-<div class="line">ᛠᛡᛢᛣᛤᛥᛦᛧᛨᛩᛪ᛫᛬᛭ᛮᛯᛰᛱᛲᛳᛴᛵᛶᛷᛸ</div>
-</div>
-<div data-block="Tagalog">
-<div class="line">ᜀᜁᜂᜃᜄᜅᜆᜇᜈᜉᜊᜋᜌᜎᜏᜐᜑ</div>
-</div>
-<div data-block="Hanunoo">
-<div class="line">ᜠᜡᜢᜣᜤᜥᜦᜧᜨᜩᜪᜫᜬᜭᜮᜯᜰᜱ᜵᜶</div>
-</div>
-<div data-block="Buhid">
-<div class="line">ᝀᝁᝂᝃᝄᝅᝆᝇᝈᝉᝊᝋᝌᝍᝎᝏᝐᝑ</div>
-</div>
-<div data-block="Tagbanwa">
-<div class="line">ᝠᝡᝢᝣᝤᝥᝦᝧᝨᝩᝪᝫᝬᝮᝯᝰ</div>
-</div>
-<div data-block="Khmer">
-<div class="line">កខគឃងចឆជឈញដឋឌឍណតថទធនបផពភមយរលវឝឞស</div>
-<div class="line">ហឡអឣឤឥឦឧឨឩឪឫឬឭឮឯឰឱឲឳ។៕៖ៗ៘៙៚៛ៜ០១២</div>
-<div class="line">៣៤៥៦៧៨៩៰៱៲៳៴៵៶៷៸៹</div>
-</div>
-<div data-block="Mongolian">
-<div class="line">᠀᠁᠂᠃᠄᠅᠆᠇᠈᠉᠊᠐᠑᠒᠓᠔᠕᠖᠗᠘᠙ᠠᠡᠢᠣᠤᠥᠦᠧᠨᠩᠪ</div>
-<div class="line">ᠫᠬᠭᠮᠯᠰᠱᠲᠳᠴᠵᠶᠷᠸᠹᠺᠻᠼᠽᠾᠿᡀᡁᡂᡃᡄᡅᡆᡇᡈᡉᡊ</div>
-<div class="line">ᡋᡌᡍᡎᡏᡐᡑᡒᡓᡔᡕᡖᡗᡘᡙᡚᡛᡜᡝᡞᡟᡠᡡᡢᡣᡤᡥᡦᡧᡨᡩᡪ</div>
-<div class="line">ᡫᡬᡭᡮᡯᡰᡱᡲᡳᡴᡵᡶᡷᢀᢁᢂᢃᢄᢇᢈᢉᢊᢋᢌᢍᢎᢏᢐᢑᢒᢓᢔ</div>
-<div class="line">ᢕᢖᢗᢘᢙᢚᢛᢜᢝᢞᢟᢠᢡᢢᢣᢤᢥᢦᢧᢨᢪ</div>
-</div>
-<div data-block="Limbu">
-<div class="line">ᤀᤁᤂᤃᤄᤅᤆᤇᤈᤉᤊᤋᤌᤍᤎᤏᤐᤑᤒᤓᤔᤕᤖᤗᤘᤙᤚᤛᤜᤝᤞ᥀</div>
-<div class="line">᥄᥅᥆᥇᥈᥉᥊᥋᥌᥍᥎᥏</div>
-</div>
-<div data-block="Tai">
-<div class="line">ᥐᥑᥒᥓᥔᥕᥖᥗᥘᥙᥚᥛᥜᥝᥞᥟᥠᥡᥢᥣᥤᥥᥦᥧᥨᥩᥪᥫᥬᥭᥰᥱ</div>
-<div class="line">ᥲᥳᥴ</div>
-</div>
-<div data-block="New">
-<div class="line">ᦀᦁᦂᦃᦄᦅᦆᦇᦈᦉᦊᦋᦌᦍᦎᦏᦐᦑᦒᦓᦔᦕᦖᦗᦘᦙᦚᦛᦜᦝᦞᦟ</div>
-<div class="line">ᦠᦡᦢᦣᦤᦥᦦᦧᦨᦩᦪᦫᦰᦱᦲᦳᦴᦵᦶᦷᦸᦹᦺᦻᦼᦽᦾᦿᧀᧁᧂᧃ</div>
-<div class="line">ᧄᧅᧆᧇᧈᧉ᧐᧑᧒᧓᧔᧕᧖᧗᧘᧙᧚᧞᧟</div>
-</div>
-<div data-block="Khmer">
-<div class="line">᧠᧡᧢᧣᧤᧥᧦᧧᧨᧩᧪᧫᧬᧭᧮᧯᧰᧱᧲᧳᧴᧵᧶᧷᧸᧹᧺᧻᧼᧽᧾᧿</div>
-</div>
-<div data-block="Buginese">
-<div class="line">ᨀᨁᨂᨃᨄᨅᨆᨇᨈᨉᨊᨋᨌᨍᨎᨏᨐᨑᨒᨓᨔᨕᨖ᨞᨟</div>
-</div>
-<div data-block="Tai">
-<div class="line">ᨠᨡᨢᨣᨤᨥᨦᨧᨨᨩᨪᨫᨬᨭᨮᨯᨰᨱᨲᨳᨴᨵᨶᨷᨸᨹᨺᨻᨼᨽᨾᨿ</div>
-<div class="line">ᩀᩁᩂᩃᩄᩅᩆᩇᩈᩉᩊᩋᩌᩍᩎᩏᩐᩑᩒᩓᩔ᪀᪁᪂᪃᪄᪅᪆᪇᪈᪉᪐</div>
-<div class="line">᪑᪒᪓᪔᪕᪖᪗᪘᪙᪠᪡᪢᪣᪤᪥᪦ᪧ᪨᪩᪪᪫᪬᪭</div>
-</div>
-<div data-block="Balinese">
-<div class="line">ᬅᬆᬇᬈᬉᬊᬋᬌᬍᬎᬏᬐᬑᬒᬓᬔᬕᬖᬗᬘᬙᬚᬛᬜᬝᬞᬟᬠᬡᬢᬣᬤ</div>
-<div class="line">ᬥᬦᬧᬨᬩᬪᬫᬬᬭᬮᬯᬰᬱᬲᬳᭅᭆᭇᭈᭉᭊᭋ᭐᭑᭒᭓᭔᭕᭖᭗᭘᭙</div>
-<div class="line">᭚᭛᭜᭝᭞᭟᭠᭡᭢᭣᭤᭥᭦᭧᭨᭩᭪᭴᭵᭶᭷᭸᭹᭺᭻᭼</div>
-</div>
-<div data-block="Sundanese">
-<div class="line">ᮃᮄᮅᮆᮇᮈᮉᮊᮋᮌᮍᮎᮏᮐᮑᮒᮓᮔᮕᮖᮗᮘᮙᮚᮛᮜᮝᮞᮟᮠᮮᮯ</div>
-<div class="line">᮰᮱᮲᮳᮴᮵᮶᮷᮸᮹ᮺᮻᮼᮽᮾᮿ</div>
-</div>
-<div data-block="Batak">
-<div class="line">ᯀᯁᯂᯃᯄᯅᯆᯇᯈᯉᯊᯋᯌᯍᯎᯏᯐᯑᯒᯓᯔᯕᯖᯗᯘᯙᯚᯛᯜᯝᯞᯟ</div>
-<div class="line">ᯠᯡᯢᯣᯤᯥ᯼᯽᯾᯿</div>
-</div>
-<div data-block="Lepcha">
-<div class="line">ᰀᰁᰂᰃᰄᰅᰆᰇᰈᰉᰊᰋᰌᰍᰎᰏᰐᰑᰒᰓᰔᰕᰖᰗᰘᰙᰚᰛᰜᰝᰞᰟ</div>
-<div class="line">ᰠᰡᰢᰣ᰻᰼᰽᰾᰿᱀᱁᱂᱃᱄᱅᱆᱇᱈᱉ᱍᱎᱏ</div>
-</div>
-<div data-block="Ol">
-<div class="line">᱐᱑᱒᱓᱔᱕᱖᱗᱘᱙ᱚᱛᱜᱝᱞᱟᱠᱡᱢᱣᱤᱥᱦᱧᱨᱩᱪᱫᱬᱭᱮᱯ</div>
-<div class="line">ᱰᱱᱲᱳᱴᱵᱶᱷᱸᱹᱺᱻᱼᱽ᱾᱿</div>
-</div>
-<div data-block="Cyrillic">
-<div class="line">ᲀᲁᲂᲃᲄᲅᲆᲇᲈ</div>
-</div>
-<div data-block="Sundanese">
-<div class="line">᳀᳁᳂᳃᳄᳅᳆᳇</div>
-</div>
-<div data-block="Vedic">
-<div class="line">᳓ᳩᳪᳫᳬᳮᳯᳰᳱᳵᳶ</div>
-</div>
-<div data-block="Phonetic">
-<div class="line">ᴀᴁᴂᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌᴍᴎᴏᴐᴑᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜᴝᴞᴟ</div>
-<div class="line">ᴠᴡᴢᴣᴤᴥᴦᴧᴨᴩᴪᴫᴬᴭᴮᴯᴰᴱᴲᴳᴴᴵᴶᴷᴸᴹᴺᴻᴼᴽᴾᴿ</div>
-<div class="line">ᵀᵁᵂᵃᵄᵅᵆᵇᵈᵉᵊᵋᵌᵍᵎᵏᵐᵑᵒᵓᵔᵕᵖᵗᵘᵙᵚᵛᵜᵝᵞᵟ</div>
-<div class="line">ᵠᵡᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬᵭᵮᵯᵰᵱᵲᵳᵴᵵᵶᵷᵸᵹᵺᵻᵼᵽᵾᵿ</div>
-<div class="line">ᶀᶁᶂᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌᶍᶎᶏᶐᶑᶒᶓᶔᶕᶖᶗᶘᶙᶚᶛᶜᶝᶞᶟ</div>
-<div class="line">ᶠᶡᶢᶣᶤᶥᶦᶧᶨᶩᶪᶫᶬᶭᶮᶯᶰᶱᶲᶳᶴᶵᶶᶷᶸᶹᶺᶻᶼᶽᶾᶿ</div>
-</div>
-<div data-block="Latin">
-<div class="line">ḀḁḂḃḄḅḆḇḈḉḊḋḌḍḎḏḐḑḒḓḔḕḖḗḘḙḚḛḜḝḞḟ</div>
-<div class="line">ḠḡḢḣḤḥḦḧḨḩḪḫḬḭḮḯḰḱḲḳḴḵḶḷḸḹḺḻḼḽḾḿ</div>
-<div class="line">ṀṁṂṃṄṅṆṇṈṉṊṋṌṍṎṏṐṑṒṓṔṕṖṗṘṙṚṛṜṝṞṟ</div>
-<div class="line">ṠṡṢṣṤṥṦṧṨṩṪṫṬṭṮṯṰṱṲṳṴṵṶṷṸṹṺṻṼṽṾṿ</div>
-<div class="line">ẀẁẂẃẄẅẆẇẈẉẊẋẌẍẎẏẐẑẒẓẔẕẖẗẘẙẚẛẜẝẞẟ</div>
-<div class="line">ẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặẸẹẺẻẼẽẾế</div>
-<div class="line">ỀềỂểỄễỆệỈỉỊịỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞở</div>
-<div class="line">ỠỡỢợỤụỦủỨứỪừỬửỮữỰựỲỳỴỵỶỷỸỹỺỻỼỽỾỿ</div>
-</div>
-<div data-block="Greek">
-<div class="line">ἀἁἂἃἄἅἆἇἈἉἊἋἌἍἎἏἐἑἒἓἔἕἘἙἚἛἜἝἠἡἢἣ</div>
-<div class="line">ἤἥἦἧἨἩἪἫἬἭἮἯἰἱἲἳἴἵἶἷἸἹἺἻἼἽἾἿὀὁὂὃ</div>
-<div class="line">ὄὅὈὉὊὋὌὍὐὑὒὓὔὕὖὗὙὛὝὟὠὡὢὣὤὥὦὧὨὩὪὫ</div>
-<div class="line">ὬὭὮὯὰάὲέὴήὶίὸόὺύὼώᾀᾁᾂᾃᾄᾅᾆᾇᾈᾉᾊᾋᾌᾍ</div>
-<div class="line">ᾎᾏᾐᾑᾒᾓᾔᾕᾖᾗᾘᾙᾚᾛᾜᾝᾞᾟᾠᾡᾢᾣᾤᾥᾦᾧᾨᾩᾪᾫᾬᾭ</div>
-<div class="line">ᾮᾯᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆᾼ᾽ι᾿῀῁ῂῃῄῆῇῈΈῊΉῌ῍῎῏</div>
-<div class="line">ῐῑῒΐῖῗῘῙῚΊ῝῞῟ῠῡῢΰῤῥῦῧῨῩῪΎῬ῭΅`ῲῳῴ</div>
-<div class="line">ῶῷῸΌῺΏῼ´῾</div>
-</div>
-<div data-block="General">
-<div class="line">           ‐‑‒–—―‗‘’‚‛“”„‟•‣․‥…‧</div>
-<div class="line">

 ′″‴‵‶‷‸‹›‽‾‿⁀⁁⁃⁄⁅⁆⁊⁋⁌⁍⁎⁏⁐⁒⁓⁔⁕</div>
-<div class="line">⁖⁗⁘⁙⁚⁛⁜⁝⁞ </div>
-</div>
-<div data-block="Superscripts">
-<div class="line">⁰ⁱ⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎ₐₑₒ</div>
-<div class="line">ₓₔₕₖₗₘₙₚₛₜ</div>
-</div>
-<div data-block="Currency">
-<div class="line">₠₡₢₣₤₥₦₧₨₩₪₫€₭₮₯₰₱₲₳₴₵₶₷₸₹₺₻₼₽₾</div>
-</div>
-<div data-block="Letterlike">
-<div class="line">ℂℊℋℌℍℎℐℑℒℕ℘ℙℚℛℜℝℤΩℨKÅℬℭℯℰℱℲℳℴ⅀⅁⅂</div>
-<div class="line">⅃⅄⅋ⅎ</div>
-</div>
-<div data-block="Number">
-<div class="line">↊↋</div>
-</div>
-<div data-block="Arrows">
-<div class="line">←↑→↓↔↕↖↗↘↙↚↛↜↝↞↟↠↡↢↣↤↥↦↧↨↩↪↫↬↭↮↯</div>
-<div class="line">↰↱↲↳↴↵↶↷↸↹↺↻↼↽↾↿⇀⇁⇂⇃⇄⇅⇆⇇⇈⇉⇊⇋⇌⇍⇎⇏</div>
-<div class="line">⇐⇑⇒⇓⇔⇕⇖⇗⇘⇙⇚⇛⇜⇝⇞⇟⇠⇡⇢⇣⇤⇥⇦⇧⇨⇩⇪⇫⇬⇭⇮⇯</div>
-<div class="line">⇰⇱⇲⇳⇴⇵⇶⇷⇸⇹⇺⇻⇼⇽⇾⇿</div>
-</div>
-<div data-block="Mathematical">
-<div class="line">∀∁∂∃∄∅∆∇∈∉∊∋∌∍∎∏∐∑−∓∔∕∖∗∘∙√∛∜∝∟∠</div>
-<div class="line">∡∢∣∤∥∦∧∨∩∪∫∬∭∮∯∰∱∲∳∶∷∸∹∺∻∼∽∾∿≀≁≂</div>
-<div class="line">≃≄≅≆≇≈≉≊≋≌≍≎≏≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟≠≡≢</div>
-<div class="line">≣≤≥≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊂</div>
-<div class="line">⊃⊄⊅⊆⊇⊈⊉⊊⊋⊌⊍⊎⊏⊐⊑⊒⊓⊔⊕⊖⊗⊘⊙⊚⊛⊜⊝⊞⊟⊠⊡⊢</div>
-<div class="line">⊣⊤⊥⊦⊧⊨⊩⊪⊫⊬⊭⊮⊯⊰⊱⊲⊳⊴⊵⊶⊷⊸⊹⊺⊻⊼⊽⊾⊿⋀⋁⋂</div>
-<div class="line">⋃⋄⋅⋆⋇⋈⋉⋊⋋⋌⋍⋎⋏⋐⋑⋒⋓⋔⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢</div>
-<div class="line">⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋮⋯⋰⋱⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿</div>
-</div>
-<div data-block="Miscellaneous">
-<div class="line">⌈⌉⌊⌋⌠⌡⌢⌣⌬⌭⌮⌯⌰⌱⌲⌳⌴⌵⌶⌷⌸⌹⌺⌻⌼⌽⌾⌿⍀⍁⍂⍃</div>
-<div class="line">⍄⍅⍆⍇⍈⍉⍊⍋⍌⍍⍎⍏⍐⍑⍒⍓⍔⍕⍖⍗⍘⍙⍚⍛⍜⍝⍞⍟⍠⍡⍢⍣</div>
-<div class="line">⍤⍥⍦⍧⍨⍩⍪⍫⍬⍭⍮⍯⍰⍱⍲⍳⍴⍵⍶⍷⍸⍹⍺⍻⍼⎛⎜⎝⎞⎟⎠⎡</div>
-<div class="line">⎢⎣⎤⎥⎦⎧⎨⎩⎪⎫⎬⎭⎮⎯⎰⎱⎲⎳⎴⎵⎶⎷⎸⎹⎺⎻⎼⎽⏎⏐⏜⏝</div>
-<div class="line">⏞⏟⏠⏡</div>
-</div>
-<div data-block="Control">
-<div class="line">␣</div>
-</div>
-<div data-block="Box">
-<div class="line">─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟</div>
-<div class="line">┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿</div>
-<div class="line">╀╁╂╃╄╅╆╇╈╉╊╋╌╍╎╏═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟</div>
-<div class="line">╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳╴╵╶╷╸╹╺╻╼╽╾╿</div>
-</div>
-<div data-block="Block">
-<div class="line">▀▁▂▃▄▅▆▇█▉▊▋▌▍▎▏▐░▒▓▔▕▖▗▘▙▚▛▜▝▞▟</div>
-</div>
-<div data-block="Miscellaneous">
-<div class="line">☚☛☜☝☞☟</div>
-</div>
-<div data-block="Dingbats">
-<div class="line">❨❩❪❫❬❭❮❯❰❱❲❳❴❵➔➕➖➗➘➙➚➛➜➝➞➟➠➡➢➣➤➥</div>
-<div class="line">➦➧➨➩➪➫➬➭➮➯➰➱➲➳➴➵➶➷➸➹➺➻➼➽➾➿</div>
-</div>
-<div data-block="Miscellaneous">
-<div class="line">⟀⟁⟂⟃⟄⟅⟆⟇⟈⟉⟊⟋⟌⟍⟎⟏⟐⟑⟒⟓⟔⟕⟖⟗⟘⟙⟚⟛⟜⟝⟞⟟</div>
-<div class="line">⟠⟡⟢⟣⟤⟥⟦⟧⟨⟩⟪⟫⟬⟭⟮⟯</div>
-</div>
-<div data-block="Supplemental">
-<div class="line">⟰⟱⟲⟳⟴⟵⟶⟷⟸⟹⟺⟻⟼⟽⟾⟿</div>
-</div>
-<div data-block="Braille">
-<div class="line">⠀⠁⠂⠃⠄⠅⠆⠇⠈⠉⠊⠋⠌⠍⠎⠏⠐⠑⠒⠓⠔⠕⠖⠗⠘⠙⠚⠛⠜⠝⠞⠟</div>
-<div class="line">⠠⠡⠢⠣⠤⠥⠦⠧⠨⠩⠪⠫⠬⠭⠮⠯⠰⠱⠲⠳⠴⠵⠶⠷⠸⠹⠺⠻⠼⠽⠾⠿</div>
-<div class="line">⡀⡁⡂⡃⡄⡅⡆⡇⡈⡉⡊⡋⡌⡍⡎⡏⡐⡑⡒⡓⡔⡕⡖⡗⡘⡙⡚⡛⡜⡝⡞⡟</div>
-<div class="line">⡠⡡⡢⡣⡤⡥⡦⡧⡨⡩⡪⡫⡬⡭⡮⡯⡰⡱⡲⡳⡴⡵⡶⡷⡸⡹⡺⡻⡼⡽⡾⡿</div>
-<div class="line">⢀⢁⢂⢃⢄⢅⢆⢇⢈⢉⢊⢋⢌⢍⢎⢏⢐⢑⢒⢓⢔⢕⢖⢗⢘⢙⢚⢛⢜⢝⢞⢟</div>
-<div class="line">⢠⢡⢢⢣⢤⢥⢦⢧⢨⢩⢪⢫⢬⢭⢮⢯⢰⢱⢲⢳⢴⢵⢶⢷⢸⢹⢺⢻⢼⢽⢾⢿</div>
-<div class="line">⣀⣁⣂⣃⣄⣅⣆⣇⣈⣉⣊⣋⣌⣍⣎⣏⣐⣑⣒⣓⣔⣕⣖⣗⣘⣙⣚⣛⣜⣝⣞⣟</div>
-<div class="line">⣠⣡⣢⣣⣤⣥⣦⣧⣨⣩⣪⣫⣬⣭⣮⣯⣰⣱⣲⣳⣴⣵⣶⣷⣸⣹⣺⣻⣼⣽⣾⣿</div>
-</div>
-<div data-block="Supplemental">
-<div class="line">⤀⤁⤂⤃⤄⤅⤆⤇⤈⤉⤊⤋⤌⤍⤎⤏⤐⤑⤒⤓⤔⤕⤖⤗⤘⤙⤚⤛⤜⤝⤞⤟</div>
-<div class="line">⤠⤡⤢⤣⤤⤥⤦⤧⤨⤩⤪⤫⤬⤭⤮⤯⤰⤱⤲⤳⤴⤵⤶⤷⤸⤹⤺⤻⤼⤽⤾⤿</div>
-<div class="line">⥀⥁⥂⥃⥄⥅⥆⥇⥈⥉⥊⥋⥌⥍⥎⥏⥐⥑⥒⥓⥔⥕⥖⥗⥘⥙⥚⥛⥜⥝⥞⥟</div>
-<div class="line">⥠⥡⥢⥣⥤⥥⥦⥧⥨⥩⥪⥫⥬⥭⥮⥯⥰⥱⥲⥳⥴⥵⥶⥷⥸⥹⥺⥻⥼⥽⥾⥿</div>
-</div>
-<div data-block="Miscellaneous">
-<div class="line">⦀⦁⦂⦃⦄⦅⦆⦇⦈⦉⦊⦋⦌⦍⦎⦏⦐⦑⦒⦓⦔⦕⦖⦗⦘⦙⦚⦛⦜⦝⦞⦟</div>
-<div class="line">⦠⦡⦢⦣⦤⦥⦦⦧⦨⦩⦪⦫⦬⦭⦮⦯⦰⦱⦲⦳⦴⦵⦶⦷⦸⦹⦺⦻⦼⦽⦾⦿</div>
-<div class="line">⧀⧁⧂⧃⧄⧅⧆⧇⧈⧉⧊⧋⧌⧍⧎⧏⧐⧑⧒⧓⧔⧕⧖⧗⧘⧙⧚⧛⧜⧝⧞⧟</div>
-<div class="line">⧠⧡⧢⧣⧤⧥⧦⧧⧨⧩⧪⧫⧬⧭⧮⧯⧰⧱⧲⧳⧴⧵⧶⧷⧸⧹⧺⧻⧼⧽⧾⧿</div>
-</div>
-<div data-block="Supplemental">
-<div class="line">⨀⨁⨂⨃⨄⨅⨆⨇⨈⨉⨊⨋⨌⨍⨎⨏⨐⨑⨒⨓⨔⨕⨖⨗⨘⨙⨚⨛⨜⨝⨞⨟</div>
-<div class="line">⨠⨡⨢⨣⨤⨥⨦⨧⨨⨩⨪⨫⨬⨭⨮⨯⨰⨱⨲⨳⨴⨵⨶⨷⨸⨹⨺⨻⨼⨽⨾⨿</div>
-<div class="line">⩀⩁⩂⩃⩄⩅⩆⩇⩈⩉⩊⩋⩌⩍⩎⩏⩐⩑⩒⩓⩔⩕⩖⩗⩘⩙⩚⩛⩜⩝⩞⩟</div>
-<div class="line">⩠⩡⩢⩣⩤⩥⩦⩧⩨⩩⩪⩫⩬⩭⩮⩯⩰⩱⩲⩳⩴⩵⩶⩷⩸⩹⩺⩻⩼⩽⩾⩿</div>
-<div class="line">⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪋⪌⪍⪎⪏⪐⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚⪛⪜⪝⪞⪟</div>
-<div class="line">⪠⪡⪢⪣⪤⪥⪦⪧⪨⪩⪪⪫⪬⪭⪮⪯⪰⪱⪲⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿</div>
-<div class="line">⫀⫁⫂⫃⫄⫅⫆⫇⫈⫉⫊⫋⫌⫍⫎⫏⫐⫑⫒⫓⫔⫕⫖⫗⫘⫙⫚⫛⫝̸⫝⫞⫟</div>
-<div class="line">⫠⫡⫢⫣⫤⫥⫦⫧⫨⫩⫪⫫⫬⫭⫮⫯⫰⫱⫲⫳⫴⫵⫶⫷⫸⫹⫺⫻⫼⫽⫾⫿</div>
-</div>
-<div data-block="Miscellaneous">
-<div class="line">⬀⬁⬂⬃⬄⬅⬆⬇⬈⬉⬊⬋⬌⬍⬎⬏⬐⬑⬰⬱⬲⬳⬴⬵⬶⬷⬸⬹⬺⬻⬼⬽</div>
-<div class="line">⬾⬿⭀⭁⭂⭃⭄⭅⭆⭇⭈⭉⭊⭋⭌⭍⭎⭏⭚⭛⭜⭝⭞⭟⭠⭡⭢⭣⭤⭥⭦⭧</div>
-<div class="line">⭨⭩⭪⭫⭬⭭⭮⭯⭰⭱⭲⭳⭶⭷⭸⭹⭺⭻⭼⭽⭾⭿⮀⮁⮂⮃⮄⮅⮆⮇⮈⮉</div>
-<div class="line">⮊⮋⮌⮍⮎⮏⮐⮑⮒⮓⮔⮕⮘⮙⮚⮛⮜⮝⮞⮟⮠⮡⮢⮣⮤⮥⮦⮧⮨⮩⮪⮫</div>
-<div class="line">⮬⮭⮮⮯⮰⮱⮲⮳⮴⮵⮶⮷⯬⯭⯮⯯</div>
-</div>
-<div data-block="Glagolitic">
-<div class="line">ⰀⰁⰂⰃⰄⰅⰆⰇⰈⰉⰊⰋⰌⰍⰎⰏⰐⰑⰒⰓⰔⰕⰖⰗⰘⰙⰚⰛⰜⰝⰞⰟ</div>
-<div class="line">ⰠⰡⰢⰣⰤⰥⰦⰧⰨⰩⰪⰫⰬⰭⰮⰰⰱⰲⰳⰴⰵⰶⰷⰸⰹⰺⰻⰼⰽⰾⰿⱀ</div>
-<div class="line">ⱁⱂⱃⱄⱅⱆⱇⱈⱉⱊⱋⱌⱍⱎⱏⱐⱑⱒⱓⱔⱕⱖⱗⱘⱙⱚⱛⱜⱝⱞ</div>
-</div>
-<div data-block="Latin">
-<div class="line">ⱠⱡⱢⱣⱤⱥⱦⱧⱨⱩⱪⱫⱬⱭⱮⱯⱰⱱⱲⱳⱴⱵⱶⱷⱸⱹⱺⱻⱼⱽⱾⱿ</div>
-</div>
-<div data-block="Coptic">
-<div class="line">ⲀⲁⲂⲃⲄⲅⲆⲇⲈⲉⲊⲋⲌⲍⲎⲏⲐⲑⲒⲓⲔⲕⲖⲗⲘⲙⲚⲛⲜⲝⲞⲟ</div>
-<div class="line">ⲠⲡⲢⲣⲤⲥⲦⲧⲨⲩⲪⲫⲬⲭⲮⲯⲰⲱⲲⲳⲴⲵⲶⲷⲸⲹⲺⲻⲼⲽⲾⲿ</div>
-<div class="line">ⳀⳁⳂⳃⳄⳅⳆⳇⳈⳉⳊⳋⳌⳍⳎⳏⳐⳑⳒⳓⳔⳕⳖⳗⳘⳙⳚⳛⳜⳝⳞⳟ</div>
-<div class="line">ⳠⳡⳢⳣⳤ⳥⳦⳧⳨⳩⳪ⳫⳬⳭⳮⳲⳳ⳹⳺⳻⳼⳽⳾⳿</div>
-</div>
-<div data-block="Georgian">
-<div class="line">ⴀⴁⴂⴃⴄⴅⴆⴇⴈⴉⴊⴋⴌⴍⴎⴏⴐⴑⴒⴓⴔⴕⴖⴗⴘⴙⴚⴛⴜⴝⴞⴟ</div>
-<div class="line">ⴠⴡⴢⴣⴤⴥⴧⴭ</div>
-</div>
-<div data-block="Tifinagh">
-<div class="line">ⴰⴱⴲⴳⴴⴵⴶⴷⴸⴹⴺⴻⴼⴽⴾⴿⵀⵁⵂⵃⵄⵅⵆⵇⵈⵉⵊⵋⵌⵍⵎⵏ</div>
-<div class="line">ⵐⵑⵒⵓⵔⵕⵖⵗⵘⵙⵚⵛⵜⵝⵞⵟⵠⵡⵢⵣⵤⵥⵦⵧⵯ⵰</div>
-</div>
-<div data-block="Ethiopic">
-<div class="line">ⶀⶁⶂⶃⶄⶅⶆⶇⶈⶉⶊⶋⶌⶍⶎⶏⶐⶑⶒⶓⶔⶕⶖⶠⶡⶢⶣⶤⶥⶦⶨⶩ</div>
-<div class="line">ⶪⶫⶬⶭⶮⶰⶱⶲⶳⶴⶵⶶⶸⶹⶺⶻⶼⶽⶾⷀⷁⷂⷃⷄⷅⷆⷈⷉⷊⷋⷌⷍ</div>
-<div class="line">ⷎⷐⷑⷒⷓⷔⷕⷖⷘⷙⷚⷛⷜⷝⷞ</div>
-</div>
-<div data-block="Supplemental">
-<div class="line">⸀⸁⸂⸃⸄⸅⸆⸇⸈⸉⸊⸋⸌⸍⸎⸏⸐⸑⸒⸓⸔⸕⸖⸗⸘⸙⸚⸛⸜⸝⸞⸟</div>
-<div class="line">⸠⸡⸢⸣⸤⸥⸦⸧⸨⸩⸪⸫⸬⸭⸮ⸯ⸰⸱⸲⸳⸴⸵⸶⸷⸸⸹⸺⸻⸼⸽⸾⸿</div>
-<div class="line">⹀⹁⹂⹃⹄</div>
-</div>
-<div data-block="Lisu">
-<div class="line">ꓐꓑꓒꓓꓔꓕꓖꓗꓘꓙꓚꓛꓜꓝꓞꓟꓠꓡꓢꓣꓤꓥꓦꓧꓨꓩꓪꓫꓬꓭꓮꓯ</div>
-<div class="line">ꓰꓱꓲꓳꓴꓵꓶꓷꓸꓹꓺꓻꓼꓽ꓾꓿</div>
-</div>
-<div data-block="Vai">
-<div class="line">ꔀꔁꔂꔃꔄꔅꔆꔇꔈꔉꔊꔋꔌꔍꔎꔏꔐꔑꔒꔓꔔꔕꔖꔗꔘꔙꔚꔛꔜꔝꔞꔟ</div>
-<div class="line">ꔠꔡꔢꔣꔤꔥꔦꔧꔨꔩꔪꔫꔬꔭꔮꔯꔰꔱꔲꔳꔴꔵꔶꔷꔸꔹꔺꔻꔼꔽꔾꔿ</div>
-<div class="line">ꕀꕁꕂꕃꕄꕅꕆꕇꕈꕉꕊꕋꕌꕍꕎꕏꕐꕑꕒꕓꕔꕕꕖꕗꕘꕙꕚꕛꕜꕝꕞꕟ</div>
-<div class="line">ꕠꕡꕢꕣꕤꕥꕦꕧꕨꕩꕪꕫꕬꕭꕮꕯꕰꕱꕲꕳꕴꕵꕶꕷꕸꕹꕺꕻꕼꕽꕾꕿ</div>
-<div class="line">ꖀꖁꖂꖃꖄꖅꖆꖇꖈꖉꖊꖋꖌꖍꖎꖏꖐꖑꖒꖓꖔꖕꖖꖗꖘꖙꖚꖛꖜꖝꖞꖟ</div>
-<div class="line">ꖠꖡꖢꖣꖤꖥꖦꖧꖨꖩꖪꖫꖬꖭꖮꖯꖰꖱꖲꖳꖴꖵꖶꖷꖸꖹꖺꖻꖼꖽꖾꖿ</div>
-<div class="line">ꗀꗁꗂꗃꗄꗅꗆꗇꗈꗉꗊꗋꗌꗍꗎꗏꗐꗑꗒꗓꗔꗕꗖꗗꗘꗙꗚꗛꗜꗝꗞꗟ</div>
-<div class="line">ꗠꗡꗢꗣꗤꗥꗦꗧꗨꗩꗪꗫꗬꗭꗮꗯꗰꗱꗲꗳꗴꗵꗶꗷꗸꗹꗺꗻꗼꗽꗾꗿ</div>
-<div class="line">ꘀꘁꘂꘃꘄꘅꘆꘇꘈꘉꘊꘋꘌ꘍꘎꘏ꘐꘑꘒꘓꘔꘕꘖꘗꘘꘙꘚꘛꘜꘝꘞꘟ</div>
-<div class="line">꘠꘡꘢꘣꘤꘥꘦꘧꘨꘩ꘪꘫ</div>
-</div>
-<div data-block="Cyrillic">
-<div class="line">ꙀꙁꙂꙃꙄꙅꙆꙇꙈꙉꙊꙋꙌꙍꙎꙏꙐꙑꙒꙓꙔꙕꙖꙗꙘꙙꙚꙛꙜꙝꙞꙟ</div>
-<div class="line">ꙠꙡꙢꙣꙤꙥꙦꙧꙨꙩꙪꙫꙬꙭꙮ꙳꙾ꙿꚀꚁꚂꚃꚄꚅꚆꚇꚈꚉꚊꚋꚌꚍ</div>
-<div class="line">ꚎꚏꚐꚑꚒꚓꚔꚕꚖꚗꚘꚙꚚꚛꚜꚝ</div>
-</div>
-<div data-block="Bamum">
-<div class="line">ꚠꚡꚢꚣꚤꚥꚦꚧꚨꚩꚪꚫꚬꚭꚮꚯꚰꚱꚲꚳꚴꚵꚶꚷꚸꚹꚺꚻꚼꚽꚾꚿ</div>
-<div class="line">ꛀꛁꛂꛃꛄꛅꛆꛇꛈꛉꛊꛋꛌꛍꛎꛏꛐꛑꛒꛓꛔꛕꛖꛗꛘꛙꛚꛛꛜꛝꛞꛟ</div>
-<div class="line">ꛠꛡꛢꛣꛤꛥꛦꛧꛨꛩꛪꛫꛬꛭꛮꛯ꛲꛳꛴꛵꛶꛷</div>
-</div>
-<div data-block="Modifier">
-<div class="line">꜀꜁꜂꜃꜄꜅꜆꜇꜈꜉꜊꜋꜌꜍꜎꜏꜐꜑꜒꜓꜔꜕꜖ꜗꜘꜙꜚꜛꜜꜝꜞꜟ</div>
-</div>
-<div data-block="Latin">
-<div class="line">꜠꜡ꜢꜣꜤꜥꜦꜧꜨꜩꜪꜫꜬꜭꜮꜯꜰꜱꜲꜳꜴꜵꜶꜷꜸꜹꜺꜻꜼꜽꜾꜿ</div>
-<div class="line">ꝀꝁꝂꝃꝄꝅꝆꝇꝈꝉꝊꝋꝌꝍꝎꝏꝐꝑꝒꝓꝔꝕꝖꝗꝘꝙꝚꝛꝜꝝꝞꝟ</div>
-<div class="line">ꝠꝡꝢꝣꝤꝥꝦꝧꝨꝩꝪꝫꝬꝭꝮꝯꝰꝱꝲꝳꝴꝵꝶꝷꝸꝹꝺꝻꝼꝽꝾꝿ</div>
-<div class="line">ꞀꞁꞂꞃꞄꞅꞆꞇꞈ꞉꞊ꞋꞌꞍꞎꞏꞐꞑꞒꞓꞔꞕꞖꞗꞘꞙꞚꞛꞜꞝꞞꞟ</div>
-<div class="line">ꞠꞡꞢꞣꞤꞥꞦꞧꞨꞩꞪꞫꞬꞭꞮꞰꞱꞲꞳꞴꞵꞶꞷꟷꟸꟹꟺꟻꟼꟽꟾꟿ</div>
-</div>
-<div data-block="Syloti">
-<div class="line">ꠀꠁꠃꠄꠅꠇꠈꠉꠊꠌꠍꠎꠏꠐꠑꠒꠓꠔꠕꠖꠗꠘꠙꠚꠛꠜꠝꠞꠟꠠꠡꠢ</div>
-<div class="line">꠨꠩꠪꠫</div>
-</div>
-<div data-block="Common">
-<div class="line">꠰꠱꠲꠳꠴꠵꠶꠷꠸꠹</div>
-</div>
-<div data-block="Phags">
-<div class="line">ꡀꡁꡂꡃꡄꡅꡆꡇꡈꡉꡊꡋꡌꡍꡎꡏꡐꡑꡒꡓꡔꡕꡖꡗꡘꡙꡚꡛꡜꡝꡞꡟ</div>
-<div class="line">ꡠꡡꡢꡣꡤꡥꡦꡧꡨꡩꡪꡫꡬꡭꡮꡯꡰꡱꡲꡳ꡴꡵꡶꡷</div>
-</div>
-<div data-block="Saurashtra">
-<div class="line">ꢂꢃꢄꢅꢆꢇꢈꢉꢊꢋꢌꢍꢎꢏꢐꢑꢒꢓꢔꢕꢖꢗꢘꢙꢚꢛꢜꢝꢞꢟꢠꢡ</div>
-<div class="line">ꢢꢣꢤꢥꢦꢧꢨꢩꢪꢫꢬꢭꢮꢯꢰꢱꢲꢳ꣎꣏꣐꣑꣒꣓꣔꣕꣖꣗꣘꣙</div>
-</div>
-<div data-block="Devanagari">
-<div class="line">ꣲꣳꣴꣵꣶꣷ꣸꣹꣺ꣻ꣼ꣽ</div>
-</div>
-<div data-block="Kayah">
-<div class="line">꤀꤁꤂꤃꤄꤅꤆꤇꤈꤉ꤊꤋꤌꤍꤎꤏꤐꤑꤒꤓꤔꤕꤖꤗꤘꤙꤚꤛꤜꤝꤞꤟ</div>
-<div class="line">ꤠꤡꤢꤣꤤꤥ꤮꤯</div>
-</div>
-<div data-block="Rejang">
-<div class="line">ꤰꤱꤲꤳꤴꤵꤶꤷꤸꤹꤺꤻꤼꤽꤾꤿꥀꥁꥂꥃꥄꥅꥆ꥟</div>
-</div>
-<div data-block="Javanese">
-<div class="line">ꦄꦅꦆꦇꦈꦉꦊꦋꦌꦍꦎꦏꦐꦑꦒꦓꦔꦕꦖꦗꦘꦙꦚꦛꦜꦝꦞꦟꦠꦡꦢꦣ</div>
-<div class="line">ꦤꦥꦦꦧꦨꦩꦪꦫꦬꦭꦮꦯꦰꦱꦲ꧁꧂꧃꧄꧅꧆꧇꧈꧉꧊꧋꧌꧍ꧏ꧐꧑꧒</div>
-<div class="line">꧓꧔꧕꧖꧗꧘꧙꧞꧟</div>
-</div>
-<div data-block="Myanmar">
-<div class="line">ꧠꧡꧢꧣꧤꧦꧧꧨꧩꧪꧫꧬꧭꧮꧯ꧰꧱꧲꧳꧴꧵꧶꧷꧸꧹ꧺꧻꧼꧽꧾ</div>
-</div>
-<div data-block="Cham">
-<div class="line">ꨀꨁꨂꨃꨄꨅꨆꨇꨈꨉꨊꨋꨌꨍꨎꨏꨐꨑꨒꨓꨔꨕꨖꨗꨘꨙꨚꨛꨜꨝꨞꨟ</div>
-<div class="line">ꨠꨡꨢꨣꨤꨥꨦꨧꨨꩀꩁꩂꩄꩅꩆꩇꩈꩉꩊꩋ꩐꩑꩒꩓꩔꩕꩖꩗꩘꩙꩜꩝</div>
-<div class="line">꩞꩟</div>
-</div>
-<div data-block="Myanmar">
-<div class="line">ꩠꩡꩢꩣꩤꩥꩦꩧꩨꩩꩪꩫꩬꩭꩮꩯꩰꩱꩲꩳꩴꩵꩶ꩷꩸꩹ꩺꩾꩿ</div>
-</div>
-<div data-block="Tai">
-<div class="line">ꪀꪁꪂꪃꪄꪅꪆꪇꪈꪉꪊꪋꪌꪍꪎꪏꪐꪑꪒꪓꪔꪕꪖꪗꪘꪙꪚꪛꪜꪝꪞꪟ</div>
-<div class="line">ꪠꪡꪢꪣꪤꪥꪦꪧꪨꪩꪪꪫꪬꪭꪮꪯꪱꪵꪶꪹꪺꪻꪼꪽꫀꫂꫛꫜꫝ꫞꫟</div>
-</div>
-<div data-block="Meetei">
-<div class="line">ꫠꫡꫢꫣꫤꫥꫦꫧꫨꫩꫪ꫰꫱ꫲꫳꫴ</div>
-</div>
-<div data-block="Ethiopic">
-<div class="line">ꬁꬂꬃꬄꬅꬆꬉꬊꬋꬌꬍꬎꬑꬒꬓꬔꬕꬖꬠꬡꬢꬣꬤꬥꬦꬨꬩꬪꬫꬬꬭꬮ</div>
-</div>
-<div data-block="Latin">
-<div class="line">ꬰꬱꬲꬳꬴꬵꬶꬷꬸꬹꬺꬻꬼꬽꬾꬿꭀꭁꭂꭃꭄꭅꭆꭇꭈꭉꭊꭋꭌꭍꭎꭏ</div>
-<div class="line">ꭐꭑꭒꭓꭔꭕꭖꭗꭘꭙꭚ꭛ꭜꭝꭞꭟꭠꭡꭢꭣꭤꭥ</div>
-</div>
-<div data-block="Cherokee">
-<div class="line">ꭰꭱꭲꭳꭴꭵꭶꭷꭸꭹꭺꭻꭼꭽꭾꭿꮀꮁꮂꮃꮄꮅꮆꮇꮈꮉꮊꮋꮌꮍꮎꮏ</div>
-<div class="line">ꮐꮑꮒꮓꮔꮕꮖꮗꮘꮙꮚꮛꮜꮝꮞꮟꮠꮡꮢꮣꮤꮥꮦꮧꮨꮩꮪꮫꮬꮭꮮꮯ</div>
-<div class="line">ꮰꮱꮲꮳꮴꮵꮶꮷꮸꮹꮺꮻꮼꮽꮾꮿ</div>
-</div>
-<div data-block="Meetei">
-<div class="line">ꯀꯁꯂꯃꯄꯅꯆꯇꯈꯉꯊꯋꯌꯍꯎꯏꯐꯑꯒꯓꯔꯕꯖꯗꯘꯙꯚꯛꯜꯝꯞꯟ</div>
-<div class="line">ꯠꯡꯢ꯫꯰꯱꯲꯳꯴꯵꯶꯷꯸꯹</div>
-</div>
-<div data-block="Alphabetic">
-<div class="line">fffiflffifflſtstﬓﬔﬕﬖﬗיִײַﬠﬡﬢﬣﬤﬥﬦﬧﬨ﬩שׁשׂשּׁשּׂאַאָאּבּ</div>
-<div class="line">גּדּהּוּזּטּיּךּכּלּמּנּסּףּפּצּקּרּשּתּוֹבֿכֿפֿﭏ</div>
-</div>
-<div data-block="Arabic">
-<div class="line">ﭐﭑﭒﭓﭔﭕﭖﭗﭘﭙﭚﭛﭜﭝﭞﭟﭠﭡﭢﭣﭤﭥﭦﭧﭨﭩﭪﭫﭬﭭﭮﭯ</div>
-<div class="line">ﭰﭱﭲﭳﭴﭵﭶﭷﭸﭹﭺﭻﭼﭽﭾﭿﮀﮁﮂﮃﮄﮅﮆﮇﮈﮉﮊﮋﮌﮍﮎﮏ</div>
-<div class="line">ﮐﮑﮒﮓﮔﮕﮖﮗﮘﮙﮚﮛﮜﮝﮞﮟﮠﮡﮢﮣﮤﮥﮦﮧﮨﮩﮪﮫﮬﮭﮮﮯ</div>
-<div class="line">ﮰﮱ﮲﮳﮴﮵﮶﮷﮸﮹﮺﮻﮼﮽﮾﮿﯀﯁ﯓﯔﯕﯖﯗﯘﯙﯚﯛﯜﯝﯞﯟﯠ</div>
-<div class="line">ﯡﯢﯣﯤﯥﯦﯧﯨﯩﯪﯫﯬﯭﯮﯯﯰﯱﯲﯳﯴﯵﯶﯷﯸﯹﯺﯻﯼﯽﯾﯿﰀ</div>
-<div class="line">ﰁﰂﰃﰄﰅﰆﰇﰈﰉﰊﰋﰌﰍﰎﰏﰐﰑﰒﰓﰔﰕﰖﰗﰘﰙﰚﰛﰜﰝﰞﰟﰠ</div>
-<div class="line">ﰡﰢﰣﰤﰥﰦﰧﰨﰩﰪﰫﰬﰭﰮﰯﰰﰱﰲﰳﰴﰵﰶﰷﰸﰹﰺﰻﰼﰽﰾﰿﱀ</div>
-<div class="line">ﱁﱂﱃﱄﱅﱆﱇﱈﱉﱊﱋﱌﱍﱎﱏﱐﱑﱒﱓﱔﱕﱖﱗﱘﱙﱚﱛﱜﱝﱞﱟﱠ</div>
-<div class="line">ﱡﱢﱣﱤﱥﱦﱧﱨﱩﱪﱫﱬﱭﱮﱯﱰﱱﱲﱳﱴﱵﱶﱷﱸﱹﱺﱻﱼﱽﱾﱿﲀ</div>
-<div class="line">ﲁﲂﲃﲄﲅﲆﲇﲈﲉﲊﲋﲌﲍﲎﲏﲐﲑﲒﲓﲔﲕﲖﲗﲘﲙﲚﲛﲜﲝﲞﲟﲠ</div>
-<div class="line">ﲡﲢﲣﲤﲥﲦﲧﲨﲩﲪﲫﲬﲭﲮﲯﲰﲱﲲﲳﲴﲵﲶﲷﲸﲹﲺﲻﲼﲽﲾﲿﳀ</div>
-<div class="line">ﳁﳂﳃﳄﳅﳆﳇﳈﳉﳊﳋﳌﳍﳎﳏﳐﳑﳒﳓﳔﳕﳖﳗﳘﳙﳚﳛﳜﳝﳞﳟﳠ</div>
-<div class="line">ﳡﳢﳣﳤﳥﳦﳧﳨﳩﳪﳫﳬﳭﳮﳯﳰﳱﳲﳳﳴﳵﳶﳷﳸﳹﳺﳻﳼﳽﳾﳿﴀ</div>
-<div class="line">ﴁﴂﴃﴄﴅﴆﴇﴈﴉﴊﴋﴌﴍﴎﴏﴐﴑﴒﴓﴔﴕﴖﴗﴘﴙﴚﴛﴜﴝﴞﴟﴠ</div>
-<div class="line">ﴡﴢﴣﴤﴥﴦﴧﴨﴩﴪﴫﴬﴭﴮﴯﴰﴱﴲﴳﴴﴵﴶﴷﴸﴹﴺﴻﴼﴽ﴾﴿ﵐ</div>
-<div class="line">ﵑﵒﵓﵔﵕﵖﵗﵘﵙﵚﵛﵜﵝﵞﵟﵠﵡﵢﵣﵤﵥﵦﵧﵨﵩﵪﵫﵬﵭﵮﵯﵰ</div>
-<div class="line">ﵱﵲﵳﵴﵵﵶﵷﵸﵹﵺﵻﵼﵽﵾﵿﶀﶁﶂﶃﶄﶅﶆﶇﶈﶉﶊﶋﶌﶍﶎﶏﶒ</div>
-<div class="line">ﶓﶔﶕﶖﶗﶘﶙﶚﶛﶜﶝﶞﶟﶠﶡﶢﶣﶤﶥﶦﶧﶨﶩﶪﶫﶬﶭﶮﶯﶰﶱﶲ</div>
-<div class="line">ﶳﶴﶵﶶﶷﶸﶹﶺﶻﶼﶽﶾﶿﷀﷁﷂﷃﷄﷅﷆﷇﷰﷱﷲﷳﷴﷵﷶﷷﷸﷹﷺ</div>
-<div class="line">ﷻ﷼﷽</div>
-</div>
-<div data-block="CJK">
-<div class="line">﹉﹊﹋﹌﹍﹎﹏</div>
-</div>
-<div data-block="Small">
-<div class="line">﹘﹣﹤﹥﹦</div>
-</div>
-<div data-block="Arabic">
-<div class="line">ﹰﹱﹲﹳﹴﹶﹷﹸﹹﹺﹻﹼﹽﹾﹿﺀﺁﺂﺃﺄﺅﺆﺇﺈﺉﺊﺋﺌﺍﺎﺏﺐ</div>
-<div class="line">ﺑﺒﺓﺔﺕﺖﺗﺘﺙﺚﺛﺜﺝﺞﺟﺠﺡﺢﺣﺤﺥﺦﺧﺨﺩﺪﺫﺬﺭﺮﺯﺰ</div>
-<div class="line">ﺱﺲﺳﺴﺵﺶﺷﺸﺹﺺﺻﺼﺽﺾﺿﻀﻁﻂﻃﻄﻅﻆﻇﻈﻉﻊﻋﻌﻍﻎﻏﻐ</div>
-<div class="line">ﻑﻒﻓﻔﻕﻖﻗﻘﻙﻚﻛﻜﻝﻞﻟﻠﻡﻢﻣﻤﻥﻦﻧﻨﻩﻪﻫﻬﻭﻮﻯﻰ</div>
-<div class="line">ﻱﻲﻳﻴﻵﻶﻷﻸﻹﻺﻻﻼ</div>
-</div>
-<div data-block="Halfwidth">
-<div class="line">-<=>。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシ</div>
-<div class="line">スセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワ</div>
-<div class="line">ン゙゚ᅠᄀᄁᆪᄂᆬᆭᄃᄄᄅᆰᆱᆲᆳᆴᆵᄚᄆᄇᄈᄡᄉᄊᄋᄌᄍᄎᄏᄐ</div>
-<div class="line">ᄑ하ᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵ│←↑→↓■○</div>
-</div>
-<div data-block="Linear">
-<div class="line">𐀀𐀁𐀂𐀃𐀄𐀅𐀆𐀇𐀈𐀉𐀊𐀋𐀍𐀎𐀏𐀐𐀑𐀒𐀓𐀔𐀕𐀖𐀗𐀘𐀙𐀚𐀛𐀜𐀝𐀞𐀟𐀠</div>
-<div class="line">𐀡𐀢𐀣𐀤𐀥𐀦𐀨𐀩𐀪𐀫𐀬𐀭𐀮𐀯𐀰𐀱𐀲𐀳𐀴𐀵𐀶𐀷𐀸𐀹𐀺𐀼𐀽𐀿𐁀𐁁𐁂𐁃</div>
-<div class="line">𐁄𐁅𐁆𐁇𐁈𐁉𐁊𐁋𐁌𐁍𐁐𐁑𐁒𐁓𐁔𐁕𐁖𐁗𐁘𐁙𐁚𐁛𐁜𐁝𐂀𐂁𐂂𐂃𐂄𐂅𐂆𐂇</div>
-<div class="line">𐂈𐂉𐂊𐂋𐂌𐂍𐂎𐂏𐂐𐂑𐂒𐂓𐂔𐂕𐂖𐂗𐂘𐂙𐂚𐂛𐂜𐂝𐂞𐂟𐂠𐂡𐂢𐂣𐂤𐂥𐂦𐂧</div>
-<div class="line">𐂨𐂩𐂪𐂫𐂬𐂭𐂮𐂯𐂰𐂱𐂲𐂳𐂴𐂵𐂶𐂷𐂸𐂹𐂺𐂻𐂼𐂽𐂾𐂿𐃀𐃁𐃂𐃃𐃄𐃅𐃆𐃇</div>
-<div class="line">𐃈𐃉𐃊𐃋𐃌𐃍𐃎𐃏𐃐𐃑𐃒𐃓𐃔𐃕𐃖𐃗𐃘𐃙𐃚𐃛𐃜𐃝𐃞𐃟𐃠𐃡𐃢𐃣𐃤𐃥𐃦𐃧</div>
-<div class="line">𐃨𐃩𐃪𐃫𐃬𐃭𐃮𐃯𐃰𐃱𐃲𐃳𐃴𐃵𐃶𐃷𐃸𐃹𐃺</div>
-</div>
-<div data-block="Aegean">
-<div class="line">𐄀𐄁𐄂𐄇𐄈𐄉𐄊𐄋𐄌𐄍𐄎𐄏𐄐𐄑𐄒𐄓𐄔𐄕𐄖𐄗𐄘𐄙𐄚𐄛𐄜𐄝𐄞𐄟𐄠𐄡𐄢𐄣</div>
-<div class="line">𐄤𐄥𐄦𐄧𐄨𐄩𐄪𐄫𐄬𐄭𐄮𐄯𐄰𐄱𐄲𐄳𐄷𐄸𐄹𐄺𐄻𐄼𐄽𐄾𐄿</div>
-</div>
-<div data-block="Ancient">
-<div class="line">𐅀𐅁𐅂𐅃𐅄𐅅𐅆𐅇𐅈𐅉𐅊𐅋𐅌𐅍𐅎𐅏𐅐𐅑𐅒𐅓𐅔𐅕𐅖𐅗𐅘𐅙𐅚𐅛𐅜𐅝𐅞𐅟</div>
-<div class="line">𐅠𐅡𐅢𐅣𐅤𐅥𐅦𐅧𐅨𐅩𐅪𐅫𐅬𐅭𐅮𐅯𐅰𐅱𐅲𐅳𐅴𐅵𐅶𐅷𐅸𐅹𐅺𐅻𐅼𐅽𐅾𐅿</div>
-<div class="line">𐆀𐆁𐆂𐆃𐆄𐆅𐆆𐆇𐆈𐆉𐆊𐆋𐆌𐆍𐆎𐆐𐆑𐆒𐆓𐆔𐆕𐆖𐆗𐆘𐆙𐆚𐆛𐆠</div>
-</div>
-<div data-block="Phaistos">
-<div class="line">𐇐𐇑𐇒𐇓𐇔𐇕𐇖𐇗𐇘𐇙𐇚𐇛𐇜𐇝𐇞𐇟𐇠𐇡𐇢𐇣𐇤𐇥𐇦𐇧𐇨𐇩𐇪𐇫𐇬𐇭𐇮𐇯</div>
-<div class="line">𐇰𐇱𐇲𐇳𐇴𐇵𐇶𐇷𐇸𐇹𐇺𐇻𐇼</div>
-</div>
-<div data-block="Lycian">
-<div class="line">𐊀𐊁𐊂𐊃𐊄𐊅𐊆𐊇𐊈𐊉𐊊𐊋𐊌𐊍𐊎𐊏𐊐𐊑𐊒𐊓𐊔𐊕𐊖𐊗𐊘𐊙𐊚𐊛𐊜</div>
-</div>
-<div data-block="Carian">
-<div class="line">𐊠𐊡𐊢𐊣𐊤𐊥𐊦𐊧𐊨𐊩𐊪𐊫𐊬𐊭𐊮𐊯𐊰𐊱𐊲𐊳𐊴𐊵𐊶𐊷𐊸𐊹𐊺𐊻𐊼𐊽𐊾𐊿</div>
-<div class="line">𐋀𐋁𐋂𐋃𐋄𐋅𐋆𐋇𐋈𐋉𐋊𐋋𐋌𐋍𐋎𐋏𐋐</div>
-</div>
-<div data-block="Coptic">
-<div class="line">𐋡𐋢𐋣𐋤𐋥𐋦𐋧𐋨𐋩𐋪𐋫𐋬𐋭𐋮𐋯𐋰𐋱𐋲𐋳𐋴𐋵𐋶𐋷𐋸𐋹𐋺𐋻</div>
-</div>
-<div data-block="Old">
-<div class="line">𐌀𐌁𐌂𐌃𐌄𐌅𐌆𐌇𐌈𐌉𐌊𐌋𐌌𐌍𐌎𐌏𐌐𐌑𐌒𐌓𐌔𐌕𐌖𐌗𐌘𐌙𐌚𐌛𐌜𐌝𐌞𐌟</div>
-<div class="line">𐌠𐌡𐌢𐌣</div>
-</div>
-<div data-block="Gothic">
-<div class="line">𐌰𐌱𐌲𐌳𐌴𐌵𐌶𐌷𐌸𐌹𐌺𐌻𐌼𐌽𐌾𐌿𐍀𐍁𐍂𐍃𐍄𐍅𐍆𐍇𐍈𐍉𐍊</div>
-</div>
-<div data-block="Old">
-<div class="line">𐍐𐍑𐍒𐍓𐍔𐍕𐍖𐍗𐍘𐍙𐍚𐍛𐍜𐍝𐍞𐍟𐍠𐍡𐍢𐍣𐍤𐍥𐍦𐍧𐍨𐍩𐍪𐍫𐍬𐍭𐍮𐍯</div>
-<div class="line">𐍰𐍱𐍲𐍳𐍴𐍵</div>
-</div>
-<div data-block="Ugaritic">
-<div class="line">𐎀𐎁𐎂𐎃𐎄𐎅𐎆𐎇𐎈𐎉𐎊𐎋𐎌𐎍𐎎𐎏𐎐𐎑𐎒𐎓𐎔𐎕𐎖𐎗𐎘𐎙𐎚𐎛𐎜𐎝𐎟</div>
-</div>
-<div data-block="Old">
-<div class="line">𐎠𐎡𐎢𐎣𐎤𐎥𐎦𐎧𐎨𐎩𐎪𐎫𐎬𐎭𐎮𐎯𐎰𐎱𐎲𐎳𐎴𐎵𐎶𐎷𐎸𐎹𐎺𐎻𐎼𐎽𐎾𐎿</div>
-<div class="line">𐏀𐏁𐏂𐏃𐏈𐏉𐏊𐏋𐏌𐏍𐏎𐏏𐏐𐏑𐏒𐏓𐏔𐏕</div>
-</div>
-<div data-block="Deseret">
-<div class="line">𐐀𐐁𐐂𐐃𐐄𐐅𐐆𐐇𐐈𐐉𐐊𐐋𐐌𐐍𐐎𐐏𐐐𐐑𐐒𐐓𐐔𐐕𐐖𐐗𐐘𐐙𐐚𐐛𐐜𐐝𐐞𐐟</div>
-<div class="line">𐐠𐐡𐐢𐐣𐐤𐐥𐐦𐐧𐐨𐐩𐐪𐐫𐐬𐐭𐐮𐐯𐐰𐐱𐐲𐐳𐐴𐐵𐐶𐐷𐐸𐐹𐐺𐐻𐐼𐐽𐐾𐐿</div>
-<div class="line">𐑀𐑁𐑂𐑃𐑄𐑅𐑆𐑇𐑈𐑉𐑊𐑋𐑌𐑍𐑎𐑏</div>
-</div>
-<div data-block="Shavian">
-<div class="line">𐑐𐑑𐑒𐑓𐑔𐑕𐑖𐑗𐑘𐑙𐑚𐑛𐑜𐑝𐑞𐑟𐑠𐑡𐑢𐑣𐑤𐑥𐑦𐑧𐑨𐑩𐑪𐑫𐑬𐑭𐑮𐑯</div>
-<div class="line">𐑰𐑱𐑲𐑳𐑴𐑵𐑶𐑷𐑸𐑹𐑺𐑻𐑼𐑽𐑾𐑿</div>
-</div>
-<div data-block="Osmanya">
-<div class="line">𐒀𐒁𐒂𐒃𐒄𐒅𐒆𐒇𐒈𐒉𐒊𐒋𐒌𐒍𐒎𐒏𐒐𐒑𐒒𐒓𐒔𐒕𐒖𐒗𐒘𐒙𐒚𐒛𐒜𐒝𐒠𐒡</div>
-<div class="line">𐒢𐒣𐒤𐒥𐒦𐒧𐒨𐒩</div>
-</div>
-<div data-block="Osage">
-<div class="line">𐒰𐒱𐒲𐒳𐒴𐒵𐒶𐒷𐒸𐒹𐒺𐒻𐒼𐒽𐒾𐒿𐓀𐓁𐓂𐓃𐓄𐓅𐓆𐓇𐓈𐓉𐓊𐓋𐓌𐓍𐓎𐓏</div>
-<div class="line">𐓐𐓑𐓒𐓓𐓘𐓙𐓚𐓛𐓜𐓝𐓞𐓟𐓠𐓡𐓢𐓣𐓤𐓥𐓦𐓧𐓨𐓩𐓪𐓫𐓬𐓭𐓮𐓯𐓰𐓱𐓲𐓳</div>
-<div class="line">𐓴𐓵𐓶𐓷𐓸𐓹𐓺𐓻</div>
-</div>
-<div data-block="Elbasan">
-<div class="line">𐔀𐔁𐔂𐔃𐔄𐔅𐔆𐔇𐔈𐔉𐔊𐔋𐔌𐔍𐔎𐔏𐔐𐔑𐔒𐔓𐔔𐔕𐔖𐔗𐔘𐔙𐔚𐔛𐔜𐔝𐔞𐔟</div>
-<div class="line">𐔠𐔡𐔢𐔣𐔤𐔥𐔦𐔧</div>
-</div>
-<div data-block="Caucasian">
-<div class="line">𐔰𐔱𐔲𐔳𐔴𐔵𐔶𐔷𐔸𐔹𐔺𐔻𐔼𐔽𐔾𐔿𐕀𐕁𐕂𐕃𐕄𐕅𐕆𐕇𐕈𐕉𐕊𐕋𐕌𐕍𐕎𐕏</div>
-<div class="line">𐕐𐕑𐕒𐕓𐕔𐕕𐕖𐕗𐕘𐕙𐕚𐕛𐕜𐕝𐕞𐕟𐕠𐕡𐕢𐕣𐕯</div>
-</div>
-<div data-block="Linear">
-<div class="line">𐘀𐘁𐘂𐘃𐘄𐘅𐘆𐘇𐘈𐘉𐘊𐘋𐘌𐘍𐘎𐘏𐘐𐘑𐘒𐘓𐘔𐘕𐘖𐘗𐘘𐘙𐘚𐘛𐘜𐘝𐘞𐘟</div>
-<div class="line">𐘠𐘡𐘢𐘣𐘤𐘥𐘦𐘧𐘨𐘩𐘪𐘫𐘬𐘭𐘮𐘯𐘰𐘱𐘲𐘳𐘴𐘵𐘶𐘷𐘸𐘹𐘺𐘻𐘼𐘽𐘾𐘿</div>
-<div class="line">𐙀𐙁𐙂𐙃𐙄𐙅𐙆𐙇𐙈𐙉𐙊𐙋𐙌𐙍𐙎𐙏𐙐𐙑𐙒𐙓𐙔𐙕𐙖𐙗𐙘𐙙𐙚𐙛𐙜𐙝𐙞𐙟</div>
-<div class="line">𐙠𐙡𐙢𐙣𐙤𐙥𐙦𐙧𐙨𐙩𐙪𐙫𐙬𐙭𐙮𐙯𐙰𐙱𐙲𐙳𐙴𐙵𐙶𐙷𐙸𐙹𐙺𐙻𐙼𐙽𐙾𐙿</div>
-<div class="line">𐚀𐚁𐚂𐚃𐚄𐚅𐚆𐚇𐚈𐚉𐚊𐚋𐚌𐚍𐚎𐚏𐚐𐚑𐚒𐚓𐚔𐚕𐚖𐚗𐚘𐚙𐚚𐚛𐚜𐚝𐚞𐚟</div>
-<div class="line">𐚠𐚡𐚢𐚣𐚤𐚥𐚦𐚧𐚨𐚩𐚪𐚫𐚬𐚭𐚮𐚯𐚰𐚱𐚲𐚳𐚴𐚵𐚶𐚷𐚸𐚹𐚺𐚻𐚼𐚽𐚾𐚿</div>
-<div class="line">𐛀𐛁𐛂𐛃𐛄𐛅𐛆𐛇𐛈𐛉𐛊𐛋𐛌𐛍𐛎𐛏𐛐𐛑𐛒𐛓𐛔𐛕𐛖𐛗𐛘𐛙𐛚𐛛𐛜𐛝𐛞𐛟</div>
-<div class="line">𐛠𐛡𐛢𐛣𐛤𐛥𐛦𐛧𐛨𐛩𐛪𐛫𐛬𐛭𐛮𐛯𐛰𐛱𐛲𐛳𐛴𐛵𐛶𐛷𐛸𐛹𐛺𐛻𐛼𐛽𐛾𐛿</div>
-<div class="line">𐜀𐜁𐜂𐜃𐜄𐜅𐜆𐜇𐜈𐜉𐜊𐜋𐜌𐜍𐜎𐜏𐜐𐜑𐜒𐜓𐜔𐜕𐜖𐜗𐜘𐜙𐜚𐜛𐜜𐜝𐜞𐜟</div>
-<div class="line">𐜠𐜡𐜢𐜣𐜤𐜥𐜦𐜧𐜨𐜩𐜪𐜫𐜬𐜭𐜮𐜯𐜰𐜱𐜲𐜳𐜴𐜵𐜶𐝀𐝁𐝂𐝃𐝄𐝅𐝆𐝇𐝈</div>
-<div class="line">𐝉𐝊𐝋𐝌𐝍𐝎𐝏𐝐𐝑𐝒𐝓𐝔𐝕𐝠𐝡𐝢𐝣𐝤𐝥𐝦𐝧</div>
-</div>
-<div data-block="Cypriot">
-<div class="line">𐠀𐠁𐠂𐠃𐠄𐠅𐠈𐠊𐠋𐠌𐠍𐠎𐠏𐠐𐠑𐠒𐠓𐠔𐠕𐠖𐠗𐠘𐠙𐠚𐠛𐠜𐠝𐠞𐠟𐠠𐠡𐠢</div>
-<div class="line">𐠣𐠤𐠥𐠦𐠧𐠨𐠩𐠪𐠫𐠬𐠭𐠮𐠯𐠰𐠱𐠲𐠳𐠴𐠵𐠷𐠸𐠼𐠿</div>
-</div>
-<div data-block="Imperial">
-<div class="line">𐡀𐡁𐡂𐡃𐡄𐡅𐡆𐡇𐡈𐡉𐡊𐡋𐡌𐡍𐡎𐡏𐡐𐡑𐡒𐡓𐡔𐡕𐡗𐡘𐡙𐡚𐡛𐡜𐡝𐡞𐡟</div>
-</div>
-<div data-block="Palmyrene">
-<div class="line">𐡠𐡡𐡢𐡣𐡤𐡥𐡦𐡧𐡨𐡩𐡪𐡫𐡬𐡭𐡮𐡯𐡰𐡱𐡲𐡳𐡴𐡵𐡶𐡷𐡸𐡹𐡺𐡻𐡼𐡽𐡾𐡿</div>
-</div>
-<div data-block="Nabataean">
-<div class="line">𐢀𐢁𐢂𐢃𐢄𐢅𐢆𐢇𐢈𐢉𐢊𐢋𐢌𐢍𐢎𐢏𐢐𐢑𐢒𐢓𐢔𐢕𐢖𐢗𐢘𐢙𐢚𐢛𐢜𐢝𐢞𐢧</div>
-<div class="line">𐢨𐢩𐢪𐢫𐢬𐢭𐢮𐢯</div>
-</div>
-<div data-block="Hatran">
-<div class="line">𐣠𐣡𐣢𐣣𐣤𐣥𐣦𐣧𐣨𐣩𐣪𐣫𐣬𐣭𐣮𐣯𐣰𐣱𐣲𐣴𐣵𐣻𐣼𐣽𐣾𐣿</div>
-</div>
-<div data-block="Phoenician">
-<div class="line">𐤀𐤁𐤂𐤃𐤄𐤅𐤆𐤇𐤈𐤉𐤊𐤋𐤌𐤍𐤎𐤏𐤐𐤑𐤒𐤓𐤔𐤕𐤖𐤗𐤘𐤙𐤚𐤛𐤟</div>
-</div>
-<div data-block="Lydian">
-<div class="line">𐤠𐤡𐤢𐤣𐤤𐤥𐤦𐤧𐤨𐤩𐤪𐤫𐤬𐤭𐤮𐤯𐤰𐤱𐤲𐤳𐤴𐤵𐤶𐤷𐤸𐤹𐤿</div>
-</div>
-<div data-block="Meroitic">
-<div class="line">𐦠𐦡𐦢𐦣𐦤𐦥𐦦𐦧𐦨𐦩𐦪𐦫𐦬𐦭𐦮𐦯𐦰𐦱𐦲𐦳𐦴𐦵𐦶𐦷𐦼𐦽𐦾𐦿𐧀𐧁𐧂𐧃</div>
-<div class="line">𐧄𐧅𐧆𐧇𐧈𐧉𐧊𐧋𐧌𐧍𐧎𐧏𐧒𐧓𐧔𐧕𐧖𐧗𐧘𐧙𐧚𐧛𐧜𐧝𐧞𐧟𐧠𐧡𐧢𐧣𐧤𐧥</div>
-<div class="line">𐧦𐧧𐧨𐧩𐧪𐧫𐧬𐧭𐧮𐧯𐧰𐧱𐧲𐧳𐧴𐧵𐧶𐧷𐧸𐧹𐧺𐧻𐧼𐧽𐧾𐧿</div>
-</div>
-<div data-block="Kharoshthi">
-<div class="line">𐨀𐨐𐨑𐨒𐨓𐨕𐨖𐨗𐨙𐨚𐨛𐨜𐨝𐨞𐨟𐨠𐨡𐨢𐨣𐨤𐨥𐨦𐨧𐨨𐨩𐨪𐨫𐨬𐨭𐨮𐨯𐨰</div>
-<div class="line">𐨱𐨲𐨳𐩀𐩁𐩂𐩃𐩄𐩅𐩆𐩇𐩐𐩑𐩒𐩓𐩔𐩕𐩖𐩗𐩘</div>
-</div>
-<div data-block="Old">
-<div class="line">𐩠𐩡𐩢𐩣𐩤𐩥𐩦𐩧𐩨𐩩𐩪𐩫𐩬𐩭𐩮𐩯𐩰𐩱𐩲𐩳𐩴𐩵𐩶𐩷𐩸𐩹𐩺𐩻𐩼𐩽𐩾𐩿</div>
-<div class="line">𐪀𐪁𐪂𐪃𐪄𐪅𐪆𐪇𐪈𐪉𐪊𐪋𐪌𐪍𐪎𐪏𐪐𐪑𐪒𐪓𐪔𐪕𐪖𐪗𐪘𐪙𐪚𐪛𐪜𐪝𐪞𐪟</div>
-</div>
-<div data-block="Manichaean">
-<div class="line">𐫀𐫁𐫂𐫃𐫄𐫅𐫆𐫇𐫈𐫉𐫊𐫋𐫌𐫍𐫎𐫏𐫐𐫑𐫒𐫓𐫔𐫕𐫖𐫗𐫘𐫙𐫚𐫛𐫜𐫝𐫞𐫟</div>
-<div class="line">𐫠𐫡𐫢𐫣𐫤𐫫𐫬𐫭𐫮𐫯𐫰𐫱𐫲𐫳𐫴𐫵𐫶</div>
-</div>
-<div data-block="Avestan">
-<div class="line">𐬀𐬁𐬂𐬃𐬄𐬅𐬆𐬇𐬈𐬉𐬊𐬋𐬌𐬍𐬎𐬏𐬐𐬑𐬒𐬓𐬔𐬕𐬖𐬗𐬘𐬙𐬚𐬛𐬜𐬝𐬞𐬟</div>
-<div class="line">𐬠𐬡𐬢𐬣𐬤𐬥𐬦𐬧𐬨𐬩𐬪𐬫𐬬𐬭𐬮𐬯𐬰𐬱𐬲𐬳𐬴𐬵𐬹𐬺𐬻𐬼𐬽𐬾𐬿</div>
-</div>
-<div data-block="Inscriptional">
-<div class="line">𐭀𐭁𐭂𐭃𐭄𐭅𐭆𐭇𐭈𐭉𐭊𐭋𐭌𐭍𐭎𐭏𐭐𐭑𐭒𐭓𐭔𐭕𐭘𐭙𐭚𐭛𐭜𐭝𐭞𐭟𐭠𐭡</div>
-<div class="line">𐭢𐭣𐭤𐭥𐭦𐭧𐭨𐭩𐭪𐭫𐭬𐭭𐭮𐭯𐭰𐭱𐭲𐭸𐭹𐭺𐭻𐭼𐭽𐭾𐭿</div>
-</div>
-<div data-block="Psalter">
-<div class="line">𐮀𐮁𐮂𐮃𐮄𐮅𐮆𐮇𐮈𐮉𐮊𐮋𐮌𐮍𐮎𐮏𐮐𐮑𐮙𐮚𐮛𐮜𐮩𐮪𐮫𐮬𐮭𐮮𐮯</div>
-</div>
-<div data-block="Old">
-<div class="line">𐰀𐰁𐰂𐰃𐰄𐰅𐰆𐰇𐰈𐰉𐰊𐰋𐰌𐰍𐰎𐰏𐰐𐰑𐰒𐰓𐰔𐰕𐰖𐰗𐰘𐰙𐰚𐰛𐰜𐰝𐰞𐰟</div>
-<div class="line">𐰠𐰡𐰢𐰣𐰤𐰥𐰦𐰧𐰨𐰩𐰪𐰫𐰬𐰭𐰮𐰯𐰰𐰱𐰲𐰳𐰴𐰵𐰶𐰷𐰸𐰹𐰺𐰻𐰼𐰽𐰾𐰿</div>
-<div class="line">𐱀𐱁𐱂𐱃𐱄𐱅𐱆𐱇𐱈𐲀𐲁𐲂𐲃𐲄𐲅𐲆𐲇𐲈𐲉𐲊𐲋𐲌𐲍𐲎𐲏𐲐𐲑𐲒𐲓𐲔𐲕𐲖</div>
-<div class="line">𐲗𐲘𐲙𐲚𐲛𐲜𐲝𐲞𐲟𐲠𐲡𐲢𐲣𐲤𐲥𐲦𐲧𐲨𐲩𐲪𐲫𐲬𐲭𐲮𐲯𐲰𐲱𐲲𐳀𐳁𐳂𐳃</div>
-<div class="line">𐳄𐳅𐳆𐳇𐳈𐳉𐳊𐳋𐳌𐳍𐳎𐳏𐳐𐳑𐳒𐳓𐳔𐳕𐳖𐳗𐳘𐳙𐳚𐳛𐳜𐳝𐳞𐳟𐳠𐳡𐳢𐳣</div>
-<div class="line">𐳤𐳥𐳦𐳧𐳨𐳩𐳪𐳫𐳬𐳭𐳮𐳯𐳰𐳱𐳲𐳺𐳻𐳼𐳽𐳾𐳿</div>
-</div>
-<div data-block="Rumi">
-<div class="line">𐹠𐹡𐹢𐹣𐹤𐹥𐹦𐹧𐹨𐹩𐹪𐹫𐹬𐹭𐹮𐹯𐹰𐹱𐹲𐹳𐹴𐹵𐹶𐹷𐹸𐹹𐹺𐹻𐹼𐹽𐹾</div>
-</div>
-<div data-block="Brahmi">
-<div class="line">𑀃𑀄𑀅𑀆𑀇𑀈𑀉𑀊𑀋𑀌𑀍𑀎𑀏𑀐𑀑𑀒𑀓𑀔𑀕𑀖𑀗𑀘𑀙𑀚𑀛𑀜𑀝𑀞𑀟𑀠𑀡𑀢</div>
-<div class="line">𑀣𑀤𑀥𑀦𑀧𑀨𑀩𑀪𑀫𑀬𑀭𑀮𑀯𑀰𑀱𑀲𑀳𑀴𑀵𑀶𑀷𑁇𑁈𑁉𑁊𑁋𑁌𑁍𑁒𑁓𑁔𑁕</div>
-<div class="line">𑁖𑁗𑁘𑁙𑁚𑁛𑁜𑁝𑁞𑁟𑁠𑁡𑁢𑁣𑁤𑁥𑁦𑁧𑁨𑁩𑁪𑁫𑁬𑁭𑁮𑁯</div>
-</div>
-<div data-block="Kaithi">
-<div class="line">𑂃𑂄𑂅𑂆𑂇𑂈𑂉𑂊𑂋𑂌𑂍𑂎𑂏𑂐𑂑𑂒𑂓𑂔𑂕𑂖𑂗𑂘𑂙𑂚𑂛𑂜𑂝𑂞𑂟𑂠𑂡𑂢</div>
-<div class="line">𑂣𑂤𑂥𑂦𑂧𑂨𑂩𑂪𑂫𑂬𑂭𑂮𑂯𑂻𑂼𑂾𑂿𑃀𑃁</div>
-</div>
-<div data-block="Sora">
-<div class="line">𑃐𑃑𑃒𑃓𑃔𑃕𑃖𑃗𑃘𑃙𑃚𑃛𑃜𑃝𑃞𑃟𑃠𑃡𑃢𑃣𑃤𑃥𑃦𑃧𑃨𑃰𑃱𑃲𑃳𑃴𑃵𑃶</div>
-<div class="line">𑃷𑃸𑃹</div>
-</div>
-<div data-block="Chakma">
-<div class="line">𑄃𑄄𑄅𑄆𑄇𑄈𑄉𑄊𑄋𑄌𑄍𑄎𑄏𑄐𑄑𑄒𑄓𑄔𑄕𑄖𑄗𑄘𑄙𑄚𑄛𑄜𑄝𑄞𑄟𑄠𑄡𑄢</div>
-<div class="line">𑄣𑄤𑄥𑄦𑄶𑄷𑄸𑄹𑄺𑄻𑄼𑄽𑄾𑄿𑅀𑅁𑅂𑅃</div>
-</div>
-<div data-block="Mahajani">
-<div class="line">𑅐𑅑𑅒𑅓𑅔𑅕𑅖𑅗𑅘𑅙𑅚𑅛𑅜𑅝𑅞𑅟𑅠𑅡𑅢𑅣𑅤𑅥𑅦𑅧𑅨𑅩𑅪𑅫𑅬𑅭𑅮𑅯</div>
-<div class="line">𑅰𑅱𑅲𑅴𑅵𑅶</div>
-</div>
-<div data-block="Sharada">
-<div class="line">𑆃𑆄𑆅𑆆𑆇𑆈𑆉𑆊𑆋𑆌𑆍𑆎𑆏𑆐𑆑𑆒𑆓𑆔𑆕𑆖𑆗𑆘𑆙𑆚𑆛𑆜𑆝𑆞𑆟𑆠𑆡𑆢</div>
-<div class="line">𑆣𑆤𑆥𑆦𑆧𑆨𑆩𑆪𑆫𑆬𑆭𑆮𑆯𑆰𑆱𑆲𑇁𑇂𑇃𑇄𑇅𑇆𑇇𑇈𑇉𑇍𑇐𑇑𑇒𑇓𑇔𑇕</div>
-<div class="line">𑇖𑇗𑇘𑇙𑇚𑇛𑇜𑇝𑇞𑇟</div>
-</div>
-<div data-block="Sinhala">
-<div class="line">𑇡𑇢𑇣𑇤𑇥𑇦𑇧𑇨𑇩𑇪𑇫𑇬𑇭𑇮𑇯𑇰𑇱𑇲𑇳𑇴</div>
-</div>
-<div data-block="Khojki">
-<div class="line">𑈀𑈁𑈂𑈃𑈄𑈅𑈆𑈇𑈈𑈉𑈊𑈋𑈌𑈍𑈎𑈏𑈐𑈑𑈓𑈔𑈕𑈖𑈗𑈘𑈙𑈚𑈛𑈜𑈝𑈞𑈟𑈠</div>
-<div class="line">𑈡𑈢𑈣𑈤𑈥𑈦𑈧𑈨𑈩𑈪𑈫𑈸𑈹𑈺𑈻𑈼𑈽</div>
-</div>
-<div data-block="Multani">
-<div class="line">𑊀𑊁𑊂𑊃𑊄𑊅𑊆𑊈𑊊𑊋𑊌𑊍𑊏𑊐𑊑𑊒𑊓𑊔𑊕𑊖𑊗𑊘𑊙𑊚𑊛𑊜𑊝𑊟𑊠𑊡𑊢𑊣</div>
-<div class="line">𑊤𑊥𑊦𑊧𑊨𑊩</div>
-</div>
-<div data-block="Khudawadi">
-<div class="line">𑊰𑊱𑊲𑊳𑊴𑊵𑊶𑊷𑊸𑊹𑊺𑊻𑊼𑊽𑊾𑊿𑋀𑋁𑋂𑋃𑋄𑋅𑋆𑋇𑋈𑋉𑋊𑋋𑋌𑋍𑋎𑋏</div>
-<div class="line">𑋐𑋑𑋒𑋓𑋔𑋕𑋖𑋗𑋘𑋙𑋚𑋛𑋜𑋝𑋞𑋰𑋱𑋲𑋳𑋴𑋵𑋶𑋷𑋸𑋹</div>
-</div>
-<div data-block="Grantha">
-<div class="line">𑌅𑌆𑌇𑌈𑌉𑌊𑌋𑌌𑌏𑌐𑌓𑌔𑌕𑌖𑌗𑌘𑌙𑌚𑌛𑌜𑌝𑌞𑌟𑌠𑌡𑌢𑌣𑌤𑌥𑌦𑌧𑌨</div>
-<div class="line">𑌪𑌫𑌬𑌭𑌮𑌯𑌰𑌲𑌳𑌵𑌶𑌷𑌸𑌹𑌽𑍐𑍝𑍞𑍟𑍠𑍡</div>
-</div>
-<div data-block="Newa">
-<div class="line">𑐀𑐁𑐂𑐃𑐄𑐅𑐆𑐇𑐈𑐉𑐊𑐋𑐌𑐍𑐎𑐏𑐐𑐑𑐒𑐓𑐔𑐕𑐖𑐗𑐘𑐙𑐚𑐛𑐜𑐝𑐞𑐟</div>
-<div class="line">𑐠𑐡𑐢𑐣𑐤𑐥𑐦𑐧𑐨𑐩𑐪𑐫𑐬𑐭𑐮𑐯𑐰𑐱𑐲𑐳𑐴𑑇𑑈𑑉𑑊𑑋𑑌𑑍𑑎𑑏𑑐𑑑</div>
-<div class="line">𑑒𑑓𑑔𑑕𑑖𑑗𑑘𑑙𑑛𑑝</div>
-</div>
-<div data-block="Tirhuta">
-<div class="line">𑒀𑒁𑒂𑒃𑒄𑒅𑒆𑒇𑒈𑒉𑒊𑒋𑒌𑒍𑒎𑒏𑒐𑒑𑒒𑒓𑒔𑒕𑒖𑒗𑒘𑒙𑒚𑒛𑒜𑒝𑒞𑒟</div>
-<div class="line">𑒠𑒡𑒢𑒣𑒤𑒥𑒦𑒧𑒨𑒩𑒪𑒫𑒬𑒭𑒮𑒯𑓄𑓅𑓆𑓇𑓐𑓑𑓒𑓓𑓔𑓕𑓖𑓗𑓘𑓙</div>
-</div>
-<div data-block="Modi">
-<div class="line">𑘀𑘁𑘂𑘃𑘄𑘅𑘆𑘇𑘈𑘉𑘊𑘋𑘌𑘍𑘎𑘏𑘐𑘑𑘒𑘓𑘔𑘕𑘖𑘗𑘘𑘙𑘚𑘛𑘜𑘝𑘞𑘟</div>
-<div class="line">𑘠𑘡𑘢𑘣𑘤𑘥𑘦𑘧𑘨𑘩𑘪𑘫𑘬𑘭𑘮𑘯𑙁𑙂𑙃𑙄𑙐𑙑𑙒𑙓𑙔𑙕𑙖𑙗𑙘𑙙</div>
-</div>
-<div data-block="Mongolian">
-<div class="line">𑙠𑙡𑙢𑙣𑙤𑙥𑙦𑙧𑙨𑙩𑙪𑙫𑙬</div>
-</div>
-<div data-block="Takri">
-<div class="line">𑚀𑚁𑚂𑚃𑚄𑚅𑚆𑚇𑚈𑚉𑚊𑚋𑚌𑚍𑚎𑚏𑚐𑚑𑚒𑚓𑚔𑚕𑚖𑚗𑚘𑚙𑚚𑚛𑚜𑚝𑚞𑚟</div>
-<div class="line">𑚠𑚡𑚢𑚣𑚤𑚥𑚦𑚧𑚨𑚩𑚪𑛀𑛁𑛂𑛃𑛄𑛅𑛆𑛇𑛈𑛉</div>
-</div>
-<div data-block="Ahom">
-<div class="line">𑜀𑜁𑜂𑜃𑜄𑜅𑜆𑜇𑜈𑜉𑜊𑜋𑜌𑜍𑜎𑜏𑜐𑜑𑜒𑜓𑜔𑜕𑜖𑜗𑜘𑜙𑜰𑜱𑜲𑜳𑜴𑜵</div>
-<div class="line">𑜶𑜷𑜸𑜹𑜺𑜻𑜼𑜽𑜾𑜿</div>
-</div>
-<div data-block="Warang">
-<div class="line">𑢠𑢡𑢢𑢣𑢤𑢥𑢦𑢧𑢨𑢩𑢪𑢫𑢬𑢭𑢮𑢯𑢰𑢱𑢲𑢳𑢴𑢵𑢶𑢷𑢸𑢹𑢺𑢻𑢼𑢽𑢾𑢿</div>
-<div class="line">𑣀𑣁𑣂𑣃𑣄𑣅𑣆𑣇𑣈𑣉𑣊𑣋𑣌𑣍𑣎𑣏𑣐𑣑𑣒𑣓𑣔𑣕𑣖𑣗𑣘𑣙𑣚𑣛𑣜𑣝𑣞𑣟</div>
-<div class="line">𑣠𑣡𑣢𑣣𑣤𑣥𑣦𑣧𑣨𑣩𑣪𑣫𑣬𑣭𑣮𑣯𑣰𑣱𑣲𑣿</div>
-</div>
-<div data-block="Pau">
-<div class="line">𑫀𑫁𑫂𑫃𑫄𑫅𑫆𑫇𑫈𑫉𑫊𑫋𑫌𑫍𑫎𑫏𑫐𑫑𑫒𑫓𑫔𑫕𑫖𑫗𑫘𑫙𑫚𑫛𑫜𑫝𑫞𑫟</div>
-<div class="line">𑫠𑫡𑫢𑫣𑫤𑫥𑫦𑫧𑫨𑫩𑫪𑫫𑫬𑫭𑫮𑫯𑫰𑫱𑫲𑫳𑫴𑫵𑫶𑫷𑫸</div>
-</div>
-<div data-block="Bhaiksuki">
-<div class="line">𑰀𑰁𑰂𑰃𑰄𑰅𑰆𑰇𑰈𑰊𑰋𑰌𑰍𑰎𑰏𑰐𑰑𑰒𑰓𑰔𑰕𑰖𑰗𑰘𑰙𑰚𑰛𑰜𑰝𑰞𑰟𑰠</div>
-<div class="line">𑰡𑰢𑰣𑰤𑰥𑰦𑰧𑰨𑰩𑰪𑰫𑰬𑰭𑰮𑱀𑱁𑱂𑱃𑱄𑱅𑱐𑱑𑱒𑱓𑱔𑱕𑱖𑱗𑱘𑱙𑱚𑱛</div>
-<div class="line">𑱜𑱝𑱞𑱟𑱠𑱡𑱢𑱣𑱤𑱥𑱦𑱧𑱨𑱩𑱪𑱫𑱬</div>
-</div>
-<div data-block="Marchen">
-<div class="line">𑱰𑱱𑱲𑱳𑱴𑱵𑱶𑱷𑱸𑱹𑱺𑱻𑱼𑱽𑱾𑱿𑲀𑲁𑲂𑲃𑲄𑲅𑲆𑲇𑲈𑲉𑲊𑲋𑲌𑲍𑲎𑲏</div>
-</div>
-<div data-block="Cuneiform">
-<div class="line">𒀀𒀁𒀂𒀃𒀄𒀅𒀆𒀇𒀈𒀉𒀊𒀋𒀌𒀍𒀎𒀏𒀐𒀑𒀒𒀓𒀔𒀕𒀖𒀗𒀘𒀙𒀚𒀛𒀜𒀝𒀞𒀟</div>
-<div class="line">𒀠𒀡𒀢𒀣𒀤𒀥𒀦𒀧𒀨𒀩𒀪𒀫𒀬𒀭𒀮𒀯𒀰𒀱𒀲𒀳𒀴𒀵𒀶𒀷𒀸𒀹𒀺𒀻𒀼𒀽𒀾𒀿</div>
-<div class="line">𒁀𒁁𒁂𒁃𒁄𒁅𒁆𒁇𒁈𒁉𒁊𒁋𒁌𒁍𒁎𒁏𒁐𒁑𒁒𒁓𒁔𒁕𒁖𒁗𒁘𒁙𒁚𒁛𒁜𒁝𒁞𒁟</div>
-<div class="line">𒁠𒁡𒁢𒁣𒁤𒁥𒁦𒁧𒁨𒁩𒁪𒁫𒁬𒁭𒁮𒁯𒁰𒁱𒁲𒁳𒁴𒁵𒁶𒁷𒁸𒁹𒁺𒁻𒁼𒁽𒁾𒁿</div>
-<div class="line">𒂀𒂁𒂂𒂃𒂄𒂅𒂆𒂇𒂈𒂉𒂊𒂋𒂌𒂍𒂎𒂏𒂐𒂑𒂒𒂓𒂔𒂕𒂖𒂗𒂘𒂙𒂚𒂛𒂜𒂝𒂞𒂟</div>
-<div class="line">𒂠𒂡𒂢𒂣𒂤𒂥𒂦𒂧𒂨𒂩𒂪𒂫𒂬𒂭𒂮𒂯𒂰𒂱𒂲𒂳𒂴𒂵𒂶𒂷𒂸𒂹𒂺𒂻𒂼𒂽𒂾𒂿</div>
-<div class="line">𒃀𒃁𒃂𒃃𒃄𒃅𒃆𒃇𒃈𒃉𒃊𒃋𒃌𒃍𒃎𒃏𒃐𒃑𒃒𒃓𒃔𒃕𒃖𒃗𒃘𒃙𒃚𒃛𒃜𒃝𒃞𒃟</div>
-<div class="line">𒃠𒃡𒃢𒃣𒃤𒃥𒃦𒃧𒃨𒃩𒃪𒃫𒃬𒃭𒃮𒃯𒃰𒃱𒃲𒃳𒃴𒃵𒃶𒃷𒃸𒃹𒃺𒃻𒃼𒃽𒃾𒃿</div>
-<div class="line">𒄀𒄁𒄂𒄃𒄄𒄅𒄆𒄇𒄈𒄉𒄊𒄋𒄌𒄍𒄎𒄏𒄐𒄑𒄒𒄓𒄔𒄕𒄖𒄗𒄘𒄙𒄚𒄛𒄜𒄝𒄞𒄟</div>
-<div class="line">𒄠𒄡𒄢𒄣𒄤𒄥𒄦𒄧𒄨𒄩𒄪𒄫𒄬𒄭𒄮𒄯𒄰𒄱𒄲𒄳𒄴𒄵𒄶𒄷𒄸𒄹𒄺𒄻𒄼𒄽𒄾𒄿</div>
-<div class="line">𒅀𒅁𒅂𒅃𒅄𒅅𒅆𒅇𒅈𒅉𒅊𒅋𒅌𒅍𒅎𒅏𒅐𒅑𒅒𒅓𒅔𒅕𒅖𒅗𒅘𒅙𒅚𒅛𒅜𒅝𒅞𒅟</div>
-<div class="line">𒅠𒅡𒅢𒅣𒅤𒅥𒅦𒅧𒅨𒅩𒅪𒅫𒅬𒅭𒅮𒅯𒅰𒅱𒅲𒅳𒅴𒅵𒅶𒅷𒅸𒅹𒅺𒅻𒅼𒅽𒅾𒅿</div>
-<div class="line">𒆀𒆁𒆂𒆃𒆄𒆅𒆆𒆇𒆈𒆉𒆊𒆋𒆌𒆍𒆎𒆏𒆐𒆑𒆒𒆓𒆔𒆕𒆖𒆗𒆘𒆙𒆚𒆛𒆜𒆝𒆞𒆟</div>
-<div class="line">𒆠𒆡𒆢𒆣𒆤𒆥𒆦𒆧𒆨𒆩𒆪𒆫𒆬𒆭𒆮𒆯𒆰𒆱𒆲𒆳𒆴𒆵𒆶𒆷𒆸𒆹𒆺𒆻𒆼𒆽𒆾𒆿</div>
-<div class="line">𒇀𒇁𒇂𒇃𒇄𒇅𒇆𒇇𒇈𒇉𒇊𒇋𒇌𒇍𒇎𒇏𒇐𒇑𒇒𒇓𒇔𒇕𒇖𒇗𒇘𒇙𒇚𒇛𒇜𒇝𒇞𒇟</div>
-<div class="line">𒇠𒇡𒇢𒇣𒇤𒇥𒇦𒇧𒇨𒇩𒇪𒇫𒇬𒇭𒇮𒇯𒇰𒇱𒇲𒇳𒇴𒇵𒇶𒇷𒇸𒇹𒇺𒇻𒇼𒇽𒇾𒇿</div>
-<div class="line">𒈀𒈁𒈂𒈃𒈄𒈅𒈆𒈇𒈈𒈉𒈊𒈋𒈌𒈍𒈎𒈏𒈐𒈑𒈒𒈓𒈔𒈕𒈖𒈗𒈘𒈙𒈚𒈛𒈜𒈝𒈞𒈟</div>
-<div class="line">𒈠𒈡𒈢𒈣𒈤𒈥𒈦𒈧𒈨𒈩𒈪𒈫𒈬𒈭𒈮𒈯𒈰𒈱𒈲𒈳𒈴𒈵𒈶𒈷𒈸𒈹𒈺𒈻𒈼𒈽𒈾𒈿</div>
-<div class="line">𒉀𒉁𒉂𒉃𒉄𒉅𒉆𒉇𒉈𒉉𒉊𒉋𒉌𒉍𒉎𒉏𒉐𒉑𒉒𒉓𒉔𒉕𒉖𒉗𒉘𒉙𒉚𒉛𒉜𒉝𒉞𒉟</div>
-<div class="line">𒉠𒉡𒉢𒉣𒉤𒉥𒉦𒉧𒉨𒉩𒉪𒉫𒉬𒉭𒉮𒉯𒉰𒉱𒉲𒉳𒉴𒉵𒉶𒉷𒉸𒉹𒉺𒉻𒉼𒉽𒉾𒉿</div>
-<div class="line">𒊀𒊁𒊂𒊃𒊄𒊅𒊆𒊇𒊈𒊉𒊊𒊋𒊌𒊍𒊎𒊏𒊐𒊑𒊒𒊓𒊔𒊕𒊖𒊗𒊘𒊙𒊚𒊛𒊜𒊝𒊞𒊟</div>
-<div class="line">𒊠𒊡𒊢𒊣𒊤𒊥𒊦𒊧𒊨𒊩𒊪𒊫𒊬𒊭𒊮𒊯𒊰𒊱𒊲𒊳𒊴𒊵𒊶𒊷𒊸𒊹𒊺𒊻𒊼𒊽𒊾𒊿</div>
-<div class="line">𒋀𒋁𒋂𒋃𒋄𒋅𒋆𒋇𒋈𒋉𒋊𒋋𒋌𒋍𒋎𒋏𒋐𒋑𒋒𒋓𒋔𒋕𒋖𒋗𒋘𒋙𒋚𒋛𒋜𒋝𒋞𒋟</div>
-<div class="line">𒋠𒋡𒋢𒋣𒋤𒋥𒋦𒋧𒋨𒋩𒋪𒋫𒋬𒋭𒋮𒋯𒋰𒋱𒋲𒋳𒋴𒋵𒋶𒋷𒋸𒋹𒋺𒋻𒋼𒋽𒋾𒋿</div>
-<div class="line">𒌀𒌁𒌂𒌃𒌄𒌅𒌆𒌇𒌈𒌉𒌊𒌋𒌌𒌍𒌎𒌏𒌐𒌑𒌒𒌓𒌔𒌕𒌖𒌗𒌘𒌙𒌚𒌛𒌜𒌝𒌞𒌟</div>
-<div class="line">𒌠𒌡𒌢𒌣𒌤𒌥𒌦𒌧𒌨𒌩𒌪𒌫𒌬𒌭𒌮𒌯𒌰𒌱𒌲𒌳𒌴𒌵𒌶𒌷𒌸𒌹𒌺𒌻𒌼𒌽𒌾𒌿</div>
-<div class="line">𒍀𒍁𒍂𒍃𒍄𒍅𒍆𒍇𒍈𒍉𒍊𒍋𒍌𒍍𒍎𒍏𒍐𒍑𒍒𒍓𒍔𒍕𒍖𒍗𒍘𒍙𒍚𒍛𒍜𒍝𒍞𒍟</div>
-<div class="line">𒍠𒍡𒍢𒍣𒍤𒍥𒍦𒍧𒍨𒍩𒍪𒍫𒍬𒍭𒍮𒍯𒍰𒍱𒍲𒍳𒍴𒍵𒍶𒍷𒍸𒍹𒍺𒍻𒍼𒍽𒍾𒍿</div>
-<div class="line">𒎀𒎁𒎂𒎃𒎄𒎅𒎆𒎇𒎈𒎉𒎊𒎋𒎌𒎍𒎎𒎏𒎐𒎑𒎒𒎓𒎔𒎕𒎖𒎗𒎘𒎙𒐀𒐁𒐂𒐃𒐄𒐅</div>
-<div class="line">𒐆𒐇𒐈𒐉𒐊𒐋𒐌𒐍𒐎𒐏𒐐𒐑𒐒𒐓𒐔𒐕𒐖𒐗𒐘𒐙𒐚𒐛𒐜𒐝𒐞𒐟𒐠𒐡𒐢𒐣𒐤𒐥</div>
-<div class="line">𒐦𒐧𒐨𒐩𒐪𒐫𒐬𒐭𒐮𒐯𒐰𒐱𒐲𒐳𒐴𒐵𒐶𒐷𒐸𒐹𒐺𒐻𒐼𒐽𒐾𒐿𒑀𒑁𒑂𒑃𒑄𒑅</div>
-<div class="line">𒑆𒑇𒑈𒑉𒑊𒑋𒑌𒑍𒑎𒑏𒑐𒑑𒑒𒑓𒑔𒑕𒑖𒑗𒑘𒑙𒑚𒑛𒑜𒑝𒑞𒑟𒑠𒑡𒑢𒑣𒑤𒑥</div>
-<div class="line">𒑦𒑧𒑨𒑩𒑪𒑫𒑬𒑭𒑮𒑰𒑱𒑲𒑳𒑴</div>
-</div>
-<div data-block="Early">
-<div class="line">𒒀𒒁𒒂𒒃𒒄𒒅𒒆𒒇𒒈𒒉𒒊𒒋𒒌𒒍𒒎𒒏𒒐𒒑𒒒𒒓𒒔𒒕𒒖𒒗𒒘𒒙𒒚𒒛𒒜𒒝𒒞𒒟</div>
-<div class="line">𒒠𒒡𒒢𒒣𒒤𒒥𒒦𒒧𒒨𒒩𒒪𒒫𒒬𒒭𒒮𒒯𒒰𒒱𒒲𒒳𒒴𒒵𒒶𒒷𒒸𒒹𒒺𒒻𒒼𒒽𒒾𒒿</div>
-<div class="line">𒓀𒓁𒓂𒓃𒓄𒓅𒓆𒓇𒓈𒓉𒓊𒓋𒓌𒓍𒓎𒓏𒓐𒓑𒓒𒓓𒓔𒓕𒓖𒓗𒓘𒓙𒓚𒓛𒓜𒓝𒓞𒓟</div>
-<div class="line">𒓠𒓡𒓢𒓣𒓤𒓥𒓦𒓧𒓨𒓩𒓪𒓫𒓬𒓭𒓮𒓯𒓰𒓱𒓲𒓳𒓴𒓵𒓶𒓷𒓸𒓹𒓺𒓻𒓼𒓽𒓾𒓿</div>
-<div class="line">𒔀𒔁𒔂𒔃𒔄𒔅𒔆𒔇𒔈𒔉𒔊𒔋𒔌𒔍𒔎𒔏𒔐𒔑𒔒𒔓𒔔𒔕𒔖𒔗𒔘𒔙𒔚𒔛𒔜𒔝𒔞𒔟</div>
-<div class="line">𒔠𒔡𒔢𒔣𒔤𒔥𒔦𒔧𒔨𒔩𒔪𒔫𒔬𒔭𒔮𒔯𒔰𒔱𒔲𒔳𒔴𒔵𒔶𒔷𒔸𒔹𒔺𒔻𒔼𒔽𒔾𒔿</div>
-<div class="line">𒕀𒕁𒕂𒕃</div>
-</div>
-<div data-block="Bamum">
-<div class="line">𖠀𖠁𖠂𖠃𖠄𖠅𖠆𖠇𖠈𖠉𖠊𖠋𖠌𖠍𖠎𖠏𖠐𖠑𖠒𖠓𖠔𖠕𖠖𖠗𖠘𖠙𖠚𖠛𖠜𖠝𖠞𖠟</div>
-<div class="line">𖠠𖠡𖠢𖠣𖠤𖠥𖠦𖠧𖠨𖠩𖠪𖠫𖠬𖠭𖠮𖠯𖠰𖠱𖠲𖠳𖠴𖠵𖠶𖠷𖠸𖠹𖠺𖠻𖠼𖠽𖠾𖠿</div>
-<div class="line">𖡀𖡁𖡂𖡃𖡄𖡅𖡆𖡇𖡈𖡉𖡊𖡋𖡌𖡍𖡎𖡏𖡐𖡑𖡒𖡓𖡔𖡕𖡖𖡗𖡘𖡙𖡚𖡛𖡜𖡝𖡞𖡟</div>
-<div class="line">𖡠𖡡𖡢𖡣𖡤𖡥𖡦𖡧𖡨𖡩𖡪𖡫𖡬𖡭𖡮𖡯𖡰𖡱𖡲𖡳𖡴𖡵𖡶𖡷𖡸𖡹𖡺𖡻𖡼𖡽𖡾𖡿</div>
-<div class="line">𖢀𖢁𖢂𖢃𖢄𖢅𖢆𖢇𖢈𖢉𖢊𖢋𖢌𖢍𖢎𖢏𖢐𖢑𖢒𖢓𖢔𖢕𖢖𖢗𖢘𖢙𖢚𖢛𖢜𖢝𖢞𖢟</div>
-<div class="line">𖢠𖢡𖢢𖢣𖢤𖢥𖢦𖢧𖢨𖢩𖢪𖢫𖢬𖢭𖢮𖢯𖢰𖢱𖢲𖢳𖢴𖢵𖢶𖢷𖢸𖢹𖢺𖢻𖢼𖢽𖢾𖢿</div>
-<div class="line">𖣀𖣁𖣂𖣃𖣄𖣅𖣆𖣇𖣈𖣉𖣊𖣋𖣌𖣍𖣎𖣏𖣐𖣑𖣒𖣓𖣔𖣕𖣖𖣗𖣘𖣙𖣚𖣛𖣜𖣝𖣞𖣟</div>
-<div class="line">𖣠𖣡𖣢𖣣𖣤𖣥𖣦𖣧𖣨𖣩𖣪𖣫𖣬𖣭𖣮𖣯𖣰𖣱𖣲𖣳𖣴𖣵𖣶𖣷𖣸𖣹𖣺𖣻𖣼𖣽𖣾𖣿</div>
-<div class="line">𖤀𖤁𖤂𖤃𖤄𖤅𖤆𖤇𖤈𖤉𖤊𖤋𖤌𖤍𖤎𖤏𖤐𖤑𖤒𖤓𖤔𖤕𖤖𖤗𖤘𖤙𖤚𖤛𖤜𖤝𖤞𖤟</div>
-<div class="line">𖤠𖤡𖤢𖤣𖤤𖤥𖤦𖤧𖤨𖤩𖤪𖤫𖤬𖤭𖤮𖤯𖤰𖤱𖤲𖤳𖤴𖤵𖤶𖤷𖤸𖤹𖤺𖤻𖤼𖤽𖤾𖤿</div>
-<div class="line">𖥀𖥁𖥂𖥃𖥄𖥅𖥆𖥇𖥈𖥉𖥊𖥋𖥌𖥍𖥎𖥏𖥐𖥑𖥒𖥓𖥔𖥕𖥖𖥗𖥘𖥙𖥚𖥛𖥜𖥝𖥞𖥟</div>
-<div class="line">𖥠𖥡𖥢𖥣𖥤𖥥𖥦𖥧𖥨𖥩𖥪𖥫𖥬𖥭𖥮𖥯𖥰𖥱𖥲𖥳𖥴𖥵𖥶𖥷𖥸𖥹𖥺𖥻𖥼𖥽𖥾𖥿</div>
-<div class="line">𖦀𖦁𖦂𖦃𖦄𖦅𖦆𖦇𖦈𖦉𖦊𖦋𖦌𖦍𖦎𖦏𖦐𖦑𖦒𖦓𖦔𖦕𖦖𖦗𖦘𖦙𖦚𖦛𖦜𖦝𖦞𖦟</div>
-<div class="line">𖦠𖦡𖦢𖦣𖦤𖦥𖦦𖦧𖦨𖦩𖦪𖦫𖦬𖦭𖦮𖦯𖦰𖦱𖦲𖦳𖦴𖦵𖦶𖦷𖦸𖦹𖦺𖦻𖦼𖦽𖦾𖦿</div>
-<div class="line">𖧀𖧁𖧂𖧃𖧄𖧅𖧆𖧇𖧈𖧉𖧊𖧋𖧌𖧍𖧎𖧏𖧐𖧑𖧒𖧓𖧔𖧕𖧖𖧗𖧘𖧙𖧚𖧛𖧜𖧝𖧞𖧟</div>
-<div class="line">𖧠𖧡𖧢𖧣𖧤𖧥𖧦𖧧𖧨𖧩𖧪𖧫𖧬𖧭𖧮𖧯𖧰𖧱𖧲𖧳𖧴𖧵𖧶𖧷𖧸𖧹𖧺𖧻𖧼𖧽𖧾𖧿</div>
-<div class="line">𖨀𖨁𖨂𖨃𖨄𖨅𖨆𖨇𖨈𖨉𖨊𖨋𖨌𖨍𖨎𖨏𖨐𖨑𖨒𖨓𖨔𖨕𖨖𖨗𖨘𖨙𖨚𖨛𖨜𖨝𖨞𖨟</div>
-<div class="line">𖨠𖨡𖨢𖨣𖨤𖨥𖨦𖨧𖨨𖨩𖨪𖨫𖨬𖨭𖨮𖨯𖨰𖨱𖨲𖨳𖨴𖨵𖨶𖨷𖨸</div>
-</div>
-<div data-block="Mro">
-<div class="line">𖩀𖩁𖩂𖩃𖩄𖩅𖩆𖩇𖩈𖩉𖩊𖩋𖩌𖩍𖩎𖩏𖩐𖩑𖩒𖩓𖩔𖩕𖩖𖩗𖩘𖩙𖩚𖩛𖩜𖩝𖩞𖩠</div>
-<div class="line">𖩡𖩢𖩣𖩤𖩥𖩦𖩧𖩨𖩩𖩮𖩯</div>
-</div>
-<div data-block="Bassa">
-<div class="line">𖫐𖫑𖫒𖫓𖫔𖫕𖫖𖫗𖫘𖫙𖫚𖫛𖫜𖫝𖫞𖫟𖫠𖫡𖫢𖫣𖫤𖫥𖫦𖫧𖫨𖫩𖫪𖫫𖫬𖫭𖫵</div>
-</div>
-<div data-block="Pahawh">
-<div class="line">𖬀𖬁𖬂𖬃𖬄𖬅𖬆𖬇𖬈𖬉𖬊𖬋𖬌𖬍𖬎𖬏𖬐𖬑𖬒𖬓𖬔𖬕𖬖𖬗𖬘𖬙𖬚𖬛𖬜𖬝𖬞𖬟</div>
-<div class="line">𖬠𖬡𖬢𖬣𖬤𖬥𖬦𖬧𖬨𖬩𖬪𖬫𖬬𖬭𖬮𖬯𖬷𖬸𖬹𖬺𖬻𖬼𖬽𖬾𖬿𖭀𖭁𖭂𖭃𖭄𖭅𖭐</div>
-<div class="line">𖭑𖭒𖭓𖭔𖭕𖭖𖭗𖭘𖭙𖭛𖭜𖭝𖭞𖭟𖭠𖭡𖭣𖭤𖭥𖭦𖭧𖭨𖭩𖭪𖭫𖭬𖭭𖭮𖭯𖭰𖭱𖭲</div>
-<div class="line">𖭳𖭴𖭵𖭶𖭷𖭽𖭾𖭿𖮀𖮁𖮂𖮃𖮄𖮅𖮆𖮇𖮈𖮉𖮊𖮋𖮌𖮍𖮎𖮏</div>
-</div>
-<div data-block="Miao">
-<div class="line">𖼀𖼁𖼂𖼃𖼄𖼅𖼆𖼇𖼈𖼉𖼊𖼋𖼌𖼍𖼎𖼏𖼐𖼑𖼒𖼓𖼔𖼕𖼖𖼗𖼘𖼙𖼚𖼛𖼜𖼝𖼞𖼟</div>
-<div class="line">𖼠𖼡𖼢𖼣𖼤𖼥𖼦𖼧𖼨𖼩𖼪𖼫𖼬𖼭𖼮𖼯𖼰𖼱𖼲𖼳𖼴𖼵𖼶𖼷𖼸𖼹𖼺𖼻𖼼𖼽𖼾𖼿</div>
-<div class="line">𖽀𖽁𖽂𖽃𖽄𖽐𖾓𖾔𖾕𖾖𖾗𖾘𖾙𖾚𖾛𖾜𖾝𖾞𖾟</div>
-</div>
-<div data-block="Duployan">
-<div class="line">𛰀𛰁𛰂𛰃𛰄𛰅𛰆𛰇𛰈𛰉𛰊𛰋𛰌𛰍𛰎𛰏𛰐𛰑𛰒𛰓𛰔𛰕𛰖𛰗𛰘𛰙𛰚𛰛𛰜𛰝𛰞𛰟</div>
-<div class="line">𛰠𛰡𛰢𛰣𛰤𛰥𛰦𛰧𛰨𛰩𛰪𛰫𛰬𛰭𛰮𛰯𛰰𛰱𛰲𛰳𛰴𛰵𛰶𛰷𛰸𛰹𛰺𛰻𛰼𛰽𛰾𛰿</div>
-<div class="line">𛱀𛱁𛱂𛱃𛱄𛱅𛱆𛱇𛱈𛱉𛱊𛱋𛱌𛱍𛱎𛱏𛱐𛱑𛱒𛱓𛱔𛱕𛱖𛱗𛱘𛱙𛱚𛱛𛱜𛱝𛱞𛱟</div>
-<div class="line">𛱠𛱡𛱢𛱣𛱤𛱥𛱦𛱧𛱨𛱩𛱪𛱰𛱱𛱲𛱳𛱴𛱵𛱶𛱷𛱸𛱹𛱺𛱻𛱼𛲀𛲁𛲂𛲃𛲄𛲅𛲆𛲇</div>
-<div class="line">𛲈𛲐𛲑𛲒𛲓𛲔𛲕𛲖𛲗𛲘𛲙𛲜𛲟</div>
-</div>
-<div data-block="Ancient">
-<div class="line">𝈀𝈁𝈂𝈃𝈄𝈅𝈆𝈇𝈈𝈉𝈊𝈋𝈌𝈍𝈎𝈏𝈐𝈑𝈒𝈓𝈔𝈕𝈖𝈗𝈘𝈙𝈚𝈛𝈜𝈝𝈞𝈟</div>
-<div class="line">𝈠𝈡𝈢𝈣𝈤𝈥𝈦𝈧𝈨𝈩𝈪𝈫𝈬𝈭𝈮𝈯𝈰𝈱𝈲𝈳𝈴𝈵𝈶𝈷𝈸𝈹𝈺𝈻𝈼𝈽𝈾𝈿</div>
-<div class="line">𝉀𝉁𝉅</div>
-</div>
-<div data-block="Mathematical">
-<div class="line">𝐀𝐁𝐂𝐃𝐄𝐅𝐆𝐇𝐈𝐉𝐊𝐋𝐌𝐍𝐎𝐏𝐐𝐑𝐒𝐓𝐔𝐕𝐖𝐗𝐘𝐙𝐚𝐛𝐜𝐝𝐞𝐟</div>
-<div class="line">𝐠𝐡𝐢𝐣𝐤𝐥𝐦𝐧𝐨𝐩𝐪𝐫𝐬𝐭𝐮𝐯𝐰𝐱𝐲𝐳𝐴𝐵𝐶𝐷𝐸𝐹𝐺𝐻𝐼𝐽𝐾𝐿</div>
-<div class="line">𝑀𝑁𝑂𝑃𝑄𝑅𝑆𝑇𝑈𝑉𝑊𝑋𝑌𝑍𝑎𝑏𝑐𝑑𝑒𝑓𝑔𝑖𝑗𝑘𝑙𝑚𝑛𝑜𝑝𝑞𝑟𝑠</div>
-<div class="line">𝑡𝑢𝑣𝑤𝑥𝑦𝑧𝑨𝑩𝑪𝑫𝑬𝑭𝑮𝑯𝑰𝑱𝑲𝑳𝑴𝑵𝑶𝑷𝑸𝑹𝑺𝑻𝑼𝑽𝑾𝑿𝒀</div>
-<div class="line">𝒁𝒂𝒃𝒄𝒅𝒆𝒇𝒈𝒉𝒊𝒋𝒌𝒍𝒎𝒏𝒐𝒑𝒒𝒓𝒔𝒕𝒖𝒗𝒘𝒙𝒚𝒛𝒜𝒞𝒟𝒢𝒥</div>
-<div class="line">𝒦𝒩𝒪𝒫𝒬𝒮𝒯𝒰𝒱𝒲𝒳𝒴𝒵𝒶𝒷𝒸𝒹𝒻𝒽𝒾𝒿𝓀𝓁𝓂𝓃𝓅𝓆𝓇𝓈𝓉𝓊𝓋</div>
-<div class="line">𝓌𝓍𝓎𝓏𝓐𝓑𝓒𝓓𝓔𝓕𝓖𝓗𝓘𝓙𝓚𝓛𝓜𝓝𝓞𝓟𝓠𝓡𝓢𝓣𝓤𝓥𝓦𝓧𝓨𝓩𝓪𝓫</div>
-<div class="line">𝓬𝓭𝓮𝓯𝓰𝓱𝓲𝓳𝓴𝓵𝓶𝓷𝓸𝓹𝓺𝓻𝓼𝓽𝓾𝓿𝔀𝔁𝔂𝔃𝔄𝔅𝔇𝔈𝔉𝔊𝔍𝔎</div>
-<div class="line">𝔏𝔐𝔑𝔒𝔓𝔔𝔖𝔗𝔘𝔙𝔚𝔛𝔜𝔞𝔟𝔠𝔡𝔢𝔣𝔤𝔥𝔦𝔧𝔨𝔩𝔪𝔫𝔬𝔭𝔮𝔯𝔰</div>
-<div class="line">𝔱𝔲𝔳𝔴𝔵𝔶𝔷𝔸𝔹𝔻𝔼𝔽𝔾𝕀𝕁𝕂𝕃𝕄𝕆𝕊𝕋𝕌𝕍𝕎𝕏𝕐𝕒𝕓𝕔𝕕𝕖𝕗</div>
-<div class="line">𝕘𝕙𝕚𝕛𝕜𝕝𝕞𝕟𝕠𝕡𝕢𝕣𝕤𝕥𝕦𝕧𝕨𝕩𝕪𝕫𝕬𝕭𝕮𝕯𝕰𝕱𝕲𝕳𝕴𝕵𝕶𝕷</div>
-<div class="line">𝕸𝕹𝕺𝕻𝕼𝕽𝕾𝕿𝖀𝖁𝖂𝖃𝖄𝖅𝖆𝖇𝖈𝖉𝖊𝖋𝖌𝖍𝖎𝖏𝖐𝖑𝖒𝖓𝖔𝖕𝖖𝖗</div>
-<div class="line">𝖘𝖙𝖚𝖛𝖜𝖝𝖞𝖟𝖠𝖡𝖢𝖣𝖤𝖥𝖦𝖧𝖨𝖩𝖪𝖫𝖬𝖭𝖮𝖯𝖰𝖱𝖲𝖳𝖴𝖵𝖶𝖷</div>
-<div class="line">𝖸𝖹𝖺𝖻𝖼𝖽𝖾𝖿𝗀𝗁𝗂𝗃𝗄𝗅𝗆𝗇𝗈𝗉𝗊𝗋𝗌𝗍𝗎𝗏𝗐𝗑𝗒𝗓𝗔𝗕𝗖𝗗</div>
-<div class="line">𝗘𝗙𝗚𝗛𝗜𝗝𝗞𝗟𝗠𝗡𝗢𝗣𝗤𝗥𝗦𝗧𝗨𝗩𝗪𝗫𝗬𝗭𝗮𝗯𝗰𝗱𝗲𝗳𝗴𝗵𝗶𝗷</div>
-<div class="line">𝗸𝗹𝗺𝗻𝗼𝗽𝗾𝗿𝘀𝘁𝘂𝘃𝘄𝘅𝘆𝘇𝘈𝘉𝘊𝘋𝘌𝘍𝘎𝘏𝘐𝘑𝘒𝘓𝘔𝘕𝘖𝘗</div>
-<div class="line">𝘘𝘙𝘚𝘛𝘜𝘝𝘞𝘟𝘠𝘡𝘢𝘣𝘤𝘥𝘦𝘧𝘨𝘩𝘪𝘫𝘬𝘭𝘮𝘯𝘰𝘱𝘲𝘳𝘴𝘵𝘶𝘷</div>
-<div class="line">𝘸𝘹𝘺𝘻𝘼𝘽𝘾𝘿𝙀𝙁𝙂𝙃𝙄𝙅𝙆𝙇𝙈𝙉𝙊𝙋𝙌𝙍𝙎𝙏𝙐𝙑𝙒𝙓𝙔𝙕𝙖𝙗</div>
-<div class="line">𝙘𝙙𝙚𝙛𝙜𝙝𝙞𝙟𝙠𝙡𝙢𝙣𝙤𝙥𝙦𝙧𝙨𝙩𝙪𝙫𝙬𝙭𝙮𝙯𝙰𝙱𝙲𝙳𝙴𝙵𝙶𝙷</div>
-<div class="line">𝙸𝙹𝙺𝙻𝙼𝙽𝙾𝙿𝚀𝚁𝚂𝚃𝚄𝚅𝚆𝚇𝚈𝚉𝚊𝚋𝚌𝚍𝚎𝚏𝚐𝚑𝚒𝚓𝚔𝚕𝚖𝚗</div>
-<div class="line">𝚘𝚙𝚚𝚛𝚜𝚝𝚞𝚟𝚠𝚡𝚢𝚣𝚤𝚥𝚨𝚩𝚪𝚫𝚬𝚭𝚮𝚯𝚰𝚱𝚲𝚳𝚴𝚵𝚶𝚷𝚸𝚹</div>
-<div class="line">𝚺𝚻𝚼𝚽𝚾𝚿𝛀𝛁𝛂𝛃𝛄𝛅𝛆𝛇𝛈𝛉𝛊𝛋𝛌𝛍𝛎𝛏𝛐𝛑𝛒𝛓𝛔𝛕𝛖𝛗𝛘𝛙</div>
-<div class="line">𝛚𝛛𝛜𝛝𝛞𝛟𝛠𝛡𝛢𝛣𝛤𝛥𝛦𝛧𝛨𝛩𝛪𝛫𝛬𝛭𝛮𝛯𝛰𝛱𝛲𝛳𝛴𝛵𝛶𝛷𝛸𝛹</div>
-<div class="line">𝛺𝛻𝛼𝛽𝛾𝛿𝜀𝜁𝜂𝜃𝜄𝜅𝜆𝜇𝜈𝜉𝜊𝜋𝜌𝜍𝜎𝜏𝜐𝜑𝜒𝜓𝜔𝜕𝜖𝜗𝜘𝜙</div>
-<div class="line">𝜚𝜛𝜜𝜝𝜞𝜟𝜠𝜡𝜢𝜣𝜤𝜥𝜦𝜧𝜨𝜩𝜪𝜫𝜬𝜭𝜮𝜯𝜰𝜱𝜲𝜳𝜴𝜵𝜶𝜷𝜸𝜹</div>
-<div class="line">𝜺𝜻𝜼𝜽𝜾𝜿𝝀𝝁𝝂𝝃𝝄𝝅𝝆𝝇𝝈𝝉𝝊𝝋𝝌𝝍𝝎𝝏𝝐𝝑𝝒𝝓𝝔𝝕𝝖𝝗𝝘𝝙</div>
-<div class="line">𝝚𝝛𝝜𝝝𝝞𝝟𝝠𝝡𝝢𝝣𝝤𝝥𝝦𝝧𝝨𝝩𝝪𝝫𝝬𝝭𝝮𝝯𝝰𝝱𝝲𝝳𝝴𝝵𝝶𝝷𝝸𝝹</div>
-<div class="line">𝝺𝝻𝝼𝝽𝝾𝝿𝞀𝞁𝞂𝞃𝞄𝞅𝞆𝞇𝞈𝞉𝞊𝞋𝞌𝞍𝞎𝞏𝞐𝞑𝞒𝞓𝞔𝞕𝞖𝞗𝞘𝞙</div>
-<div class="line">𝞚𝞛𝞜𝞝𝞞𝞟𝞠𝞡𝞢𝞣𝞤𝞥𝞦𝞧𝞨𝞩𝞪𝞫𝞬𝞭𝞮𝞯𝞰𝞱𝞲𝞳𝞴𝞵𝞶𝞷𝞸𝞹</div>
-<div class="line">𝞺𝞻𝞼𝞽𝞾𝞿𝟀𝟁𝟂𝟃𝟄𝟅𝟆𝟇𝟈𝟉𝟊𝟋𝟎𝟏𝟐𝟑𝟒𝟓𝟔𝟕𝟖𝟗𝟘𝟙𝟚𝟛</div>
-<div class="line">𝟜𝟝𝟞𝟟𝟠𝟡𝟢𝟣𝟤𝟥𝟦𝟧𝟨𝟩𝟪𝟫𝟬𝟭𝟮𝟯𝟰𝟱𝟲𝟳𝟴𝟵𝟶𝟷𝟸𝟹𝟺𝟻</div>
-<div class="line">𝟼𝟽𝟾𝟿</div>
-</div>
-<div data-block="Mende">
-<div class="line">𞠀𞠁𞠂𞠃𞠄𞠅𞠆𞠇𞠈𞠉𞠊𞠋𞠌𞠍𞠎𞠏𞠐𞠑𞠒𞠓𞠔𞠕𞠖𞠗𞠘𞠙𞠚𞠛𞠜𞠝𞠞𞠟</div>
-<div class="line">𞠠𞠡𞠢𞠣𞠤𞠥𞠦𞠧𞠨𞠩𞠪𞠫𞠬𞠭𞠮𞠯𞠰𞠱𞠲𞠳𞠴𞠵𞠶𞠷𞠸𞠹𞠺𞠻𞠼𞠽𞠾𞠿</div>
-<div class="line">𞡀𞡁𞡂𞡃𞡄𞡅𞡆𞡇𞡈𞡉𞡊𞡋𞡌𞡍𞡎𞡏𞡐𞡑𞡒𞡓𞡔𞡕𞡖𞡗𞡘𞡙𞡚𞡛𞡜𞡝𞡞𞡟</div>
-<div class="line">𞡠𞡡𞡢𞡣𞡤𞡥𞡦𞡧𞡨𞡩𞡪𞡫𞡬𞡭𞡮𞡯𞡰𞡱𞡲𞡳𞡴𞡵𞡶𞡷𞡸𞡹𞡺𞡻𞡼𞡽𞡾𞡿</div>
-<div class="line">𞢀𞢁𞢂𞢃𞢄𞢅𞢆𞢇𞢈𞢉𞢊𞢋𞢌𞢍𞢎𞢏𞢐𞢑𞢒𞢓𞢔𞢕𞢖𞢗𞢘𞢙𞢚𞢛𞢜𞢝𞢞𞢟</div>
-<div class="line">𞢠𞢡𞢢𞢣𞢤𞢥𞢦𞢧𞢨𞢩𞢪𞢫𞢬𞢭𞢮𞢯𞢰𞢱𞢲𞢳𞢴𞢵𞢶𞢷𞢸𞢹𞢺𞢻𞢼𞢽𞢾𞢿</div>
-<div class="line">𞣀𞣁𞣂𞣃𞣄𞣇𞣈𞣉𞣊𞣋𞣌𞣍𞣎𞣏</div>
-</div>
-<div data-block="Adlam">
-<div class="line">𞤀𞤁𞤂𞤃𞤄𞤅𞤆𞤇𞤈𞤉𞤊𞤋𞤌𞤍𞤎𞤏𞤐𞤑𞤒𞤓𞤔𞤕𞤖𞤗𞤘𞤙𞤚𞤛𞤜𞤝𞤞𞤟</div>
-<div class="line">𞤠𞤡𞤢𞤣𞤤𞤥𞤦𞤧𞤨𞤩𞤪𞤫𞤬𞤭𞤮𞤯𞤰𞤱𞤲𞤳𞤴𞤵𞤶𞤷𞤸𞤹𞤺𞤻𞤼𞤽𞤾𞤿</div>
-<div class="line">𞥀𞥁𞥂𞥃𞥐𞥑𞥒𞥓𞥔𞥕𞥖𞥗𞥘𞥙𞥞𞥟</div>
-</div>
-<div data-block="Arabic">
-<div class="line">𞸀𞸁𞸂𞸃𞸅𞸆𞸇𞸈𞸉𞸊𞸋𞸌𞸍𞸎𞸏𞸐𞸑𞸒𞸓𞸔𞸕𞸖𞸗𞸘𞸙𞸚𞸛𞸜𞸝𞸞𞸟𞸡</div>
-<div class="line">𞸢𞸤𞸧𞸩𞸪𞸫𞸬𞸭𞸮𞸯𞸰𞸱𞸲𞸴𞸵𞸶𞸷𞸹𞸻𞹂𞹇𞹉𞹋𞹍𞹎𞹏𞹑𞹒𞹔𞹗𞹙𞹛</div>
-<div class="line">𞹝𞹟𞹡𞹢𞹤𞹧𞹨𞹩𞹪𞹬𞹭𞹮𞹯𞹰𞹱𞹲𞹴𞹵𞹶𞹷𞹹𞹺𞹻𞹼𞹾𞺀𞺁𞺂𞺃𞺄𞺅𞺆</div>
-<div class="line">𞺇𞺈𞺉𞺋𞺌𞺍𞺎𞺏𞺐𞺑𞺒𞺓𞺔𞺕𞺖𞺗𞺘𞺙𞺚𞺛𞺡𞺢𞺣𞺥𞺦𞺧𞺨𞺩𞺫𞺬𞺭𞺮</div>
-<div class="line">𞺯𞺰𞺱𞺲𞺳𞺴𞺵𞺶𞺷𞺸𞺹𞺺𞺻𞻰𞻱</div>
-</div>
-<div data-block="Supplemental">
-<div class="line">🠀🠁🠂🠃🠄🠅🠆🠇🠈🠉🠊🠋🠐🠑🠒🠓🠔🠕🠖🠗🠘🠙🠚🠛🠜🠝🠞🠟🠠🠡🠢🠣</div>
-<div class="line">🠤🠥🠦🠧🠨🠩🠪🠫🠬🠭🠮🠯🠰🠱🠲🠳🠴🠵🠶🠷🠸🠹🠺🠻🠼🠽🠾🠿🡀🡁🡂🡃</div>
-<div class="line">🡄🡅🡆🡇🡐🡑🡒🡓🡔🡕🡖🡗🡘🡙🡠🡡🡢🡣🡤🡥🡦🡧🡨🡩🡪🡫🡬🡭🡮🡯🡰🡱</div>
-<div class="line">🡲🡳🡴🡵🡶🡷🡸🡹🡺🡻🡼🡽🡾🡿🢀🢁🢂🢃🢄🢅🢆🢇🢐🢑🢒🢓🢔🢕🢖🢗🢘🢙</div>
-<div class="line">🢚🢛🢜🢝🢞🢟🢠🢡🢢🢣🢤🢥🢦🢧🢨🢩🢪🢫🢬🢭</div>
-</div>
-</div>
-<div data-vo="U" class="test">
-<div data-block="Latin">
-<div class="line">§©®±¼½¾×÷</div>
-</div>
-<div data-block="Spacing">
-<div class="line">˪˫</div>
-</div>
-<div data-block="Hangul">
-<div class="line">ᄀᄁᄂᄃᄄᄅᄆᄇᄈᄉᄊᄋᄌᄍᄎᄏᄐᄑᄒᄓᄔᄕᄖᄗᄘᄙᄚᄛᄜᄝᄞᄟ</div>
-<div class="line">ᄠᄡᄢᄣᄤᄥᄦᄧᄨᄩᄪᄫᄬᄭᄮᄯᄰᄱᄲᄳᄴᄵᄶᄷᄸᄹᄺᄻᄼᄽᄾᄿ</div>
-<div class="line">ᅀᅁᅂᅃᅄᅅᅆᅇᅈᅉᅊᅋᅌᅍᅎᅏᅐᅑᅒᅓᅔᅕᅖᅗᅘᅙᅚᅛᅜᅝᅞᅟ</div>
-<div class="line">ᅠᅡᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵᅶᅷᅸᅹᅺᅻᅼᅽᅾᅿ</div>
-<div class="line">ᆀᆁᆂᆃᆄᆅᆆᆇᆈᆉᆊᆋᆌᆍᆎᆏᆐᆑᆒᆓᆔᆕᆖᆗᆘᆙᆚᆛᆜᆝᆞᆟ</div>
-<div class="line">ᆠᆡᆢᆣᆤᆥᆦᆧᆨᆩᆪᆫᆬᆭᆮᆯᆰᆱᆲᆳᆴᆵᆶᆷᆸᆹᆺᆻᆼᆽᆾᆿ</div>
-<div class="line">ᇀᇁᇂᇃᇄᇅᇆᇇᇈᇉᇊᇋᇌᇍᇎᇏᇐᇑᇒᇓᇔᇕᇖᇗᇘᇙᇚᇛᇜᇝᇞᇟ</div>
-<div class="line">ᇠᇡᇢᇣᇤᇥᇦᇧᇨᇩᇪᇫᇬᇭᇮᇯᇰᇱᇲᇳᇴᇵᇶᇷᇸᇹᇺᇻᇼᇽᇾᇿ</div>
-</div>
-<div data-block="Unified">
-<div class="line">ᐁᐂᐃᐄᐅᐆᐇᐈᐉᐊᐋᐌᐍᐎᐏᐐᐑᐒᐓᐔᐕᐖᐗᐘᐙᐚᐛᐜᐝᐞᐟᐠ</div>
-<div class="line">ᐡᐢᐣᐤᐥᐦᐧᐨᐩᐪᐫᐬᐭᐮᐯᐰᐱᐲᐳᐴᐵᐶᐷᐸᐹᐺᐻᐼᐽᐾᐿᑀ</div>
-<div class="line">ᑁᑂᑃᑄᑅᑆᑇᑈᑉᑊᑋᑌᑍᑎᑏᑐᑑᑒᑓᑔᑕᑖᑗᑘᑙᑚᑛᑜᑝᑞᑟᑠ</div>
-<div class="line">ᑡᑢᑣᑤᑥᑦᑧᑨᑩᑪᑫᑬᑭᑮᑯᑰᑱᑲᑳᑴᑵᑶᑷᑸᑹᑺᑻᑼᑽᑾᑿᒀ</div>
-<div class="line">ᒁᒂᒃᒄᒅᒆᒇᒈᒉᒊᒋᒌᒍᒎᒏᒐᒑᒒᒓᒔᒕᒖᒗᒘᒙᒚᒛᒜᒝᒞᒟᒠ</div>
-<div class="line">ᒡᒢᒣᒤᒥᒦᒧᒨᒩᒪᒫᒬᒭᒮᒯᒰᒱᒲᒳᒴᒵᒶᒷᒸᒹᒺᒻᒼᒽᒾᒿᓀ</div>
-<div class="line">ᓁᓂᓃᓄᓅᓆᓇᓈᓉᓊᓋᓌᓍᓎᓏᓐᓑᓒᓓᓔᓕᓖᓗᓘᓙᓚᓛᓜᓝᓞᓟᓠ</div>
-<div class="line">ᓡᓢᓣᓤᓥᓦᓧᓨᓩᓪᓫᓬᓭᓮᓯᓰᓱᓲᓳᓴᓵᓶᓷᓸᓹᓺᓻᓼᓽᓾᓿᔀ</div>
-<div class="line">ᔁᔂᔃᔄᔅᔆᔇᔈᔉᔊᔋᔌᔍᔎᔏᔐᔑᔒᔓᔔᔕᔖᔗᔘᔙᔚᔛᔜᔝᔞᔟᔠ</div>
-<div class="line">ᔡᔢᔣᔤᔥᔦᔧᔨᔩᔪᔫᔬᔭᔮᔯᔰᔱᔲᔳᔴᔵᔶᔷᔸᔹᔺᔻᔼᔽᔾᔿᕀ</div>
-<div class="line">ᕁᕂᕃᕄᕅᕆᕇᕈᕉᕊᕋᕌᕍᕎᕏᕐᕑᕒᕓᕔᕕᕖᕗᕘᕙᕚᕛᕜᕝᕞᕟᕠ</div>
-<div class="line">ᕡᕢᕣᕤᕥᕦᕧᕨᕩᕪᕫᕬᕭᕮᕯᕰᕱᕲᕳᕴᕵᕶᕷᕸᕹᕺᕻᕼᕽᕾᕿᖀ</div>
-<div class="line">ᖁᖂᖃᖄᖅᖆᖇᖈᖉᖊᖋᖌᖍᖎᖏᖐᖑᖒᖓᖔᖕᖖᖗᖘᖙᖚᖛᖜᖝᖞᖟᖠ</div>
-<div class="line">ᖡᖢᖣᖤᖥᖦᖧᖨᖩᖪᖫᖬᖭᖮᖯᖰᖱᖲᖳᖴᖵᖶᖷᖸᖹᖺᖻᖼᖽᖾᖿᗀ</div>
-<div class="line">ᗁᗂᗃᗄᗅᗆᗇᗈᗉᗊᗋᗌᗍᗎᗏᗐᗑᗒᗓᗔᗕᗖᗗᗘᗙᗚᗛᗜᗝᗞᗟᗠ</div>
-<div class="line">ᗡᗢᗣᗤᗥᗦᗧᗨᗩᗪᗫᗬᗭᗮᗯᗰᗱᗲᗳᗴᗵᗶᗷᗸᗹᗺᗻᗼᗽᗾᗿᘀ</div>
-<div class="line">ᘁᘂᘃᘄᘅᘆᘇᘈᘉᘊᘋᘌᘍᘎᘏᘐᘑᘒᘓᘔᘕᘖᘗᘘᘙᘚᘛᘜᘝᘞᘟᘠ</div>
-<div class="line">ᘡᘢᘣᘤᘥᘦᘧᘨᘩᘪᘫᘬᘭᘮᘯᘰᘱᘲᘳᘴᘵᘶᘷᘸᘹᘺᘻᘼᘽᘾᘿᙀ</div>
-<div class="line">ᙁᙂᙃᙄᙅᙆᙇᙈᙉᙊᙋᙌᙍᙎᙏᙐᙑᙒᙓᙔᙕᙖᙗᙘᙙᙚᙛᙜᙝᙞᙟᙠ</div>
-<div class="line">ᙡᙢᙣᙤᙥᙦᙧᙨᙩᙪᙫᙬ᙭᙮ᙯᙰᙱᙲᙳᙴᙵᙶᙷᙸᙹᙺᙻᙼᙽᙾᙿᢰ</div>
-<div class="line">ᢱᢲᢳᢴᢵᢶᢷᢸᢹᢺᢻᢼᢽᢾᢿᣀᣁᣂᣃᣄᣅᣆᣇᣈᣉᣊᣋᣌᣍᣎᣏᣐ</div>
-<div class="line">ᣑᣒᣓᣔᣕᣖᣗᣘᣙᣚᣛᣜᣝᣞᣟᣠᣡᣢᣣᣤᣥᣦᣧᣨᣩᣪᣫᣬᣭᣮᣯᣰ</div>
-<div class="line">ᣱᣲᣳᣴᣵ</div>
-</div>
-<div data-block="General">
-<div class="line">‖†‡‰‱※‼⁂⁇⁈⁉⁑</div>
-</div>
-<div data-block="Letterlike">
-<div class="line">℀℁℃℄℅℆ℇ℈℉ℏℓ℔№℗℞℟℠℡™℣℥℧℩℮ℵℶℷℸℹ℺℻ℼ</div>
-<div class="line">ℽℾℿⅅⅆⅇⅈⅉ⅊⅌⅍⅏</div>
-</div>
-<div data-block="Number">
-<div class="line">⅐⅑⅒⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜⅝⅞⅟ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅬⅭⅮⅯ</div>
-<div class="line">ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⅺⅻⅼⅽⅾⅿↀↁↂↃↄↅↆↇↈ↉</div>
-</div>
-<div data-block="Mathematical">
-<div class="line">∞∴∵</div>
-</div>
-<div data-block="Miscellaneous">
-<div class="line">⌀⌁⌂⌃⌄⌅⌆⌇⌌⌍⌎⌏⌐⌑⌒⌓⌔⌕⌖⌗⌘⌙⌚⌛⌜⌝⌞⌟⌤⌥⌦⌧</div>
-<div class="line">⌨⌫⍽⍾⍿⎀⎁⎂⎃⎄⎅⎆⎇⎈⎉⎊⎋⎌⎍⎎⎏⎐⎑⎒⎓⎔⎕⎖⎗⎘⎙⎚</div>
-<div class="line">⎾⎿⏀⏁⏂⏃⏄⏅⏆⏇⏈⏉⏊⏋⏌⏍⏏⏑⏒⏓⏔⏕⏖⏗⏘⏙⏚⏛⏢⏣⏤⏥</div>
-<div class="line">⏦⏧⏨⏩⏪⏫⏬⏭⏮⏯⏰⏱⏲⏳⏴⏵⏶⏷⏸⏹⏺⏻⏼⏽⏾</div>
-</div>
-<div data-block="Control">
-<div class="line">␀␁␂␃␄␅␆␇␈␉␊␋␌␍␎␏␐␑␒␓␔␕␖␗␘␙␚␛␜␝␞␟</div>
-<div class="line">␠␡␢␤␥␦</div>
-</div>
-<div data-block="Optical">
-<div class="line">⑀⑁⑂⑃⑄⑅⑆⑇⑈⑉⑊</div>
-</div>
-<div data-block="Enclosed">
-<div class="line">①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿</div>
-<div class="line">⒀⒁⒂⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⒜⒝⒞⒟</div>
-<div class="line">⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿ</div>
-<div class="line">ⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟ</div>
-<div class="line">ⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⓪⓫⓬⓭⓮⓯⓰⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾⓿</div>
-</div>
-<div data-block="Geometric">
-<div class="line">■□▢▣▤▥▦▧▨▩▪▫▬▭▮▯▰▱▲△▴▵▶▷▸▹►▻▼▽▾▿</div>
-<div class="line">◀◁◂◃◄◅◆◇◈◉◊○◌◍◎●◐◑◒◓◔◕◖◗◘◙◚◛◜◝◞◟</div>
-<div class="line">◠◡◢◣◤◥◦◧◨◩◪◫◬◭◮◯◰◱◲◳◴◵◶◷◸◹◺◻◼◽◾◿</div>
-</div>
-<div data-block="Miscellaneous">
-<div class="line">☀☁☂☃☄★☆☇☈☉☊☋☌☍☎☏☐☑☒☓☔☕☖☗☘☙☠☡☢☣☤☥</div>
-<div class="line">☦☧☨☩☪☫☬☭☮☯☰☱☲☳☴☵☶☷☸☹☺☻☼☽☾☿♀♁♂♃♄♅</div>
-<div class="line">♆♇♈♉♊♋♌♍♎♏♐♑♒♓♔♕♖♗♘♙♚♛♜♝♞♟♠♡♢♣♤♥</div>
-<div class="line">♦♧♨♩♪♫♬♭♮♯♰♱♲♳♴♵♶♷♸♹♺♻♼♽♾♿⚀⚁⚂⚃⚄⚅</div>
-<div class="line">⚆⚇⚈⚉⚊⚋⚌⚍⚎⚏⚐⚑⚒⚓⚔⚕⚖⚗⚘⚙⚚⚛⚜⚝⚞⚟⚠⚡⚢⚣⚤⚥</div>
-<div class="line">⚦⚧⚨⚩⚪⚫⚬⚭⚮⚯⚰⚱⚲⚳⚴⚵⚶⚷⚸⚹⚺⚻⚼⚽⚾⚿⛀⛁⛂⛃⛄⛅</div>
-<div class="line">⛆⛇⛈⛉⛊⛋⛌⛍⛎⛏⛐⛑⛒⛓⛔⛕⛖⛗⛘⛙⛚⛛⛜⛝⛞⛟⛠⛡⛢⛣⛤⛥</div>
-<div class="line">⛦⛧⛨⛩⛪⛫⛬⛭⛮⛯⛰⛱⛲⛳⛴⛵⛶⛷⛸⛹⛺⛻⛼⛽⛾⛿</div>
-</div>
-<div data-block="Dingbats">
-<div class="line">✀✁✂✃✄✅✆✇✈✉✊✋✌✍✎✏✐✑✒✓✔✕✖✗✘✙✚✛✜✝✞✟</div>
-<div class="line">✠✡✢✣✤✥✦✧✨✩✪✫✬✭✮✯✰✱✲✳✴✵✶✷✸✹✺✻✼✽✾✿</div>
-<div class="line">❀❁❂❃❄❅❆❇❈❉❊❋❌❍❎❏❐❑❒❓❔❕❖❗❘❙❚❛❜❝❞❟</div>
-<div class="line">❠❡❢❣❤❥❦❧❶❷❸❹❺❻❼❽❾❿➀➁➂➃➄➅➆➇➈➉➊➋➌➍</div>
-<div class="line">➎➏➐➑➒➓</div>
-</div>
-<div data-block="Miscellaneous">
-<div class="line">⬒⬓⬔⬕⬖⬗⬘⬙⬚⬛⬜⬝⬞⬟⬠⬡⬢⬣⬤⬥⬦⬧⬨⬩⬪⬫⬬⬭⬮⬯⭐⭑</div>
-<div class="line">⭒⭓⭔⭕⭖⭗⭘⭙⮸⮹⮽⮾⮿⯀⯁⯂⯃⯄⯅⯆⯇⯈⯊⯋⯌⯍⯎⯏⯐⯑</div>
-</div>
-<div data-block="CJK">
-<div class="line">⺀⺁⺂⺃⺄⺅⺆⺇⺈⺉⺊⺋⺌⺍⺎⺏⺐⺑⺒⺓⺔⺕⺖⺗⺘⺙⺛⺜⺝⺞⺟⺠</div>
-<div class="line">⺡⺢⺣⺤⺥⺦⺧⺨⺩⺪⺫⺬⺭⺮⺯⺰⺱⺲⺳⺴⺵⺶⺷⺸⺹⺺⺻⺼⺽⺾⺿⻀</div>
-<div class="line">⻁⻂⻃⻄⻅⻆⻇⻈⻉⻊⻋⻌⻍⻎⻏⻐⻑⻒⻓⻔⻕⻖⻗⻘⻙⻚⻛⻜⻝⻞⻟⻠</div>
-<div class="line">⻡⻢⻣⻤⻥⻦⻧⻨⻩⻪⻫⻬⻭⻮⻯⻰⻱⻲⻳</div>
-</div>
-<div data-block="Kangxi">
-<div class="line">⼀⼁⼂⼃⼄⼅⼆⼇⼈⼉⼊⼋⼌⼍⼎⼏⼐⼑⼒⼓⼔⼕⼖⼗⼘⼙⼚⼛⼜⼝⼞⼟</div>
-<div class="line">⼠⼡⼢⼣⼤⼥⼦⼧⼨⼩⼪⼫⼬⼭⼮⼯⼰⼱⼲⼳⼴⼵⼶⼷⼸⼹⼺⼻⼼⼽⼾⼿</div>
-<div class="line">⽀⽁⽂⽃⽄⽅⽆⽇⽈⽉⽊⽋⽌⽍⽎⽏⽐⽑⽒⽓⽔⽕⽖⽗⽘⽙⽚⽛⽜⽝⽞⽟</div>
-<div class="line">⽠⽡⽢⽣⽤⽥⽦⽧⽨⽩⽪⽫⽬⽭⽮⽯⽰⽱⽲⽳⽴⽵⽶⽷⽸⽹⽺⽻⽼⽽⽾⽿</div>
-<div class="line">⾀⾁⾂⾃⾄⾅⾆⾇⾈⾉⾊⾋⾌⾍⾎⾏⾐⾑⾒⾓⾔⾕⾖⾗⾘⾙⾚⾛⾜⾝⾞⾟</div>
-<div class="line">⾠⾡⾢⾣⾤⾥⾦⾧⾨⾩⾪⾫⾬⾭⾮⾯⾰⾱⾲⾳⾴⾵⾶⾷⾸⾹⾺⾻⾼⾽⾾⾿</div>
-<div class="line">⿀⿁⿂⿃⿄⿅⿆⿇⿈⿉⿊⿋⿌⿍⿎⿏⿐⿑⿒⿓⿔⿕</div>
-</div>
-<div data-block="Ideographic">
-<div class="line">⿰⿱⿲⿳⿴⿵⿶⿷⿸⿹⿺⿻</div>
-</div>
-<div data-block="CJK">
-<div class="line"> 〃〄々〆〇〒〓〠〡〢〣〤〥〦〧〨〩〱〲〳〴〵〶〷〸〹〺〻〼〽〾</div>
-<div class="line">〿</div>
-</div>
-<div data-block="Hiragana">
-<div class="line">あいうえおかがきぎくぐけげこごさざしじすずせぜそぞただちぢつづて</div>
-<div class="line">でとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもやゆよら</div>
-<div class="line">りるれろわゐゑをんゔゝゞゟ</div>
-</div>
-<div data-block="Katakana">
-<div class="line">アイウエオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂツヅテ</div>
-<div class="line">デトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモヤユヨラ</div>
-<div class="line">リルレロワヰヱヲンヴヷヸヹヺ・ヽヾヿ</div>
-</div>
-<div data-block="Bopomofo">
-<div class="line">ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤ</div>
-<div class="line">ㄥㄦㄨㄩㄪㄫㄬㄭ</div>
-</div>
-<div data-block="Hangul">
-<div class="line">ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐ</div>
-<div class="line">ㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰ</div>
-<div class="line">ㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ</div>
-</div>
-<div data-block="Kanbun">
-<div class="line">㆐㆑㆒㆓㆔㆕㆖㆗㆘㆙㆚㆛㆜㆝㆞㆟</div>
-</div>
-<div data-block="Bopomofo">
-<div class="line">ㆠㆡㆢㆣㆤㆥㆦㆧㆨㆩㆪㆫㆬㆭㆮㆯㆰㆱㆲㆳㆴㆵㆶㆷㆸㆹㆺ</div>
-</div>
-<div data-block="CJK">
-<div class="line">㇀㇁㇂㇃㇄㇅㇆㇇㇈㇉㇊㇋㇌㇍㇎㇏㇐㇑㇒㇓㇔㇕㇖㇗㇘㇙㇚㇛㇜㇝㇞㇟</div>
-<div class="line">㇠㇡㇢㇣</div>
-</div>
-<div data-block="Enclosed">
-<div class="line">㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛㈜㈝㈞㈠</div>
-<div class="line">㈡㈢㈣㈤㈥㈦㈧㈨㈩㈪㈫㈬㈭㈮㈯㈰㈱㈲㈳㈴㈵㈶㈷㈸㈹㈺㈻㈼㈽㈾㈿㉀</div>
-<div class="line">㉁㉂㉃㉄㉅㉆㉇㉈㉉㉊㉋㉌㉍㉎㉏㉐㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㉠</div>
-<div class="line">㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻㉼㉽㉾㉿㊀</div>
-<div class="line">㊁㊂㊃㊄㊅㊆㊇㊈㊉㊊㊋㊌㊍㊎㊏㊐㊑㊒㊓㊔㊕㊖㊗㊘㊙㊚㊛㊜㊝㊞㊟㊠</div>
-<div class="line">㊡㊢㊣㊤㊥㊦㊧㊨㊩㊪㊫㊬㊭㊮㊯㊰㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿㋀</div>
-<div class="line">㋁㋂㋃㋄㋅㋆㋇㋈㋉㋊㋋㋌㋍㋎㋏㋐㋑㋒㋓㋔㋕㋖㋗㋘㋙㋚㋛㋜㋝㋞㋟㋠</div>
-<div class="line">㋡㋢㋣㋤㋥㋦㋧㋨㋩㋪㋫㋬㋭㋮㋯㋰㋱㋲㋳㋴㋵㋶㋷㋸㋹㋺㋻㋼㋽㋾</div>
-</div>
-<div data-block="CJK">
-<div class="line">㍘㍙㍚㍛㍜㍝㍞㍟㍠㍡㍢㍣㍤㍥㍦㍧㍨㍩㍪㍫㍬㍭㍮㍯㍰㍱㍲㍳㍴㍵㍶㍷</div>
-<div class="line">㍸㍹㍺㎀㎁㎂㎃㎄㎅㎆㎇㎈㎉㎊㎋㎌㎍㎎㎏㎐㎑㎒㎓㎔㎕㎖㎗㎘㎙㎚㎛㎜</div>
-<div class="line">㎝㎞㎟㎠㎡㎢㎣㎤㎥㎦㎧㎨㎩㎪㎫㎬㎭㎮㎯㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎺㎻㎼</div>
-<div class="line">㎽㎾㎿㏀㏁㏂㏃㏄㏅㏆㏇㏈㏉㏊㏋㏌㏍㏎㏏㏐㏑㏒㏓㏔㏕㏖㏗㏘㏙㏚㏛㏜</div>
-<div class="line">㏝㏞㏟㏠㏡㏢㏣㏤㏥㏦㏧㏨㏩㏪㏫㏬㏭㏮㏯㏰㏱㏲㏳㏴㏵㏶㏷㏸㏹㏺㏻㏼</div>
-<div class="line">㏽㏾㏿㐀䶵</div>
-</div>
-<div data-block="Yijing">
-<div class="line">䷀䷁䷂䷃䷄䷅䷆䷇䷈䷉䷊䷋䷌䷍䷎䷏䷐䷑䷒䷓䷔䷕䷖䷗䷘䷙䷚䷛䷜䷝䷞䷟</div>
-<div class="line">䷠䷡䷢䷣䷤䷥䷦䷧䷨䷩䷪䷫䷬䷭䷮䷯䷰䷱䷲䷳䷴䷵䷶䷷䷸䷹䷺䷻䷼䷽䷾䷿</div>
-</div>
-<div data-block="CJK">
-<div class="line">一鿌鿍鿎鿏鿐鿑鿒鿓鿔鿕</div>
-</div>
-<div data-block="Yi">
-<div class="line">ꀀꀁꀂꀃꀄꀅꀆꀇꀈꀉꀊꀋꀌꀍꀎꀏꀐꀑꀒꀓꀔꀕꀖꀗꀘꀙꀚꀛꀜꀝꀞꀟ</div>
-<div class="line">ꀠꀡꀢꀣꀤꀥꀦꀧꀨꀩꀪꀫꀬꀭꀮꀯꀰꀱꀲꀳꀴꀵꀶꀷꀸꀹꀺꀻꀼꀽꀾꀿ</div>
-<div class="line">ꁀꁁꁂꁃꁄꁅꁆꁇꁈꁉꁊꁋꁌꁍꁎꁏꁐꁑꁒꁓꁔꁕꁖꁗꁘꁙꁚꁛꁜꁝꁞꁟ</div>
-<div class="line">ꁠꁡꁢꁣꁤꁥꁦꁧꁨꁩꁪꁫꁬꁭꁮꁯꁰꁱꁲꁳꁴꁵꁶꁷꁸꁹꁺꁻꁼꁽꁾꁿ</div>
-<div class="line">ꂀꂁꂂꂃꂄꂅꂆꂇꂈꂉꂊꂋꂌꂍꂎꂏꂐꂑꂒꂓꂔꂕꂖꂗꂘꂙꂚꂛꂜꂝꂞꂟ</div>
-<div class="line">ꂠꂡꂢꂣꂤꂥꂦꂧꂨꂩꂪꂫꂬꂭꂮꂯꂰꂱꂲꂳꂴꂵꂶꂷꂸꂹꂺꂻꂼꂽꂾꂿ</div>
-<div class="line">ꃀꃁꃂꃃꃄꃅꃆꃇꃈꃉꃊꃋꃌꃍꃎꃏꃐꃑꃒꃓꃔꃕꃖꃗꃘꃙꃚꃛꃜꃝꃞꃟ</div>
-<div class="line">ꃠꃡꃢꃣꃤꃥꃦꃧꃨꃩꃪꃫꃬꃭꃮꃯꃰꃱꃲꃳꃴꃵꃶꃷꃸꃹꃺꃻꃼꃽꃾꃿ</div>
-<div class="line">ꄀꄁꄂꄃꄄꄅꄆꄇꄈꄉꄊꄋꄌꄍꄎꄏꄐꄑꄒꄓꄔꄕꄖꄗꄘꄙꄚꄛꄜꄝꄞꄟ</div>
-<div class="line">ꄠꄡꄢꄣꄤꄥꄦꄧꄨꄩꄪꄫꄬꄭꄮꄯꄰꄱꄲꄳꄴꄵꄶꄷꄸꄹꄺꄻꄼꄽꄾꄿ</div>
-<div class="line">ꅀꅁꅂꅃꅄꅅꅆꅇꅈꅉꅊꅋꅌꅍꅎꅏꅐꅑꅒꅓꅔꅕꅖꅗꅘꅙꅚꅛꅜꅝꅞꅟ</div>
-<div class="line">ꅠꅡꅢꅣꅤꅥꅦꅧꅨꅩꅪꅫꅬꅭꅮꅯꅰꅱꅲꅳꅴꅵꅶꅷꅸꅹꅺꅻꅼꅽꅾꅿ</div>
-<div class="line">ꆀꆁꆂꆃꆄꆅꆆꆇꆈꆉꆊꆋꆌꆍꆎꆏꆐꆑꆒꆓꆔꆕꆖꆗꆘꆙꆚꆛꆜꆝꆞꆟ</div>
-<div class="line">ꆠꆡꆢꆣꆤꆥꆦꆧꆨꆩꆪꆫꆬꆭꆮꆯꆰꆱꆲꆳꆴꆵꆶꆷꆸꆹꆺꆻꆼꆽꆾꆿ</div>
-<div class="line">ꇀꇁꇂꇃꇄꇅꇆꇇꇈꇉꇊꇋꇌꇍꇎꇏꇐꇑꇒꇓꇔꇕꇖꇗꇘꇙꇚꇛꇜꇝꇞꇟ</div>
-<div class="line">ꇠꇡꇢꇣꇤꇥꇦꇧꇨꇩꇪꇫꇬꇭꇮꇯꇰꇱꇲꇳꇴꇵꇶꇷꇸꇹꇺꇻꇼꇽꇾꇿ</div>
-<div class="line">ꈀꈁꈂꈃꈄꈅꈆꈇꈈꈉꈊꈋꈌꈍꈎꈏꈐꈑꈒꈓꈔꈕꈖꈗꈘꈙꈚꈛꈜꈝꈞꈟ</div>
-<div class="line">ꈠꈡꈢꈣꈤꈥꈦꈧꈨꈩꈪꈫꈬꈭꈮꈯꈰꈱꈲꈳꈴꈵꈶꈷꈸꈹꈺꈻꈼꈽꈾꈿ</div>
-<div class="line">ꉀꉁꉂꉃꉄꉅꉆꉇꉈꉉꉊꉋꉌꉍꉎꉏꉐꉑꉒꉓꉔꉕꉖꉗꉘꉙꉚꉛꉜꉝꉞꉟ</div>
-<div class="line">ꉠꉡꉢꉣꉤꉥꉦꉧꉨꉩꉪꉫꉬꉭꉮꉯꉰꉱꉲꉳꉴꉵꉶꉷꉸꉹꉺꉻꉼꉽꉾꉿ</div>
-<div class="line">ꊀꊁꊂꊃꊄꊅꊆꊇꊈꊉꊊꊋꊌꊍꊎꊏꊐꊑꊒꊓꊔꊕꊖꊗꊘꊙꊚꊛꊜꊝꊞꊟ</div>
-<div class="line">ꊠꊡꊢꊣꊤꊥꊦꊧꊨꊩꊪꊫꊬꊭꊮꊯꊰꊱꊲꊳꊴꊵꊶꊷꊸꊹꊺꊻꊼꊽꊾꊿ</div>
-<div class="line">ꋀꋁꋂꋃꋄꋅꋆꋇꋈꋉꋊꋋꋌꋍꋎꋏꋐꋑꋒꋓꋔꋕꋖꋗꋘꋙꋚꋛꋜꋝꋞꋟ</div>
-<div class="line">ꋠꋡꋢꋣꋤꋥꋦꋧꋨꋩꋪꋫꋬꋭꋮꋯꋰꋱꋲꋳꋴꋵꋶꋷꋸꋹꋺꋻꋼꋽꋾꋿ</div>
-<div class="line">ꌀꌁꌂꌃꌄꌅꌆꌇꌈꌉꌊꌋꌌꌍꌎꌏꌐꌑꌒꌓꌔꌕꌖꌗꌘꌙꌚꌛꌜꌝꌞꌟ</div>
-<div class="line">ꌠꌡꌢꌣꌤꌥꌦꌧꌨꌩꌪꌫꌬꌭꌮꌯꌰꌱꌲꌳꌴꌵꌶꌷꌸꌹꌺꌻꌼꌽꌾꌿ</div>
-<div class="line">ꍀꍁꍂꍃꍄꍅꍆꍇꍈꍉꍊꍋꍌꍍꍎꍏꍐꍑꍒꍓꍔꍕꍖꍗꍘꍙꍚꍛꍜꍝꍞꍟ</div>
-<div class="line">ꍠꍡꍢꍣꍤꍥꍦꍧꍨꍩꍪꍫꍬꍭꍮꍯꍰꍱꍲꍳꍴꍵꍶꍷꍸꍹꍺꍻꍼꍽꍾꍿ</div>
-<div class="line">ꎀꎁꎂꎃꎄꎅꎆꎇꎈꎉꎊꎋꎌꎍꎎꎏꎐꎑꎒꎓꎔꎕꎖꎗꎘꎙꎚꎛꎜꎝꎞꎟ</div>
-<div class="line">ꎠꎡꎢꎣꎤꎥꎦꎧꎨꎩꎪꎫꎬꎭꎮꎯꎰꎱꎲꎳꎴꎵꎶꎷꎸꎹꎺꎻꎼꎽꎾꎿ</div>
-<div class="line">ꏀꏁꏂꏃꏄꏅꏆꏇꏈꏉꏊꏋꏌꏍꏎꏏꏐꏑꏒꏓꏔꏕꏖꏗꏘꏙꏚꏛꏜꏝꏞꏟ</div>
-<div class="line">ꏠꏡꏢꏣꏤꏥꏦꏧꏨꏩꏪꏫꏬꏭꏮꏯꏰꏱꏲꏳꏴꏵꏶꏷꏸꏹꏺꏻꏼꏽꏾꏿ</div>
-<div class="line">ꐀꐁꐂꐃꐄꐅꐆꐇꐈꐉꐊꐋꐌꐍꐎꐏꐐꐑꐒꐓꐔꐕꐖꐗꐘꐙꐚꐛꐜꐝꐞꐟ</div>
-<div class="line">ꐠꐡꐢꐣꐤꐥꐦꐧꐨꐩꐪꐫꐬꐭꐮꐯꐰꐱꐲꐳꐴꐵꐶꐷꐸꐹꐺꐻꐼꐽꐾꐿ</div>
-<div class="line">ꑀꑁꑂꑃꑄꑅꑆꑇꑈꑉꑊꑋꑌꑍꑎꑏꑐꑑꑒꑓꑔꑕꑖꑗꑘꑙꑚꑛꑜꑝꑞꑟ</div>
-<div class="line">ꑠꑡꑢꑣꑤꑥꑦꑧꑨꑩꑪꑫꑬꑭꑮꑯꑰꑱꑲꑳꑴꑵꑶꑷꑸꑹꑺꑻꑼꑽꑾꑿ</div>
-<div class="line">ꒀꒁꒂꒃꒄꒅꒆꒇꒈꒉꒊꒋꒌ꒐꒑꒒꒓꒔꒕꒖꒗꒘꒙꒚꒛꒜꒝꒞꒟꒠꒡꒢</div>
-<div class="line">꒣꒤꒥꒦꒧꒨꒩꒪꒫꒬꒭꒮꒯꒰꒱꒲꒳꒴꒵꒶꒷꒸꒹꒺꒻꒼꒽꒾꒿꓀꓁꓂</div>
-<div class="line">꓃꓄꓅꓆</div>
-</div>
-<div data-block="Hangul">
-<div class="line">ꥠꥡꥢꥣꥤꥥꥦꥧꥨꥩꥪꥫꥬꥭꥮꥯꥰꥱꥲꥳꥴꥵꥶꥷꥸꥹꥺꥻꥼ가힣ힰ</div>
-<div class="line">ힱힲힳힴힵힶힷힸힹힺힻힼힽힾힿퟀퟁퟂퟃퟄퟅퟆퟋퟌퟍퟎퟏퟐퟑퟒퟓퟔ</div>
-<div class="line">ퟕퟖퟗퟘퟙퟚퟛퟜퟝퟞퟟퟠퟡퟢퟣퟤퟥퟦퟧퟨퟩퟪퟫퟬퟭퟮퟯퟰퟱퟲퟳퟴ</div>
-<div class="line">ퟵퟶퟷퟸퟹퟺퟻ</div>
-</div>
-<div data-block="CJK">
-<div class="line">豈更車賈滑串句龜龜契金喇奈懶癩羅蘿螺裸邏樂洛烙珞落酪駱亂卵欄爛蘭</div>
-<div class="line">鸞嵐濫藍襤拉臘蠟廊朗浪狼郎來冷勞擄櫓爐盧老蘆虜路露魯鷺碌祿綠菉錄</div>
-<div class="line">鹿論壟弄籠聾牢磊賂雷壘屢樓淚漏累縷陋勒肋凜凌稜綾菱陵讀拏樂諾丹寧</div>
-<div class="line">怒率異北磻便復不泌數索參塞省葉說殺辰沈拾若掠略亮兩凉梁糧良諒量勵</div>
-<div class="line">呂女廬旅濾礪閭驪麗黎力曆歷轢年憐戀撚漣煉璉秊練聯輦蓮連鍊列劣咽烈</div>
-<div class="line">裂說廉念捻殮簾獵令囹寧嶺怜玲瑩羚聆鈴零靈領例禮醴隸惡了僚寮尿料樂</div>
-<div class="line">燎療蓼遼龍暈阮劉杻柳流溜琉留硫紐類六戮陸倫崙淪輪律慄栗率隆利吏履</div>
-<div class="line">易李梨泥理痢罹裏裡里離匿溺吝燐璘藺隣鱗麟林淋臨立笠粒狀炙識什茶刺</div>
-<div class="line">切度拓糖宅洞暴輻行降見廓兀嗀﨎﨏塚﨑晴﨓﨔凞猪益礼神祥福靖精羽﨟</div>
-<div class="line">蘒﨡諸﨣﨤逸都﨧﨨﨩飯飼館鶴郞隷侮僧免勉勤卑喝嘆器塀墨層屮悔慨憎</div>
-<div class="line">懲敏既暑梅海渚漢煮爫琢碑社祉祈祐祖祝禍禎穀突節練縉繁署者臭艹艹著</div>
-<div class="line">褐視謁謹賓贈辶逸難響頻恵𤋮舘並况全侀充冀勇勺喝啕喙嗢塚墳奄奔婢嬨</div>
-<div class="line">廒廙彩徭惘慎愈憎慠懲戴揄搜摒敖晴朗望杖歹殺流滛滋漢瀞煮瞧爵犯猪瑱</div>
-<div class="line">甆画瘝瘟益盛直睊着磌窱節类絛練缾者荒華蝹襁覆視調諸請謁諾諭謹變贈</div>
-<div class="line">輸遲醙鉶陼難靖韛響頋頻鬒龜𢡊𢡄𣏕㮝䀘䀹𥉉𥳐𧻓齃龎</div>
-</div>
-<div data-block="Vertical">
-<div class="line">︐︑︒︓︔︕︖︗︘︙</div>
-</div>
-<div data-block="CJK">
-<div class="line">︰︱︲︳︴︵︶︷︸︹︺︻︼︽︾︿﹀﹁﹂﹃﹄﹅﹆﹇﹈</div>
-</div>
-<div data-block="Small">
-<div class="line">﹔﹕﹖﹗﹟﹠﹡﹢﹨﹩﹪﹫</div>
-</div>
-<div data-block="Halfwidth">
-<div class="line">"#$%&'*+/0123456789@ABCDEFGHIJKL</div>
-<div class="line">MNOPQRSTUVWXYZ\^`abcdefghijklmno</div>
-<div class="line">pqrstuvwxyz¢£¬¦¥₩</div>
-</div>
-<div data-block="Specials">
-<div class="line">�</div>
-</div>
-<div data-block="Meroitic">
-<div class="line">𐦀𐦁𐦂𐦃𐦄𐦅𐦆𐦇𐦈𐦉𐦊𐦋𐦌𐦍𐦎𐦏𐦐𐦑𐦒𐦓𐦔𐦕𐦖𐦗𐦘𐦙𐦚𐦛𐦜𐦝𐦞𐦟</div>
-</div>
-<div data-block="Siddham">
-<div class="line">𑖀𑖁𑖂𑖃𑖄𑖅𑖆𑖇𑖈𑖉𑖊𑖋𑖌𑖍𑖎𑖏𑖐𑖑𑖒𑖓𑖔𑖕𑖖𑖗𑖘𑖙𑖚𑖛𑖜𑖝𑖞𑖟</div>
-<div class="line">𑖠𑖡𑖢𑖣𑖤𑖥𑖦𑖧𑖨𑖩𑖪𑖫𑖬𑖭𑖮𑗁𑗂𑗃𑗄𑗅𑗆𑗇𑗈𑗉𑗊𑗋𑗌𑗍𑗎𑗏𑗐𑗑</div>
-<div class="line">𑗒𑗓𑗔𑗕𑗖𑗗𑗘𑗙𑗚𑗛</div>
-</div>
-<div data-block="Egyptian">
-<div class="line">𓀀𓀁𓀂𓀃𓀄𓀅𓀆𓀇𓀈𓀉𓀊𓀋𓀌𓀍𓀎𓀏𓀐𓀑𓀒𓀓𓀔𓀕𓀖𓀗𓀘𓀙𓀚𓀛𓀜𓀝𓀞𓀟</div>
-<div class="line">𓀠𓀡𓀢𓀣𓀤𓀥𓀦𓀧𓀨𓀩𓀪𓀫𓀬𓀭𓀮𓀯𓀰𓀱𓀲𓀳𓀴𓀵𓀶𓀷𓀸𓀹𓀺𓀻𓀼𓀽𓀾𓀿</div>
-<div class="line">𓁀𓁁𓁂𓁃𓁄𓁅𓁆𓁇𓁈𓁉𓁊𓁋𓁌𓁍𓁎𓁏𓁐𓁑𓁒𓁓𓁔𓁕𓁖𓁗𓁘𓁙𓁚𓁛𓁜𓁝𓁞𓁟</div>
-<div class="line">𓁠𓁡𓁢𓁣𓁤𓁥𓁦𓁧𓁨𓁩𓁪𓁫𓁬𓁭𓁮𓁯𓁰𓁱𓁲𓁳𓁴𓁵𓁶𓁷𓁸𓁹𓁺𓁻𓁼𓁽𓁾𓁿</div>
-<div class="line">𓂀𓂁𓂂𓂃𓂄𓂅𓂆𓂇𓂈𓂉𓂊𓂋𓂌𓂍𓂎𓂏𓂐𓂑𓂒𓂓𓂔𓂕𓂖𓂗𓂘𓂙𓂚𓂛𓂜𓂝𓂞𓂟</div>
-<div class="line">𓂠𓂡𓂢𓂣𓂤𓂥𓂦𓂧𓂨𓂩𓂪𓂫𓂬𓂭𓂮𓂯𓂰𓂱𓂲𓂳𓂴𓂵𓂶𓂷𓂸𓂹𓂺𓂻𓂼𓂽𓂾𓂿</div>
-<div class="line">𓃀𓃁𓃂𓃃𓃄𓃅𓃆𓃇𓃈𓃉𓃊𓃋𓃌𓃍𓃎𓃏𓃐𓃑𓃒𓃓𓃔𓃕𓃖𓃗𓃘𓃙𓃚𓃛𓃜𓃝𓃞𓃟</div>
-<div class="line">𓃠𓃡𓃢𓃣𓃤𓃥𓃦𓃧𓃨𓃩𓃪𓃫𓃬𓃭𓃮𓃯𓃰𓃱𓃲𓃳𓃴𓃵𓃶𓃷𓃸𓃹𓃺𓃻𓃼𓃽𓃾𓃿</div>
-<div class="line">𓄀𓄁𓄂𓄃𓄄𓄅𓄆𓄇𓄈𓄉𓄊𓄋𓄌𓄍𓄎𓄏𓄐𓄑𓄒𓄓𓄔𓄕𓄖𓄗𓄘𓄙𓄚𓄛𓄜𓄝𓄞𓄟</div>
-<div class="line">𓄠𓄡𓄢𓄣𓄤𓄥𓄦𓄧𓄨𓄩𓄪𓄫𓄬𓄭𓄮𓄯𓄰𓄱𓄲𓄳𓄴𓄵𓄶𓄷𓄸𓄹𓄺𓄻𓄼𓄽𓄾𓄿</div>
-<div class="line">𓅀𓅁𓅂𓅃𓅄𓅅𓅆𓅇𓅈𓅉𓅊𓅋𓅌𓅍𓅎𓅏𓅐𓅑𓅒𓅓𓅔𓅕𓅖𓅗𓅘𓅙𓅚𓅛𓅜𓅝𓅞𓅟</div>
-<div class="line">𓅠𓅡𓅢𓅣𓅤𓅥𓅦𓅧𓅨𓅩𓅪𓅫𓅬𓅭𓅮𓅯𓅰𓅱𓅲𓅳𓅴𓅵𓅶𓅷𓅸𓅹𓅺𓅻𓅼𓅽𓅾𓅿</div>
-<div class="line">𓆀𓆁𓆂𓆃𓆄𓆅𓆆𓆇𓆈𓆉𓆊𓆋𓆌𓆍𓆎𓆏𓆐𓆑𓆒𓆓𓆔𓆕𓆖𓆗𓆘𓆙𓆚𓆛𓆜𓆝𓆞𓆟</div>
-<div class="line">𓆠𓆡𓆢𓆣𓆤𓆥𓆦𓆧𓆨𓆩𓆪𓆫𓆬𓆭𓆮𓆯𓆰𓆱𓆲𓆳𓆴𓆵𓆶𓆷𓆸𓆹𓆺𓆻𓆼𓆽𓆾𓆿</div>
-<div class="line">𓇀𓇁𓇂𓇃𓇄𓇅𓇆𓇇𓇈𓇉𓇊𓇋𓇌𓇍𓇎𓇏𓇐𓇑𓇒𓇓𓇔𓇕𓇖𓇗𓇘𓇙𓇚𓇛𓇜𓇝𓇞𓇟</div>
-<div class="line">𓇠𓇡𓇢𓇣𓇤𓇥𓇦𓇧𓇨𓇩𓇪𓇫𓇬𓇭𓇮𓇯𓇰𓇱𓇲𓇳𓇴𓇵𓇶𓇷𓇸𓇹𓇺𓇻𓇼𓇽𓇾𓇿</div>
-<div class="line">𓈀𓈁𓈂𓈃𓈄𓈅𓈆𓈇𓈈𓈉𓈊𓈋𓈌𓈍𓈎𓈏𓈐𓈑𓈒𓈓𓈔𓈕𓈖𓈗𓈘𓈙𓈚𓈛𓈜𓈝𓈞𓈟</div>
-<div class="line">𓈠𓈡𓈢𓈣𓈤𓈥𓈦𓈧𓈨𓈩𓈪𓈫𓈬𓈭𓈮𓈯𓈰𓈱𓈲𓈳𓈴𓈵𓈶𓈷𓈸𓈹𓈺𓈻𓈼𓈽𓈾𓈿</div>
-<div class="line">𓉀𓉁𓉂𓉃𓉄𓉅𓉆𓉇𓉈𓉉𓉊𓉋𓉌𓉍𓉎𓉏𓉐𓉑𓉒𓉓𓉔𓉕𓉖𓉗𓉘𓉙𓉚𓉛𓉜𓉝𓉞𓉟</div>
-<div class="line">𓉠𓉡𓉢𓉣𓉤𓉥𓉦𓉧𓉨𓉩𓉪𓉫𓉬𓉭𓉮𓉯𓉰𓉱𓉲𓉳𓉴𓉵𓉶𓉷𓉸𓉹𓉺𓉻𓉼𓉽𓉾𓉿</div>
-<div class="line">𓊀𓊁𓊂𓊃𓊄𓊅𓊆𓊇𓊈𓊉𓊊𓊋𓊌𓊍𓊎𓊏𓊐𓊑𓊒𓊓𓊔𓊕𓊖𓊗𓊘𓊙𓊚𓊛𓊜𓊝𓊞𓊟</div>
-<div class="line">𓊠𓊡𓊢𓊣𓊤𓊥𓊦𓊧𓊨𓊩𓊪𓊫𓊬𓊭𓊮𓊯𓊰𓊱𓊲𓊳𓊴𓊵𓊶𓊷𓊸𓊹𓊺𓊻𓊼𓊽𓊾𓊿</div>
-<div class="line">𓋀𓋁𓋂𓋃𓋄𓋅𓋆𓋇𓋈𓋉𓋊𓋋𓋌𓋍𓋎𓋏𓋐𓋑𓋒𓋓𓋔𓋕𓋖𓋗𓋘𓋙𓋚𓋛𓋜𓋝𓋞𓋟</div>
-<div class="line">𓋠𓋡𓋢𓋣𓋤𓋥𓋦𓋧𓋨𓋩𓋪𓋫𓋬𓋭𓋮𓋯𓋰𓋱𓋲𓋳𓋴𓋵𓋶𓋷𓋸𓋹𓋺𓋻𓋼𓋽𓋾𓋿</div>
-<div class="line">𓌀𓌁𓌂𓌃𓌄𓌅𓌆𓌇𓌈𓌉𓌊𓌋𓌌𓌍𓌎𓌏𓌐𓌑𓌒𓌓𓌔𓌕𓌖𓌗𓌘𓌙𓌚𓌛𓌜𓌝𓌞𓌟</div>
-<div class="line">𓌠𓌡𓌢𓌣𓌤𓌥𓌦𓌧𓌨𓌩𓌪𓌫𓌬𓌭𓌮𓌯𓌰𓌱𓌲𓌳𓌴𓌵𓌶𓌷𓌸𓌹𓌺𓌻𓌼𓌽𓌾𓌿</div>
-<div class="line">𓍀𓍁𓍂𓍃𓍄𓍅𓍆𓍇𓍈𓍉𓍊𓍋𓍌𓍍𓍎𓍏𓍐𓍑𓍒𓍓𓍔𓍕𓍖𓍗𓍘𓍙𓍚𓍛𓍜𓍝𓍞𓍟</div>
-<div class="line">𓍠𓍡𓍢𓍣𓍤𓍥𓍦𓍧𓍨𓍩𓍪𓍫𓍬𓍭𓍮𓍯𓍰𓍱𓍲𓍳𓍴𓍵𓍶𓍷𓍸𓍹𓍺𓍻𓍼𓍽𓍾𓍿</div>
-<div class="line">𓎀𓎁𓎂𓎃𓎄𓎅𓎆𓎇𓎈𓎉𓎊𓎋𓎌𓎍𓎎𓎏𓎐𓎑𓎒𓎓𓎔𓎕𓎖𓎗𓎘𓎙𓎚𓎛𓎜𓎝𓎞𓎟</div>
-<div class="line">𓎠𓎡𓎢𓎣𓎤𓎥𓎦𓎧𓎨𓎩𓎪𓎫𓎬𓎭𓎮𓎯𓎰𓎱𓎲𓎳𓎴𓎵𓎶𓎷𓎸𓎹𓎺𓎻𓎼𓎽𓎾𓎿</div>
-<div class="line">𓏀𓏁𓏂𓏃𓏄𓏅𓏆𓏇𓏈𓏉𓏊𓏋𓏌𓏍𓏎𓏏𓏐𓏑𓏒𓏓𓏔𓏕𓏖𓏗𓏘𓏙𓏚𓏛𓏜𓏝𓏞𓏟</div>
-<div class="line">𓏠𓏡𓏢𓏣𓏤𓏥𓏦𓏧𓏨𓏩𓏪𓏫𓏬𓏭𓏮𓏯𓏰𓏱𓏲𓏳𓏴𓏵𓏶𓏷𓏸𓏹𓏺𓏻𓏼𓏽𓏾𓏿</div>
-<div class="line">𓐀𓐁𓐂𓐃𓐄𓐅𓐆𓐇𓐈𓐉𓐊𓐋𓐌𓐍𓐎𓐏𓐐𓐑𓐒𓐓𓐔𓐕𓐖𓐗𓐘𓐙𓐚𓐛𓐜𓐝𓐞𓐟</div>
-<div class="line">𓐠𓐡𓐢𓐣𓐤𓐥𓐦𓐧𓐨𓐩𓐪𓐫𓐬𓐭𓐮</div>
-</div>
-<div data-block="Anatolian">
-<div class="line">𔐀𔐁𔐂𔐃𔐄𔐅𔐆𔐇𔐈𔐉𔐊𔐋𔐌𔐍𔐎𔐏𔐐𔐑𔐒𔐓𔐔𔐕𔐖𔐗𔐘𔐙𔐚𔐛𔐜𔐝𔐞𔐟</div>
-<div class="line">𔐠𔐡𔐢𔐣𔐤𔐥𔐦𔐧𔐨𔐩𔐪𔐫𔐬𔐭𔐮𔐯𔐰𔐱𔐲𔐳𔐴𔐵𔐶𔐷𔐸𔐹𔐺𔐻𔐼𔐽𔐾𔐿</div>
-<div class="line">𔑀𔑁𔑂𔑃𔑄𔑅𔑆𔑇𔑈𔑉𔑊𔑋𔑌𔑍𔑎𔑏𔑐𔑑𔑒𔑓𔑔𔑕𔑖𔑗𔑘𔑙𔑚𔑛𔑜𔑝𔑞𔑟</div>
-<div class="line">𔑠𔑡𔑢𔑣𔑤𔑥𔑦𔑧𔑨𔑩𔑪𔑫𔑬𔑭𔑮𔑯𔑰𔑱𔑲𔑳𔑴𔑵𔑶𔑷𔑸𔑹𔑺𔑻𔑼𔑽𔑾𔑿</div>
-<div class="line">𔒀𔒁𔒂𔒃𔒄𔒅𔒆𔒇𔒈𔒉𔒊𔒋𔒌𔒍𔒎𔒏𔒐𔒑𔒒𔒓𔒔𔒕𔒖𔒗𔒘𔒙𔒚𔒛𔒜𔒝𔒞𔒟</div>
-<div class="line">𔒠𔒡𔒢𔒣𔒤𔒥𔒦𔒧𔒨𔒩𔒪𔒫𔒬𔒭𔒮𔒯𔒰𔒱𔒲𔒳𔒴𔒵𔒶𔒷𔒸𔒹𔒺𔒻𔒼𔒽𔒾𔒿</div>
-<div class="line">𔓀𔓁𔓂𔓃𔓄𔓅𔓆𔓇𔓈𔓉𔓊𔓋𔓌𔓍𔓎𔓏𔓐𔓑𔓒𔓓𔓔𔓕𔓖𔓗𔓘𔓙𔓚𔓛𔓜𔓝𔓞𔓟</div>
-<div class="line">𔓠𔓡𔓢𔓣𔓤𔓥𔓦𔓧𔓨𔓩𔓪𔓫𔓬𔓭𔓮𔓯𔓰𔓱𔓲𔓳𔓴𔓵𔓶𔓷𔓸𔓹𔓺𔓻𔓼𔓽𔓾𔓿</div>
-<div class="line">𔔀𔔁𔔂𔔃𔔄𔔅𔔆𔔇𔔈𔔉𔔊𔔋𔔌𔔍𔔎𔔏𔔐𔔑𔔒𔔓𔔔𔔕𔔖𔔗𔔘𔔙𔔚𔔛𔔜𔔝𔔞𔔟</div>
-<div class="line">𔔠𔔡𔔢𔔣𔔤𔔥𔔦𔔧𔔨𔔩𔔪𔔫𔔬𔔭𔔮𔔯𔔰𔔱𔔲𔔳𔔴𔔵𔔶𔔷𔔸𔔹𔔺𔔻𔔼𔔽𔔾𔔿</div>
-<div class="line">𔕀𔕁𔕂𔕃𔕄𔕅𔕆𔕇𔕈𔕉𔕊𔕋𔕌𔕍𔕎𔕏𔕐𔕑𔕒𔕓𔕔𔕕𔕖𔕗𔕘𔕙𔕚𔕛𔕜𔕝𔕞𔕟</div>
-<div class="line">𔕠𔕡𔕢𔕣𔕤𔕥𔕦𔕧𔕨𔕩𔕪𔕫𔕬𔕭𔕮𔕯𔕰𔕱𔕲𔕳𔕴𔕵𔕶𔕷𔕸𔕹𔕺𔕻𔕼𔕽𔕾𔕿</div>
-<div class="line">𔖀𔖁𔖂𔖃𔖄𔖅𔖆𔖇𔖈𔖉𔖊𔖋𔖌𔖍𔖎𔖏𔖐𔖑𔖒𔖓𔖔𔖕𔖖𔖗𔖘𔖙𔖚𔖛𔖜𔖝𔖞𔖟</div>
-<div class="line">𔖠𔖡𔖢𔖣𔖤𔖥𔖦𔖧𔖨𔖩𔖪𔖫𔖬𔖭𔖮𔖯𔖰𔖱𔖲𔖳𔖴𔖵𔖶𔖷𔖸𔖹𔖺𔖻𔖼𔖽𔖾𔖿</div>
-<div class="line">𔗀𔗁𔗂𔗃𔗄𔗅𔗆𔗇𔗈𔗉𔗊𔗋𔗌𔗍𔗎𔗏𔗐𔗑𔗒𔗓𔗔𔗕𔗖𔗗𔗘𔗙𔗚𔗛𔗜𔗝𔗞𔗟</div>
-<div class="line">𔗠𔗡𔗢𔗣𔗤𔗥𔗦𔗧𔗨𔗩𔗪𔗫𔗬𔗭𔗮𔗯𔗰𔗱𔗲𔗳𔗴𔗵𔗶𔗷𔗸𔗹𔗺𔗻𔗼𔗽𔗾𔗿</div>
-<div class="line">𔘀𔘁𔘂𔘃𔘄𔘅𔘆𔘇𔘈𔘉𔘊𔘋𔘌𔘍𔘎𔘏𔘐𔘑𔘒𔘓𔘔𔘕𔘖𔘗𔘘𔘙𔘚𔘛𔘜𔘝𔘞𔘟</div>
-<div class="line">𔘠𔘡𔘢𔘣𔘤𔘥𔘦𔘧𔘨𔘩𔘪𔘫𔘬𔘭𔘮𔘯𔘰𔘱𔘲𔘳𔘴𔘵𔘶𔘷𔘸𔘹𔘺𔘻𔘼𔘽𔘾𔘿</div>
-<div class="line">𔙀𔙁𔙂𔙃𔙄𔙅𔙆</div>
-</div>
-<div data-block="Ideographic">
-<div class="line">𖿠</div>
-</div>
-<div data-block="Tangut">
-<div class="line">𗀀𘟬𘠀𘫲</div>
-</div>
-<div data-block="Kana">
-<div class="line">𛀀𛀁</div>
-</div>
-<div data-block="Byzantine">
-<div class="line">𝀀𝀁𝀂𝀃𝀄𝀅𝀆𝀇𝀈𝀉𝀊𝀋𝀌𝀍𝀎𝀏𝀐𝀑𝀒𝀓𝀔𝀕𝀖𝀗𝀘𝀙𝀚𝀛𝀜𝀝𝀞𝀟</div>
-<div class="line">𝀠𝀡𝀢𝀣𝀤𝀥𝀦𝀧𝀨𝀩𝀪𝀫𝀬𝀭𝀮𝀯𝀰𝀱𝀲𝀳𝀴𝀵𝀶𝀷𝀸𝀹𝀺𝀻𝀼𝀽𝀾𝀿</div>
-<div class="line">𝁀𝁁𝁂𝁃𝁄𝁅𝁆𝁇𝁈𝁉𝁊𝁋𝁌𝁍𝁎𝁏𝁐𝁑𝁒𝁓𝁔𝁕𝁖𝁗𝁘𝁙𝁚𝁛𝁜𝁝𝁞𝁟</div>
-<div class="line">𝁠𝁡𝁢𝁣𝁤𝁥𝁦𝁧𝁨𝁩𝁪𝁫𝁬𝁭𝁮𝁯𝁰𝁱𝁲𝁳𝁴𝁵𝁶𝁷𝁸𝁹𝁺𝁻𝁼𝁽𝁾𝁿</div>
-<div class="line">𝂀𝂁𝂂𝂃𝂄𝂅𝂆𝂇𝂈𝂉𝂊𝂋𝂌𝂍𝂎𝂏𝂐𝂑𝂒𝂓𝂔𝂕𝂖𝂗𝂘𝂙𝂚𝂛𝂜𝂝𝂞𝂟</div>
-<div class="line">𝂠𝂡𝂢𝂣𝂤𝂥𝂦𝂧𝂨𝂩𝂪𝂫𝂬𝂭𝂮𝂯𝂰𝂱𝂲𝂳𝂴𝂵𝂶𝂷𝂸𝂹𝂺𝂻𝂼𝂽𝂾𝂿</div>
-<div class="line">𝃀𝃁𝃂𝃃𝃄𝃅𝃆𝃇𝃈𝃉𝃊𝃋𝃌𝃍𝃎𝃏𝃐𝃑𝃒𝃓𝃔𝃕𝃖𝃗𝃘𝃙𝃚𝃛𝃜𝃝𝃞𝃟</div>
-<div class="line">𝃠𝃡𝃢𝃣𝃤𝃥𝃦𝃧𝃨𝃩𝃪𝃫𝃬𝃭𝃮𝃯𝃰𝃱𝃲𝃳𝃴𝃵</div>
-</div>
-<div data-block="Musical">
-<div class="line">𝄀𝄁𝄂𝄃𝄄𝄅𝄆𝄇𝄈𝄉𝄊𝄋𝄌𝄍𝄎𝄏𝄐𝄑𝄒𝄓𝄔𝄕𝄖𝄗𝄘𝄙𝄚𝄛𝄜𝄝𝄞𝄟</div>
-<div class="line">𝄠𝄡𝄢𝄣𝄤𝄥𝄦𝄩𝄪𝄫𝄬𝄭𝄮𝄯𝄰𝄱𝄲𝄳𝄴𝄵𝄶𝄷𝄸𝄹𝄺𝄻𝄼𝄽𝄾𝄿𝅀𝅁</div>
-<div class="line">𝅂𝅃𝅄𝅅𝅆𝅇𝅈𝅉𝅊𝅋𝅌𝅍𝅎𝅏𝅐𝅑𝅒𝅓𝅔𝅕𝅖𝅗𝅘𝅙𝅚𝅛𝅜𝅝𝅗𝅥𝅘𝅥𝅘𝅥𝅮𝅘𝅥𝅯</div>
-<div class="line">𝅘𝅥𝅰𝅘𝅥𝅱𝅘𝅥𝅲𝅪𝅫𝅬𝆃𝆄𝆌𝆍𝆎𝆏𝆐𝆑𝆒𝆓𝆔𝆕𝆖𝆗𝆘𝆙𝆚𝆛𝆜𝆝𝆞𝆟𝆠𝆡𝆢𝆣</div>
-<div class="line">𝆤𝆥𝆦𝆧𝆨𝆩𝆮𝆯𝆰𝆱𝆲𝆳𝆴𝆵𝆶𝆷𝆸𝆹𝆺𝆹𝅥𝆺𝅥𝆹𝅥𝅮𝆺𝅥𝅮𝆹𝅥𝅯𝆺𝅥𝅯𝇁𝇂𝇃𝇄𝇅𝇆𝇇</div>
-<div class="line">𝇈𝇉𝇊𝇋𝇌𝇍𝇎𝇏𝇐𝇑𝇒𝇓𝇔𝇕𝇖𝇗𝇘𝇙𝇚𝇛𝇜𝇝𝇞𝇟𝇠𝇡𝇢𝇣𝇤𝇥𝇦𝇧</div>
-<div class="line">𝇨</div>
-</div>
-<div data-block="Tai">
-<div class="line">𝌀𝌁𝌂𝌃𝌄𝌅𝌆𝌇𝌈𝌉𝌊𝌋𝌌𝌍𝌎𝌏𝌐𝌑𝌒𝌓𝌔𝌕𝌖𝌗𝌘𝌙𝌚𝌛𝌜𝌝𝌞𝌟</div>
-<div class="line">𝌠𝌡𝌢𝌣𝌤𝌥𝌦𝌧𝌨𝌩𝌪𝌫𝌬𝌭𝌮𝌯𝌰𝌱𝌲𝌳𝌴𝌵𝌶𝌷𝌸𝌹𝌺𝌻𝌼𝌽𝌾𝌿</div>
-<div class="line">𝍀𝍁𝍂𝍃𝍄𝍅𝍆𝍇𝍈𝍉𝍊𝍋𝍌𝍍𝍎𝍏𝍐𝍑𝍒𝍓𝍔𝍕𝍖</div>
-</div>
-<div data-block="Counting">
-<div class="line">𝍠𝍡𝍢𝍣𝍤𝍥𝍦𝍧𝍨𝍩𝍪𝍫𝍬𝍭𝍮𝍯𝍰𝍱</div>
-</div>
-<div data-block="Sutton">
-<div class="line">𝠀𝠁𝠂𝠃𝠄𝠅𝠆𝠇𝠈𝠉𝠊𝠋𝠌𝠍𝠎𝠏𝠐𝠑𝠒𝠓𝠔𝠕𝠖𝠗𝠘𝠙𝠚𝠛𝠜𝠝𝠞𝠟</div>
-<div class="line">𝠠𝠡𝠢𝠣𝠤𝠥𝠦𝠧𝠨𝠩𝠪𝠫𝠬𝠭𝠮𝠯𝠰𝠱𝠲𝠳𝠴𝠵𝠶𝠷𝠸𝠹𝠺𝠻𝠼𝠽𝠾𝠿</div>
-<div class="line">𝡀𝡁𝡂𝡃𝡄𝡅𝡆𝡇𝡈𝡉𝡊𝡋𝡌𝡍𝡎𝡏𝡐𝡑𝡒𝡓𝡔𝡕𝡖𝡗𝡘𝡙𝡚𝡛𝡜𝡝𝡞𝡟</div>
-<div class="line">𝡠𝡡𝡢𝡣𝡤𝡥𝡦𝡧𝡨𝡩𝡪𝡫𝡬𝡭𝡮𝡯𝡰𝡱𝡲𝡳𝡴𝡵𝡶𝡷𝡸𝡹𝡺𝡻𝡼𝡽𝡾𝡿</div>
-<div class="line">𝢀𝢁𝢂𝢃𝢄𝢅𝢆𝢇𝢈𝢉𝢊𝢋𝢌𝢍𝢎𝢏𝢐𝢑𝢒𝢓𝢔𝢕𝢖𝢗𝢘𝢙𝢚𝢛𝢜𝢝𝢞𝢟</div>
-<div class="line">𝢠𝢡𝢢𝢣𝢤𝢥𝢦𝢧𝢨𝢩𝢪𝢫𝢬𝢭𝢮𝢯𝢰𝢱𝢲𝢳𝢴𝢵𝢶𝢷𝢸𝢹𝢺𝢻𝢼𝢽𝢾𝢿</div>
-<div class="line">𝣀𝣁𝣂𝣃𝣄𝣅𝣆𝣇𝣈𝣉𝣊𝣋𝣌𝣍𝣎𝣏𝣐𝣑𝣒𝣓𝣔𝣕𝣖𝣗𝣘𝣙𝣚𝣛𝣜𝣝𝣞𝣟</div>
-<div class="line">𝣠𝣡𝣢𝣣𝣤𝣥𝣦𝣧𝣨𝣩𝣪𝣫𝣬𝣭𝣮𝣯𝣰𝣱𝣲𝣳𝣴𝣵𝣶𝣷𝣸𝣹𝣺𝣻𝣼𝣽𝣾𝣿</div>
-<div class="line">𝤀𝤁𝤂𝤃𝤄𝤅𝤆𝤇𝤈𝤉𝤊𝤋𝤌𝤍𝤎𝤏𝤐𝤑𝤒𝤓𝤔𝤕𝤖𝤗𝤘𝤙𝤚𝤛𝤜𝤝𝤞𝤟</div>
-<div class="line">𝤠𝤡𝤢𝤣𝤤𝤥𝤦𝤧𝤨𝤩𝤪𝤫𝤬𝤭𝤮𝤯𝤰𝤱𝤲𝤳𝤴𝤵𝤶𝤷𝤸𝤹𝤺𝤻𝤼𝤽𝤾𝤿</div>
-<div class="line">𝥀𝥁𝥂𝥃𝥄𝥅𝥆𝥇𝥈𝥉𝥊𝥋𝥌𝥍𝥎𝥏𝥐𝥑𝥒𝥓𝥔𝥕𝥖𝥗𝥘𝥙𝥚𝥛𝥜𝥝𝥞𝥟</div>
-<div class="line">𝥠𝥡𝥢𝥣𝥤𝥥𝥦𝥧𝥨𝥩𝥪𝥫𝥬𝥭𝥮𝥯𝥰𝥱𝥲𝥳𝥴𝥵𝥶𝥷𝥸𝥹𝥺𝥻𝥼𝥽𝥾𝥿</div>
-<div class="line">𝦀𝦁𝦂𝦃𝦄𝦅𝦆𝦇𝦈𝦉𝦊𝦋𝦌𝦍𝦎𝦏𝦐𝦑𝦒𝦓𝦔𝦕𝦖𝦗𝦘𝦙𝦚𝦛𝦜𝦝𝦞𝦟</div>
-<div class="line">𝦠𝦡𝦢𝦣𝦤𝦥𝦦𝦧𝦨𝦩𝦪𝦫𝦬𝦭𝦮𝦯𝦰𝦱𝦲𝦳𝦴𝦵𝦶𝦷𝦸𝦹𝦺𝦻𝦼𝦽𝦾𝦿</div>
-<div class="line">𝧀𝧁𝧂𝧃𝧄𝧅𝧆𝧇𝧈𝧉𝧊𝧋𝧌𝧍𝧎𝧏𝧐𝧑𝧒𝧓𝧔𝧕𝧖𝧗𝧘𝧙𝧚𝧛𝧜𝧝𝧞𝧟</div>
-<div class="line">𝧠𝧡𝧢𝧣𝧤𝧥𝧦𝧧𝧨𝧩𝧪𝧫𝧬𝧭𝧮𝧯𝧰𝧱𝧲𝧳𝧴𝧵𝧶𝧷𝧸𝧹𝧺𝧻𝧼𝧽𝧾𝧿</div>
-<div class="line">𝨷𝨸𝨹𝨺𝩭𝩮𝩯𝩰𝩱𝩲𝩳𝩴𝩶𝩷𝩸𝩹𝩺𝩻𝩼𝩽𝩾𝩿𝪀𝪁𝪂𝪃𝪅𝪆𝪇𝪈𝪉𝪊</div>
-<div class="line">𝪋</div>
-</div>
-<div data-block="Mahjong">
-<div class="line">🀀🀁🀂🀃🀄🀅🀆🀇🀈🀉🀊🀋🀌🀍🀎🀏🀐🀑🀒🀓🀔🀕🀖🀗🀘🀙🀚🀛🀜🀝🀞🀟</div>
-<div class="line">🀠🀡🀢🀣🀤🀥🀦🀧🀨🀩🀪🀫</div>
-</div>
-<div data-block="Domino">
-<div class="line">🀰🀱🀲🀳🀴🀵🀶🀷🀸🀹🀺🀻🀼🀽🀾🀿🁀🁁🁂🁃🁄🁅🁆🁇🁈🁉🁊🁋🁌🁍🁎🁏</div>
-<div class="line">🁐🁑🁒🁓🁔🁕🁖🁗🁘🁙🁚🁛🁜🁝🁞🁟🁠🁡🁢🁣🁤🁥🁦🁧🁨🁩🁪🁫🁬🁭🁮🁯</div>
-<div class="line">🁰🁱🁲🁳🁴🁵🁶🁷🁸🁹🁺🁻🁼🁽🁾🁿🂀🂁🂂🂃🂄🂅🂆🂇🂈🂉🂊🂋🂌🂍🂎🂏</div>
-<div class="line">🂐🂑🂒🂓</div>
-</div>
-<div data-block="Playing">
-<div class="line">🂠🂡🂢🂣🂤🂥🂦🂧🂨🂩🂪🂫🂬🂭🂮🂱🂲🂳🂴🂵🂶🂷🂸🂹🂺🂻🂼🂽🂾🂿🃁🃂</div>
-<div class="line">🃃🃄🃅🃆🃇🃈🃉🃊🃋🃌🃍🃎🃏🃑🃒🃓🃔🃕🃖🃗🃘🃙🃚🃛🃜🃝🃞🃟🃠🃡🃢🃣</div>
-<div class="line">🃤🃥🃦🃧🃨🃩🃪🃫🃬🃭🃮🃯🃰🃱🃲🃳🃴🃵</div>
-</div>
-<div data-block="Enclosed">
-<div class="line">🄀🄁🄂🄃🄄🄅🄆🄇🄈🄉🄊🄋🄌🄐🄑🄒🄓🄔🄕🄖🄗🄘🄙🄚🄛🄜🄝🄞🄟🄠🄡🄢</div>
-<div class="line">🄣🄤🄥🄦🄧🄨🄩🄪🄫🄬🄭🄮🄰🄱🄲🄳🄴🄵🄶🄷🄸🄹🄺🄻🄼🄽🄾🄿🅀🅁🅂🅃</div>
-<div class="line">🅄🅅🅆🅇🅈🅉🅊🅋🅌🅍🅎🅏🅐🅑🅒🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞🅟🅠🅡🅢🅣</div>
-<div class="line">🅤🅥🅦🅧🅨🅩🅪🅫🅰🅱🅲🅳🅴🅵🅶🅷🅸🅹🅺🅻🅼🅽🅾🅿🆀🆁🆂🆃🆄🆅🆆🆇</div>
-<div class="line">🆈🆉🆊🆋🆌🆍🆎🆏🆐🆑🆒🆓🆔🆕🆖🆗🆘🆙🆚🆛🆜🆝🆞🆟🆠🆡🆢🆣🆤🆥🆦🆧</div>
-<div class="line">🆨🆩🆪🆫🆬🇦🇧🇨🇩🇪🇫🇬🇭🇮🇯🇰🇱🇲🇳🇴🇵🇶🇷🇸🇹🇺🇻🇼🇽🇾🇿🈂</div>
-<div class="line">🈐🈑🈒🈓🈔🈕🈖🈗🈘🈙🈚🈛🈜🈝🈞🈟🈠🈡🈢🈣🈤🈥🈦🈧🈨🈩🈪🈫🈬🈭🈮🈯</div>
-<div class="line">🈰🈱🈲🈳🈴🈵🈶🈷🈸🈹🈺🈻🉀🉁🉂🉃🉄🉅🉆🉇🉈🉐🉑</div>
-</div>
-<div data-block="Miscellaneous">
-<div class="line">🌀🌁🌂🌃🌄🌅🌆🌇🌈🌉🌊🌋🌌🌍🌎🌏🌐🌑🌒🌓🌔🌕🌖🌗🌘🌙🌚🌛🌜🌝🌞🌟</div>
-<div class="line">🌠🌡🌢🌣🌤🌥🌦🌧🌨🌩🌪🌫🌬🌭🌮🌯🌰🌱🌲🌳🌴🌵🌶🌷🌸🌹🌺🌻🌼🌽🌾🌿</div>
-<div class="line">🍀🍁🍂🍃🍄🍅🍆🍇🍈🍉🍊🍋🍌🍍🍎🍏🍐🍑🍒🍓🍔🍕🍖🍗🍘🍙🍚🍛🍜🍝🍞🍟</div>
-<div class="line">🍠🍡🍢🍣🍤🍥🍦🍧🍨🍩🍪🍫🍬🍭🍮🍯🍰🍱🍲🍳🍴🍵🍶🍷🍸🍹🍺🍻🍼🍽🍾🍿</div>
-<div class="line">🎀🎁🎂🎃🎄🎅🎆🎇🎈🎉🎊🎋🎌🎍🎎🎏🎐🎑🎒🎓🎔🎕🎖🎗🎘🎙🎚🎛🎜🎝🎞🎟</div>
-<div class="line">🎠🎡🎢🎣🎤🎥🎦🎧🎨🎩🎪🎫🎬🎭🎮🎯🎰🎱🎲🎳🎴🎵🎶🎷🎸🎹🎺🎻🎼🎽🎾🎿</div>
-<div class="line">🏀🏁🏂🏃🏄🏅🏆🏇🏈🏉🏊🏋🏌🏍🏎🏏🏐🏑🏒🏓🏔🏕🏖🏗🏘🏙🏚🏛🏜🏝🏞🏟</div>
-<div class="line">🏠🏡🏢🏣🏤🏥🏦🏧🏨🏩🏪🏫🏬🏭🏮🏯🏰🏱🏲🏳🏴🏵🏶🏷🏸🏹🏺🏻🏼🏽🏾🏿</div>
-<div class="line">🐀🐁🐂🐃🐄🐅🐆🐇🐈🐉🐊🐋🐌🐍🐎🐏🐐🐑🐒🐓🐔🐕🐖🐗🐘🐙🐚🐛🐜🐝🐞🐟</div>
-<div class="line">🐠🐡🐢🐣🐤🐥🐦🐧🐨🐩🐪🐫🐬🐭🐮🐯🐰🐱🐲🐳🐴🐵🐶🐷🐸🐹🐺🐻🐼🐽🐾🐿</div>
-<div class="line">👀👁👂👃👄👅👆👇👈👉👊👋👌👍👎👏👐👑👒👓👔👕👖👗👘👙👚👛👜👝👞👟</div>
-<div class="line">👠👡👢👣👤👥👦👧👨👩👪👫👬👭👮👯👰👱👲👳👴👵👶👷👸👹👺👻👼👽👾👿</div>
-<div class="line">💀💁💂💃💄💅💆💇💈💉💊💋💌💍💎💏💐💑💒💓💔💕💖💗💘💙💚💛💜💝💞💟</div>
-<div class="line">💠💡💢💣💤💥💦💧💨💩💪💫💬💭💮💯💰💱💲💳💴💵💶💷💸💹💺💻💼💽💾💿</div>
-<div class="line">📀📁📂📃📄📅📆📇📈📉📊📋📌📍📎📏📐📑📒📓📔📕📖📗📘📙📚📛📜📝📞📟</div>
-<div class="line">📠📡📢📣📤📥📦📧📨📩📪📫📬📭📮📯📰📱📲📳📴📵📶📷📸📹📺📻📼📽📾📿</div>
-<div class="line">🔀🔁🔂🔃🔄🔅🔆🔇🔈🔉🔊🔋🔌🔍🔎🔏🔐🔑🔒🔓🔔🔕🔖🔗🔘🔙🔚🔛🔜🔝🔞🔟</div>
-<div class="line">🔠🔡🔢🔣🔤🔥🔦🔧🔨🔩🔪🔫🔬🔭🔮🔯🔰🔱🔲🔳🔴🔵🔶🔷🔸🔹🔺🔻🔼🔽🔾🔿</div>
-<div class="line">🕀🕁🕂🕃🕄🕅🕆🕇🕈🕉🕊🕋🕌🕍🕎🕏🕐🕑🕒🕓🕔🕕🕖🕗🕘🕙🕚🕛🕜🕝🕞🕟</div>
-<div class="line">🕠🕡🕢🕣🕤🕥🕦🕧🕨🕩🕪🕫🕬🕭🕮🕯🕰🕱🕲🕳🕴🕵🕶🕷🕸🕹🕺🕻🕼🕽🕾🕿</div>
-<div class="line">🖀🖁🖂🖃🖄🖅🖆🖇🖈🖉🖊🖋🖌🖍🖎🖏🖐🖑🖒🖓🖔🖕🖖🖗🖘🖙🖚🖛🖜🖝🖞🖟</div>
-<div class="line">🖠🖡🖢🖣🖤🖥🖦🖧🖨🖩🖪🖫🖬🖭🖮🖯🖰🖱🖲🖳🖴🖵🖶🖷🖸🖹🖺🖻🖼🖽🖾🖿</div>
-<div class="line">🗀🗁🗂🗃🗄🗅🗆🗇🗈🗉🗊🗋🗌🗍🗎🗏🗐🗑🗒🗓🗔🗕🗖🗗🗘🗙🗚🗛🗜🗝🗞🗟</div>
-<div class="line">🗠🗡🗢🗣🗤🗥🗦🗧🗨🗩🗪🗫🗬🗭🗮🗯🗰🗱🗲🗳🗴🗵🗶🗷🗸🗹🗺🗻🗼🗽🗾🗿</div>
-</div>
-<div data-block="Emoticons">
-<div class="line">😀😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😑😒😓😔😕😖😗😘😙😚😛😜😝😞😟</div>
-<div class="line">😠😡😢😣😤😥😦😧😨😩😪😫😬😭😮😯😰😱😲😳😴😵😶😷😸😹😺😻😼😽😾😿</div>
-<div class="line">🙀🙁🙂🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏</div>
-</div>
-<div data-block="Ornamental">
-<div class="line">🙐🙑🙒🙓🙔🙕🙖🙗🙘🙙🙚🙛🙜🙝🙞🙟🙠🙡🙢🙣🙤🙥🙦🙧🙨🙩🙪🙫🙬🙭🙮🙯</div>
-<div class="line">🙰🙱🙲🙳🙴🙵🙶🙷🙸🙹🙺🙻🙼🙽🙾🙿</div>
-</div>
-<div data-block="Transport">
-<div class="line">🚀🚁🚂🚃🚄🚅🚆🚇🚈🚉🚊🚋🚌🚍🚎🚏🚐🚑🚒🚓🚔🚕🚖🚗🚘🚙🚚🚛🚜🚝🚞🚟</div>
-<div class="line">🚠🚡🚢🚣🚤🚥🚦🚧🚨🚩🚪🚫🚬🚭🚮🚯🚰🚱🚲🚳🚴🚵🚶🚷🚸🚹🚺🚻🚼🚽🚾🚿</div>
-<div class="line">🛀🛁🛂🛃🛄🛅🛆🛇🛈🛉🛊🛋🛌🛍🛎🛏🛐🛑🛒🛠🛡🛢🛣🛤🛥🛦🛧🛨🛩🛪🛫🛬</div>
-<div class="line">🛰🛱🛲🛳🛴🛵🛶</div>
-</div>
-<div data-block="Alchemical">
-<div class="line">🜀🜁🜂🜃🜄🜅🜆🜇🜈🜉🜊🜋🜌🜍🜎🜏🜐🜑🜒🜓🜔🜕🜖🜗🜘🜙🜚🜛🜜🜝🜞🜟</div>
-<div class="line">🜠🜡🜢🜣🜤🜥🜦🜧🜨🜩🜪🜫🜬🜭🜮🜯🜰🜱🜲🜳🜴🜵🜶🜷🜸🜹🜺🜻🜼🜽🜾🜿</div>
-<div class="line">🝀🝁🝂🝃🝄🝅🝆🝇🝈🝉🝊🝋🝌🝍🝎🝏🝐🝑🝒🝓🝔🝕🝖🝗🝘🝙🝚🝛🝜🝝🝞🝟</div>
-<div class="line">🝠🝡🝢🝣🝤🝥🝦🝧🝨🝩🝪🝫🝬🝭🝮🝯🝰🝱🝲🝳</div>
-</div>
-<div data-block="Geometric">
-<div class="line">🞀🞁🞂🞃🞄🞅🞆🞇🞈🞉🞊🞋🞌🞍🞎🞏🞐🞑🞒🞓🞔🞕🞖🞗🞘🞙🞚🞛🞜🞝🞞🞟</div>
-<div class="line">🞠🞡🞢🞣🞤🞥🞦🞧🞨🞩🞪🞫🞬🞭🞮🞯🞰🞱🞲🞳🞴🞵🞶🞷🞸🞹🞺🞻🞼🞽🞾🞿</div>
-<div class="line">🟀🟁🟂🟃🟄🟅🟆🟇🟈🟉🟊🟋🟌🟍🟎🟏🟐🟑🟒🟓🟔</div>
-</div>
-<div data-block="Supplemental">
-<div class="line">🤐🤑🤒🤓🤔🤕🤖🤗🤘🤙🤚🤛🤜🤝🤞🤠🤡🤢🤣🤤🤥🤦🤧🤰🤳🤴🤵🤶🤷🤸🤹🤺</div>
-<div class="line">🤻🤼🤽🤾🥀🥁🥂🥃🥄🥅🥆🥇🥈🥉🥊🥋🥐🥑🥒🥓🥔🥕🥖🥗🥘🥙🥚🥛🥜🥝🥞🦀</div>
-<div class="line">🦁🦂🦃🦄🦅🦆🦇🦈🦉🦊🦋🦌🦍🦎🦏🦐🦑🧀</div>
-</div>
-<div data-block="CJK">
-<div class="line">𠀀𪛖𪜀𫜴𫝀𫠝𫠠𬺡丽丸乁𠄢你侮侻倂偺備僧像㒞𠘺免兔兤具𠔜㒹內再𠕋冗</div>
-<div class="line">冤仌冬况𩇟凵刃㓟刻剆割剷㔕勇勉勤勺包匆北卉卑博即卽卿卿卿𠨬灰及叟</div>
-<div class="line">𠭣叫叱吆咞吸呈周咢哶唐啓啣善善喙喫喳嗂圖嘆圗噑噴切壮城埴堍型堲報</div>
-<div class="line">墬𡓤売壷夆多夢奢𡚨𡛪姬娛娧姘婦㛮㛼嬈嬾嬾𡧈寃寘寧寳𡬘寿将当尢㞁屠</div>
-<div class="line">屮峀岍𡷤嵃𡷦嵮嵫嵼巡巢㠯巽帨帽幩㡢𢆃㡼庰庳庶廊𪎒廾𢌱𢌱舁弢弢㣇𣊸</div>
-<div class="line">𦇚形彫㣣徚忍志忹悁㤺㤜悔𢛔惇慈慌慎慌慺憎憲憤憯懞懲懶成戛扝抱拔捐</div>
-<div class="line">𢬌挽拼捨掃揤𢯱搢揅掩㨮摩摾撝摷㩬敏敬𣀊旣書晉㬙暑㬈㫤冒冕最暜肭䏙</div>
-<div class="line">朗望朡杞杓𣏃㭉柺枅桒梅𣑭梎栟椔㮝楂榣槪檨𣚣櫛㰘次𣢧歔㱎歲殟殺殻𣪍</div>
-<div class="line">𡴋𣫺汎𣲼沿泍汧洖派海流浩浸涅𣴞洴港湮㴳滋滇𣻑淹潮𣽞𣾎濆瀹瀞瀛㶖灊</div>
-<div class="line">災灷炭𠔥煅𤉣熜𤎫爨爵牐𤘈犀犕𤜵𤠔獺王㺬玥㺸㺸瑇瑜瑱璅瓊㼛甤𤰶甾𤲒</div>
-<div class="line">異𢆟瘐𤾡𤾸𥁄㿼䀈直𥃳𥃲𥄙𥄳眞真真睊䀹瞋䁆䂖𥐝硎碌磌䃣𥘦祖𥚚𥛅福秫</div>
-<div class="line">䄯穀穊穏𥥼𥪧𥪧竮䈂𥮫篆築䈧𥲀糒䊠糨糣紀𥾆絣䌁緇縂繅䌴𦈨𦉇䍙𦋙罺𦌾</div>
-<div class="line">羕翺者𦓚𦔣聠𦖨聰𣍟䏕育脃䐋脾媵𦞧𦞵𣎓𣎜舁舄辞䑫芑芋芝劳花芳芽苦𦬼</div>
-<div class="line">若茝荣莭茣莽菧著荓菊菌菜𦰶𦵫𦳕䔫蓱蓳蔖𧏊蕤𦼬䕝䕡𦾱𧃒䕫虐虜虧虩蚩</div>
-<div class="line">蚈蜎蛢蝹蜨蝫螆䗗蟡蠁䗹衠衣𧙧裗裞䘵裺㒻𧢮𧥦䚾䛇誠諭變豕𧲨貫賁贛起</div>
-<div class="line">𧼯𠠄跋趼跰𠣞軔輸𨗒𨗭邔郱鄑𨜮鄛鈸鋗鋘鉼鏹鐕𨯺開䦕閷𨵷䧦雃嶲霣𩅅𩈚</div>
-<div class="line">䩮䩶韠𩐊䪲𩒖頋頋頩𩖶飢䬳餩馧駂駾䯎𩬰鬒鱀鳽䳎䳭鵧𪃎䳸𪄅𪈎𪊑麻䵖黹</div>
-<div class="line">黾鼅鼏鼖鼻𪘀</div>
-</div>
-</div>
-<div data-vo="Tr" class="test">
-<div data-block="Miscellaneous">
-<div class="line">〈〉</div>
-</div>
-<div data-block="CJK">
-<div class="line">〈〉《》「」『』【】〔〕〖〗〘〙〚〛〜〝〞〟〰</div>
-</div>
-<div data-block="Katakana">
-<div class="line">゠ー</div>
-</div>
-<div data-block="Small">
-<div class="line">﹙﹚﹛﹜﹝﹞</div>
-</div>
-<div data-block="Halfwidth">
-<div class="line">():;[]_{|}~⦅⦆ ̄</div>
-</div>
-</div>
-<div data-vo="Tu" class="test">
-<div data-block="CJK">
-<div class="line">、。</div>
-</div>
-<div data-block="Hiragana">
-<div class="line">ぁぃぅぇぉっゃゅょゎゕゖ゛゜</div>
-</div>
-<div data-block="Katakana">
-<div class="line">ァィゥェォッャュョヮヵヶ</div>
-</div>
-<div data-block="Bopomofo">
-<div class="line">ㄧ</div>
-</div>
-<div data-block="Katakana">
-<div class="line">ㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ</div>
-</div>
-<div data-block="CJK">
-<div class="line">㌀㌁㌂㌃㌄㌅㌆㌇㌈㌉㌊㌋㌌㌍㌎㌏㌐㌑㌒㌓㌔㌕㌖㌗㌘㌙㌚㌛㌜㌝㌞㌟</div>
-<div class="line">㌠㌡㌢㌣㌤㌥㌦㌧㌨㌩㌪㌫㌬㌭㌮㌯㌰㌱㌲㌳㌴㌵㌶㌷㌸㌹㌺㌻㌼㌽㌾㌿</div>
-<div class="line">㍀㍁㍂㍃㍄㍅㍆㍇㍈㍉㍊㍋㍌㍍㍎㍏㍐㍑㍒㍓㍔㍕㍖㍗㍻㍼㍽㍾㍿</div>
-</div>
-<div data-block="Small">
-<div class="line">﹐﹑﹒</div>
-</div>
-<div data-block="Halfwidth">
-<div class="line">!,.?</div>
-</div>
-<div data-block="Enclosed">
-<div class="line">🈀🈁</div>
-</div>
-</div>
-</div>
-<script src="support/text-orientation.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001a.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001a.html
deleted file mode 100644
index 9a5e3508312..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001a.html
+++ /dev/null
@@ -1,161 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: Test orientation of characters where vo=R (#1/9, 2048 code points in U+0020-0B27).</title>
-<meta name="timeout" content="long">
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<meta name="assert" content="Test orientation of characters where vo=R (#1/9, 2048 code points in U+0020-0B27)">
-<meta name="flags" content="dom">
-<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-.test {
- font: 16px/1 "orientation";
- height: 17em;
- writing-mode: vertical-rl;
-}
-.line {
- white-space: pre;
-}
-.U {
- text-orientation: upright;
-}
-.R {
- text-orientation: sideways;
-}
-#details {
- margin: 1em .5em;
-}
-summary {
- font-size: 1.2em;
- font-weight: bold;
- margin-top: .5em;
-}
-</style>
-<div id="log"></div>
-<div id="details"></div>
-<div id="container">
-<div data-vo="R" class="test">
-<div data-block="Basic">
-<div class="line"> !&#34;#$%&amp;&#39;()*+,-./0123456789:;&lt;=&gt;?</div>
-<div class="line">@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_</div>
-<div class="line">`abcdefghijklmnopqrstuvwxyz{|}~</div>
-</div>
-<div data-block="Latin">
-<div class="line"> ¡¢£¤¥¦¨ª«¬¯°²³´µ¶·¸¹º»¿ÀÁÂÃÄÅÆÇ</div>
-<div class="line">ÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçè</div>
-<div class="line">éêëìíîïðñòóôõöøùúûüýþÿĀāĂ㥹ĆćĈĉ</div>
-<div class="line">ĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩ</div>
-<div class="line">ĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼn</div>
-<div class="line">ŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũ</div>
-<div class="line">ŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſƀƁƂƃƄƅƆƇƈƉ</div>
-<div class="line">ƊƋƌƍƎƏƐƑƒƓƔƕƖƗƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩ</div>
-<div class="line">ƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿǀǁǂǃDŽDždžLJLjlj</div>
-<div class="line">NJNjnjǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜǝǞǟǠǡǢǣǤǥǦǧǨǩ</div>
-<div class="line">ǪǫǬǭǮǯǰDZDzdzǴǵǶǷǸǹǺǻǼǽǾǿȀȁȂȃȄȅȆȇȈȉ</div>
-<div class="line">ȊȋȌȍȎȏȐȑȒȓȔȕȖȗȘșȚțȜȝȞȟȠȡȢȣȤȥȦȧȨȩ</div>
-<div class="line">ȪȫȬȭȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀɁɂɃɄɅɆɇɈɉ</div>
-<div class="line">ɊɋɌɍɎɏ</div>
-</div>
-<div data-block="IPA">
-<div class="line">ɐɑɒɓɔɕɖɗɘəɚɛɜɝɞɟɠɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯ</div>
-<div class="line">ɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀʁʂʃʄʅʆʇʈʉʊʋʌʍʎʏ</div>
-<div class="line">ʐʑʒʓʔʕʖʗʘʙʚʛʜʝʞʟʠʡʢʣʤʥʦʧʨʩʪʫʬʭʮʯ</div>
-</div>
-<div data-block="Spacing">
-<div class="line">ʰʱʲʳʴʵʶʷʸʹʺʻʼʽʾʿˀˁ˂˃˄˅ˆˇˈˉˊˋˌˍˎˏ</div>
-<div class="line">ːˑ˒˓˔˕˖˗˘˙˚˛˜˝˞˟ˠˡˢˣˤ˥˦˧˨˩ˬ˭ˮ˯˰˱</div>
-<div class="line">˲˳˴˵˶˷˸˹˺˻˼˽˾˿</div>
-</div>
-<div data-block="Greek">
-<div class="line">ͰͱͲͳʹ͵Ͷͷͺͻͼͽ;Ϳ΄΅Ά·ΈΉΊΌΎΏΐΑΒΓΔΕΖΗ</div>
-<div class="line">ΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθ</div>
-<div class="line">ικλμνξοπρςστυφχψωϊϋόύώϏϐϑϒϓϔϕϖϗϘ</div>
-<div class="line">ϙϚϛϜϝϞϟϠϡϢϣϤϥϦϧϨϩϪϫϬϭϮϯϰϱϲϳϴϵ϶Ϸϸ</div>
-<div class="line">ϹϺϻϼϽϾϿ</div>
-</div>
-<div data-block="Cyrillic">
-<div class="line">ЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОП</div>
-<div class="line">РСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп</div>
-<div class="line">рстуфхцчшщъыьэюяѐёђѓєѕіїјљњћќѝўџ</div>
-<div class="line">ѠѡѢѣѤѥѦѧѨѩѪѫѬѭѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿ</div>
-<div class="line">Ҁҁ҂ҊҋҌҍҎҏҐґҒғҔҕҖҗҘҙҚқҜҝҞҟҠҡҢңҤҥҦ</div>
-<div class="line">ҧҨҩҪҫҬҭҮүҰұҲҳҴҵҶҷҸҹҺһҼҽҾҿӀӁӂӃӄӅӆ</div>
-<div class="line">ӇӈӉӊӋӌӍӎӏӐӑӒӓӔӕӖӗӘәӚӛӜӝӞӟӠӡӢӣӤӥӦ</div>
-<div class="line">ӧӨөӪӫӬӭӮӯӰӱӲӳӴӵӶӷӸӹӺӻӼӽӾӿԀԁԂԃԄԅԆ</div>
-<div class="line">ԇԈԉԊԋԌԍԎԏԐԑԒԓԔԕԖԗԘԙԚԛԜԝԞԟԠԡԢԣԤԥԦ</div>
-<div class="line">ԧԨԩԪԫԬԭԮԯ</div>
-</div>
-<div data-block="Armenian">
-<div class="line">ԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐ</div>
-<div class="line">ՑՒՓՔՕՖՙ՚՛՜՝՞՟աբգդեզէըթժիլխծկհձղճ</div>
-<div class="line">մյնշոչպջռսվտրցւփքօֆև։֊֍֎֏</div>
-</div>
-<div data-block="Hebrew">
-<div class="line">־׀׃׆אבגדהוזחטיךכלםמןנסעףפץצקרשתװ</div>
-<div class="line">ױײ׳״</div>
-</div>
-<div data-block="Arabic">
-<div class="line">؆؇؈؉؊؋،؍؎؏؛؞؟ؠءآأؤإئابةتثجحخدذرز</div>
-<div class="line">سشصضطظعغػؼؽؾؿـفقكلمنهوىي٠١٢٣٤٥٦٧</div>
-<div class="line">٨٩٪٫٬٭ٮٯٱٲٳٴٵٶٷٸٹٺٻټٽپٿڀځڂڃڄڅچڇڈ</div>
-<div class="line">ډڊڋڌڍڎڏڐڑڒړڔڕږڗژڙښڛڜڝڞڟڠڡڢڣڤڥڦڧڨ</div>
-<div class="line">کڪګڬڭڮگڰڱڲڳڴڵڶڷڸڹںڻڼڽھڿۀہۂۃۄۅۆۇۈ</div>
-<div class="line">ۉۊۋیۍێۏېۑےۓ۔ە۞ۥۦ۩ۮۯ۰۱۲۳۴۵۶۷۸۹ۺۻۼ</div>
-<div class="line">۽۾ۿ</div>
-</div>
-<div data-block="Syriac">
-<div class="line">܀܁܂܃܄܅܆܇܈܉܊܋܌܍ܐܒܓܔܕܖܗܘܙܚܛܜܝܞܟܠܡܢ</div>
-<div class="line">ܣܤܥܦܧܨܩܪܫܬܭܮܯݍݎݏ</div>
-</div>
-<div data-block="Arabic">
-<div class="line">ݐݑݒݓݔݕݖݗݘݙݚݛݜݝݞݟݠݡݢݣݤݥݦݧݨݩݪݫݬݭݮݯ</div>
-<div class="line">ݰݱݲݳݴݵݶݷݸݹݺݻݼݽݾݿ</div>
-</div>
-<div data-block="Thaana">
-<div class="line">ހށނރބޅކއވމފދތލގޏސޑޒޓޔޕޖޗޘޙޚޛޜޝޞޟ</div>
-<div class="line">ޠޡޢޣޤޥޱ</div>
-</div>
-<div data-block="NKo">
-<div class="line">߀߁߂߃߄߅߆߇߈߉ߊߋߌߍߎߏߐߑߒߓߔߕߖߗߘߙߚߛߜߝߞߟ</div>
-<div class="line">ߠߡߢߣߤߥߦߧߨߩߪߴߵ߶߷߸߹ߺ</div>
-</div>
-<div data-block="Samaritan">
-<div class="line">ࠀࠁࠂࠃࠄࠅࠆࠇࠈࠉࠊࠋࠌࠍࠎࠏࠐࠑࠒࠓࠔࠕࠚࠤࠨ࠰࠱࠲࠳࠴࠵࠶</div>
-<div class="line">࠷࠸࠹࠺࠻࠼࠽࠾</div>
-</div>
-<div data-block="Mandaic">
-<div class="line">ࡀࡁࡂࡃࡄࡅࡆࡇࡈࡉࡊࡋࡌࡍࡎࡏࡐࡑࡒࡓࡔࡕࡖࡗࡘ࡞</div>
-</div>
-<div data-block="Arabic">
-<div class="line">ࢠࢡࢢࢣࢤࢥࢦࢧࢨࢩࢪࢫࢬࢭࢮࢯࢰࢱࢲࢳࢴࢶࢷࢸࢹࢺࢻࢼࢽ</div>
-</div>
-<div data-block="Devanagari">
-<div class="line">ऄअआइईउऊऋऌऍऎएऐऑऒओऔकखगघङचछजझञटठडढण</div>
-<div class="line">तथदधनऩपफबभमयरऱलळऴवशषसहऽॐक़ख़ग़ज़ड़ढ़फ़य़</div>
-<div class="line">ॠॡ।॥०१२३४५६७८९॰ॱॲॳॴॵॶॷॸॹॺॻॼॽॾॿ</div>
-</div>
-<div data-block="Bengali">
-<div class="line">ঀঅআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধ</div>
-<div class="line">নপফবভমযরলশষসহঽৎড়ঢ়য়ৠৡ০১২৩৪৫৬৭৮৯ৰৱ</div>
-<div class="line">৲৳৴৵৶৷৸৹৺৻</div>
-</div>
-<div data-block="Gurmukhi">
-<div class="line">ਅਆਇਈਉਊਏਐਓਔਕਖਗਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਪਫ</div>
-<div class="line">ਬਭਮਯਰਲਲ਼ਵਸ਼ਸਹਖ਼ਗ਼ਜ਼ੜਫ਼੦੧੨੩੪੫੬੭੮੯ੲੳੴ</div>
-</div>
-<div data-block="Gujarati">
-<div class="line">અઆઇઈઉઊઋઌઍએઐઑઓઔકખગઘઙચછજઝઞટઠડઢણતથદ</div>
-<div class="line">ધનપફબભમયરલળવશષસહઽૐૠૡ૦૧૨૩૪૫૬૭૮૯૰૱</div>
-<div class="line">ૹ</div>
-</div>
-<div data-block="Oriya">
-<div class="line">ଅଆଇଈଉଊଋଌଏଐଓଔକଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧ</div>
-</div>
-</div>
-</div>
-<script src="support/text-orientation.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001b.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001b.html
deleted file mode 100644
index 3c5df6ed4e2..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001b.html
+++ /dev/null
@@ -1,181 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: Test orientation of characters where vo=R (#2/9, 2048 code points in U+0B28-1B07).</title>
-<meta name="timeout" content="long">
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<meta name="assert" content="Test orientation of characters where vo=R (#2/9, 2048 code points in U+0B28-1B07)">
-<meta name="flags" content="dom">
-<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-.test {
- font: 16px/1 "orientation";
- height: 17em;
- writing-mode: vertical-rl;
-}
-.line {
- white-space: pre;
-}
-.U {
- text-orientation: upright;
-}
-.R {
- text-orientation: sideways;
-}
-#details {
- margin: 1em .5em;
-}
-summary {
- font-size: 1.2em;
- font-weight: bold;
- margin-top: .5em;
-}
-</style>
-<div id="log"></div>
-<div id="details"></div>
-<div id="container">
-<div data-vo="R" class="test">
-<div data-block="Oriya">
-<div class="line">ନପଫବଭମଯରଲଳଵଶଷସହଽଡ଼ଢ଼ୟୠୡ୦୧୨୩୪୫୬୭୮୯୰</div>
-<div class="line">ୱ୲୳୴୵୶୷</div>
-</div>
-<div data-block="Tamil">
-<div class="line">ஃஅஆஇஈஉஊஎஏஐஒஓஔகஙசஜஞடணதநனபமயரறலளழவ</div>
-<div class="line">ஶஷஸஹௐ௦௧௨௩௪௫௬௭௮௯௰௱௲௳௴௵௶௷௸௹௺</div>
-</div>
-<div data-block="Telugu">
-<div class="line">అఆఇఈఉఊఋఌఎఏఐఒఓఔకఖగఘఙచఛజఝఞటఠడఢణతథద</div>
-<div class="line">ధనపఫబభమయరఱలళఴవశషసహఽౘౙౚౠౡ౦౧౨౩౪౫౬౭</div>
-<div class="line">౮౯౸౹౺౻౼౽౾౿</div>
-</div>
-<div data-block="Kannada">
-<div class="line">ಀಅಆಇಈಉಊಋಌಎಏಐಒಓಔಕಖಗಘಙಚಛಜಝಞಟಠಡಢಣತಥ</div>
-<div class="line">ದಧನಪಫಬಭಮಯರಱಲಳವಶಷಸಹಽೞೠೡ೦೧೨೩೪೫೬೭೮೯</div>
-<div class="line">ೱೲ</div>
-</div>
-<div data-block="Malayalam">
-<div class="line">അആഇഈഉഊഋഌഎഏഐഒഓഔകഖഗഘങചഛജഝഞടഠഡഢണതഥദ</div>
-<div class="line">ധനഩപഫബഭമയരറലളഴവശഷസഹഺഽൎ൏ൔൕൖ൘൙൚൛൜൝</div>
-<div class="line">൞ൟൠൡ൦൧൨൩൪൫൬൭൮൯൰൱൲൳൴൵൶൷൸൹ൺൻർൽൾൿ</div>
-</div>
-<div data-block="Sinhala">
-<div class="line">අආඇඈඉඊඋඌඍඎඏඐඑඒඓඔඕඖකඛගඝඞඟචඡජඣඤඥඦට</div>
-<div class="line">ඨඩඪණඬතථදධනඳපඵබභමඹයරලවශෂසහළෆ෦෧෨෩෪</div>
-<div class="line">෫෬෭෮෯෴</div>
-</div>
-<div data-block="Thai">
-<div class="line">กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภ</div>
-<div class="line">มยรฤลฦวศษสหฬอฮฯะา฿เแโใไๅๆ๏๐๑๒๓๔๕</div>
-<div class="line">๖๗๘๙๚๛</div>
-</div>
-<div data-block="Lao">
-<div class="line">ກຂຄງຈຊຍດຕຖທນບປຜຝພຟມຢຣລວສຫອຮຯະາຽເ</div>
-<div class="line">ແໂໃໄໆ໐໑໒໓໔໕໖໗໘໙ໜໝໞໟ</div>
-</div>
-<div data-block="Tibetan">
-<div class="line">ༀ༁༂༃༄༅༆༇༈༉༊་༌།༎༏༐༑༒༓༔༕༖༗༚༛༜༝༞༟༠༡</div>
-<div class="line">༢༣༤༥༦༧༨༩༪༫༬༭༮༯༰༱༲༳༴༶༸༺༻༼༽ཀཁགགྷངཅཆ</div>
-<div class="line">ཇཉཊཋཌཌྷཎཏཐདདྷནཔཕབབྷམཙཚཛཛྷཝཞཟའཡརལཤཥསཧ</div>
-<div class="line">ཨཀྵཪཫཬ྅ྈྉྊྋྌ྾྿࿀࿁࿂࿃࿄࿅࿇࿈࿉࿊࿋࿌࿎࿏࿐࿑࿒࿓࿔</div>
-<div class="line">࿕࿖࿗࿘࿙࿚</div>
-</div>
-<div data-block="Myanmar">
-<div class="line">ကခဂဃငစဆဇဈဉညဋဌဍဎဏတထဒဓနပဖဗဘမယရလဝသဟ</div>
-<div class="line">ဠအဢဣဤဥဦဧဨဩဪဿ၀၁၂၃၄၅၆၇၈၉၊။၌၍၎၏ၐၑၒၓ</div>
-<div class="line">ၔၕၚၛၜၝၡၥၦၮၯၰၵၶၷၸၹၺၻၼၽၾၿႀႁႎ႐႑႒႓႔႕</div>
-<div class="line">႖႗႘႙႞႟</div>
-</div>
-<div data-block="Georgian">
-<div class="line">ႠႡႢႣႤႥႦႧႨႩႪႫႬႭႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿ</div>
-<div class="line">ჀჁჂჃჄჅჇჍაბგდევზთიკლმნოპჟრსტუფქღყ</div>
-<div class="line">შჩცძწჭხჯჰჱჲჳჴჵჶჷჸჹჺ჻ჼჽჾჿ</div>
-</div>
-<div data-block="Ethiopic">
-<div class="line">ሀሁሂሃሄህሆሇለሉሊላሌልሎሏሐሑሒሓሔሕሖሗመሙሚማሜምሞሟ</div>
-<div class="line">ሠሡሢሣሤሥሦሧረሩሪራሬርሮሯሰሱሲሳሴስሶሷሸሹሺሻሼሽሾሿ</div>
-<div class="line">ቀቁቂቃቄቅቆቇቈቊቋቌቍቐቑቒቓቔቕቖቘቚቛቜቝበቡቢባቤብቦ</div>
-<div class="line">ቧቨቩቪቫቬቭቮቯተቱቲታቴትቶቷቸቹቺቻቼችቾቿኀኁኂኃኄኅኆ</div>
-<div class="line">ኇኈኊኋኌኍነኑኒናኔንኖኗኘኙኚኛኜኝኞኟአኡኢኣኤእኦኧከኩ</div>
-<div class="line">ኪካኬክኮኯኰኲኳኴኵኸኹኺኻኼኽኾዀዂዃዄዅወዉዊዋዌውዎዏዐ</div>
-<div class="line">ዑዒዓዔዕዖዘዙዚዛዜዝዞዟዠዡዢዣዤዥዦዧየዩዪያዬይዮዯደዱ</div>
-<div class="line">ዲዳዴድዶዷዸዹዺዻዼዽዾዿጀጁጂጃጄጅጆጇገጉጊጋጌግጎጏጐጒ</div>
-<div class="line">ጓጔጕጘጙጚጛጜጝጞጟጠጡጢጣጤጥጦጧጨጩጪጫጬጭጮጯጰጱጲጳጴ</div>
-<div class="line">ጵጶጷጸጹጺጻጼጽጾጿፀፁፂፃፄፅፆፇፈፉፊፋፌፍፎፏፐፑፒፓፔ</div>
-<div class="line">ፕፖፗፘፙፚ፠፡።፣፤፥፦፧፨፩፪፫፬፭፮፯፰፱፲፳፴፵፶፷፸፹</div>
-<div class="line">፺፻፼ᎀᎁᎂᎃᎄᎅᎆᎇᎈᎉᎊᎋᎌᎍᎎᎏ᎐᎑᎒᎓᎔᎕᎖᎗᎘᎙</div>
-</div>
-<div data-block="Cherokee">
-<div class="line">ᎠᎡᎢᎣᎤᎥᎦᎧᎨᎩᎪᎫᎬᎭᎮᎯᎰᎱᎲᎳᎴᎵᎶᎷᎸᎹᎺᎻᎼᎽᎾᎿ</div>
-<div class="line">ᏀᏁᏂᏃᏄᏅᏆᏇᏈᏉᏊᏋᏌᏍᏎᏏᏐᏑᏒᏓᏔᏕᏖᏗᏘᏙᏚᏛᏜᏝᏞᏟ</div>
-<div class="line">ᏠᏡᏢᏣᏤᏥᏦᏧᏨᏩᏪᏫᏬᏭᏮᏯᏰᏱᏲᏳᏴᏵᏸᏹᏺᏻᏼᏽ</div>
-</div>
-<div data-block="Unified">
-<div class="line">᐀</div>
-</div>
-<div data-block="Ogham">
-<div class="line"> ᚁᚂᚃᚄᚅᚆᚇᚈᚉᚊᚋᚌᚍᚎᚏᚐᚑᚒᚓᚔᚕᚖᚗᚘᚙᚚ᚛᚜</div>
-</div>
-<div data-block="Runic">
-<div class="line">ᚠᚡᚢᚣᚤᚥᚦᚧᚨᚩᚪᚫᚬᚭᚮᚯᚰᚱᚲᚳᚴᚵᚶᚷᚸᚹᚺᚻᚼᚽᚾᚿ</div>
-<div class="line">ᛀᛁᛂᛃᛄᛅᛆᛇᛈᛉᛊᛋᛌᛍᛎᛏᛐᛑᛒᛓᛔᛕᛖᛗᛘᛙᛚᛛᛜᛝᛞᛟ</div>
-<div class="line">ᛠᛡᛢᛣᛤᛥᛦᛧᛨᛩᛪ᛫᛬᛭ᛮᛯᛰᛱᛲᛳᛴᛵᛶᛷᛸ</div>
-</div>
-<div data-block="Tagalog">
-<div class="line">ᜀᜁᜂᜃᜄᜅᜆᜇᜈᜉᜊᜋᜌᜎᜏᜐᜑ</div>
-</div>
-<div data-block="Hanunoo">
-<div class="line">ᜠᜡᜢᜣᜤᜥᜦᜧᜨᜩᜪᜫᜬᜭᜮᜯᜰᜱ᜵᜶</div>
-</div>
-<div data-block="Buhid">
-<div class="line">ᝀᝁᝂᝃᝄᝅᝆᝇᝈᝉᝊᝋᝌᝍᝎᝏᝐᝑ</div>
-</div>
-<div data-block="Tagbanwa">
-<div class="line">ᝠᝡᝢᝣᝤᝥᝦᝧᝨᝩᝪᝫᝬᝮᝯᝰ</div>
-</div>
-<div data-block="Khmer">
-<div class="line">កខគឃងចឆជឈញដឋឌឍណតថទធនបផពភមយរលវឝឞស</div>
-<div class="line">ហឡអឣឤឥឦឧឨឩឪឫឬឭឮឯឰឱឲឳ។៕៖ៗ៘៙៚៛ៜ០១២</div>
-<div class="line">៣៤៥៦៧៨៩៰៱៲៳៴៵៶៷៸៹</div>
-</div>
-<div data-block="Mongolian">
-<div class="line">᠀᠁᠂᠃᠄᠅᠆᠇᠈᠉᠊᠐᠑᠒᠓᠔᠕᠖᠗᠘᠙ᠠᠡᠢᠣᠤᠥᠦᠧᠨᠩᠪ</div>
-<div class="line">ᠫᠬᠭᠮᠯᠰᠱᠲᠳᠴᠵᠶᠷᠸᠹᠺᠻᠼᠽᠾᠿᡀᡁᡂᡃᡄᡅᡆᡇᡈᡉᡊ</div>
-<div class="line">ᡋᡌᡍᡎᡏᡐᡑᡒᡓᡔᡕᡖᡗᡘᡙᡚᡛᡜᡝᡞᡟᡠᡡᡢᡣᡤᡥᡦᡧᡨᡩᡪ</div>
-<div class="line">ᡫᡬᡭᡮᡯᡰᡱᡲᡳᡴᡵᡶᡷᢀᢁᢂᢃᢄᢇᢈᢉᢊᢋᢌᢍᢎᢏᢐᢑᢒᢓᢔ</div>
-<div class="line">ᢕᢖᢗᢘᢙᢚᢛᢜᢝᢞᢟᢠᢡᢢᢣᢤᢥᢦᢧᢨᢪ</div>
-</div>
-<div data-block="Limbu">
-<div class="line">ᤀᤁᤂᤃᤄᤅᤆᤇᤈᤉᤊᤋᤌᤍᤎᤏᤐᤑᤒᤓᤔᤕᤖᤗᤘᤙᤚᤛᤜᤝᤞ᥀</div>
-<div class="line">᥄᥅᥆᥇᥈᥉᥊᥋᥌᥍᥎᥏</div>
-</div>
-<div data-block="Tai">
-<div class="line">ᥐᥑᥒᥓᥔᥕᥖᥗᥘᥙᥚᥛᥜᥝᥞᥟᥠᥡᥢᥣᥤᥥᥦᥧᥨᥩᥪᥫᥬᥭᥰᥱ</div>
-<div class="line">ᥲᥳᥴ</div>
-</div>
-<div data-block="New">
-<div class="line">ᦀᦁᦂᦃᦄᦅᦆᦇᦈᦉᦊᦋᦌᦍᦎᦏᦐᦑᦒᦓᦔᦕᦖᦗᦘᦙᦚᦛᦜᦝᦞᦟ</div>
-<div class="line">ᦠᦡᦢᦣᦤᦥᦦᦧᦨᦩᦪᦫᦰᦱᦲᦳᦴᦵᦶᦷᦸᦹᦺᦻᦼᦽᦾᦿᧀᧁᧂᧃ</div>
-<div class="line">ᧄᧅᧆᧇᧈᧉ᧐᧑᧒᧓᧔᧕᧖᧗᧘᧙᧚᧞᧟</div>
-</div>
-<div data-block="Khmer">
-<div class="line">᧠᧡᧢᧣᧤᧥᧦᧧᧨᧩᧪᧫᧬᧭᧮᧯᧰᧱᧲᧳᧴᧵᧶᧷᧸᧹᧺᧻᧼᧽᧾᧿</div>
-</div>
-<div data-block="Buginese">
-<div class="line">ᨀᨁᨂᨃᨄᨅᨆᨇᨈᨉᨊᨋᨌᨍᨎᨏᨐᨑᨒᨓᨔᨕᨖ᨞᨟</div>
-</div>
-<div data-block="Tai">
-<div class="line">ᨠᨡᨢᨣᨤᨥᨦᨧᨨᨩᨪᨫᨬᨭᨮᨯᨰᨱᨲᨳᨴᨵᨶᨷᨸᨹᨺᨻᨼᨽᨾᨿ</div>
-<div class="line">ᩀᩁᩂᩃᩄᩅᩆᩇᩈᩉᩊᩋᩌᩍᩎᩏᩐᩑᩒᩓᩔ᪀᪁᪂᪃᪄᪅᪆᪇᪈᪉᪐</div>
-<div class="line">᪑᪒᪓᪔᪕᪖᪗᪘᪙᪠᪡᪢᪣᪤᪥᪦ᪧ᪨᪩᪪᪫᪬᪭</div>
-</div>
-<div data-block="Balinese">
-<div class="line">ᬅᬆᬇ</div>
-</div>
-</div>
-</div>
-<script src="support/text-orientation.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001c.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001c.html
deleted file mode 100644
index 559cc1cf3cf..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001c.html
+++ /dev/null
@@ -1,176 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: Test orientation of characters where vo=R (#3/9, 2048 code points in U+1B08-2858).</title>
-<meta name="timeout" content="long">
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<meta name="assert" content="Test orientation of characters where vo=R (#3/9, 2048 code points in U+1B08-2858)">
-<meta name="flags" content="dom">
-<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-.test {
- font: 16px/1 "orientation";
- height: 17em;
- writing-mode: vertical-rl;
-}
-.line {
- white-space: pre;
-}
-.U {
- text-orientation: upright;
-}
-.R {
- text-orientation: sideways;
-}
-#details {
- margin: 1em .5em;
-}
-summary {
- font-size: 1.2em;
- font-weight: bold;
- margin-top: .5em;
-}
-</style>
-<div id="log"></div>
-<div id="details"></div>
-<div id="container">
-<div data-vo="R" class="test">
-<div data-block="Balinese">
-<div class="line">ᬈᬉᬊᬋᬌᬍᬎᬏᬐᬑᬒᬓᬔᬕᬖᬗᬘᬙᬚᬛᬜᬝᬞᬟᬠᬡᬢᬣᬤᬥᬦᬧ</div>
-<div class="line">ᬨᬩᬪᬫᬬᬭᬮᬯᬰᬱᬲᬳᭅᭆᭇᭈᭉᭊᭋ᭐᭑᭒᭓᭔᭕᭖᭗᭘᭙᭚᭛᭜</div>
-<div class="line">᭝᭞᭟᭠᭡᭢᭣᭤᭥᭦᭧᭨᭩᭪᭴᭵᭶᭷᭸᭹᭺᭻᭼</div>
-</div>
-<div data-block="Sundanese">
-<div class="line">ᮃᮄᮅᮆᮇᮈᮉᮊᮋᮌᮍᮎᮏᮐᮑᮒᮓᮔᮕᮖᮗᮘᮙᮚᮛᮜᮝᮞᮟᮠᮮᮯ</div>
-<div class="line">᮰᮱᮲᮳᮴᮵᮶᮷᮸᮹ᮺᮻᮼᮽᮾᮿ</div>
-</div>
-<div data-block="Batak">
-<div class="line">ᯀᯁᯂᯃᯄᯅᯆᯇᯈᯉᯊᯋᯌᯍᯎᯏᯐᯑᯒᯓᯔᯕᯖᯗᯘᯙᯚᯛᯜᯝᯞᯟ</div>
-<div class="line">ᯠᯡᯢᯣᯤᯥ᯼᯽᯾᯿</div>
-</div>
-<div data-block="Lepcha">
-<div class="line">ᰀᰁᰂᰃᰄᰅᰆᰇᰈᰉᰊᰋᰌᰍᰎᰏᰐᰑᰒᰓᰔᰕᰖᰗᰘᰙᰚᰛᰜᰝᰞᰟ</div>
-<div class="line">ᰠᰡᰢᰣ᰻᰼᰽᰾᰿᱀᱁᱂᱃᱄᱅᱆᱇᱈᱉ᱍᱎᱏ</div>
-</div>
-<div data-block="Ol">
-<div class="line">᱐᱑᱒᱓᱔᱕᱖᱗᱘᱙ᱚᱛᱜᱝᱞᱟᱠᱡᱢᱣᱤᱥᱦᱧᱨᱩᱪᱫᱬᱭᱮᱯ</div>
-<div class="line">ᱰᱱᱲᱳᱴᱵᱶᱷᱸᱹᱺᱻᱼᱽ᱾᱿</div>
-</div>
-<div data-block="Cyrillic">
-<div class="line">ᲀᲁᲂᲃᲄᲅᲆᲇᲈ</div>
-</div>
-<div data-block="Sundanese">
-<div class="line">᳀᳁᳂᳃᳄᳅᳆᳇</div>
-</div>
-<div data-block="Vedic">
-<div class="line">᳓ᳩᳪᳫᳬᳮᳯᳰᳱᳵᳶ</div>
-</div>
-<div data-block="Phonetic">
-<div class="line">ᴀᴁᴂᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌᴍᴎᴏᴐᴑᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜᴝᴞᴟ</div>
-<div class="line">ᴠᴡᴢᴣᴤᴥᴦᴧᴨᴩᴪᴫᴬᴭᴮᴯᴰᴱᴲᴳᴴᴵᴶᴷᴸᴹᴺᴻᴼᴽᴾᴿ</div>
-<div class="line">ᵀᵁᵂᵃᵄᵅᵆᵇᵈᵉᵊᵋᵌᵍᵎᵏᵐᵑᵒᵓᵔᵕᵖᵗᵘᵙᵚᵛᵜᵝᵞᵟ</div>
-<div class="line">ᵠᵡᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬᵭᵮᵯᵰᵱᵲᵳᵴᵵᵶᵷᵸᵹᵺᵻᵼᵽᵾᵿ</div>
-<div class="line">ᶀᶁᶂᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌᶍᶎᶏᶐᶑᶒᶓᶔᶕᶖᶗᶘᶙᶚᶛᶜᶝᶞᶟ</div>
-<div class="line">ᶠᶡᶢᶣᶤᶥᶦᶧᶨᶩᶪᶫᶬᶭᶮᶯᶰᶱᶲᶳᶴᶵᶶᶷᶸᶹᶺᶻᶼᶽᶾᶿ</div>
-</div>
-<div data-block="Latin">
-<div class="line">ḀḁḂḃḄḅḆḇḈḉḊḋḌḍḎḏḐḑḒḓḔḕḖḗḘḙḚḛḜḝḞḟ</div>
-<div class="line">ḠḡḢḣḤḥḦḧḨḩḪḫḬḭḮḯḰḱḲḳḴḵḶḷḸḹḺḻḼḽḾḿ</div>
-<div class="line">ṀṁṂṃṄṅṆṇṈṉṊṋṌṍṎṏṐṑṒṓṔṕṖṗṘṙṚṛṜṝṞṟ</div>
-<div class="line">ṠṡṢṣṤṥṦṧṨṩṪṫṬṭṮṯṰṱṲṳṴṵṶṷṸṹṺṻṼṽṾṿ</div>
-<div class="line">ẀẁẂẃẄẅẆẇẈẉẊẋẌẍẎẏẐẑẒẓẔẕẖẗẘẙẚẛẜẝẞẟ</div>
-<div class="line">ẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặẸẹẺẻẼẽẾế</div>
-<div class="line">ỀềỂểỄễỆệỈỉỊịỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞở</div>
-<div class="line">ỠỡỢợỤụỦủỨứỪừỬửỮữỰựỲỳỴỵỶỷỸỹỺỻỼỽỾỿ</div>
-</div>
-<div data-block="Greek">
-<div class="line">ἀἁἂἃἄἅἆἇἈἉἊἋἌἍἎἏἐἑἒἓἔἕἘἙἚἛἜἝἠἡἢἣ</div>
-<div class="line">ἤἥἦἧἨἩἪἫἬἭἮἯἰἱἲἳἴἵἶἷἸἹἺἻἼἽἾἿὀὁὂὃ</div>
-<div class="line">ὄὅὈὉὊὋὌὍὐὑὒὓὔὕὖὗὙὛὝὟὠὡὢὣὤὥὦὧὨὩὪὫ</div>
-<div class="line">ὬὭὮὯὰάὲέὴήὶίὸόὺύὼώᾀᾁᾂᾃᾄᾅᾆᾇᾈᾉᾊᾋᾌᾍ</div>
-<div class="line">ᾎᾏᾐᾑᾒᾓᾔᾕᾖᾗᾘᾙᾚᾛᾜᾝᾞᾟᾠᾡᾢᾣᾤᾥᾦᾧᾨᾩᾪᾫᾬᾭ</div>
-<div class="line">ᾮᾯᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆᾼ᾽ι᾿῀῁ῂῃῄῆῇῈΈῊΉῌ῍῎῏</div>
-<div class="line">ῐῑῒΐῖῗῘῙῚΊ῝῞῟ῠῡῢΰῤῥῦῧῨῩῪΎῬ῭΅`ῲῳῴ</div>
-<div class="line">ῶῷῸΌῺΏῼ´῾</div>
-</div>
-<div data-block="General">
-<div class="line">           ‐‑‒–—―‗‘’‚‛“”„‟•‣․‥…‧</div>
-<div class="line">

 ′″‴‵‶‷‸‹›‽‾‿⁀⁁⁃⁄⁅⁆⁊⁋⁌⁍⁎⁏⁐⁒⁓⁔⁕</div>
-<div class="line">⁖⁗⁘⁙⁚⁛⁜⁝⁞ </div>
-</div>
-<div data-block="Superscripts">
-<div class="line">⁰ⁱ⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎ₐₑₒ</div>
-<div class="line">ₓₔₕₖₗₘₙₚₛₜ</div>
-</div>
-<div data-block="Currency">
-<div class="line">₠₡₢₣₤₥₦₧₨₩₪₫€₭₮₯₰₱₲₳₴₵₶₷₸₹₺₻₼₽₾</div>
-</div>
-<div data-block="Letterlike">
-<div class="line">ℂℊℋℌℍℎℐℑℒℕ℘ℙℚℛℜℝℤΩℨKÅℬℭℯℰℱℲℳℴ⅀⅁⅂</div>
-<div class="line">⅃⅄⅋ⅎ</div>
-</div>
-<div data-block="Number">
-<div class="line">↊↋</div>
-</div>
-<div data-block="Arrows">
-<div class="line">←↑→↓↔↕↖↗↘↙↚↛↜↝↞↟↠↡↢↣↤↥↦↧↨↩↪↫↬↭↮↯</div>
-<div class="line">↰↱↲↳↴↵↶↷↸↹↺↻↼↽↾↿⇀⇁⇂⇃⇄⇅⇆⇇⇈⇉⇊⇋⇌⇍⇎⇏</div>
-<div class="line">⇐⇑⇒⇓⇔⇕⇖⇗⇘⇙⇚⇛⇜⇝⇞⇟⇠⇡⇢⇣⇤⇥⇦⇧⇨⇩⇪⇫⇬⇭⇮⇯</div>
-<div class="line">⇰⇱⇲⇳⇴⇵⇶⇷⇸⇹⇺⇻⇼⇽⇾⇿</div>
-</div>
-<div data-block="Mathematical">
-<div class="line">∀∁∂∃∄∅∆∇∈∉∊∋∌∍∎∏∐∑−∓∔∕∖∗∘∙√∛∜∝∟∠</div>
-<div class="line">∡∢∣∤∥∦∧∨∩∪∫∬∭∮∯∰∱∲∳∶∷∸∹∺∻∼∽∾∿≀≁≂</div>
-<div class="line">≃≄≅≆≇≈≉≊≋≌≍≎≏≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟≠≡≢</div>
-<div class="line">≣≤≥≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊂</div>
-<div class="line">⊃⊄⊅⊆⊇⊈⊉⊊⊋⊌⊍⊎⊏⊐⊑⊒⊓⊔⊕⊖⊗⊘⊙⊚⊛⊜⊝⊞⊟⊠⊡⊢</div>
-<div class="line">⊣⊤⊥⊦⊧⊨⊩⊪⊫⊬⊭⊮⊯⊰⊱⊲⊳⊴⊵⊶⊷⊸⊹⊺⊻⊼⊽⊾⊿⋀⋁⋂</div>
-<div class="line">⋃⋄⋅⋆⋇⋈⋉⋊⋋⋌⋍⋎⋏⋐⋑⋒⋓⋔⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢</div>
-<div class="line">⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋮⋯⋰⋱⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿</div>
-</div>
-<div data-block="Miscellaneous">
-<div class="line">⌈⌉⌊⌋⌠⌡⌢⌣⌬⌭⌮⌯⌰⌱⌲⌳⌴⌵⌶⌷⌸⌹⌺⌻⌼⌽⌾⌿⍀⍁⍂⍃</div>
-<div class="line">⍄⍅⍆⍇⍈⍉⍊⍋⍌⍍⍎⍏⍐⍑⍒⍓⍔⍕⍖⍗⍘⍙⍚⍛⍜⍝⍞⍟⍠⍡⍢⍣</div>
-<div class="line">⍤⍥⍦⍧⍨⍩⍪⍫⍬⍭⍮⍯⍰⍱⍲⍳⍴⍵⍶⍷⍸⍹⍺⍻⍼⎛⎜⎝⎞⎟⎠⎡</div>
-<div class="line">⎢⎣⎤⎥⎦⎧⎨⎩⎪⎫⎬⎭⎮⎯⎰⎱⎲⎳⎴⎵⎶⎷⎸⎹⎺⎻⎼⎽⏎⏐⏜⏝</div>
-<div class="line">⏞⏟⏠⏡</div>
-</div>
-<div data-block="Control">
-<div class="line">␣</div>
-</div>
-<div data-block="Box">
-<div class="line">─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟</div>
-<div class="line">┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿</div>
-<div class="line">╀╁╂╃╄╅╆╇╈╉╊╋╌╍╎╏═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟</div>
-<div class="line">╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳╴╵╶╷╸╹╺╻╼╽╾╿</div>
-</div>
-<div data-block="Block">
-<div class="line">▀▁▂▃▄▅▆▇█▉▊▋▌▍▎▏▐░▒▓▔▕▖▗▘▙▚▛▜▝▞▟</div>
-</div>
-<div data-block="Miscellaneous">
-<div class="line">☚☛☜☝☞☟</div>
-</div>
-<div data-block="Dingbats">
-<div class="line">❨❩❪❫❬❭❮❯❰❱❲❳❴❵➔➕➖➗➘➙➚➛➜➝➞➟➠➡➢➣➤➥</div>
-<div class="line">➦➧➨➩➪➫➬➭➮➯➰➱➲➳➴➵➶➷➸➹➺➻➼➽➾➿</div>
-</div>
-<div data-block="Miscellaneous">
-<div class="line">⟀⟁⟂⟃⟄⟅⟆⟇⟈⟉⟊⟋⟌⟍⟎⟏⟐⟑⟒⟓⟔⟕⟖⟗⟘⟙⟚⟛⟜⟝⟞⟟</div>
-<div class="line">⟠⟡⟢⟣⟤⟥⟦⟧⟨⟩⟪⟫⟬⟭⟮⟯</div>
-</div>
-<div data-block="Supplemental">
-<div class="line">⟰⟱⟲⟳⟴⟵⟶⟷⟸⟹⟺⟻⟼⟽⟾⟿</div>
-</div>
-<div data-block="Braille">
-<div class="line">⠀⠁⠂⠃⠄⠅⠆⠇⠈⠉⠊⠋⠌⠍⠎⠏⠐⠑⠒⠓⠔⠕⠖⠗⠘⠙⠚⠛⠜⠝⠞⠟</div>
-<div class="line">⠠⠡⠢⠣⠤⠥⠦⠧⠨⠩⠪⠫⠬⠭⠮⠯⠰⠱⠲⠳⠴⠵⠶⠷⠸⠹⠺⠻⠼⠽⠾⠿</div>
-<div class="line">⡀⡁⡂⡃⡄⡅⡆⡇⡈⡉⡊⡋⡌⡍⡎⡏⡐⡑⡒⡓⡔⡕⡖⡗⡘</div>
-</div>
-</div>
-</div>
-<script src="support/text-orientation.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001d.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001d.html
deleted file mode 100644
index f385dc40c89..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001d.html
+++ /dev/null
@@ -1,153 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: Test orientation of characters where vo=R (#4/9, 2048 code points in U+2859-A81D).</title>
-<meta name="timeout" content="long">
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<meta name="assert" content="Test orientation of characters where vo=R (#4/9, 2048 code points in U+2859-A81D)">
-<meta name="flags" content="dom">
-<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-.test {
- font: 16px/1 "orientation";
- height: 17em;
- writing-mode: vertical-rl;
-}
-.line {
- white-space: pre;
-}
-.U {
- text-orientation: upright;
-}
-.R {
- text-orientation: sideways;
-}
-#details {
- margin: 1em .5em;
-}
-summary {
- font-size: 1.2em;
- font-weight: bold;
- margin-top: .5em;
-}
-</style>
-<div id="log"></div>
-<div id="details"></div>
-<div id="container">
-<div data-vo="R" class="test">
-<div data-block="Braille">
-<div class="line">⡙⡚⡛⡜⡝⡞⡟⡠⡡⡢⡣⡤⡥⡦⡧⡨⡩⡪⡫⡬⡭⡮⡯⡰⡱⡲⡳⡴⡵⡶⡷⡸</div>
-<div class="line">⡹⡺⡻⡼⡽⡾⡿⢀⢁⢂⢃⢄⢅⢆⢇⢈⢉⢊⢋⢌⢍⢎⢏⢐⢑⢒⢓⢔⢕⢖⢗⢘</div>
-<div class="line">⢙⢚⢛⢜⢝⢞⢟⢠⢡⢢⢣⢤⢥⢦⢧⢨⢩⢪⢫⢬⢭⢮⢯⢰⢱⢲⢳⢴⢵⢶⢷⢸</div>
-<div class="line">⢹⢺⢻⢼⢽⢾⢿⣀⣁⣂⣃⣄⣅⣆⣇⣈⣉⣊⣋⣌⣍⣎⣏⣐⣑⣒⣓⣔⣕⣖⣗⣘</div>
-<div class="line">⣙⣚⣛⣜⣝⣞⣟⣠⣡⣢⣣⣤⣥⣦⣧⣨⣩⣪⣫⣬⣭⣮⣯⣰⣱⣲⣳⣴⣵⣶⣷⣸</div>
-<div class="line">⣹⣺⣻⣼⣽⣾⣿</div>
-</div>
-<div data-block="Supplemental">
-<div class="line">⤀⤁⤂⤃⤄⤅⤆⤇⤈⤉⤊⤋⤌⤍⤎⤏⤐⤑⤒⤓⤔⤕⤖⤗⤘⤙⤚⤛⤜⤝⤞⤟</div>
-<div class="line">⤠⤡⤢⤣⤤⤥⤦⤧⤨⤩⤪⤫⤬⤭⤮⤯⤰⤱⤲⤳⤴⤵⤶⤷⤸⤹⤺⤻⤼⤽⤾⤿</div>
-<div class="line">⥀⥁⥂⥃⥄⥅⥆⥇⥈⥉⥊⥋⥌⥍⥎⥏⥐⥑⥒⥓⥔⥕⥖⥗⥘⥙⥚⥛⥜⥝⥞⥟</div>
-<div class="line">⥠⥡⥢⥣⥤⥥⥦⥧⥨⥩⥪⥫⥬⥭⥮⥯⥰⥱⥲⥳⥴⥵⥶⥷⥸⥹⥺⥻⥼⥽⥾⥿</div>
-</div>
-<div data-block="Miscellaneous">
-<div class="line">⦀⦁⦂⦃⦄⦅⦆⦇⦈⦉⦊⦋⦌⦍⦎⦏⦐⦑⦒⦓⦔⦕⦖⦗⦘⦙⦚⦛⦜⦝⦞⦟</div>
-<div class="line">⦠⦡⦢⦣⦤⦥⦦⦧⦨⦩⦪⦫⦬⦭⦮⦯⦰⦱⦲⦳⦴⦵⦶⦷⦸⦹⦺⦻⦼⦽⦾⦿</div>
-<div class="line">⧀⧁⧂⧃⧄⧅⧆⧇⧈⧉⧊⧋⧌⧍⧎⧏⧐⧑⧒⧓⧔⧕⧖⧗⧘⧙⧚⧛⧜⧝⧞⧟</div>
-<div class="line">⧠⧡⧢⧣⧤⧥⧦⧧⧨⧩⧪⧫⧬⧭⧮⧯⧰⧱⧲⧳⧴⧵⧶⧷⧸⧹⧺⧻⧼⧽⧾⧿</div>
-</div>
-<div data-block="Supplemental">
-<div class="line">⨀⨁⨂⨃⨄⨅⨆⨇⨈⨉⨊⨋⨌⨍⨎⨏⨐⨑⨒⨓⨔⨕⨖⨗⨘⨙⨚⨛⨜⨝⨞⨟</div>
-<div class="line">⨠⨡⨢⨣⨤⨥⨦⨧⨨⨩⨪⨫⨬⨭⨮⨯⨰⨱⨲⨳⨴⨵⨶⨷⨸⨹⨺⨻⨼⨽⨾⨿</div>
-<div class="line">⩀⩁⩂⩃⩄⩅⩆⩇⩈⩉⩊⩋⩌⩍⩎⩏⩐⩑⩒⩓⩔⩕⩖⩗⩘⩙⩚⩛⩜⩝⩞⩟</div>
-<div class="line">⩠⩡⩢⩣⩤⩥⩦⩧⩨⩩⩪⩫⩬⩭⩮⩯⩰⩱⩲⩳⩴⩵⩶⩷⩸⩹⩺⩻⩼⩽⩾⩿</div>
-<div class="line">⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪋⪌⪍⪎⪏⪐⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚⪛⪜⪝⪞⪟</div>
-<div class="line">⪠⪡⪢⪣⪤⪥⪦⪧⪨⪩⪪⪫⪬⪭⪮⪯⪰⪱⪲⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿</div>
-<div class="line">⫀⫁⫂⫃⫄⫅⫆⫇⫈⫉⫊⫋⫌⫍⫎⫏⫐⫑⫒⫓⫔⫕⫖⫗⫘⫙⫚⫛⫝̸⫝⫞⫟</div>
-<div class="line">⫠⫡⫢⫣⫤⫥⫦⫧⫨⫩⫪⫫⫬⫭⫮⫯⫰⫱⫲⫳⫴⫵⫶⫷⫸⫹⫺⫻⫼⫽⫾⫿</div>
-</div>
-<div data-block="Miscellaneous">
-<div class="line">⬀⬁⬂⬃⬄⬅⬆⬇⬈⬉⬊⬋⬌⬍⬎⬏⬐⬑⬰⬱⬲⬳⬴⬵⬶⬷⬸⬹⬺⬻⬼⬽</div>
-<div class="line">⬾⬿⭀⭁⭂⭃⭄⭅⭆⭇⭈⭉⭊⭋⭌⭍⭎⭏⭚⭛⭜⭝⭞⭟⭠⭡⭢⭣⭤⭥⭦⭧</div>
-<div class="line">⭨⭩⭪⭫⭬⭭⭮⭯⭰⭱⭲⭳⭶⭷⭸⭹⭺⭻⭼⭽⭾⭿⮀⮁⮂⮃⮄⮅⮆⮇⮈⮉</div>
-<div class="line">⮊⮋⮌⮍⮎⮏⮐⮑⮒⮓⮔⮕⮘⮙⮚⮛⮜⮝⮞⮟⮠⮡⮢⮣⮤⮥⮦⮧⮨⮩⮪⮫</div>
-<div class="line">⮬⮭⮮⮯⮰⮱⮲⮳⮴⮵⮶⮷⯬⯭⯮⯯</div>
-</div>
-<div data-block="Glagolitic">
-<div class="line">ⰀⰁⰂⰃⰄⰅⰆⰇⰈⰉⰊⰋⰌⰍⰎⰏⰐⰑⰒⰓⰔⰕⰖⰗⰘⰙⰚⰛⰜⰝⰞⰟ</div>
-<div class="line">ⰠⰡⰢⰣⰤⰥⰦⰧⰨⰩⰪⰫⰬⰭⰮⰰⰱⰲⰳⰴⰵⰶⰷⰸⰹⰺⰻⰼⰽⰾⰿⱀ</div>
-<div class="line">ⱁⱂⱃⱄⱅⱆⱇⱈⱉⱊⱋⱌⱍⱎⱏⱐⱑⱒⱓⱔⱕⱖⱗⱘⱙⱚⱛⱜⱝⱞ</div>
-</div>
-<div data-block="Latin">
-<div class="line">ⱠⱡⱢⱣⱤⱥⱦⱧⱨⱩⱪⱫⱬⱭⱮⱯⱰⱱⱲⱳⱴⱵⱶⱷⱸⱹⱺⱻⱼⱽⱾⱿ</div>
-</div>
-<div data-block="Coptic">
-<div class="line">ⲀⲁⲂⲃⲄⲅⲆⲇⲈⲉⲊⲋⲌⲍⲎⲏⲐⲑⲒⲓⲔⲕⲖⲗⲘⲙⲚⲛⲜⲝⲞⲟ</div>
-<div class="line">ⲠⲡⲢⲣⲤⲥⲦⲧⲨⲩⲪⲫⲬⲭⲮⲯⲰⲱⲲⲳⲴⲵⲶⲷⲸⲹⲺⲻⲼⲽⲾⲿ</div>
-<div class="line">ⳀⳁⳂⳃⳄⳅⳆⳇⳈⳉⳊⳋⳌⳍⳎⳏⳐⳑⳒⳓⳔⳕⳖⳗⳘⳙⳚⳛⳜⳝⳞⳟ</div>
-<div class="line">ⳠⳡⳢⳣⳤ⳥⳦⳧⳨⳩⳪ⳫⳬⳭⳮⳲⳳ⳹⳺⳻⳼⳽⳾⳿</div>
-</div>
-<div data-block="Georgian">
-<div class="line">ⴀⴁⴂⴃⴄⴅⴆⴇⴈⴉⴊⴋⴌⴍⴎⴏⴐⴑⴒⴓⴔⴕⴖⴗⴘⴙⴚⴛⴜⴝⴞⴟ</div>
-<div class="line">ⴠⴡⴢⴣⴤⴥⴧⴭ</div>
-</div>
-<div data-block="Tifinagh">
-<div class="line">ⴰⴱⴲⴳⴴⴵⴶⴷⴸⴹⴺⴻⴼⴽⴾⴿⵀⵁⵂⵃⵄⵅⵆⵇⵈⵉⵊⵋⵌⵍⵎⵏ</div>
-<div class="line">ⵐⵑⵒⵓⵔⵕⵖⵗⵘⵙⵚⵛⵜⵝⵞⵟⵠⵡⵢⵣⵤⵥⵦⵧⵯ⵰</div>
-</div>
-<div data-block="Ethiopic">
-<div class="line">ⶀⶁⶂⶃⶄⶅⶆⶇⶈⶉⶊⶋⶌⶍⶎⶏⶐⶑⶒⶓⶔⶕⶖⶠⶡⶢⶣⶤⶥⶦⶨⶩ</div>
-<div class="line">ⶪⶫⶬⶭⶮⶰⶱⶲⶳⶴⶵⶶⶸⶹⶺⶻⶼⶽⶾⷀⷁⷂⷃⷄⷅⷆⷈⷉⷊⷋⷌⷍ</div>
-<div class="line">ⷎⷐⷑⷒⷓⷔⷕⷖⷘⷙⷚⷛⷜⷝⷞ</div>
-</div>
-<div data-block="Supplemental">
-<div class="line">⸀⸁⸂⸃⸄⸅⸆⸇⸈⸉⸊⸋⸌⸍⸎⸏⸐⸑⸒⸓⸔⸕⸖⸗⸘⸙⸚⸛⸜⸝⸞⸟</div>
-<div class="line">⸠⸡⸢⸣⸤⸥⸦⸧⸨⸩⸪⸫⸬⸭⸮ⸯ⸰⸱⸲⸳⸴⸵⸶⸷⸸⸹⸺⸻⸼⸽⸾⸿</div>
-<div class="line">⹀⹁⹂⹃⹄</div>
-</div>
-<div data-block="Lisu">
-<div class="line">ꓐꓑꓒꓓꓔꓕꓖꓗꓘꓙꓚꓛꓜꓝꓞꓟꓠꓡꓢꓣꓤꓥꓦꓧꓨꓩꓪꓫꓬꓭꓮꓯ</div>
-<div class="line">ꓰꓱꓲꓳꓴꓵꓶꓷꓸꓹꓺꓻꓼꓽ꓾꓿</div>
-</div>
-<div data-block="Vai">
-<div class="line">ꔀꔁꔂꔃꔄꔅꔆꔇꔈꔉꔊꔋꔌꔍꔎꔏꔐꔑꔒꔓꔔꔕꔖꔗꔘꔙꔚꔛꔜꔝꔞꔟ</div>
-<div class="line">ꔠꔡꔢꔣꔤꔥꔦꔧꔨꔩꔪꔫꔬꔭꔮꔯꔰꔱꔲꔳꔴꔵꔶꔷꔸꔹꔺꔻꔼꔽꔾꔿ</div>
-<div class="line">ꕀꕁꕂꕃꕄꕅꕆꕇꕈꕉꕊꕋꕌꕍꕎꕏꕐꕑꕒꕓꕔꕕꕖꕗꕘꕙꕚꕛꕜꕝꕞꕟ</div>
-<div class="line">ꕠꕡꕢꕣꕤꕥꕦꕧꕨꕩꕪꕫꕬꕭꕮꕯꕰꕱꕲꕳꕴꕵꕶꕷꕸꕹꕺꕻꕼꕽꕾꕿ</div>
-<div class="line">ꖀꖁꖂꖃꖄꖅꖆꖇꖈꖉꖊꖋꖌꖍꖎꖏꖐꖑꖒꖓꖔꖕꖖꖗꖘꖙꖚꖛꖜꖝꖞꖟ</div>
-<div class="line">ꖠꖡꖢꖣꖤꖥꖦꖧꖨꖩꖪꖫꖬꖭꖮꖯꖰꖱꖲꖳꖴꖵꖶꖷꖸꖹꖺꖻꖼꖽꖾꖿ</div>
-<div class="line">ꗀꗁꗂꗃꗄꗅꗆꗇꗈꗉꗊꗋꗌꗍꗎꗏꗐꗑꗒꗓꗔꗕꗖꗗꗘꗙꗚꗛꗜꗝꗞꗟ</div>
-<div class="line">ꗠꗡꗢꗣꗤꗥꗦꗧꗨꗩꗪꗫꗬꗭꗮꗯꗰꗱꗲꗳꗴꗵꗶꗷꗸꗹꗺꗻꗼꗽꗾꗿ</div>
-<div class="line">ꘀꘁꘂꘃꘄꘅꘆꘇꘈꘉꘊꘋꘌ꘍꘎꘏ꘐꘑꘒꘓꘔꘕꘖꘗꘘꘙꘚꘛꘜꘝꘞꘟ</div>
-<div class="line">꘠꘡꘢꘣꘤꘥꘦꘧꘨꘩ꘪꘫ</div>
-</div>
-<div data-block="Cyrillic">
-<div class="line">ꙀꙁꙂꙃꙄꙅꙆꙇꙈꙉꙊꙋꙌꙍꙎꙏꙐꙑꙒꙓꙔꙕꙖꙗꙘꙙꙚꙛꙜꙝꙞꙟ</div>
-<div class="line">ꙠꙡꙢꙣꙤꙥꙦꙧꙨꙩꙪꙫꙬꙭꙮ꙳꙾ꙿꚀꚁꚂꚃꚄꚅꚆꚇꚈꚉꚊꚋꚌꚍ</div>
-<div class="line">ꚎꚏꚐꚑꚒꚓꚔꚕꚖꚗꚘꚙꚚꚛꚜꚝ</div>
-</div>
-<div data-block="Bamum">
-<div class="line">ꚠꚡꚢꚣꚤꚥꚦꚧꚨꚩꚪꚫꚬꚭꚮꚯꚰꚱꚲꚳꚴꚵꚶꚷꚸꚹꚺꚻꚼꚽꚾꚿ</div>
-<div class="line">ꛀꛁꛂꛃꛄꛅꛆꛇꛈꛉꛊꛋꛌꛍꛎꛏꛐꛑꛒꛓꛔꛕꛖꛗꛘꛙꛚꛛꛜꛝꛞꛟ</div>
-<div class="line">ꛠꛡꛢꛣꛤꛥꛦꛧꛨꛩꛪꛫꛬꛭꛮꛯ꛲꛳꛴꛵꛶꛷</div>
-</div>
-<div data-block="Modifier">
-<div class="line">꜀꜁꜂꜃꜄꜅꜆꜇꜈꜉꜊꜋꜌꜍꜎꜏꜐꜑꜒꜓꜔꜕꜖ꜗꜘꜙꜚꜛꜜꜝꜞꜟ</div>
-</div>
-<div data-block="Latin">
-<div class="line">꜠꜡ꜢꜣꜤꜥꜦꜧꜨꜩꜪꜫꜬꜭꜮꜯꜰꜱꜲꜳꜴꜵꜶꜷꜸꜹꜺꜻꜼꜽꜾꜿ</div>
-<div class="line">ꝀꝁꝂꝃꝄꝅꝆꝇꝈꝉꝊꝋꝌꝍꝎꝏꝐꝑꝒꝓꝔꝕꝖꝗꝘꝙꝚꝛꝜꝝꝞꝟ</div>
-<div class="line">ꝠꝡꝢꝣꝤꝥꝦꝧꝨꝩꝪꝫꝬꝭꝮꝯꝰꝱꝲꝳꝴꝵꝶꝷꝸꝹꝺꝻꝼꝽꝾꝿ</div>
-<div class="line">ꞀꞁꞂꞃꞄꞅꞆꞇꞈ꞉꞊ꞋꞌꞍꞎꞏꞐꞑꞒꞓꞔꞕꞖꞗꞘꞙꞚꞛꞜꞝꞞꞟ</div>
-<div class="line">ꞠꞡꞢꞣꞤꞥꞦꞧꞨꞩꞪꞫꞬꞭꞮꞰꞱꞲꞳꞴꞵꞶꞷꟷꟸꟹꟺꟻꟼꟽꟾꟿ</div>
-</div>
-<div data-block="Syloti">
-<div class="line">ꠀꠁꠃꠄꠅꠇꠈꠉꠊꠌꠍꠎꠏꠐꠑꠒꠓꠔꠕꠖꠗꠘꠙꠚꠛꠜꠝ</div>
-</div>
-</div>
-</div>
-<script src="support/text-orientation.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001e.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001e.html
deleted file mode 100644
index 4726741292f..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001e.html
+++ /dev/null
@@ -1,175 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: Test orientation of characters where vo=R (#5/9, 2048 code points in U+A81E-101F7).</title>
-<meta name="timeout" content="long">
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<meta name="assert" content="Test orientation of characters where vo=R (#5/9, 2048 code points in U+A81E-101F7)">
-<meta name="flags" content="dom">
-<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-.test {
- font: 16px/1 "orientation";
- height: 17em;
- writing-mode: vertical-rl;
-}
-.line {
- white-space: pre;
-}
-.U {
- text-orientation: upright;
-}
-.R {
- text-orientation: sideways;
-}
-#details {
- margin: 1em .5em;
-}
-summary {
- font-size: 1.2em;
- font-weight: bold;
- margin-top: .5em;
-}
-</style>
-<div id="log"></div>
-<div id="details"></div>
-<div id="container">
-<div data-vo="R" class="test">
-<div data-block="Syloti">
-<div class="line">ꠞꠟꠠꠡꠢ꠨꠩꠪꠫</div>
-</div>
-<div data-block="Common">
-<div class="line">꠰꠱꠲꠳꠴꠵꠶꠷꠸꠹</div>
-</div>
-<div data-block="Phags">
-<div class="line">ꡀꡁꡂꡃꡄꡅꡆꡇꡈꡉꡊꡋꡌꡍꡎꡏꡐꡑꡒꡓꡔꡕꡖꡗꡘꡙꡚꡛꡜꡝꡞꡟ</div>
-<div class="line">ꡠꡡꡢꡣꡤꡥꡦꡧꡨꡩꡪꡫꡬꡭꡮꡯꡰꡱꡲꡳ꡴꡵꡶꡷</div>
-</div>
-<div data-block="Saurashtra">
-<div class="line">ꢂꢃꢄꢅꢆꢇꢈꢉꢊꢋꢌꢍꢎꢏꢐꢑꢒꢓꢔꢕꢖꢗꢘꢙꢚꢛꢜꢝꢞꢟꢠꢡ</div>
-<div class="line">ꢢꢣꢤꢥꢦꢧꢨꢩꢪꢫꢬꢭꢮꢯꢰꢱꢲꢳ꣎꣏꣐꣑꣒꣓꣔꣕꣖꣗꣘꣙</div>
-</div>
-<div data-block="Devanagari">
-<div class="line">ꣲꣳꣴꣵꣶꣷ꣸꣹꣺ꣻ꣼ꣽ</div>
-</div>
-<div data-block="Kayah">
-<div class="line">꤀꤁꤂꤃꤄꤅꤆꤇꤈꤉ꤊꤋꤌꤍꤎꤏꤐꤑꤒꤓꤔꤕꤖꤗꤘꤙꤚꤛꤜꤝꤞꤟ</div>
-<div class="line">ꤠꤡꤢꤣꤤꤥ꤮꤯</div>
-</div>
-<div data-block="Rejang">
-<div class="line">ꤰꤱꤲꤳꤴꤵꤶꤷꤸꤹꤺꤻꤼꤽꤾꤿꥀꥁꥂꥃꥄꥅꥆ꥟</div>
-</div>
-<div data-block="Javanese">
-<div class="line">ꦄꦅꦆꦇꦈꦉꦊꦋꦌꦍꦎꦏꦐꦑꦒꦓꦔꦕꦖꦗꦘꦙꦚꦛꦜꦝꦞꦟꦠꦡꦢꦣ</div>
-<div class="line">ꦤꦥꦦꦧꦨꦩꦪꦫꦬꦭꦮꦯꦰꦱꦲ꧁꧂꧃꧄꧅꧆꧇꧈꧉꧊꧋꧌꧍ꧏ꧐꧑꧒</div>
-<div class="line">꧓꧔꧕꧖꧗꧘꧙꧞꧟</div>
-</div>
-<div data-block="Myanmar">
-<div class="line">ꧠꧡꧢꧣꧤꧦꧧꧨꧩꧪꧫꧬꧭꧮꧯ꧰꧱꧲꧳꧴꧵꧶꧷꧸꧹ꧺꧻꧼꧽꧾ</div>
-</div>
-<div data-block="Cham">
-<div class="line">ꨀꨁꨂꨃꨄꨅꨆꨇꨈꨉꨊꨋꨌꨍꨎꨏꨐꨑꨒꨓꨔꨕꨖꨗꨘꨙꨚꨛꨜꨝꨞꨟ</div>
-<div class="line">ꨠꨡꨢꨣꨤꨥꨦꨧꨨꩀꩁꩂꩄꩅꩆꩇꩈꩉꩊꩋ꩐꩑꩒꩓꩔꩕꩖꩗꩘꩙꩜꩝</div>
-<div class="line">꩞꩟</div>
-</div>
-<div data-block="Myanmar">
-<div class="line">ꩠꩡꩢꩣꩤꩥꩦꩧꩨꩩꩪꩫꩬꩭꩮꩯꩰꩱꩲꩳꩴꩵꩶ꩷꩸꩹ꩺꩾꩿ</div>
-</div>
-<div data-block="Tai">
-<div class="line">ꪀꪁꪂꪃꪄꪅꪆꪇꪈꪉꪊꪋꪌꪍꪎꪏꪐꪑꪒꪓꪔꪕꪖꪗꪘꪙꪚꪛꪜꪝꪞꪟ</div>
-<div class="line">ꪠꪡꪢꪣꪤꪥꪦꪧꪨꪩꪪꪫꪬꪭꪮꪯꪱꪵꪶꪹꪺꪻꪼꪽꫀꫂꫛꫜꫝ꫞꫟</div>
-</div>
-<div data-block="Meetei">
-<div class="line">ꫠꫡꫢꫣꫤꫥꫦꫧꫨꫩꫪ꫰꫱ꫲꫳꫴ</div>
-</div>
-<div data-block="Ethiopic">
-<div class="line">ꬁꬂꬃꬄꬅꬆꬉꬊꬋꬌꬍꬎꬑꬒꬓꬔꬕꬖꬠꬡꬢꬣꬤꬥꬦꬨꬩꬪꬫꬬꬭꬮ</div>
-</div>
-<div data-block="Latin">
-<div class="line">ꬰꬱꬲꬳꬴꬵꬶꬷꬸꬹꬺꬻꬼꬽꬾꬿꭀꭁꭂꭃꭄꭅꭆꭇꭈꭉꭊꭋꭌꭍꭎꭏ</div>
-<div class="line">ꭐꭑꭒꭓꭔꭕꭖꭗꭘꭙꭚ꭛ꭜꭝꭞꭟꭠꭡꭢꭣꭤꭥ</div>
-</div>
-<div data-block="Cherokee">
-<div class="line">ꭰꭱꭲꭳꭴꭵꭶꭷꭸꭹꭺꭻꭼꭽꭾꭿꮀꮁꮂꮃꮄꮅꮆꮇꮈꮉꮊꮋꮌꮍꮎꮏ</div>
-<div class="line">ꮐꮑꮒꮓꮔꮕꮖꮗꮘꮙꮚꮛꮜꮝꮞꮟꮠꮡꮢꮣꮤꮥꮦꮧꮨꮩꮪꮫꮬꮭꮮꮯ</div>
-<div class="line">ꮰꮱꮲꮳꮴꮵꮶꮷꮸꮹꮺꮻꮼꮽꮾꮿ</div>
-</div>
-<div data-block="Meetei">
-<div class="line">ꯀꯁꯂꯃꯄꯅꯆꯇꯈꯉꯊꯋꯌꯍꯎꯏꯐꯑꯒꯓꯔꯕꯖꯗꯘꯙꯚꯛꯜꯝꯞꯟ</div>
-<div class="line">ꯠꯡꯢ꯫꯰꯱꯲꯳꯴꯵꯶꯷꯸꯹</div>
-</div>
-<div data-block="Alphabetic">
-<div class="line">fffiflffifflſtstﬓﬔﬕﬖﬗיִײַﬠﬡﬢﬣﬤﬥﬦﬧﬨ﬩שׁשׂשּׁשּׂאַאָאּבּ</div>
-<div class="line">גּדּהּוּזּטּיּךּכּלּמּנּסּףּפּצּקּרּשּתּוֹבֿכֿפֿﭏ</div>
-</div>
-<div data-block="Arabic">
-<div class="line">ﭐﭑﭒﭓﭔﭕﭖﭗﭘﭙﭚﭛﭜﭝﭞﭟﭠﭡﭢﭣﭤﭥﭦﭧﭨﭩﭪﭫﭬﭭﭮﭯ</div>
-<div class="line">ﭰﭱﭲﭳﭴﭵﭶﭷﭸﭹﭺﭻﭼﭽﭾﭿﮀﮁﮂﮃﮄﮅﮆﮇﮈﮉﮊﮋﮌﮍﮎﮏ</div>
-<div class="line">ﮐﮑﮒﮓﮔﮕﮖﮗﮘﮙﮚﮛﮜﮝﮞﮟﮠﮡﮢﮣﮤﮥﮦﮧﮨﮩﮪﮫﮬﮭﮮﮯ</div>
-<div class="line">ﮰﮱ﮲﮳﮴﮵﮶﮷﮸﮹﮺﮻﮼﮽﮾﮿﯀﯁ﯓﯔﯕﯖﯗﯘﯙﯚﯛﯜﯝﯞﯟﯠ</div>
-<div class="line">ﯡﯢﯣﯤﯥﯦﯧﯨﯩﯪﯫﯬﯭﯮﯯﯰﯱﯲﯳﯴﯵﯶﯷﯸﯹﯺﯻﯼﯽﯾﯿﰀ</div>
-<div class="line">ﰁﰂﰃﰄﰅﰆﰇﰈﰉﰊﰋﰌﰍﰎﰏﰐﰑﰒﰓﰔﰕﰖﰗﰘﰙﰚﰛﰜﰝﰞﰟﰠ</div>
-<div class="line">ﰡﰢﰣﰤﰥﰦﰧﰨﰩﰪﰫﰬﰭﰮﰯﰰﰱﰲﰳﰴﰵﰶﰷﰸﰹﰺﰻﰼﰽﰾﰿﱀ</div>
-<div class="line">ﱁﱂﱃﱄﱅﱆﱇﱈﱉﱊﱋﱌﱍﱎﱏﱐﱑﱒﱓﱔﱕﱖﱗﱘﱙﱚﱛﱜﱝﱞﱟﱠ</div>
-<div class="line">ﱡﱢﱣﱤﱥﱦﱧﱨﱩﱪﱫﱬﱭﱮﱯﱰﱱﱲﱳﱴﱵﱶﱷﱸﱹﱺﱻﱼﱽﱾﱿﲀ</div>
-<div class="line">ﲁﲂﲃﲄﲅﲆﲇﲈﲉﲊﲋﲌﲍﲎﲏﲐﲑﲒﲓﲔﲕﲖﲗﲘﲙﲚﲛﲜﲝﲞﲟﲠ</div>
-<div class="line">ﲡﲢﲣﲤﲥﲦﲧﲨﲩﲪﲫﲬﲭﲮﲯﲰﲱﲲﲳﲴﲵﲶﲷﲸﲹﲺﲻﲼﲽﲾﲿﳀ</div>
-<div class="line">ﳁﳂﳃﳄﳅﳆﳇﳈﳉﳊﳋﳌﳍﳎﳏﳐﳑﳒﳓﳔﳕﳖﳗﳘﳙﳚﳛﳜﳝﳞﳟﳠ</div>
-<div class="line">ﳡﳢﳣﳤﳥﳦﳧﳨﳩﳪﳫﳬﳭﳮﳯﳰﳱﳲﳳﳴﳵﳶﳷﳸﳹﳺﳻﳼﳽﳾﳿﴀ</div>
-<div class="line">ﴁﴂﴃﴄﴅﴆﴇﴈﴉﴊﴋﴌﴍﴎﴏﴐﴑﴒﴓﴔﴕﴖﴗﴘﴙﴚﴛﴜﴝﴞﴟﴠ</div>
-<div class="line">ﴡﴢﴣﴤﴥﴦﴧﴨﴩﴪﴫﴬﴭﴮﴯﴰﴱﴲﴳﴴﴵﴶﴷﴸﴹﴺﴻﴼﴽ﴾﴿ﵐ</div>
-<div class="line">ﵑﵒﵓﵔﵕﵖﵗﵘﵙﵚﵛﵜﵝﵞﵟﵠﵡﵢﵣﵤﵥﵦﵧﵨﵩﵪﵫﵬﵭﵮﵯﵰ</div>
-<div class="line">ﵱﵲﵳﵴﵵﵶﵷﵸﵹﵺﵻﵼﵽﵾﵿﶀﶁﶂﶃﶄﶅﶆﶇﶈﶉﶊﶋﶌﶍﶎﶏﶒ</div>
-<div class="line">ﶓﶔﶕﶖﶗﶘﶙﶚﶛﶜﶝﶞﶟﶠﶡﶢﶣﶤﶥﶦﶧﶨﶩﶪﶫﶬﶭﶮﶯﶰﶱﶲ</div>
-<div class="line">ﶳﶴﶵﶶﶷﶸﶹﶺﶻﶼﶽﶾﶿﷀﷁﷂﷃﷄﷅﷆﷇﷰﷱﷲﷳﷴﷵﷶﷷﷸﷹﷺ</div>
-<div class="line">ﷻ﷼﷽</div>
-</div>
-<div data-block="CJK">
-<div class="line">﹉﹊﹋﹌﹍﹎﹏</div>
-</div>
-<div data-block="Small">
-<div class="line">﹘﹣﹤﹥﹦</div>
-</div>
-<div data-block="Arabic">
-<div class="line">ﹰﹱﹲﹳﹴﹶﹷﹸﹹﹺﹻﹼﹽﹾﹿﺀﺁﺂﺃﺄﺅﺆﺇﺈﺉﺊﺋﺌﺍﺎﺏﺐ</div>
-<div class="line">ﺑﺒﺓﺔﺕﺖﺗﺘﺙﺚﺛﺜﺝﺞﺟﺠﺡﺢﺣﺤﺥﺦﺧﺨﺩﺪﺫﺬﺭﺮﺯﺰ</div>
-<div class="line">ﺱﺲﺳﺴﺵﺶﺷﺸﺹﺺﺻﺼﺽﺾﺿﻀﻁﻂﻃﻄﻅﻆﻇﻈﻉﻊﻋﻌﻍﻎﻏﻐ</div>
-<div class="line">ﻑﻒﻓﻔﻕﻖﻗﻘﻙﻚﻛﻜﻝﻞﻟﻠﻡﻢﻣﻤﻥﻦﻧﻨﻩﻪﻫﻬﻭﻮﻯﻰ</div>
-<div class="line">ﻱﻲﻳﻴﻵﻶﻷﻸﻹﻺﻻﻼ</div>
-</div>
-<div data-block="Halfwidth">
-<div class="line">-<=>。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシ</div>
-<div class="line">スセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワ</div>
-<div class="line">ン゙゚ᅠᄀᄁᆪᄂᆬᆭᄃᄄᄅᆰᆱᆲᆳᆴᆵᄚᄆᄇᄈᄡᄉᄊᄋᄌᄍᄎᄏᄐ</div>
-<div class="line">ᄑ하ᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵ│←↑→↓■○</div>
-</div>
-<div data-block="Linear">
-<div class="line">𐀀𐀁𐀂𐀃𐀄𐀅𐀆𐀇𐀈𐀉𐀊𐀋𐀍𐀎𐀏𐀐𐀑𐀒𐀓𐀔𐀕𐀖𐀗𐀘𐀙𐀚𐀛𐀜𐀝𐀞𐀟𐀠</div>
-<div class="line">𐀡𐀢𐀣𐀤𐀥𐀦𐀨𐀩𐀪𐀫𐀬𐀭𐀮𐀯𐀰𐀱𐀲𐀳𐀴𐀵𐀶𐀷𐀸𐀹𐀺𐀼𐀽𐀿𐁀𐁁𐁂𐁃</div>
-<div class="line">𐁄𐁅𐁆𐁇𐁈𐁉𐁊𐁋𐁌𐁍𐁐𐁑𐁒𐁓𐁔𐁕𐁖𐁗𐁘𐁙𐁚𐁛𐁜𐁝𐂀𐂁𐂂𐂃𐂄𐂅𐂆𐂇</div>
-<div class="line">𐂈𐂉𐂊𐂋𐂌𐂍𐂎𐂏𐂐𐂑𐂒𐂓𐂔𐂕𐂖𐂗𐂘𐂙𐂚𐂛𐂜𐂝𐂞𐂟𐂠𐂡𐂢𐂣𐂤𐂥𐂦𐂧</div>
-<div class="line">𐂨𐂩𐂪𐂫𐂬𐂭𐂮𐂯𐂰𐂱𐂲𐂳𐂴𐂵𐂶𐂷𐂸𐂹𐂺𐂻𐂼𐂽𐂾𐂿𐃀𐃁𐃂𐃃𐃄𐃅𐃆𐃇</div>
-<div class="line">𐃈𐃉𐃊𐃋𐃌𐃍𐃎𐃏𐃐𐃑𐃒𐃓𐃔𐃕𐃖𐃗𐃘𐃙𐃚𐃛𐃜𐃝𐃞𐃟𐃠𐃡𐃢𐃣𐃤𐃥𐃦𐃧</div>
-<div class="line">𐃨𐃩𐃪𐃫𐃬𐃭𐃮𐃯𐃰𐃱𐃲𐃳𐃴𐃵𐃶𐃷𐃸𐃹𐃺</div>
-</div>
-<div data-block="Aegean">
-<div class="line">𐄀𐄁𐄂𐄇𐄈𐄉𐄊𐄋𐄌𐄍𐄎𐄏𐄐𐄑𐄒𐄓𐄔𐄕𐄖𐄗𐄘𐄙𐄚𐄛𐄜𐄝𐄞𐄟𐄠𐄡𐄢𐄣</div>
-<div class="line">𐄤𐄥𐄦𐄧𐄨𐄩𐄪𐄫𐄬𐄭𐄮𐄯𐄰𐄱𐄲𐄳𐄷𐄸𐄹𐄺𐄻𐄼𐄽𐄾𐄿</div>
-</div>
-<div data-block="Ancient">
-<div class="line">𐅀𐅁𐅂𐅃𐅄𐅅𐅆𐅇𐅈𐅉𐅊𐅋𐅌𐅍𐅎𐅏𐅐𐅑𐅒𐅓𐅔𐅕𐅖𐅗𐅘𐅙𐅚𐅛𐅜𐅝𐅞𐅟</div>
-<div class="line">𐅠𐅡𐅢𐅣𐅤𐅥𐅦𐅧𐅨𐅩𐅪𐅫𐅬𐅭𐅮𐅯𐅰𐅱𐅲𐅳𐅴𐅵𐅶𐅷𐅸𐅹𐅺𐅻𐅼𐅽𐅾𐅿</div>
-<div class="line">𐆀𐆁𐆂𐆃𐆄𐆅𐆆𐆇𐆈𐆉𐆊𐆋𐆌𐆍𐆎𐆐𐆑𐆒𐆓𐆔𐆕𐆖𐆗𐆘𐆙𐆚𐆛𐆠</div>
-</div>
-<div data-block="Phaistos">
-<div class="line">𐇐𐇑𐇒𐇓𐇔𐇕𐇖𐇗𐇘𐇙𐇚𐇛𐇜𐇝𐇞𐇟𐇠𐇡𐇢𐇣𐇤𐇥𐇦𐇧𐇨𐇩𐇪𐇫𐇬𐇭𐇮𐇯</div>
-<div class="line">𐇰𐇱𐇲𐇳𐇴𐇵𐇶𐇷</div>
-</div>
-</div>
-</div>
-<script src="support/text-orientation.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001f.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001f.html
deleted file mode 100644
index a447fe8d9b8..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001f.html
+++ /dev/null
@@ -1,197 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: Test orientation of characters where vo=R (#6/9, 2048 code points in U+101F8-11151).</title>
-<meta name="timeout" content="long">
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<meta name="assert" content="Test orientation of characters where vo=R (#6/9, 2048 code points in U+101F8-11151)">
-<meta name="flags" content="dom">
-<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-.test {
- font: 16px/1 "orientation";
- height: 17em;
- writing-mode: vertical-rl;
-}
-.line {
- white-space: pre;
-}
-.U {
- text-orientation: upright;
-}
-.R {
- text-orientation: sideways;
-}
-#details {
- margin: 1em .5em;
-}
-summary {
- font-size: 1.2em;
- font-weight: bold;
- margin-top: .5em;
-}
-</style>
-<div id="log"></div>
-<div id="details"></div>
-<div id="container">
-<div data-vo="R" class="test">
-<div data-block="Phaistos">
-<div class="line">𐇸𐇹𐇺𐇻𐇼</div>
-</div>
-<div data-block="Lycian">
-<div class="line">𐊀𐊁𐊂𐊃𐊄𐊅𐊆𐊇𐊈𐊉𐊊𐊋𐊌𐊍𐊎𐊏𐊐𐊑𐊒𐊓𐊔𐊕𐊖𐊗𐊘𐊙𐊚𐊛𐊜</div>
-</div>
-<div data-block="Carian">
-<div class="line">𐊠𐊡𐊢𐊣𐊤𐊥𐊦𐊧𐊨𐊩𐊪𐊫𐊬𐊭𐊮𐊯𐊰𐊱𐊲𐊳𐊴𐊵𐊶𐊷𐊸𐊹𐊺𐊻𐊼𐊽𐊾𐊿</div>
-<div class="line">𐋀𐋁𐋂𐋃𐋄𐋅𐋆𐋇𐋈𐋉𐋊𐋋𐋌𐋍𐋎𐋏𐋐</div>
-</div>
-<div data-block="Coptic">
-<div class="line">𐋡𐋢𐋣𐋤𐋥𐋦𐋧𐋨𐋩𐋪𐋫𐋬𐋭𐋮𐋯𐋰𐋱𐋲𐋳𐋴𐋵𐋶𐋷𐋸𐋹𐋺𐋻</div>
-</div>
-<div data-block="Old">
-<div class="line">𐌀𐌁𐌂𐌃𐌄𐌅𐌆𐌇𐌈𐌉𐌊𐌋𐌌𐌍𐌎𐌏𐌐𐌑𐌒𐌓𐌔𐌕𐌖𐌗𐌘𐌙𐌚𐌛𐌜𐌝𐌞𐌟</div>
-<div class="line">𐌠𐌡𐌢𐌣</div>
-</div>
-<div data-block="Gothic">
-<div class="line">𐌰𐌱𐌲𐌳𐌴𐌵𐌶𐌷𐌸𐌹𐌺𐌻𐌼𐌽𐌾𐌿𐍀𐍁𐍂𐍃𐍄𐍅𐍆𐍇𐍈𐍉𐍊</div>
-</div>
-<div data-block="Old">
-<div class="line">𐍐𐍑𐍒𐍓𐍔𐍕𐍖𐍗𐍘𐍙𐍚𐍛𐍜𐍝𐍞𐍟𐍠𐍡𐍢𐍣𐍤𐍥𐍦𐍧𐍨𐍩𐍪𐍫𐍬𐍭𐍮𐍯</div>
-<div class="line">𐍰𐍱𐍲𐍳𐍴𐍵</div>
-</div>
-<div data-block="Ugaritic">
-<div class="line">𐎀𐎁𐎂𐎃𐎄𐎅𐎆𐎇𐎈𐎉𐎊𐎋𐎌𐎍𐎎𐎏𐎐𐎑𐎒𐎓𐎔𐎕𐎖𐎗𐎘𐎙𐎚𐎛𐎜𐎝𐎟</div>
-</div>
-<div data-block="Old">
-<div class="line">𐎠𐎡𐎢𐎣𐎤𐎥𐎦𐎧𐎨𐎩𐎪𐎫𐎬𐎭𐎮𐎯𐎰𐎱𐎲𐎳𐎴𐎵𐎶𐎷𐎸𐎹𐎺𐎻𐎼𐎽𐎾𐎿</div>
-<div class="line">𐏀𐏁𐏂𐏃𐏈𐏉𐏊𐏋𐏌𐏍𐏎𐏏𐏐𐏑𐏒𐏓𐏔𐏕</div>
-</div>
-<div data-block="Deseret">
-<div class="line">𐐀𐐁𐐂𐐃𐐄𐐅𐐆𐐇𐐈𐐉𐐊𐐋𐐌𐐍𐐎𐐏𐐐𐐑𐐒𐐓𐐔𐐕𐐖𐐗𐐘𐐙𐐚𐐛𐐜𐐝𐐞𐐟</div>
-<div class="line">𐐠𐐡𐐢𐐣𐐤𐐥𐐦𐐧𐐨𐐩𐐪𐐫𐐬𐐭𐐮𐐯𐐰𐐱𐐲𐐳𐐴𐐵𐐶𐐷𐐸𐐹𐐺𐐻𐐼𐐽𐐾𐐿</div>
-<div class="line">𐑀𐑁𐑂𐑃𐑄𐑅𐑆𐑇𐑈𐑉𐑊𐑋𐑌𐑍𐑎𐑏</div>
-</div>
-<div data-block="Shavian">
-<div class="line">𐑐𐑑𐑒𐑓𐑔𐑕𐑖𐑗𐑘𐑙𐑚𐑛𐑜𐑝𐑞𐑟𐑠𐑡𐑢𐑣𐑤𐑥𐑦𐑧𐑨𐑩𐑪𐑫𐑬𐑭𐑮𐑯</div>
-<div class="line">𐑰𐑱𐑲𐑳𐑴𐑵𐑶𐑷𐑸𐑹𐑺𐑻𐑼𐑽𐑾𐑿</div>
-</div>
-<div data-block="Osmanya">
-<div class="line">𐒀𐒁𐒂𐒃𐒄𐒅𐒆𐒇𐒈𐒉𐒊𐒋𐒌𐒍𐒎𐒏𐒐𐒑𐒒𐒓𐒔𐒕𐒖𐒗𐒘𐒙𐒚𐒛𐒜𐒝𐒠𐒡</div>
-<div class="line">𐒢𐒣𐒤𐒥𐒦𐒧𐒨𐒩</div>
-</div>
-<div data-block="Osage">
-<div class="line">𐒰𐒱𐒲𐒳𐒴𐒵𐒶𐒷𐒸𐒹𐒺𐒻𐒼𐒽𐒾𐒿𐓀𐓁𐓂𐓃𐓄𐓅𐓆𐓇𐓈𐓉𐓊𐓋𐓌𐓍𐓎𐓏</div>
-<div class="line">𐓐𐓑𐓒𐓓𐓘𐓙𐓚𐓛𐓜𐓝𐓞𐓟𐓠𐓡𐓢𐓣𐓤𐓥𐓦𐓧𐓨𐓩𐓪𐓫𐓬𐓭𐓮𐓯𐓰𐓱𐓲𐓳</div>
-<div class="line">𐓴𐓵𐓶𐓷𐓸𐓹𐓺𐓻</div>
-</div>
-<div data-block="Elbasan">
-<div class="line">𐔀𐔁𐔂𐔃𐔄𐔅𐔆𐔇𐔈𐔉𐔊𐔋𐔌𐔍𐔎𐔏𐔐𐔑𐔒𐔓𐔔𐔕𐔖𐔗𐔘𐔙𐔚𐔛𐔜𐔝𐔞𐔟</div>
-<div class="line">𐔠𐔡𐔢𐔣𐔤𐔥𐔦𐔧</div>
-</div>
-<div data-block="Caucasian">
-<div class="line">𐔰𐔱𐔲𐔳𐔴𐔵𐔶𐔷𐔸𐔹𐔺𐔻𐔼𐔽𐔾𐔿𐕀𐕁𐕂𐕃𐕄𐕅𐕆𐕇𐕈𐕉𐕊𐕋𐕌𐕍𐕎𐕏</div>
-<div class="line">𐕐𐕑𐕒𐕓𐕔𐕕𐕖𐕗𐕘𐕙𐕚𐕛𐕜𐕝𐕞𐕟𐕠𐕡𐕢𐕣𐕯</div>
-</div>
-<div data-block="Linear">
-<div class="line">𐘀𐘁𐘂𐘃𐘄𐘅𐘆𐘇𐘈𐘉𐘊𐘋𐘌𐘍𐘎𐘏𐘐𐘑𐘒𐘓𐘔𐘕𐘖𐘗𐘘𐘙𐘚𐘛𐘜𐘝𐘞𐘟</div>
-<div class="line">𐘠𐘡𐘢𐘣𐘤𐘥𐘦𐘧𐘨𐘩𐘪𐘫𐘬𐘭𐘮𐘯𐘰𐘱𐘲𐘳𐘴𐘵𐘶𐘷𐘸𐘹𐘺𐘻𐘼𐘽𐘾𐘿</div>
-<div class="line">𐙀𐙁𐙂𐙃𐙄𐙅𐙆𐙇𐙈𐙉𐙊𐙋𐙌𐙍𐙎𐙏𐙐𐙑𐙒𐙓𐙔𐙕𐙖𐙗𐙘𐙙𐙚𐙛𐙜𐙝𐙞𐙟</div>
-<div class="line">𐙠𐙡𐙢𐙣𐙤𐙥𐙦𐙧𐙨𐙩𐙪𐙫𐙬𐙭𐙮𐙯𐙰𐙱𐙲𐙳𐙴𐙵𐙶𐙷𐙸𐙹𐙺𐙻𐙼𐙽𐙾𐙿</div>
-<div class="line">𐚀𐚁𐚂𐚃𐚄𐚅𐚆𐚇𐚈𐚉𐚊𐚋𐚌𐚍𐚎𐚏𐚐𐚑𐚒𐚓𐚔𐚕𐚖𐚗𐚘𐚙𐚚𐚛𐚜𐚝𐚞𐚟</div>
-<div class="line">𐚠𐚡𐚢𐚣𐚤𐚥𐚦𐚧𐚨𐚩𐚪𐚫𐚬𐚭𐚮𐚯𐚰𐚱𐚲𐚳𐚴𐚵𐚶𐚷𐚸𐚹𐚺𐚻𐚼𐚽𐚾𐚿</div>
-<div class="line">𐛀𐛁𐛂𐛃𐛄𐛅𐛆𐛇𐛈𐛉𐛊𐛋𐛌𐛍𐛎𐛏𐛐𐛑𐛒𐛓𐛔𐛕𐛖𐛗𐛘𐛙𐛚𐛛𐛜𐛝𐛞𐛟</div>
-<div class="line">𐛠𐛡𐛢𐛣𐛤𐛥𐛦𐛧𐛨𐛩𐛪𐛫𐛬𐛭𐛮𐛯𐛰𐛱𐛲𐛳𐛴𐛵𐛶𐛷𐛸𐛹𐛺𐛻𐛼𐛽𐛾𐛿</div>
-<div class="line">𐜀𐜁𐜂𐜃𐜄𐜅𐜆𐜇𐜈𐜉𐜊𐜋𐜌𐜍𐜎𐜏𐜐𐜑𐜒𐜓𐜔𐜕𐜖𐜗𐜘𐜙𐜚𐜛𐜜𐜝𐜞𐜟</div>
-<div class="line">𐜠𐜡𐜢𐜣𐜤𐜥𐜦𐜧𐜨𐜩𐜪𐜫𐜬𐜭𐜮𐜯𐜰𐜱𐜲𐜳𐜴𐜵𐜶𐝀𐝁𐝂𐝃𐝄𐝅𐝆𐝇𐝈</div>
-<div class="line">𐝉𐝊𐝋𐝌𐝍𐝎𐝏𐝐𐝑𐝒𐝓𐝔𐝕𐝠𐝡𐝢𐝣𐝤𐝥𐝦𐝧</div>
-</div>
-<div data-block="Cypriot">
-<div class="line">𐠀𐠁𐠂𐠃𐠄𐠅𐠈𐠊𐠋𐠌𐠍𐠎𐠏𐠐𐠑𐠒𐠓𐠔𐠕𐠖𐠗𐠘𐠙𐠚𐠛𐠜𐠝𐠞𐠟𐠠𐠡𐠢</div>
-<div class="line">𐠣𐠤𐠥𐠦𐠧𐠨𐠩𐠪𐠫𐠬𐠭𐠮𐠯𐠰𐠱𐠲𐠳𐠴𐠵𐠷𐠸𐠼𐠿</div>
-</div>
-<div data-block="Imperial">
-<div class="line">𐡀𐡁𐡂𐡃𐡄𐡅𐡆𐡇𐡈𐡉𐡊𐡋𐡌𐡍𐡎𐡏𐡐𐡑𐡒𐡓𐡔𐡕𐡗𐡘𐡙𐡚𐡛𐡜𐡝𐡞𐡟</div>
-</div>
-<div data-block="Palmyrene">
-<div class="line">𐡠𐡡𐡢𐡣𐡤𐡥𐡦𐡧𐡨𐡩𐡪𐡫𐡬𐡭𐡮𐡯𐡰𐡱𐡲𐡳𐡴𐡵𐡶𐡷𐡸𐡹𐡺𐡻𐡼𐡽𐡾𐡿</div>
-</div>
-<div data-block="Nabataean">
-<div class="line">𐢀𐢁𐢂𐢃𐢄𐢅𐢆𐢇𐢈𐢉𐢊𐢋𐢌𐢍𐢎𐢏𐢐𐢑𐢒𐢓𐢔𐢕𐢖𐢗𐢘𐢙𐢚𐢛𐢜𐢝𐢞𐢧</div>
-<div class="line">𐢨𐢩𐢪𐢫𐢬𐢭𐢮𐢯</div>
-</div>
-<div data-block="Hatran">
-<div class="line">𐣠𐣡𐣢𐣣𐣤𐣥𐣦𐣧𐣨𐣩𐣪𐣫𐣬𐣭𐣮𐣯𐣰𐣱𐣲𐣴𐣵𐣻𐣼𐣽𐣾𐣿</div>
-</div>
-<div data-block="Phoenician">
-<div class="line">𐤀𐤁𐤂𐤃𐤄𐤅𐤆𐤇𐤈𐤉𐤊𐤋𐤌𐤍𐤎𐤏𐤐𐤑𐤒𐤓𐤔𐤕𐤖𐤗𐤘𐤙𐤚𐤛𐤟</div>
-</div>
-<div data-block="Lydian">
-<div class="line">𐤠𐤡𐤢𐤣𐤤𐤥𐤦𐤧𐤨𐤩𐤪𐤫𐤬𐤭𐤮𐤯𐤰𐤱𐤲𐤳𐤴𐤵𐤶𐤷𐤸𐤹𐤿</div>
-</div>
-<div data-block="Meroitic">
-<div class="line">𐦠𐦡𐦢𐦣𐦤𐦥𐦦𐦧𐦨𐦩𐦪𐦫𐦬𐦭𐦮𐦯𐦰𐦱𐦲𐦳𐦴𐦵𐦶𐦷𐦼𐦽𐦾𐦿𐧀𐧁𐧂𐧃</div>
-<div class="line">𐧄𐧅𐧆𐧇𐧈𐧉𐧊𐧋𐧌𐧍𐧎𐧏𐧒𐧓𐧔𐧕𐧖𐧗𐧘𐧙𐧚𐧛𐧜𐧝𐧞𐧟𐧠𐧡𐧢𐧣𐧤𐧥</div>
-<div class="line">𐧦𐧧𐧨𐧩𐧪𐧫𐧬𐧭𐧮𐧯𐧰𐧱𐧲𐧳𐧴𐧵𐧶𐧷𐧸𐧹𐧺𐧻𐧼𐧽𐧾𐧿</div>
-</div>
-<div data-block="Kharoshthi">
-<div class="line">𐨀𐨐𐨑𐨒𐨓𐨕𐨖𐨗𐨙𐨚𐨛𐨜𐨝𐨞𐨟𐨠𐨡𐨢𐨣𐨤𐨥𐨦𐨧𐨨𐨩𐨪𐨫𐨬𐨭𐨮𐨯𐨰</div>
-<div class="line">𐨱𐨲𐨳𐩀𐩁𐩂𐩃𐩄𐩅𐩆𐩇𐩐𐩑𐩒𐩓𐩔𐩕𐩖𐩗𐩘</div>
-</div>
-<div data-block="Old">
-<div class="line">𐩠𐩡𐩢𐩣𐩤𐩥𐩦𐩧𐩨𐩩𐩪𐩫𐩬𐩭𐩮𐩯𐩰𐩱𐩲𐩳𐩴𐩵𐩶𐩷𐩸𐩹𐩺𐩻𐩼𐩽𐩾𐩿</div>
-<div class="line">𐪀𐪁𐪂𐪃𐪄𐪅𐪆𐪇𐪈𐪉𐪊𐪋𐪌𐪍𐪎𐪏𐪐𐪑𐪒𐪓𐪔𐪕𐪖𐪗𐪘𐪙𐪚𐪛𐪜𐪝𐪞𐪟</div>
-</div>
-<div data-block="Manichaean">
-<div class="line">𐫀𐫁𐫂𐫃𐫄𐫅𐫆𐫇𐫈𐫉𐫊𐫋𐫌𐫍𐫎𐫏𐫐𐫑𐫒𐫓𐫔𐫕𐫖𐫗𐫘𐫙𐫚𐫛𐫜𐫝𐫞𐫟</div>
-<div class="line">𐫠𐫡𐫢𐫣𐫤𐫫𐫬𐫭𐫮𐫯𐫰𐫱𐫲𐫳𐫴𐫵𐫶</div>
-</div>
-<div data-block="Avestan">
-<div class="line">𐬀𐬁𐬂𐬃𐬄𐬅𐬆𐬇𐬈𐬉𐬊𐬋𐬌𐬍𐬎𐬏𐬐𐬑𐬒𐬓𐬔𐬕𐬖𐬗𐬘𐬙𐬚𐬛𐬜𐬝𐬞𐬟</div>
-<div class="line">𐬠𐬡𐬢𐬣𐬤𐬥𐬦𐬧𐬨𐬩𐬪𐬫𐬬𐬭𐬮𐬯𐬰𐬱𐬲𐬳𐬴𐬵𐬹𐬺𐬻𐬼𐬽𐬾𐬿</div>
-</div>
-<div data-block="Inscriptional">
-<div class="line">𐭀𐭁𐭂𐭃𐭄𐭅𐭆𐭇𐭈𐭉𐭊𐭋𐭌𐭍𐭎𐭏𐭐𐭑𐭒𐭓𐭔𐭕𐭘𐭙𐭚𐭛𐭜𐭝𐭞𐭟𐭠𐭡</div>
-<div class="line">𐭢𐭣𐭤𐭥𐭦𐭧𐭨𐭩𐭪𐭫𐭬𐭭𐭮𐭯𐭰𐭱𐭲𐭸𐭹𐭺𐭻𐭼𐭽𐭾𐭿</div>
-</div>
-<div data-block="Psalter">
-<div class="line">𐮀𐮁𐮂𐮃𐮄𐮅𐮆𐮇𐮈𐮉𐮊𐮋𐮌𐮍𐮎𐮏𐮐𐮑𐮙𐮚𐮛𐮜𐮩𐮪𐮫𐮬𐮭𐮮𐮯</div>
-</div>
-<div data-block="Old">
-<div class="line">𐰀𐰁𐰂𐰃𐰄𐰅𐰆𐰇𐰈𐰉𐰊𐰋𐰌𐰍𐰎𐰏𐰐𐰑𐰒𐰓𐰔𐰕𐰖𐰗𐰘𐰙𐰚𐰛𐰜𐰝𐰞𐰟</div>
-<div class="line">𐰠𐰡𐰢𐰣𐰤𐰥𐰦𐰧𐰨𐰩𐰪𐰫𐰬𐰭𐰮𐰯𐰰𐰱𐰲𐰳𐰴𐰵𐰶𐰷𐰸𐰹𐰺𐰻𐰼𐰽𐰾𐰿</div>
-<div class="line">𐱀𐱁𐱂𐱃𐱄𐱅𐱆𐱇𐱈𐲀𐲁𐲂𐲃𐲄𐲅𐲆𐲇𐲈𐲉𐲊𐲋𐲌𐲍𐲎𐲏𐲐𐲑𐲒𐲓𐲔𐲕𐲖</div>
-<div class="line">𐲗𐲘𐲙𐲚𐲛𐲜𐲝𐲞𐲟𐲠𐲡𐲢𐲣𐲤𐲥𐲦𐲧𐲨𐲩𐲪𐲫𐲬𐲭𐲮𐲯𐲰𐲱𐲲𐳀𐳁𐳂𐳃</div>
-<div class="line">𐳄𐳅𐳆𐳇𐳈𐳉𐳊𐳋𐳌𐳍𐳎𐳏𐳐𐳑𐳒𐳓𐳔𐳕𐳖𐳗𐳘𐳙𐳚𐳛𐳜𐳝𐳞𐳟𐳠𐳡𐳢𐳣</div>
-<div class="line">𐳤𐳥𐳦𐳧𐳨𐳩𐳪𐳫𐳬𐳭𐳮𐳯𐳰𐳱𐳲𐳺𐳻𐳼𐳽𐳾𐳿</div>
-</div>
-<div data-block="Rumi">
-<div class="line">𐹠𐹡𐹢𐹣𐹤𐹥𐹦𐹧𐹨𐹩𐹪𐹫𐹬𐹭𐹮𐹯𐹰𐹱𐹲𐹳𐹴𐹵𐹶𐹷𐹸𐹹𐹺𐹻𐹼𐹽𐹾</div>
-</div>
-<div data-block="Brahmi">
-<div class="line">𑀃𑀄𑀅𑀆𑀇𑀈𑀉𑀊𑀋𑀌𑀍𑀎𑀏𑀐𑀑𑀒𑀓𑀔𑀕𑀖𑀗𑀘𑀙𑀚𑀛𑀜𑀝𑀞𑀟𑀠𑀡𑀢</div>
-<div class="line">𑀣𑀤𑀥𑀦𑀧𑀨𑀩𑀪𑀫𑀬𑀭𑀮𑀯𑀰𑀱𑀲𑀳𑀴𑀵𑀶𑀷𑁇𑁈𑁉𑁊𑁋𑁌𑁍𑁒𑁓𑁔𑁕</div>
-<div class="line">𑁖𑁗𑁘𑁙𑁚𑁛𑁜𑁝𑁞𑁟𑁠𑁡𑁢𑁣𑁤𑁥𑁦𑁧𑁨𑁩𑁪𑁫𑁬𑁭𑁮𑁯</div>
-</div>
-<div data-block="Kaithi">
-<div class="line">𑂃𑂄𑂅𑂆𑂇𑂈𑂉𑂊𑂋𑂌𑂍𑂎𑂏𑂐𑂑𑂒𑂓𑂔𑂕𑂖𑂗𑂘𑂙𑂚𑂛𑂜𑂝𑂞𑂟𑂠𑂡𑂢</div>
-<div class="line">𑂣𑂤𑂥𑂦𑂧𑂨𑂩𑂪𑂫𑂬𑂭𑂮𑂯𑂻𑂼𑂾𑂿𑃀𑃁</div>
-</div>
-<div data-block="Sora">
-<div class="line">𑃐𑃑𑃒𑃓𑃔𑃕𑃖𑃗𑃘𑃙𑃚𑃛𑃜𑃝𑃞𑃟𑃠𑃡𑃢𑃣𑃤𑃥𑃦𑃧𑃨𑃰𑃱𑃲𑃳𑃴𑃵𑃶</div>
-<div class="line">𑃷𑃸𑃹</div>
-</div>
-<div data-block="Chakma">
-<div class="line">𑄃𑄄𑄅𑄆𑄇𑄈𑄉𑄊𑄋𑄌𑄍𑄎𑄏𑄐𑄑𑄒𑄓𑄔𑄕𑄖𑄗𑄘𑄙𑄚𑄛𑄜𑄝𑄞𑄟𑄠𑄡𑄢</div>
-<div class="line">𑄣𑄤𑄥𑄦𑄶𑄷𑄸𑄹𑄺𑄻𑄼𑄽𑄾𑄿𑅀𑅁𑅂𑅃</div>
-</div>
-<div data-block="Mahajani">
-<div class="line">𑅐𑅑</div>
-</div>
-</div>
-</div>
-<script src="support/text-orientation.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001g.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001g.html
deleted file mode 100644
index f135b68b75a..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001g.html
+++ /dev/null
@@ -1,155 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: Test orientation of characters where vo=R (#7/9, 2048 code points in U+11152-124FA).</title>
-<meta name="timeout" content="long">
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<meta name="assert" content="Test orientation of characters where vo=R (#7/9, 2048 code points in U+11152-124FA)">
-<meta name="flags" content="dom">
-<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-.test {
- font: 16px/1 "orientation";
- height: 17em;
- writing-mode: vertical-rl;
-}
-.line {
- white-space: pre;
-}
-.U {
- text-orientation: upright;
-}
-.R {
- text-orientation: sideways;
-}
-#details {
- margin: 1em .5em;
-}
-summary {
- font-size: 1.2em;
- font-weight: bold;
- margin-top: .5em;
-}
-</style>
-<div id="log"></div>
-<div id="details"></div>
-<div id="container">
-<div data-vo="R" class="test">
-<div data-block="Mahajani">
-<div class="line">𑅒𑅓𑅔𑅕𑅖𑅗𑅘𑅙𑅚𑅛𑅜𑅝𑅞𑅟𑅠𑅡𑅢𑅣𑅤𑅥𑅦𑅧𑅨𑅩𑅪𑅫𑅬𑅭𑅮𑅯𑅰𑅱</div>
-<div class="line">𑅲𑅴𑅵𑅶</div>
-</div>
-<div data-block="Sharada">
-<div class="line">𑆃𑆄𑆅𑆆𑆇𑆈𑆉𑆊𑆋𑆌𑆍𑆎𑆏𑆐𑆑𑆒𑆓𑆔𑆕𑆖𑆗𑆘𑆙𑆚𑆛𑆜𑆝𑆞𑆟𑆠𑆡𑆢</div>
-<div class="line">𑆣𑆤𑆥𑆦𑆧𑆨𑆩𑆪𑆫𑆬𑆭𑆮𑆯𑆰𑆱𑆲𑇁𑇂𑇃𑇄𑇅𑇆𑇇𑇈𑇉𑇍𑇐𑇑𑇒𑇓𑇔𑇕</div>
-<div class="line">𑇖𑇗𑇘𑇙𑇚𑇛𑇜𑇝𑇞𑇟</div>
-</div>
-<div data-block="Sinhala">
-<div class="line">𑇡𑇢𑇣𑇤𑇥𑇦𑇧𑇨𑇩𑇪𑇫𑇬𑇭𑇮𑇯𑇰𑇱𑇲𑇳𑇴</div>
-</div>
-<div data-block="Khojki">
-<div class="line">𑈀𑈁𑈂𑈃𑈄𑈅𑈆𑈇𑈈𑈉𑈊𑈋𑈌𑈍𑈎𑈏𑈐𑈑𑈓𑈔𑈕𑈖𑈗𑈘𑈙𑈚𑈛𑈜𑈝𑈞𑈟𑈠</div>
-<div class="line">𑈡𑈢𑈣𑈤𑈥𑈦𑈧𑈨𑈩𑈪𑈫𑈸𑈹𑈺𑈻𑈼𑈽</div>
-</div>
-<div data-block="Multani">
-<div class="line">𑊀𑊁𑊂𑊃𑊄𑊅𑊆𑊈𑊊𑊋𑊌𑊍𑊏𑊐𑊑𑊒𑊓𑊔𑊕𑊖𑊗𑊘𑊙𑊚𑊛𑊜𑊝𑊟𑊠𑊡𑊢𑊣</div>
-<div class="line">𑊤𑊥𑊦𑊧𑊨𑊩</div>
-</div>
-<div data-block="Khudawadi">
-<div class="line">𑊰𑊱𑊲𑊳𑊴𑊵𑊶𑊷𑊸𑊹𑊺𑊻𑊼𑊽𑊾𑊿𑋀𑋁𑋂𑋃𑋄𑋅𑋆𑋇𑋈𑋉𑋊𑋋𑋌𑋍𑋎𑋏</div>
-<div class="line">𑋐𑋑𑋒𑋓𑋔𑋕𑋖𑋗𑋘𑋙𑋚𑋛𑋜𑋝𑋞𑋰𑋱𑋲𑋳𑋴𑋵𑋶𑋷𑋸𑋹</div>
-</div>
-<div data-block="Grantha">
-<div class="line">𑌅𑌆𑌇𑌈𑌉𑌊𑌋𑌌𑌏𑌐𑌓𑌔𑌕𑌖𑌗𑌘𑌙𑌚𑌛𑌜𑌝𑌞𑌟𑌠𑌡𑌢𑌣𑌤𑌥𑌦𑌧𑌨</div>
-<div class="line">𑌪𑌫𑌬𑌭𑌮𑌯𑌰𑌲𑌳𑌵𑌶𑌷𑌸𑌹𑌽𑍐𑍝𑍞𑍟𑍠𑍡</div>
-</div>
-<div data-block="Newa">
-<div class="line">𑐀𑐁𑐂𑐃𑐄𑐅𑐆𑐇𑐈𑐉𑐊𑐋𑐌𑐍𑐎𑐏𑐐𑐑𑐒𑐓𑐔𑐕𑐖𑐗𑐘𑐙𑐚𑐛𑐜𑐝𑐞𑐟</div>
-<div class="line">𑐠𑐡𑐢𑐣𑐤𑐥𑐦𑐧𑐨𑐩𑐪𑐫𑐬𑐭𑐮𑐯𑐰𑐱𑐲𑐳𑐴𑑇𑑈𑑉𑑊𑑋𑑌𑑍𑑎𑑏𑑐𑑑</div>
-<div class="line">𑑒𑑓𑑔𑑕𑑖𑑗𑑘𑑙𑑛𑑝</div>
-</div>
-<div data-block="Tirhuta">
-<div class="line">𑒀𑒁𑒂𑒃𑒄𑒅𑒆𑒇𑒈𑒉𑒊𑒋𑒌𑒍𑒎𑒏𑒐𑒑𑒒𑒓𑒔𑒕𑒖𑒗𑒘𑒙𑒚𑒛𑒜𑒝𑒞𑒟</div>
-<div class="line">𑒠𑒡𑒢𑒣𑒤𑒥𑒦𑒧𑒨𑒩𑒪𑒫𑒬𑒭𑒮𑒯𑓄𑓅𑓆𑓇𑓐𑓑𑓒𑓓𑓔𑓕𑓖𑓗𑓘𑓙</div>
-</div>
-<div data-block="Modi">
-<div class="line">𑘀𑘁𑘂𑘃𑘄𑘅𑘆𑘇𑘈𑘉𑘊𑘋𑘌𑘍𑘎𑘏𑘐𑘑𑘒𑘓𑘔𑘕𑘖𑘗𑘘𑘙𑘚𑘛𑘜𑘝𑘞𑘟</div>
-<div class="line">𑘠𑘡𑘢𑘣𑘤𑘥𑘦𑘧𑘨𑘩𑘪𑘫𑘬𑘭𑘮𑘯𑙁𑙂𑙃𑙄𑙐𑙑𑙒𑙓𑙔𑙕𑙖𑙗𑙘𑙙</div>
-</div>
-<div data-block="Mongolian">
-<div class="line">𑙠𑙡𑙢𑙣𑙤𑙥𑙦𑙧𑙨𑙩𑙪𑙫𑙬</div>
-</div>
-<div data-block="Takri">
-<div class="line">𑚀𑚁𑚂𑚃𑚄𑚅𑚆𑚇𑚈𑚉𑚊𑚋𑚌𑚍𑚎𑚏𑚐𑚑𑚒𑚓𑚔𑚕𑚖𑚗𑚘𑚙𑚚𑚛𑚜𑚝𑚞𑚟</div>
-<div class="line">𑚠𑚡𑚢𑚣𑚤𑚥𑚦𑚧𑚨𑚩𑚪𑛀𑛁𑛂𑛃𑛄𑛅𑛆𑛇𑛈𑛉</div>
-</div>
-<div data-block="Ahom">
-<div class="line">𑜀𑜁𑜂𑜃𑜄𑜅𑜆𑜇𑜈𑜉𑜊𑜋𑜌𑜍𑜎𑜏𑜐𑜑𑜒𑜓𑜔𑜕𑜖𑜗𑜘𑜙𑜰𑜱𑜲𑜳𑜴𑜵</div>
-<div class="line">𑜶𑜷𑜸𑜹𑜺𑜻𑜼𑜽𑜾𑜿</div>
-</div>
-<div data-block="Warang">
-<div class="line">𑢠𑢡𑢢𑢣𑢤𑢥𑢦𑢧𑢨𑢩𑢪𑢫𑢬𑢭𑢮𑢯𑢰𑢱𑢲𑢳𑢴𑢵𑢶𑢷𑢸𑢹𑢺𑢻𑢼𑢽𑢾𑢿</div>
-<div class="line">𑣀𑣁𑣂𑣃𑣄𑣅𑣆𑣇𑣈𑣉𑣊𑣋𑣌𑣍𑣎𑣏𑣐𑣑𑣒𑣓𑣔𑣕𑣖𑣗𑣘𑣙𑣚𑣛𑣜𑣝𑣞𑣟</div>
-<div class="line">𑣠𑣡𑣢𑣣𑣤𑣥𑣦𑣧𑣨𑣩𑣪𑣫𑣬𑣭𑣮𑣯𑣰𑣱𑣲𑣿</div>
-</div>
-<div data-block="Pau">
-<div class="line">𑫀𑫁𑫂𑫃𑫄𑫅𑫆𑫇𑫈𑫉𑫊𑫋𑫌𑫍𑫎𑫏𑫐𑫑𑫒𑫓𑫔𑫕𑫖𑫗𑫘𑫙𑫚𑫛𑫜𑫝𑫞𑫟</div>
-<div class="line">𑫠𑫡𑫢𑫣𑫤𑫥𑫦𑫧𑫨𑫩𑫪𑫫𑫬𑫭𑫮𑫯𑫰𑫱𑫲𑫳𑫴𑫵𑫶𑫷𑫸</div>
-</div>
-<div data-block="Bhaiksuki">
-<div class="line">𑰀𑰁𑰂𑰃𑰄𑰅𑰆𑰇𑰈𑰊𑰋𑰌𑰍𑰎𑰏𑰐𑰑𑰒𑰓𑰔𑰕𑰖𑰗𑰘𑰙𑰚𑰛𑰜𑰝𑰞𑰟𑰠</div>
-<div class="line">𑰡𑰢𑰣𑰤𑰥𑰦𑰧𑰨𑰩𑰪𑰫𑰬𑰭𑰮𑱀𑱁𑱂𑱃𑱄𑱅𑱐𑱑𑱒𑱓𑱔𑱕𑱖𑱗𑱘𑱙𑱚𑱛</div>
-<div class="line">𑱜𑱝𑱞𑱟𑱠𑱡𑱢𑱣𑱤𑱥𑱦𑱧𑱨𑱩𑱪𑱫𑱬</div>
-</div>
-<div data-block="Marchen">
-<div class="line">𑱰𑱱𑱲𑱳𑱴𑱵𑱶𑱷𑱸𑱹𑱺𑱻𑱼𑱽𑱾𑱿𑲀𑲁𑲂𑲃𑲄𑲅𑲆𑲇𑲈𑲉𑲊𑲋𑲌𑲍𑲎𑲏</div>
-</div>
-<div data-block="Cuneiform">
-<div class="line">𒀀𒀁𒀂𒀃𒀄𒀅𒀆𒀇𒀈𒀉𒀊𒀋𒀌𒀍𒀎𒀏𒀐𒀑𒀒𒀓𒀔𒀕𒀖𒀗𒀘𒀙𒀚𒀛𒀜𒀝𒀞𒀟</div>
-<div class="line">𒀠𒀡𒀢𒀣𒀤𒀥𒀦𒀧𒀨𒀩𒀪𒀫𒀬𒀭𒀮𒀯𒀰𒀱𒀲𒀳𒀴𒀵𒀶𒀷𒀸𒀹𒀺𒀻𒀼𒀽𒀾𒀿</div>
-<div class="line">𒁀𒁁𒁂𒁃𒁄𒁅𒁆𒁇𒁈𒁉𒁊𒁋𒁌𒁍𒁎𒁏𒁐𒁑𒁒𒁓𒁔𒁕𒁖𒁗𒁘𒁙𒁚𒁛𒁜𒁝𒁞𒁟</div>
-<div class="line">𒁠𒁡𒁢𒁣𒁤𒁥𒁦𒁧𒁨𒁩𒁪𒁫𒁬𒁭𒁮𒁯𒁰𒁱𒁲𒁳𒁴𒁵𒁶𒁷𒁸𒁹𒁺𒁻𒁼𒁽𒁾𒁿</div>
-<div class="line">𒂀𒂁𒂂𒂃𒂄𒂅𒂆𒂇𒂈𒂉𒂊𒂋𒂌𒂍𒂎𒂏𒂐𒂑𒂒𒂓𒂔𒂕𒂖𒂗𒂘𒂙𒂚𒂛𒂜𒂝𒂞𒂟</div>
-<div class="line">𒂠𒂡𒂢𒂣𒂤𒂥𒂦𒂧𒂨𒂩𒂪𒂫𒂬𒂭𒂮𒂯𒂰𒂱𒂲𒂳𒂴𒂵𒂶𒂷𒂸𒂹𒂺𒂻𒂼𒂽𒂾𒂿</div>
-<div class="line">𒃀𒃁𒃂𒃃𒃄𒃅𒃆𒃇𒃈𒃉𒃊𒃋𒃌𒃍𒃎𒃏𒃐𒃑𒃒𒃓𒃔𒃕𒃖𒃗𒃘𒃙𒃚𒃛𒃜𒃝𒃞𒃟</div>
-<div class="line">𒃠𒃡𒃢𒃣𒃤𒃥𒃦𒃧𒃨𒃩𒃪𒃫𒃬𒃭𒃮𒃯𒃰𒃱𒃲𒃳𒃴𒃵𒃶𒃷𒃸𒃹𒃺𒃻𒃼𒃽𒃾𒃿</div>
-<div class="line">𒄀𒄁𒄂𒄃𒄄𒄅𒄆𒄇𒄈𒄉𒄊𒄋𒄌𒄍𒄎𒄏𒄐𒄑𒄒𒄓𒄔𒄕𒄖𒄗𒄘𒄙𒄚𒄛𒄜𒄝𒄞𒄟</div>
-<div class="line">𒄠𒄡𒄢𒄣𒄤𒄥𒄦𒄧𒄨𒄩𒄪𒄫𒄬𒄭𒄮𒄯𒄰𒄱𒄲𒄳𒄴𒄵𒄶𒄷𒄸𒄹𒄺𒄻𒄼𒄽𒄾𒄿</div>
-<div class="line">𒅀𒅁𒅂𒅃𒅄𒅅𒅆𒅇𒅈𒅉𒅊𒅋𒅌𒅍𒅎𒅏𒅐𒅑𒅒𒅓𒅔𒅕𒅖𒅗𒅘𒅙𒅚𒅛𒅜𒅝𒅞𒅟</div>
-<div class="line">𒅠𒅡𒅢𒅣𒅤𒅥𒅦𒅧𒅨𒅩𒅪𒅫𒅬𒅭𒅮𒅯𒅰𒅱𒅲𒅳𒅴𒅵𒅶𒅷𒅸𒅹𒅺𒅻𒅼𒅽𒅾𒅿</div>
-<div class="line">𒆀𒆁𒆂𒆃𒆄𒆅𒆆𒆇𒆈𒆉𒆊𒆋𒆌𒆍𒆎𒆏𒆐𒆑𒆒𒆓𒆔𒆕𒆖𒆗𒆘𒆙𒆚𒆛𒆜𒆝𒆞𒆟</div>
-<div class="line">𒆠𒆡𒆢𒆣𒆤𒆥𒆦𒆧𒆨𒆩𒆪𒆫𒆬𒆭𒆮𒆯𒆰𒆱𒆲𒆳𒆴𒆵𒆶𒆷𒆸𒆹𒆺𒆻𒆼𒆽𒆾𒆿</div>
-<div class="line">𒇀𒇁𒇂𒇃𒇄𒇅𒇆𒇇𒇈𒇉𒇊𒇋𒇌𒇍𒇎𒇏𒇐𒇑𒇒𒇓𒇔𒇕𒇖𒇗𒇘𒇙𒇚𒇛𒇜𒇝𒇞𒇟</div>
-<div class="line">𒇠𒇡𒇢𒇣𒇤𒇥𒇦𒇧𒇨𒇩𒇪𒇫𒇬𒇭𒇮𒇯𒇰𒇱𒇲𒇳𒇴𒇵𒇶𒇷𒇸𒇹𒇺𒇻𒇼𒇽𒇾𒇿</div>
-<div class="line">𒈀𒈁𒈂𒈃𒈄𒈅𒈆𒈇𒈈𒈉𒈊𒈋𒈌𒈍𒈎𒈏𒈐𒈑𒈒𒈓𒈔𒈕𒈖𒈗𒈘𒈙𒈚𒈛𒈜𒈝𒈞𒈟</div>
-<div class="line">𒈠𒈡𒈢𒈣𒈤𒈥𒈦𒈧𒈨𒈩𒈪𒈫𒈬𒈭𒈮𒈯𒈰𒈱𒈲𒈳𒈴𒈵𒈶𒈷𒈸𒈹𒈺𒈻𒈼𒈽𒈾𒈿</div>
-<div class="line">𒉀𒉁𒉂𒉃𒉄𒉅𒉆𒉇𒉈𒉉𒉊𒉋𒉌𒉍𒉎𒉏𒉐𒉑𒉒𒉓𒉔𒉕𒉖𒉗𒉘𒉙𒉚𒉛𒉜𒉝𒉞𒉟</div>
-<div class="line">𒉠𒉡𒉢𒉣𒉤𒉥𒉦𒉧𒉨𒉩𒉪𒉫𒉬𒉭𒉮𒉯𒉰𒉱𒉲𒉳𒉴𒉵𒉶𒉷𒉸𒉹𒉺𒉻𒉼𒉽𒉾𒉿</div>
-<div class="line">𒊀𒊁𒊂𒊃𒊄𒊅𒊆𒊇𒊈𒊉𒊊𒊋𒊌𒊍𒊎𒊏𒊐𒊑𒊒𒊓𒊔𒊕𒊖𒊗𒊘𒊙𒊚𒊛𒊜𒊝𒊞𒊟</div>
-<div class="line">𒊠𒊡𒊢𒊣𒊤𒊥𒊦𒊧𒊨𒊩𒊪𒊫𒊬𒊭𒊮𒊯𒊰𒊱𒊲𒊳𒊴𒊵𒊶𒊷𒊸𒊹𒊺𒊻𒊼𒊽𒊾𒊿</div>
-<div class="line">𒋀𒋁𒋂𒋃𒋄𒋅𒋆𒋇𒋈𒋉𒋊𒋋𒋌𒋍𒋎𒋏𒋐𒋑𒋒𒋓𒋔𒋕𒋖𒋗𒋘𒋙𒋚𒋛𒋜𒋝𒋞𒋟</div>
-<div class="line">𒋠𒋡𒋢𒋣𒋤𒋥𒋦𒋧𒋨𒋩𒋪𒋫𒋬𒋭𒋮𒋯𒋰𒋱𒋲𒋳𒋴𒋵𒋶𒋷𒋸𒋹𒋺𒋻𒋼𒋽𒋾𒋿</div>
-<div class="line">𒌀𒌁𒌂𒌃𒌄𒌅𒌆𒌇𒌈𒌉𒌊𒌋𒌌𒌍𒌎𒌏𒌐𒌑𒌒𒌓𒌔𒌕𒌖𒌗𒌘𒌙𒌚𒌛𒌜𒌝𒌞𒌟</div>
-<div class="line">𒌠𒌡𒌢𒌣𒌤𒌥𒌦𒌧𒌨𒌩𒌪𒌫𒌬𒌭𒌮𒌯𒌰𒌱𒌲𒌳𒌴𒌵𒌶𒌷𒌸𒌹𒌺𒌻𒌼𒌽𒌾𒌿</div>
-<div class="line">𒍀𒍁𒍂𒍃𒍄𒍅𒍆𒍇𒍈𒍉𒍊𒍋𒍌𒍍𒍎𒍏𒍐𒍑𒍒𒍓𒍔𒍕𒍖𒍗𒍘𒍙𒍚𒍛𒍜𒍝𒍞𒍟</div>
-<div class="line">𒍠𒍡𒍢𒍣𒍤𒍥𒍦𒍧𒍨𒍩𒍪𒍫𒍬𒍭𒍮𒍯𒍰𒍱𒍲𒍳𒍴𒍵𒍶𒍷𒍸𒍹𒍺𒍻𒍼𒍽𒍾𒍿</div>
-<div class="line">𒎀𒎁𒎂𒎃𒎄𒎅𒎆𒎇𒎈𒎉𒎊𒎋𒎌𒎍𒎎𒎏𒎐𒎑𒎒𒎓𒎔𒎕𒎖𒎗𒎘𒎙𒐀𒐁𒐂𒐃𒐄𒐅</div>
-<div class="line">𒐆𒐇𒐈𒐉𒐊𒐋𒐌𒐍𒐎𒐏𒐐𒐑𒐒𒐓𒐔𒐕𒐖𒐗𒐘𒐙𒐚𒐛𒐜𒐝𒐞𒐟𒐠𒐡𒐢𒐣𒐤𒐥</div>
-<div class="line">𒐦𒐧𒐨𒐩𒐪𒐫𒐬𒐭𒐮𒐯𒐰𒐱𒐲𒐳𒐴𒐵𒐶𒐷𒐸𒐹𒐺𒐻𒐼𒐽𒐾𒐿𒑀𒑁𒑂𒑃𒑄𒑅</div>
-<div class="line">𒑆𒑇𒑈𒑉𒑊𒑋𒑌𒑍𒑎𒑏𒑐𒑑𒑒𒑓𒑔𒑕𒑖𒑗𒑘𒑙𒑚𒑛𒑜𒑝𒑞𒑟𒑠𒑡𒑢𒑣𒑤𒑥</div>
-<div class="line">𒑦𒑧𒑨𒑩𒑪𒑫𒑬𒑭𒑮𒑰𒑱𒑲𒑳𒑴</div>
-</div>
-<div data-block="Early">
-<div class="line">𒒀𒒁𒒂𒒃𒒄𒒅𒒆𒒇𒒈𒒉𒒊𒒋𒒌𒒍𒒎𒒏𒒐𒒑𒒒𒒓𒒔𒒕𒒖𒒗𒒘𒒙𒒚𒒛𒒜𒒝𒒞𒒟</div>
-<div class="line">𒒠𒒡𒒢𒒣𒒤𒒥𒒦𒒧𒒨𒒩𒒪𒒫𒒬𒒭𒒮𒒯𒒰𒒱𒒲𒒳𒒴𒒵𒒶𒒷𒒸𒒹𒒺𒒻𒒼𒒽𒒾𒒿</div>
-<div class="line">𒓀𒓁𒓂𒓃𒓄𒓅𒓆𒓇𒓈𒓉𒓊𒓋𒓌𒓍𒓎𒓏𒓐𒓑𒓒𒓓𒓔𒓕𒓖𒓗𒓘𒓙𒓚𒓛𒓜𒓝𒓞𒓟</div>
-<div class="line">𒓠𒓡𒓢𒓣𒓤𒓥𒓦𒓧𒓨𒓩𒓪𒓫𒓬𒓭𒓮𒓯𒓰𒓱𒓲𒓳𒓴𒓵𒓶𒓷𒓸𒓹𒓺</div>
-</div>
-</div>
-</div>
-<script src="support/text-orientation.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001h.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001h.html
deleted file mode 100644
index bb20fa8c0b0..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001h.html
+++ /dev/null
@@ -1,131 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: Test orientation of characters where vo=R (#8/9, 2048 code points in U+124FB-1D7B2).</title>
-<meta name="timeout" content="long">
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<meta name="assert" content="Test orientation of characters where vo=R (#8/9, 2048 code points in U+124FB-1D7B2)">
-<meta name="flags" content="dom">
-<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-.test {
- font: 16px/1 "orientation";
- height: 17em;
- writing-mode: vertical-rl;
-}
-.line {
- white-space: pre;
-}
-.U {
- text-orientation: upright;
-}
-.R {
- text-orientation: sideways;
-}
-#details {
- margin: 1em .5em;
-}
-summary {
- font-size: 1.2em;
- font-weight: bold;
- margin-top: .5em;
-}
-</style>
-<div id="log"></div>
-<div id="details"></div>
-<div id="container">
-<div data-vo="R" class="test">
-<div data-block="Early">
-<div class="line">𒓻𒓼𒓽𒓾𒓿𒔀𒔁𒔂𒔃𒔄𒔅𒔆𒔇𒔈𒔉𒔊𒔋𒔌𒔍𒔎𒔏𒔐𒔑𒔒𒔓𒔔𒔕𒔖𒔗𒔘𒔙𒔚</div>
-<div class="line">𒔛𒔜𒔝𒔞𒔟𒔠𒔡𒔢𒔣𒔤𒔥𒔦𒔧𒔨𒔩𒔪𒔫𒔬𒔭𒔮𒔯𒔰𒔱𒔲𒔳𒔴𒔵𒔶𒔷𒔸𒔹𒔺</div>
-<div class="line">𒔻𒔼𒔽𒔾𒔿𒕀𒕁𒕂𒕃</div>
-</div>
-<div data-block="Bamum">
-<div class="line">𖠀𖠁𖠂𖠃𖠄𖠅𖠆𖠇𖠈𖠉𖠊𖠋𖠌𖠍𖠎𖠏𖠐𖠑𖠒𖠓𖠔𖠕𖠖𖠗𖠘𖠙𖠚𖠛𖠜𖠝𖠞𖠟</div>
-<div class="line">𖠠𖠡𖠢𖠣𖠤𖠥𖠦𖠧𖠨𖠩𖠪𖠫𖠬𖠭𖠮𖠯𖠰𖠱𖠲𖠳𖠴𖠵𖠶𖠷𖠸𖠹𖠺𖠻𖠼𖠽𖠾𖠿</div>
-<div class="line">𖡀𖡁𖡂𖡃𖡄𖡅𖡆𖡇𖡈𖡉𖡊𖡋𖡌𖡍𖡎𖡏𖡐𖡑𖡒𖡓𖡔𖡕𖡖𖡗𖡘𖡙𖡚𖡛𖡜𖡝𖡞𖡟</div>
-<div class="line">𖡠𖡡𖡢𖡣𖡤𖡥𖡦𖡧𖡨𖡩𖡪𖡫𖡬𖡭𖡮𖡯𖡰𖡱𖡲𖡳𖡴𖡵𖡶𖡷𖡸𖡹𖡺𖡻𖡼𖡽𖡾𖡿</div>
-<div class="line">𖢀𖢁𖢂𖢃𖢄𖢅𖢆𖢇𖢈𖢉𖢊𖢋𖢌𖢍𖢎𖢏𖢐𖢑𖢒𖢓𖢔𖢕𖢖𖢗𖢘𖢙𖢚𖢛𖢜𖢝𖢞𖢟</div>
-<div class="line">𖢠𖢡𖢢𖢣𖢤𖢥𖢦𖢧𖢨𖢩𖢪𖢫𖢬𖢭𖢮𖢯𖢰𖢱𖢲𖢳𖢴𖢵𖢶𖢷𖢸𖢹𖢺𖢻𖢼𖢽𖢾𖢿</div>
-<div class="line">𖣀𖣁𖣂𖣃𖣄𖣅𖣆𖣇𖣈𖣉𖣊𖣋𖣌𖣍𖣎𖣏𖣐𖣑𖣒𖣓𖣔𖣕𖣖𖣗𖣘𖣙𖣚𖣛𖣜𖣝𖣞𖣟</div>
-<div class="line">𖣠𖣡𖣢𖣣𖣤𖣥𖣦𖣧𖣨𖣩𖣪𖣫𖣬𖣭𖣮𖣯𖣰𖣱𖣲𖣳𖣴𖣵𖣶𖣷𖣸𖣹𖣺𖣻𖣼𖣽𖣾𖣿</div>
-<div class="line">𖤀𖤁𖤂𖤃𖤄𖤅𖤆𖤇𖤈𖤉𖤊𖤋𖤌𖤍𖤎𖤏𖤐𖤑𖤒𖤓𖤔𖤕𖤖𖤗𖤘𖤙𖤚𖤛𖤜𖤝𖤞𖤟</div>
-<div class="line">𖤠𖤡𖤢𖤣𖤤𖤥𖤦𖤧𖤨𖤩𖤪𖤫𖤬𖤭𖤮𖤯𖤰𖤱𖤲𖤳𖤴𖤵𖤶𖤷𖤸𖤹𖤺𖤻𖤼𖤽𖤾𖤿</div>
-<div class="line">𖥀𖥁𖥂𖥃𖥄𖥅𖥆𖥇𖥈𖥉𖥊𖥋𖥌𖥍𖥎𖥏𖥐𖥑𖥒𖥓𖥔𖥕𖥖𖥗𖥘𖥙𖥚𖥛𖥜𖥝𖥞𖥟</div>
-<div class="line">𖥠𖥡𖥢𖥣𖥤𖥥𖥦𖥧𖥨𖥩𖥪𖥫𖥬𖥭𖥮𖥯𖥰𖥱𖥲𖥳𖥴𖥵𖥶𖥷𖥸𖥹𖥺𖥻𖥼𖥽𖥾𖥿</div>
-<div class="line">𖦀𖦁𖦂𖦃𖦄𖦅𖦆𖦇𖦈𖦉𖦊𖦋𖦌𖦍𖦎𖦏𖦐𖦑𖦒𖦓𖦔𖦕𖦖𖦗𖦘𖦙𖦚𖦛𖦜𖦝𖦞𖦟</div>
-<div class="line">𖦠𖦡𖦢𖦣𖦤𖦥𖦦𖦧𖦨𖦩𖦪𖦫𖦬𖦭𖦮𖦯𖦰𖦱𖦲𖦳𖦴𖦵𖦶𖦷𖦸𖦹𖦺𖦻𖦼𖦽𖦾𖦿</div>
-<div class="line">𖧀𖧁𖧂𖧃𖧄𖧅𖧆𖧇𖧈𖧉𖧊𖧋𖧌𖧍𖧎𖧏𖧐𖧑𖧒𖧓𖧔𖧕𖧖𖧗𖧘𖧙𖧚𖧛𖧜𖧝𖧞𖧟</div>
-<div class="line">𖧠𖧡𖧢𖧣𖧤𖧥𖧦𖧧𖧨𖧩𖧪𖧫𖧬𖧭𖧮𖧯𖧰𖧱𖧲𖧳𖧴𖧵𖧶𖧷𖧸𖧹𖧺𖧻𖧼𖧽𖧾𖧿</div>
-<div class="line">𖨀𖨁𖨂𖨃𖨄𖨅𖨆𖨇𖨈𖨉𖨊𖨋𖨌𖨍𖨎𖨏𖨐𖨑𖨒𖨓𖨔𖨕𖨖𖨗𖨘𖨙𖨚𖨛𖨜𖨝𖨞𖨟</div>
-<div class="line">𖨠𖨡𖨢𖨣𖨤𖨥𖨦𖨧𖨨𖨩𖨪𖨫𖨬𖨭𖨮𖨯𖨰𖨱𖨲𖨳𖨴𖨵𖨶𖨷𖨸</div>
-</div>
-<div data-block="Mro">
-<div class="line">𖩀𖩁𖩂𖩃𖩄𖩅𖩆𖩇𖩈𖩉𖩊𖩋𖩌𖩍𖩎𖩏𖩐𖩑𖩒𖩓𖩔𖩕𖩖𖩗𖩘𖩙𖩚𖩛𖩜𖩝𖩞𖩠</div>
-<div class="line">𖩡𖩢𖩣𖩤𖩥𖩦𖩧𖩨𖩩𖩮𖩯</div>
-</div>
-<div data-block="Bassa">
-<div class="line">𖫐𖫑𖫒𖫓𖫔𖫕𖫖𖫗𖫘𖫙𖫚𖫛𖫜𖫝𖫞𖫟𖫠𖫡𖫢𖫣𖫤𖫥𖫦𖫧𖫨𖫩𖫪𖫫𖫬𖫭𖫵</div>
-</div>
-<div data-block="Pahawh">
-<div class="line">𖬀𖬁𖬂𖬃𖬄𖬅𖬆𖬇𖬈𖬉𖬊𖬋𖬌𖬍𖬎𖬏𖬐𖬑𖬒𖬓𖬔𖬕𖬖𖬗𖬘𖬙𖬚𖬛𖬜𖬝𖬞𖬟</div>
-<div class="line">𖬠𖬡𖬢𖬣𖬤𖬥𖬦𖬧𖬨𖬩𖬪𖬫𖬬𖬭𖬮𖬯𖬷𖬸𖬹𖬺𖬻𖬼𖬽𖬾𖬿𖭀𖭁𖭂𖭃𖭄𖭅𖭐</div>
-<div class="line">𖭑𖭒𖭓𖭔𖭕𖭖𖭗𖭘𖭙𖭛𖭜𖭝𖭞𖭟𖭠𖭡𖭣𖭤𖭥𖭦𖭧𖭨𖭩𖭪𖭫𖭬𖭭𖭮𖭯𖭰𖭱𖭲</div>
-<div class="line">𖭳𖭴𖭵𖭶𖭷𖭽𖭾𖭿𖮀𖮁𖮂𖮃𖮄𖮅𖮆𖮇𖮈𖮉𖮊𖮋𖮌𖮍𖮎𖮏</div>
-</div>
-<div data-block="Miao">
-<div class="line">𖼀𖼁𖼂𖼃𖼄𖼅𖼆𖼇𖼈𖼉𖼊𖼋𖼌𖼍𖼎𖼏𖼐𖼑𖼒𖼓𖼔𖼕𖼖𖼗𖼘𖼙𖼚𖼛𖼜𖼝𖼞𖼟</div>
-<div class="line">𖼠𖼡𖼢𖼣𖼤𖼥𖼦𖼧𖼨𖼩𖼪𖼫𖼬𖼭𖼮𖼯𖼰𖼱𖼲𖼳𖼴𖼵𖼶𖼷𖼸𖼹𖼺𖼻𖼼𖼽𖼾𖼿</div>
-<div class="line">𖽀𖽁𖽂𖽃𖽄𖽐𖾓𖾔𖾕𖾖𖾗𖾘𖾙𖾚𖾛𖾜𖾝𖾞𖾟</div>
-</div>
-<div data-block="Duployan">
-<div class="line">𛰀𛰁𛰂𛰃𛰄𛰅𛰆𛰇𛰈𛰉𛰊𛰋𛰌𛰍𛰎𛰏𛰐𛰑𛰒𛰓𛰔𛰕𛰖𛰗𛰘𛰙𛰚𛰛𛰜𛰝𛰞𛰟</div>
-<div class="line">𛰠𛰡𛰢𛰣𛰤𛰥𛰦𛰧𛰨𛰩𛰪𛰫𛰬𛰭𛰮𛰯𛰰𛰱𛰲𛰳𛰴𛰵𛰶𛰷𛰸𛰹𛰺𛰻𛰼𛰽𛰾𛰿</div>
-<div class="line">𛱀𛱁𛱂𛱃𛱄𛱅𛱆𛱇𛱈𛱉𛱊𛱋𛱌𛱍𛱎𛱏𛱐𛱑𛱒𛱓𛱔𛱕𛱖𛱗𛱘𛱙𛱚𛱛𛱜𛱝𛱞𛱟</div>
-<div class="line">𛱠𛱡𛱢𛱣𛱤𛱥𛱦𛱧𛱨𛱩𛱪𛱰𛱱𛱲𛱳𛱴𛱵𛱶𛱷𛱸𛱹𛱺𛱻𛱼𛲀𛲁𛲂𛲃𛲄𛲅𛲆𛲇</div>
-<div class="line">𛲈𛲐𛲑𛲒𛲓𛲔𛲕𛲖𛲗𛲘𛲙𛲜𛲟</div>
-</div>
-<div data-block="Ancient">
-<div class="line">𝈀𝈁𝈂𝈃𝈄𝈅𝈆𝈇𝈈𝈉𝈊𝈋𝈌𝈍𝈎𝈏𝈐𝈑𝈒𝈓𝈔𝈕𝈖𝈗𝈘𝈙𝈚𝈛𝈜𝈝𝈞𝈟</div>
-<div class="line">𝈠𝈡𝈢𝈣𝈤𝈥𝈦𝈧𝈨𝈩𝈪𝈫𝈬𝈭𝈮𝈯𝈰𝈱𝈲𝈳𝈴𝈵𝈶𝈷𝈸𝈹𝈺𝈻𝈼𝈽𝈾𝈿</div>
-<div class="line">𝉀𝉁𝉅</div>
-</div>
-<div data-block="Mathematical">
-<div class="line">𝐀𝐁𝐂𝐃𝐄𝐅𝐆𝐇𝐈𝐉𝐊𝐋𝐌𝐍𝐎𝐏𝐐𝐑𝐒𝐓𝐔𝐕𝐖𝐗𝐘𝐙𝐚𝐛𝐜𝐝𝐞𝐟</div>
-<div class="line">𝐠𝐡𝐢𝐣𝐤𝐥𝐦𝐧𝐨𝐩𝐪𝐫𝐬𝐭𝐮𝐯𝐰𝐱𝐲𝐳𝐴𝐵𝐶𝐷𝐸𝐹𝐺𝐻𝐼𝐽𝐾𝐿</div>
-<div class="line">𝑀𝑁𝑂𝑃𝑄𝑅𝑆𝑇𝑈𝑉𝑊𝑋𝑌𝑍𝑎𝑏𝑐𝑑𝑒𝑓𝑔𝑖𝑗𝑘𝑙𝑚𝑛𝑜𝑝𝑞𝑟𝑠</div>
-<div class="line">𝑡𝑢𝑣𝑤𝑥𝑦𝑧𝑨𝑩𝑪𝑫𝑬𝑭𝑮𝑯𝑰𝑱𝑲𝑳𝑴𝑵𝑶𝑷𝑸𝑹𝑺𝑻𝑼𝑽𝑾𝑿𝒀</div>
-<div class="line">𝒁𝒂𝒃𝒄𝒅𝒆𝒇𝒈𝒉𝒊𝒋𝒌𝒍𝒎𝒏𝒐𝒑𝒒𝒓𝒔𝒕𝒖𝒗𝒘𝒙𝒚𝒛𝒜𝒞𝒟𝒢𝒥</div>
-<div class="line">𝒦𝒩𝒪𝒫𝒬𝒮𝒯𝒰𝒱𝒲𝒳𝒴𝒵𝒶𝒷𝒸𝒹𝒻𝒽𝒾𝒿𝓀𝓁𝓂𝓃𝓅𝓆𝓇𝓈𝓉𝓊𝓋</div>
-<div class="line">𝓌𝓍𝓎𝓏𝓐𝓑𝓒𝓓𝓔𝓕𝓖𝓗𝓘𝓙𝓚𝓛𝓜𝓝𝓞𝓟𝓠𝓡𝓢𝓣𝓤𝓥𝓦𝓧𝓨𝓩𝓪𝓫</div>
-<div class="line">𝓬𝓭𝓮𝓯𝓰𝓱𝓲𝓳𝓴𝓵𝓶𝓷𝓸𝓹𝓺𝓻𝓼𝓽𝓾𝓿𝔀𝔁𝔂𝔃𝔄𝔅𝔇𝔈𝔉𝔊𝔍𝔎</div>
-<div class="line">𝔏𝔐𝔑𝔒𝔓𝔔𝔖𝔗𝔘𝔙𝔚𝔛𝔜𝔞𝔟𝔠𝔡𝔢𝔣𝔤𝔥𝔦𝔧𝔨𝔩𝔪𝔫𝔬𝔭𝔮𝔯𝔰</div>
-<div class="line">𝔱𝔲𝔳𝔴𝔵𝔶𝔷𝔸𝔹𝔻𝔼𝔽𝔾𝕀𝕁𝕂𝕃𝕄𝕆𝕊𝕋𝕌𝕍𝕎𝕏𝕐𝕒𝕓𝕔𝕕𝕖𝕗</div>
-<div class="line">𝕘𝕙𝕚𝕛𝕜𝕝𝕞𝕟𝕠𝕡𝕢𝕣𝕤𝕥𝕦𝕧𝕨𝕩𝕪𝕫𝕬𝕭𝕮𝕯𝕰𝕱𝕲𝕳𝕴𝕵𝕶𝕷</div>
-<div class="line">𝕸𝕹𝕺𝕻𝕼𝕽𝕾𝕿𝖀𝖁𝖂𝖃𝖄𝖅𝖆𝖇𝖈𝖉𝖊𝖋𝖌𝖍𝖎𝖏𝖐𝖑𝖒𝖓𝖔𝖕𝖖𝖗</div>
-<div class="line">𝖘𝖙𝖚𝖛𝖜𝖝𝖞𝖟𝖠𝖡𝖢𝖣𝖤𝖥𝖦𝖧𝖨𝖩𝖪𝖫𝖬𝖭𝖮𝖯𝖰𝖱𝖲𝖳𝖴𝖵𝖶𝖷</div>
-<div class="line">𝖸𝖹𝖺𝖻𝖼𝖽𝖾𝖿𝗀𝗁𝗂𝗃𝗄𝗅𝗆𝗇𝗈𝗉𝗊𝗋𝗌𝗍𝗎𝗏𝗐𝗑𝗒𝗓𝗔𝗕𝗖𝗗</div>
-<div class="line">𝗘𝗙𝗚𝗛𝗜𝗝𝗞𝗟𝗠𝗡𝗢𝗣𝗤𝗥𝗦𝗧𝗨𝗩𝗪𝗫𝗬𝗭𝗮𝗯𝗰𝗱𝗲𝗳𝗴𝗵𝗶𝗷</div>
-<div class="line">𝗸𝗹𝗺𝗻𝗼𝗽𝗾𝗿𝘀𝘁𝘂𝘃𝘄𝘅𝘆𝘇𝘈𝘉𝘊𝘋𝘌𝘍𝘎𝘏𝘐𝘑𝘒𝘓𝘔𝘕𝘖𝘗</div>
-<div class="line">𝘘𝘙𝘚𝘛𝘜𝘝𝘞𝘟𝘠𝘡𝘢𝘣𝘤𝘥𝘦𝘧𝘨𝘩𝘪𝘫𝘬𝘭𝘮𝘯𝘰𝘱𝘲𝘳𝘴𝘵𝘶𝘷</div>
-<div class="line">𝘸𝘹𝘺𝘻𝘼𝘽𝘾𝘿𝙀𝙁𝙂𝙃𝙄𝙅𝙆𝙇𝙈𝙉𝙊𝙋𝙌𝙍𝙎𝙏𝙐𝙑𝙒𝙓𝙔𝙕𝙖𝙗</div>
-<div class="line">𝙘𝙙𝙚𝙛𝙜𝙝𝙞𝙟𝙠𝙡𝙢𝙣𝙤𝙥𝙦𝙧𝙨𝙩𝙪𝙫𝙬𝙭𝙮𝙯𝙰𝙱𝙲𝙳𝙴𝙵𝙶𝙷</div>
-<div class="line">𝙸𝙹𝙺𝙻𝙼𝙽𝙾𝙿𝚀𝚁𝚂𝚃𝚄𝚅𝚆𝚇𝚈𝚉𝚊𝚋𝚌𝚍𝚎𝚏𝚐𝚑𝚒𝚓𝚔𝚕𝚖𝚗</div>
-<div class="line">𝚘𝚙𝚚𝚛𝚜𝚝𝚞𝚟𝚠𝚡𝚢𝚣𝚤𝚥𝚨𝚩𝚪𝚫𝚬𝚭𝚮𝚯𝚰𝚱𝚲𝚳𝚴𝚵𝚶𝚷𝚸𝚹</div>
-<div class="line">𝚺𝚻𝚼𝚽𝚾𝚿𝛀𝛁𝛂𝛃𝛄𝛅𝛆𝛇𝛈𝛉𝛊𝛋𝛌𝛍𝛎𝛏𝛐𝛑𝛒𝛓𝛔𝛕𝛖𝛗𝛘𝛙</div>
-<div class="line">𝛚𝛛𝛜𝛝𝛞𝛟𝛠𝛡𝛢𝛣𝛤𝛥𝛦𝛧𝛨𝛩𝛪𝛫𝛬𝛭𝛮𝛯𝛰𝛱𝛲𝛳𝛴𝛵𝛶𝛷𝛸𝛹</div>
-<div class="line">𝛺𝛻𝛼𝛽𝛾𝛿𝜀𝜁𝜂𝜃𝜄𝜅𝜆𝜇𝜈𝜉𝜊𝜋𝜌𝜍𝜎𝜏𝜐𝜑𝜒𝜓𝜔𝜕𝜖𝜗𝜘𝜙</div>
-<div class="line">𝜚𝜛𝜜𝜝𝜞𝜟𝜠𝜡𝜢𝜣𝜤𝜥𝜦𝜧𝜨𝜩𝜪𝜫𝜬𝜭𝜮𝜯𝜰𝜱𝜲𝜳𝜴𝜵𝜶𝜷𝜸𝜹</div>
-<div class="line">𝜺𝜻𝜼𝜽𝜾𝜿𝝀𝝁𝝂𝝃𝝄𝝅𝝆𝝇𝝈𝝉𝝊𝝋𝝌𝝍𝝎𝝏𝝐𝝑𝝒𝝓𝝔𝝕𝝖𝝗𝝘𝝙</div>
-<div class="line">𝝚𝝛𝝜𝝝𝝞𝝟𝝠𝝡𝝢𝝣𝝤𝝥𝝦𝝧𝝨𝝩𝝪𝝫𝝬𝝭𝝮𝝯𝝰𝝱𝝲𝝳𝝴𝝵𝝶𝝷𝝸𝝹</div>
-<div class="line">𝝺𝝻𝝼𝝽𝝾𝝿𝞀𝞁𝞂𝞃𝞄𝞅𝞆𝞇𝞈𝞉𝞊𝞋𝞌𝞍𝞎𝞏𝞐𝞑𝞒𝞓𝞔𝞕𝞖𝞗𝞘𝞙</div>
-<div class="line">𝞚𝞛𝞜𝞝𝞞𝞟𝞠𝞡𝞢𝞣𝞤𝞥𝞦𝞧𝞨𝞩𝞪𝞫𝞬𝞭𝞮𝞯𝞰𝞱𝞲</div>
-</div>
-</div>
-</div>
-<script src="support/text-orientation.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001i.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001i.html
deleted file mode 100644
index e01953ba414..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001i.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: Test orientation of characters where vo=R (#9/9, 652 code points in U+1D7B3-1F8AD).</title>
-<meta name="timeout" content="long">
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<meta name="assert" content="Test orientation of characters where vo=R (#9/9, 652 code points in U+1D7B3-1F8AD)">
-<meta name="flags" content="dom">
-<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-.test {
- font: 16px/1 "orientation";
- height: 17em;
- writing-mode: vertical-rl;
-}
-.line {
- white-space: pre;
-}
-.U {
- text-orientation: upright;
-}
-.R {
- text-orientation: sideways;
-}
-#details {
- margin: 1em .5em;
-}
-summary {
- font-size: 1.2em;
- font-weight: bold;
- margin-top: .5em;
-}
-</style>
-<div id="log"></div>
-<div id="details"></div>
-<div id="container">
-<div data-vo="R" class="test">
-<div data-block="Mathematical">
-<div class="line">𝞳𝞴𝞵𝞶𝞷𝞸𝞹𝞺𝞻𝞼𝞽𝞾𝞿𝟀𝟁𝟂𝟃𝟄𝟅𝟆𝟇𝟈𝟉𝟊𝟋𝟎𝟏𝟐𝟑𝟒𝟓𝟔</div>
-<div class="line">𝟕𝟖𝟗𝟘𝟙𝟚𝟛𝟜𝟝𝟞𝟟𝟠𝟡𝟢𝟣𝟤𝟥𝟦𝟧𝟨𝟩𝟪𝟫𝟬𝟭𝟮𝟯𝟰𝟱𝟲𝟳𝟴</div>
-<div class="line">𝟵𝟶𝟷𝟸𝟹𝟺𝟻𝟼𝟽𝟾𝟿</div>
-</div>
-<div data-block="Mende">
-<div class="line">𞠀𞠁𞠂𞠃𞠄𞠅𞠆𞠇𞠈𞠉𞠊𞠋𞠌𞠍𞠎𞠏𞠐𞠑𞠒𞠓𞠔𞠕𞠖𞠗𞠘𞠙𞠚𞠛𞠜𞠝𞠞𞠟</div>
-<div class="line">𞠠𞠡𞠢𞠣𞠤𞠥𞠦𞠧𞠨𞠩𞠪𞠫𞠬𞠭𞠮𞠯𞠰𞠱𞠲𞠳𞠴𞠵𞠶𞠷𞠸𞠹𞠺𞠻𞠼𞠽𞠾𞠿</div>
-<div class="line">𞡀𞡁𞡂𞡃𞡄𞡅𞡆𞡇𞡈𞡉𞡊𞡋𞡌𞡍𞡎𞡏𞡐𞡑𞡒𞡓𞡔𞡕𞡖𞡗𞡘𞡙𞡚𞡛𞡜𞡝𞡞𞡟</div>
-<div class="line">𞡠𞡡𞡢𞡣𞡤𞡥𞡦𞡧𞡨𞡩𞡪𞡫𞡬𞡭𞡮𞡯𞡰𞡱𞡲𞡳𞡴𞡵𞡶𞡷𞡸𞡹𞡺𞡻𞡼𞡽𞡾𞡿</div>
-<div class="line">𞢀𞢁𞢂𞢃𞢄𞢅𞢆𞢇𞢈𞢉𞢊𞢋𞢌𞢍𞢎𞢏𞢐𞢑𞢒𞢓𞢔𞢕𞢖𞢗𞢘𞢙𞢚𞢛𞢜𞢝𞢞𞢟</div>
-<div class="line">𞢠𞢡𞢢𞢣𞢤𞢥𞢦𞢧𞢨𞢩𞢪𞢫𞢬𞢭𞢮𞢯𞢰𞢱𞢲𞢳𞢴𞢵𞢶𞢷𞢸𞢹𞢺𞢻𞢼𞢽𞢾𞢿</div>
-<div class="line">𞣀𞣁𞣂𞣃𞣄𞣇𞣈𞣉𞣊𞣋𞣌𞣍𞣎𞣏</div>
-</div>
-<div data-block="Adlam">
-<div class="line">𞤀𞤁𞤂𞤃𞤄𞤅𞤆𞤇𞤈𞤉𞤊𞤋𞤌𞤍𞤎𞤏𞤐𞤑𞤒𞤓𞤔𞤕𞤖𞤗𞤘𞤙𞤚𞤛𞤜𞤝𞤞𞤟</div>
-<div class="line">𞤠𞤡𞤢𞤣𞤤𞤥𞤦𞤧𞤨𞤩𞤪𞤫𞤬𞤭𞤮𞤯𞤰𞤱𞤲𞤳𞤴𞤵𞤶𞤷𞤸𞤹𞤺𞤻𞤼𞤽𞤾𞤿</div>
-<div class="line">𞥀𞥁𞥂𞥃𞥐𞥑𞥒𞥓𞥔𞥕𞥖𞥗𞥘𞥙𞥞𞥟</div>
-</div>
-<div data-block="Arabic">
-<div class="line">𞸀𞸁𞸂𞸃𞸅𞸆𞸇𞸈𞸉𞸊𞸋𞸌𞸍𞸎𞸏𞸐𞸑𞸒𞸓𞸔𞸕𞸖𞸗𞸘𞸙𞸚𞸛𞸜𞸝𞸞𞸟𞸡</div>
-<div class="line">𞸢𞸤𞸧𞸩𞸪𞸫𞸬𞸭𞸮𞸯𞸰𞸱𞸲𞸴𞸵𞸶𞸷𞸹𞸻𞹂𞹇𞹉𞹋𞹍𞹎𞹏𞹑𞹒𞹔𞹗𞹙𞹛</div>
-<div class="line">𞹝𞹟𞹡𞹢𞹤𞹧𞹨𞹩𞹪𞹬𞹭𞹮𞹯𞹰𞹱𞹲𞹴𞹵𞹶𞹷𞹹𞹺𞹻𞹼𞹾𞺀𞺁𞺂𞺃𞺄𞺅𞺆</div>
-<div class="line">𞺇𞺈𞺉𞺋𞺌𞺍𞺎𞺏𞺐𞺑𞺒𞺓𞺔𞺕𞺖𞺗𞺘𞺙𞺚𞺛𞺡𞺢𞺣𞺥𞺦𞺧𞺨𞺩𞺫𞺬𞺭𞺮</div>
-<div class="line">𞺯𞺰𞺱𞺲𞺳𞺴𞺵𞺶𞺷𞺸𞺹𞺺𞺻𞻰𞻱</div>
-</div>
-<div data-block="Supplemental">
-<div class="line">🠀🠁🠂🠃🠄🠅🠆🠇🠈🠉🠊🠋🠐🠑🠒🠓🠔🠕🠖🠗🠘🠙🠚🠛🠜🠝🠞🠟🠠🠡🠢🠣</div>
-<div class="line">🠤🠥🠦🠧🠨🠩🠪🠫🠬🠭🠮🠯🠰🠱🠲🠳🠴🠵🠶🠷🠸🠹🠺🠻🠼🠽🠾🠿🡀🡁🡂🡃</div>
-<div class="line">🡄🡅🡆🡇🡐🡑🡒🡓🡔🡕🡖🡗🡘🡙🡠🡡🡢🡣🡤🡥🡦🡧🡨🡩🡪🡫🡬🡭🡮🡯🡰🡱</div>
-<div class="line">🡲🡳🡴🡵🡶🡷🡸🡹🡺🡻🡼🡽🡾🡿🢀🢁🢂🢃🢄🢅🢆🢇🢐🢑🢒🢓🢔🢕🢖🢗🢘🢙</div>
-<div class="line">🢚🢛🢜🢝🢞🢟🢠🢡🢢🢣🢤🢥🢦🢧🢨🢩🢪🢫🢬🢭</div>
-</div>
-</div>
-</div>
-<script src="support/text-orientation.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001j.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001j.html
deleted file mode 100644
index 210838ed636..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001j.html
+++ /dev/null
@@ -1,151 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: Test orientation of characters where vo=U (#1/6, 2048 code points in U+00A7-2ED3).</title>
-<meta name="timeout" content="long">
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<meta name="assert" content="Test orientation of characters where vo=U (#1/6, 2048 code points in U+00A7-2ED3)">
-<meta name="flags" content="dom">
-<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-.test {
- font: 16px/1 "orientation";
- height: 17em;
- writing-mode: vertical-rl;
-}
-.line {
- white-space: pre;
-}
-.U {
- text-orientation: upright;
-}
-.R {
- text-orientation: sideways;
-}
-#details {
- margin: 1em .5em;
-}
-summary {
- font-size: 1.2em;
- font-weight: bold;
- margin-top: .5em;
-}
-</style>
-<div id="log"></div>
-<div id="details"></div>
-<div id="container">
-<div data-vo="U" class="test">
-<div data-block="Latin">
-<div class="line">§©®±¼½¾×÷</div>
-</div>
-<div data-block="Spacing">
-<div class="line">˪˫</div>
-</div>
-<div data-block="Hangul">
-<div class="line">ᄀᄁᄂᄃᄄᄅᄆᄇᄈᄉᄊᄋᄌᄍᄎᄏᄐᄑᄒᄓᄔᄕᄖᄗᄘᄙᄚᄛᄜᄝᄞᄟ</div>
-<div class="line">ᄠᄡᄢᄣᄤᄥᄦᄧᄨᄩᄪᄫᄬᄭᄮᄯᄰᄱᄲᄳᄴᄵᄶᄷᄸᄹᄺᄻᄼᄽᄾᄿ</div>
-<div class="line">ᅀᅁᅂᅃᅄᅅᅆᅇᅈᅉᅊᅋᅌᅍᅎᅏᅐᅑᅒᅓᅔᅕᅖᅗᅘᅙᅚᅛᅜᅝᅞᅟ</div>
-<div class="line">ᅠᅡᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵᅶᅷᅸᅹᅺᅻᅼᅽᅾᅿ</div>
-<div class="line">ᆀᆁᆂᆃᆄᆅᆆᆇᆈᆉᆊᆋᆌᆍᆎᆏᆐᆑᆒᆓᆔᆕᆖᆗᆘᆙᆚᆛᆜᆝᆞᆟ</div>
-<div class="line">ᆠᆡᆢᆣᆤᆥᆦᆧᆨᆩᆪᆫᆬᆭᆮᆯᆰᆱᆲᆳᆴᆵᆶᆷᆸᆹᆺᆻᆼᆽᆾᆿ</div>
-<div class="line">ᇀᇁᇂᇃᇄᇅᇆᇇᇈᇉᇊᇋᇌᇍᇎᇏᇐᇑᇒᇓᇔᇕᇖᇗᇘᇙᇚᇛᇜᇝᇞᇟ</div>
-<div class="line">ᇠᇡᇢᇣᇤᇥᇦᇧᇨᇩᇪᇫᇬᇭᇮᇯᇰᇱᇲᇳᇴᇵᇶᇷᇸᇹᇺᇻᇼᇽᇾᇿ</div>
-</div>
-<div data-block="Unified">
-<div class="line">ᐁᐂᐃᐄᐅᐆᐇᐈᐉᐊᐋᐌᐍᐎᐏᐐᐑᐒᐓᐔᐕᐖᐗᐘᐙᐚᐛᐜᐝᐞᐟᐠ</div>
-<div class="line">ᐡᐢᐣᐤᐥᐦᐧᐨᐩᐪᐫᐬᐭᐮᐯᐰᐱᐲᐳᐴᐵᐶᐷᐸᐹᐺᐻᐼᐽᐾᐿᑀ</div>
-<div class="line">ᑁᑂᑃᑄᑅᑆᑇᑈᑉᑊᑋᑌᑍᑎᑏᑐᑑᑒᑓᑔᑕᑖᑗᑘᑙᑚᑛᑜᑝᑞᑟᑠ</div>
-<div class="line">ᑡᑢᑣᑤᑥᑦᑧᑨᑩᑪᑫᑬᑭᑮᑯᑰᑱᑲᑳᑴᑵᑶᑷᑸᑹᑺᑻᑼᑽᑾᑿᒀ</div>
-<div class="line">ᒁᒂᒃᒄᒅᒆᒇᒈᒉᒊᒋᒌᒍᒎᒏᒐᒑᒒᒓᒔᒕᒖᒗᒘᒙᒚᒛᒜᒝᒞᒟᒠ</div>
-<div class="line">ᒡᒢᒣᒤᒥᒦᒧᒨᒩᒪᒫᒬᒭᒮᒯᒰᒱᒲᒳᒴᒵᒶᒷᒸᒹᒺᒻᒼᒽᒾᒿᓀ</div>
-<div class="line">ᓁᓂᓃᓄᓅᓆᓇᓈᓉᓊᓋᓌᓍᓎᓏᓐᓑᓒᓓᓔᓕᓖᓗᓘᓙᓚᓛᓜᓝᓞᓟᓠ</div>
-<div class="line">ᓡᓢᓣᓤᓥᓦᓧᓨᓩᓪᓫᓬᓭᓮᓯᓰᓱᓲᓳᓴᓵᓶᓷᓸᓹᓺᓻᓼᓽᓾᓿᔀ</div>
-<div class="line">ᔁᔂᔃᔄᔅᔆᔇᔈᔉᔊᔋᔌᔍᔎᔏᔐᔑᔒᔓᔔᔕᔖᔗᔘᔙᔚᔛᔜᔝᔞᔟᔠ</div>
-<div class="line">ᔡᔢᔣᔤᔥᔦᔧᔨᔩᔪᔫᔬᔭᔮᔯᔰᔱᔲᔳᔴᔵᔶᔷᔸᔹᔺᔻᔼᔽᔾᔿᕀ</div>
-<div class="line">ᕁᕂᕃᕄᕅᕆᕇᕈᕉᕊᕋᕌᕍᕎᕏᕐᕑᕒᕓᕔᕕᕖᕗᕘᕙᕚᕛᕜᕝᕞᕟᕠ</div>
-<div class="line">ᕡᕢᕣᕤᕥᕦᕧᕨᕩᕪᕫᕬᕭᕮᕯᕰᕱᕲᕳᕴᕵᕶᕷᕸᕹᕺᕻᕼᕽᕾᕿᖀ</div>
-<div class="line">ᖁᖂᖃᖄᖅᖆᖇᖈᖉᖊᖋᖌᖍᖎᖏᖐᖑᖒᖓᖔᖕᖖᖗᖘᖙᖚᖛᖜᖝᖞᖟᖠ</div>
-<div class="line">ᖡᖢᖣᖤᖥᖦᖧᖨᖩᖪᖫᖬᖭᖮᖯᖰᖱᖲᖳᖴᖵᖶᖷᖸᖹᖺᖻᖼᖽᖾᖿᗀ</div>
-<div class="line">ᗁᗂᗃᗄᗅᗆᗇᗈᗉᗊᗋᗌᗍᗎᗏᗐᗑᗒᗓᗔᗕᗖᗗᗘᗙᗚᗛᗜᗝᗞᗟᗠ</div>
-<div class="line">ᗡᗢᗣᗤᗥᗦᗧᗨᗩᗪᗫᗬᗭᗮᗯᗰᗱᗲᗳᗴᗵᗶᗷᗸᗹᗺᗻᗼᗽᗾᗿᘀ</div>
-<div class="line">ᘁᘂᘃᘄᘅᘆᘇᘈᘉᘊᘋᘌᘍᘎᘏᘐᘑᘒᘓᘔᘕᘖᘗᘘᘙᘚᘛᘜᘝᘞᘟᘠ</div>
-<div class="line">ᘡᘢᘣᘤᘥᘦᘧᘨᘩᘪᘫᘬᘭᘮᘯᘰᘱᘲᘳᘴᘵᘶᘷᘸᘹᘺᘻᘼᘽᘾᘿᙀ</div>
-<div class="line">ᙁᙂᙃᙄᙅᙆᙇᙈᙉᙊᙋᙌᙍᙎᙏᙐᙑᙒᙓᙔᙕᙖᙗᙘᙙᙚᙛᙜᙝᙞᙟᙠ</div>
-<div class="line">ᙡᙢᙣᙤᙥᙦᙧᙨᙩᙪᙫᙬ᙭᙮ᙯᙰᙱᙲᙳᙴᙵᙶᙷᙸᙹᙺᙻᙼᙽᙾᙿᢰ</div>
-<div class="line">ᢱᢲᢳᢴᢵᢶᢷᢸᢹᢺᢻᢼᢽᢾᢿᣀᣁᣂᣃᣄᣅᣆᣇᣈᣉᣊᣋᣌᣍᣎᣏᣐ</div>
-<div class="line">ᣑᣒᣓᣔᣕᣖᣗᣘᣙᣚᣛᣜᣝᣞᣟᣠᣡᣢᣣᣤᣥᣦᣧᣨᣩᣪᣫᣬᣭᣮᣯᣰ</div>
-<div class="line">ᣱᣲᣳᣴᣵ</div>
-</div>
-<div data-block="General">
-<div class="line">‖†‡‰‱※‼⁂⁇⁈⁉⁑</div>
-</div>
-<div data-block="Letterlike">
-<div class="line">℀℁℃℄℅℆ℇ℈℉ℏℓ℔№℗℞℟℠℡™℣℥℧℩℮ℵℶℷℸℹ℺℻ℼ</div>
-<div class="line">ℽℾℿⅅⅆⅇⅈⅉ⅊⅌⅍⅏</div>
-</div>
-<div data-block="Number">
-<div class="line">⅐⅑⅒⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜⅝⅞⅟ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅬⅭⅮⅯ</div>
-<div class="line">ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⅺⅻⅼⅽⅾⅿↀↁↂↃↄↅↆↇↈ↉</div>
-</div>
-<div data-block="Mathematical">
-<div class="line">∞∴∵</div>
-</div>
-<div data-block="Miscellaneous">
-<div class="line">⌀⌁⌂⌃⌄⌅⌆⌇⌌⌍⌎⌏⌐⌑⌒⌓⌔⌕⌖⌗⌘⌙⌚⌛⌜⌝⌞⌟⌤⌥⌦⌧</div>
-<div class="line">⌨⌫⍽⍾⍿⎀⎁⎂⎃⎄⎅⎆⎇⎈⎉⎊⎋⎌⎍⎎⎏⎐⎑⎒⎓⎔⎕⎖⎗⎘⎙⎚</div>
-<div class="line">⎾⎿⏀⏁⏂⏃⏄⏅⏆⏇⏈⏉⏊⏋⏌⏍⏏⏑⏒⏓⏔⏕⏖⏗⏘⏙⏚⏛⏢⏣⏤⏥</div>
-<div class="line">⏦⏧⏨⏩⏪⏫⏬⏭⏮⏯⏰⏱⏲⏳⏴⏵⏶⏷⏸⏹⏺⏻⏼⏽⏾</div>
-</div>
-<div data-block="Control">
-<div class="line">␀␁␂␃␄␅␆␇␈␉␊␋␌␍␎␏␐␑␒␓␔␕␖␗␘␙␚␛␜␝␞␟</div>
-<div class="line">␠␡␢␤␥␦</div>
-</div>
-<div data-block="Optical">
-<div class="line">⑀⑁⑂⑃⑄⑅⑆⑇⑈⑉⑊</div>
-</div>
-<div data-block="Enclosed">
-<div class="line">①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿</div>
-<div class="line">⒀⒁⒂⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⒜⒝⒞⒟</div>
-<div class="line">⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿ</div>
-<div class="line">ⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟ</div>
-<div class="line">ⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⓪⓫⓬⓭⓮⓯⓰⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾⓿</div>
-</div>
-<div data-block="Geometric">
-<div class="line">■□▢▣▤▥▦▧▨▩▪▫▬▭▮▯▰▱▲△▴▵▶▷▸▹►▻▼▽▾▿</div>
-<div class="line">◀◁◂◃◄◅◆◇◈◉◊○◌◍◎●◐◑◒◓◔◕◖◗◘◙◚◛◜◝◞◟</div>
-<div class="line">◠◡◢◣◤◥◦◧◨◩◪◫◬◭◮◯◰◱◲◳◴◵◶◷◸◹◺◻◼◽◾◿</div>
-</div>
-<div data-block="Miscellaneous">
-<div class="line">☀☁☂☃☄★☆☇☈☉☊☋☌☍☎☏☐☑☒☓☔☕☖☗☘☙☠☡☢☣☤☥</div>
-<div class="line">☦☧☨☩☪☫☬☭☮☯☰☱☲☳☴☵☶☷☸☹☺☻☼☽☾☿♀♁♂♃♄♅</div>
-<div class="line">♆♇♈♉♊♋♌♍♎♏♐♑♒♓♔♕♖♗♘♙♚♛♜♝♞♟♠♡♢♣♤♥</div>
-<div class="line">♦♧♨♩♪♫♬♭♮♯♰♱♲♳♴♵♶♷♸♹♺♻♼♽♾♿⚀⚁⚂⚃⚄⚅</div>
-<div class="line">⚆⚇⚈⚉⚊⚋⚌⚍⚎⚏⚐⚑⚒⚓⚔⚕⚖⚗⚘⚙⚚⚛⚜⚝⚞⚟⚠⚡⚢⚣⚤⚥</div>
-<div class="line">⚦⚧⚨⚩⚪⚫⚬⚭⚮⚯⚰⚱⚲⚳⚴⚵⚶⚷⚸⚹⚺⚻⚼⚽⚾⚿⛀⛁⛂⛃⛄⛅</div>
-<div class="line">⛆⛇⛈⛉⛊⛋⛌⛍⛎⛏⛐⛑⛒⛓⛔⛕⛖⛗⛘⛙⛚⛛⛜⛝⛞⛟⛠⛡⛢⛣⛤⛥</div>
-<div class="line">⛦⛧⛨⛩⛪⛫⛬⛭⛮⛯⛰⛱⛲⛳⛴⛵⛶⛷⛸⛹⛺⛻⛼⛽⛾⛿</div>
-</div>
-<div data-block="Dingbats">
-<div class="line">✀✁✂✃✄✅✆✇✈✉✊✋✌✍✎✏✐✑✒✓✔✕✖✗✘✙✚✛✜✝✞✟</div>
-<div class="line">✠✡✢✣✤✥✦✧✨✩✪✫✬✭✮✯✰✱✲✳✴✵✶✷✸✹✺✻✼✽✾✿</div>
-<div class="line">❀❁❂❃❄❅❆❇❈❉❊❋❌❍❎❏❐❑❒❓❔❕❖❗❘❙❚❛❜❝❞❟</div>
-<div class="line">❠❡❢❣❤❥❦❧❶❷❸❹❺❻❼❽❾❿➀➁➂➃➄➅➆➇➈➉➊➋➌➍</div>
-<div class="line">➎➏➐➑➒➓</div>
-</div>
-<div data-block="Miscellaneous">
-<div class="line">⬒⬓⬔⬕⬖⬗⬘⬙⬚⬛⬜⬝⬞⬟⬠⬡⬢⬣⬤⬥⬦⬧⬨⬩⬪⬫⬬⬭⬮⬯⭐⭑</div>
-<div class="line">⭒⭓⭔⭕⭖⭗⭘⭙⮸⮹⮽⮾⮿⯀⯁⯂⯃⯄⯅⯆⯇⯈⯊⯋⯌⯍⯎⯏⯐⯑</div>
-</div>
-<div data-block="CJK">
-<div class="line">⺀⺁⺂⺃⺄⺅⺆⺇⺈⺉⺊⺋⺌⺍⺎⺏⺐⺑⺒⺓⺔⺕⺖⺗⺘⺙⺛⺜⺝⺞⺟⺠</div>
-<div class="line">⺡⺢⺣⺤⺥⺦⺧⺨⺩⺪⺫⺬⺭⺮⺯⺰⺱⺲⺳⺴⺵⺶⺷⺸⺹⺺⺻⺼⺽⺾⺿⻀</div>
-<div class="line">⻁⻂⻃⻄⻅⻆⻇⻈⻉⻊⻋⻌⻍⻎⻏⻐⻑⻒⻓</div>
-</div>
-</div>
-</div>
-<script src="support/text-orientation.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001k.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001k.html
deleted file mode 100644
index 516e1281baa..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001k.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: Test orientation of characters where vo=U (#2/6, 2048 code points in U+2ED4-A37A).</title>
-<meta name="timeout" content="long">
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<meta name="assert" content="Test orientation of characters where vo=U (#2/6, 2048 code points in U+2ED4-A37A)">
-<meta name="flags" content="dom">
-<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-.test {
- font: 16px/1 "orientation";
- height: 17em;
- writing-mode: vertical-rl;
-}
-.line {
- white-space: pre;
-}
-.U {
- text-orientation: upright;
-}
-.R {
- text-orientation: sideways;
-}
-#details {
- margin: 1em .5em;
-}
-summary {
- font-size: 1.2em;
- font-weight: bold;
- margin-top: .5em;
-}
-</style>
-<div id="log"></div>
-<div id="details"></div>
-<div id="container">
-<div data-vo="U" class="test">
-<div data-block="CJK">
-<div class="line">⻔⻕⻖⻗⻘⻙⻚⻛⻜⻝⻞⻟⻠⻡⻢⻣⻤⻥⻦⻧⻨⻩⻪⻫⻬⻭⻮⻯⻰⻱⻲⻳</div>
-</div>
-<div data-block="Kangxi">
-<div class="line">⼀⼁⼂⼃⼄⼅⼆⼇⼈⼉⼊⼋⼌⼍⼎⼏⼐⼑⼒⼓⼔⼕⼖⼗⼘⼙⼚⼛⼜⼝⼞⼟</div>
-<div class="line">⼠⼡⼢⼣⼤⼥⼦⼧⼨⼩⼪⼫⼬⼭⼮⼯⼰⼱⼲⼳⼴⼵⼶⼷⼸⼹⼺⼻⼼⼽⼾⼿</div>
-<div class="line">⽀⽁⽂⽃⽄⽅⽆⽇⽈⽉⽊⽋⽌⽍⽎⽏⽐⽑⽒⽓⽔⽕⽖⽗⽘⽙⽚⽛⽜⽝⽞⽟</div>
-<div class="line">⽠⽡⽢⽣⽤⽥⽦⽧⽨⽩⽪⽫⽬⽭⽮⽯⽰⽱⽲⽳⽴⽵⽶⽷⽸⽹⽺⽻⽼⽽⽾⽿</div>
-<div class="line">⾀⾁⾂⾃⾄⾅⾆⾇⾈⾉⾊⾋⾌⾍⾎⾏⾐⾑⾒⾓⾔⾕⾖⾗⾘⾙⾚⾛⾜⾝⾞⾟</div>
-<div class="line">⾠⾡⾢⾣⾤⾥⾦⾧⾨⾩⾪⾫⾬⾭⾮⾯⾰⾱⾲⾳⾴⾵⾶⾷⾸⾹⾺⾻⾼⾽⾾⾿</div>
-<div class="line">⿀⿁⿂⿃⿄⿅⿆⿇⿈⿉⿊⿋⿌⿍⿎⿏⿐⿑⿒⿓⿔⿕</div>
-</div>
-<div data-block="Ideographic">
-<div class="line">⿰⿱⿲⿳⿴⿵⿶⿷⿸⿹⿺⿻</div>
-</div>
-<div data-block="CJK">
-<div class="line"> 〃〄々〆〇〒〓〠〡〢〣〤〥〦〧〨〩〱〲〳〴〵〶〷〸〹〺〻〼〽〾</div>
-<div class="line">〿</div>
-</div>
-<div data-block="Hiragana">
-<div class="line">あいうえおかがきぎくぐけげこごさざしじすずせぜそぞただちぢつづて</div>
-<div class="line">でとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもやゆよら</div>
-<div class="line">りるれろわゐゑをんゔゝゞゟ</div>
-</div>
-<div data-block="Katakana">
-<div class="line">アイウエオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂツヅテ</div>
-<div class="line">デトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモヤユヨラ</div>
-<div class="line">リルレロワヰヱヲンヴヷヸヹヺ・ヽヾヿ</div>
-</div>
-<div data-block="Bopomofo">
-<div class="line">ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤ</div>
-<div class="line">ㄥㄦㄨㄩㄪㄫㄬㄭ</div>
-</div>
-<div data-block="Hangul">
-<div class="line">ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐ</div>
-<div class="line">ㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰ</div>
-<div class="line">ㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ</div>
-</div>
-<div data-block="Kanbun">
-<div class="line">㆐㆑㆒㆓㆔㆕㆖㆗㆘㆙㆚㆛㆜㆝㆞㆟</div>
-</div>
-<div data-block="Bopomofo">
-<div class="line">ㆠㆡㆢㆣㆤㆥㆦㆧㆨㆩㆪㆫㆬㆭㆮㆯㆰㆱㆲㆳㆴㆵㆶㆷㆸㆹㆺ</div>
-</div>
-<div data-block="CJK">
-<div class="line">㇀㇁㇂㇃㇄㇅㇆㇇㇈㇉㇊㇋㇌㇍㇎㇏㇐㇑㇒㇓㇔㇕㇖㇗㇘㇙㇚㇛㇜㇝㇞㇟</div>
-<div class="line">㇠㇡㇢㇣</div>
-</div>
-<div data-block="Enclosed">
-<div class="line">㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛㈜㈝㈞㈠</div>
-<div class="line">㈡㈢㈣㈤㈥㈦㈧㈨㈩㈪㈫㈬㈭㈮㈯㈰㈱㈲㈳㈴㈵㈶㈷㈸㈹㈺㈻㈼㈽㈾㈿㉀</div>
-<div class="line">㉁㉂㉃㉄㉅㉆㉇㉈㉉㉊㉋㉌㉍㉎㉏㉐㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㉠</div>
-<div class="line">㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻㉼㉽㉾㉿㊀</div>
-<div class="line">㊁㊂㊃㊄㊅㊆㊇㊈㊉㊊㊋㊌㊍㊎㊏㊐㊑㊒㊓㊔㊕㊖㊗㊘㊙㊚㊛㊜㊝㊞㊟㊠</div>
-<div class="line">㊡㊢㊣㊤㊥㊦㊧㊨㊩㊪㊫㊬㊭㊮㊯㊰㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿㋀</div>
-<div class="line">㋁㋂㋃㋄㋅㋆㋇㋈㋉㋊㋋㋌㋍㋎㋏㋐㋑㋒㋓㋔㋕㋖㋗㋘㋙㋚㋛㋜㋝㋞㋟㋠</div>
-<div class="line">㋡㋢㋣㋤㋥㋦㋧㋨㋩㋪㋫㋬㋭㋮㋯㋰㋱㋲㋳㋴㋵㋶㋷㋸㋹㋺㋻㋼㋽㋾</div>
-</div>
-<div data-block="CJK">
-<div class="line">㍘㍙㍚㍛㍜㍝㍞㍟㍠㍡㍢㍣㍤㍥㍦㍧㍨㍩㍪㍫㍬㍭㍮㍯㍰㍱㍲㍳㍴㍵㍶㍷</div>
-<div class="line">㍸㍹㍺㎀㎁㎂㎃㎄㎅㎆㎇㎈㎉㎊㎋㎌㎍㎎㎏㎐㎑㎒㎓㎔㎕㎖㎗㎘㎙㎚㎛㎜</div>
-<div class="line">㎝㎞㎟㎠㎡㎢㎣㎤㎥㎦㎧㎨㎩㎪㎫㎬㎭㎮㎯㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎺㎻㎼</div>
-<div class="line">㎽㎾㎿㏀㏁㏂㏃㏄㏅㏆㏇㏈㏉㏊㏋㏌㏍㏎㏏㏐㏑㏒㏓㏔㏕㏖㏗㏘㏙㏚㏛㏜</div>
-<div class="line">㏝㏞㏟㏠㏡㏢㏣㏤㏥㏦㏧㏨㏩㏪㏫㏬㏭㏮㏯㏰㏱㏲㏳㏴㏵㏶㏷㏸㏹㏺㏻㏼</div>
-<div class="line">㏽㏾㏿㐀䶵</div>
-</div>
-<div data-block="Yijing">
-<div class="line">䷀䷁䷂䷃䷄䷅䷆䷇䷈䷉䷊䷋䷌䷍䷎䷏䷐䷑䷒䷓䷔䷕䷖䷗䷘䷙䷚䷛䷜䷝䷞䷟</div>
-<div class="line">䷠䷡䷢䷣䷤䷥䷦䷧䷨䷩䷪䷫䷬䷭䷮䷯䷰䷱䷲䷳䷴䷵䷶䷷䷸䷹䷺䷻䷼䷽䷾䷿</div>
-</div>
-<div data-block="CJK">
-<div class="line">一鿌鿍鿎鿏鿐鿑鿒鿓鿔鿕</div>
-</div>
-<div data-block="Yi">
-<div class="line">ꀀꀁꀂꀃꀄꀅꀆꀇꀈꀉꀊꀋꀌꀍꀎꀏꀐꀑꀒꀓꀔꀕꀖꀗꀘꀙꀚꀛꀜꀝꀞꀟ</div>
-<div class="line">ꀠꀡꀢꀣꀤꀥꀦꀧꀨꀩꀪꀫꀬꀭꀮꀯꀰꀱꀲꀳꀴꀵꀶꀷꀸꀹꀺꀻꀼꀽꀾꀿ</div>
-<div class="line">ꁀꁁꁂꁃꁄꁅꁆꁇꁈꁉꁊꁋꁌꁍꁎꁏꁐꁑꁒꁓꁔꁕꁖꁗꁘꁙꁚꁛꁜꁝꁞꁟ</div>
-<div class="line">ꁠꁡꁢꁣꁤꁥꁦꁧꁨꁩꁪꁫꁬꁭꁮꁯꁰꁱꁲꁳꁴꁵꁶꁷꁸꁹꁺꁻꁼꁽꁾꁿ</div>
-<div class="line">ꂀꂁꂂꂃꂄꂅꂆꂇꂈꂉꂊꂋꂌꂍꂎꂏꂐꂑꂒꂓꂔꂕꂖꂗꂘꂙꂚꂛꂜꂝꂞꂟ</div>
-<div class="line">ꂠꂡꂢꂣꂤꂥꂦꂧꂨꂩꂪꂫꂬꂭꂮꂯꂰꂱꂲꂳꂴꂵꂶꂷꂸꂹꂺꂻꂼꂽꂾꂿ</div>
-<div class="line">ꃀꃁꃂꃃꃄꃅꃆꃇꃈꃉꃊꃋꃌꃍꃎꃏꃐꃑꃒꃓꃔꃕꃖꃗꃘꃙꃚꃛꃜꃝꃞꃟ</div>
-<div class="line">ꃠꃡꃢꃣꃤꃥꃦꃧꃨꃩꃪꃫꃬꃭꃮꃯꃰꃱꃲꃳꃴꃵꃶꃷꃸꃹꃺꃻꃼꃽꃾꃿ</div>
-<div class="line">ꄀꄁꄂꄃꄄꄅꄆꄇꄈꄉꄊꄋꄌꄍꄎꄏꄐꄑꄒꄓꄔꄕꄖꄗꄘꄙꄚꄛꄜꄝꄞꄟ</div>
-<div class="line">ꄠꄡꄢꄣꄤꄥꄦꄧꄨꄩꄪꄫꄬꄭꄮꄯꄰꄱꄲꄳꄴꄵꄶꄷꄸꄹꄺꄻꄼꄽꄾꄿ</div>
-<div class="line">ꅀꅁꅂꅃꅄꅅꅆꅇꅈꅉꅊꅋꅌꅍꅎꅏꅐꅑꅒꅓꅔꅕꅖꅗꅘꅙꅚꅛꅜꅝꅞꅟ</div>
-<div class="line">ꅠꅡꅢꅣꅤꅥꅦꅧꅨꅩꅪꅫꅬꅭꅮꅯꅰꅱꅲꅳꅴꅵꅶꅷꅸꅹꅺꅻꅼꅽꅾꅿ</div>
-<div class="line">ꆀꆁꆂꆃꆄꆅꆆꆇꆈꆉꆊꆋꆌꆍꆎꆏꆐꆑꆒꆓꆔꆕꆖꆗꆘꆙꆚꆛꆜꆝꆞꆟ</div>
-<div class="line">ꆠꆡꆢꆣꆤꆥꆦꆧꆨꆩꆪꆫꆬꆭꆮꆯꆰꆱꆲꆳꆴꆵꆶꆷꆸꆹꆺꆻꆼꆽꆾꆿ</div>
-<div class="line">ꇀꇁꇂꇃꇄꇅꇆꇇꇈꇉꇊꇋꇌꇍꇎꇏꇐꇑꇒꇓꇔꇕꇖꇗꇘꇙꇚꇛꇜꇝꇞꇟ</div>
-<div class="line">ꇠꇡꇢꇣꇤꇥꇦꇧꇨꇩꇪꇫꇬꇭꇮꇯꇰꇱꇲꇳꇴꇵꇶꇷꇸꇹꇺꇻꇼꇽꇾꇿ</div>
-<div class="line">ꈀꈁꈂꈃꈄꈅꈆꈇꈈꈉꈊꈋꈌꈍꈎꈏꈐꈑꈒꈓꈔꈕꈖꈗꈘꈙꈚꈛꈜꈝꈞꈟ</div>
-<div class="line">ꈠꈡꈢꈣꈤꈥꈦꈧꈨꈩꈪꈫꈬꈭꈮꈯꈰꈱꈲꈳꈴꈵꈶꈷꈸꈹꈺꈻꈼꈽꈾꈿ</div>
-<div class="line">ꉀꉁꉂꉃꉄꉅꉆꉇꉈꉉꉊꉋꉌꉍꉎꉏꉐꉑꉒꉓꉔꉕꉖꉗꉘꉙꉚꉛꉜꉝꉞꉟ</div>
-<div class="line">ꉠꉡꉢꉣꉤꉥꉦꉧꉨꉩꉪꉫꉬꉭꉮꉯꉰꉱꉲꉳꉴꉵꉶꉷꉸꉹꉺꉻꉼꉽꉾꉿ</div>
-<div class="line">ꊀꊁꊂꊃꊄꊅꊆꊇꊈꊉꊊꊋꊌꊍꊎꊏꊐꊑꊒꊓꊔꊕꊖꊗꊘꊙꊚꊛꊜꊝꊞꊟ</div>
-<div class="line">ꊠꊡꊢꊣꊤꊥꊦꊧꊨꊩꊪꊫꊬꊭꊮꊯꊰꊱꊲꊳꊴꊵꊶꊷꊸꊹꊺꊻꊼꊽꊾꊿ</div>
-<div class="line">ꋀꋁꋂꋃꋄꋅꋆꋇꋈꋉꋊꋋꋌꋍꋎꋏꋐꋑꋒꋓꋔꋕꋖꋗꋘꋙꋚꋛꋜꋝꋞꋟ</div>
-<div class="line">ꋠꋡꋢꋣꋤꋥꋦꋧꋨꋩꋪꋫꋬꋭꋮꋯꋰꋱꋲꋳꋴꋵꋶꋷꋸꋹꋺꋻꋼꋽꋾꋿ</div>
-<div class="line">ꌀꌁꌂꌃꌄꌅꌆꌇꌈꌉꌊꌋꌌꌍꌎꌏꌐꌑꌒꌓꌔꌕꌖꌗꌘꌙꌚꌛꌜꌝꌞꌟ</div>
-<div class="line">ꌠꌡꌢꌣꌤꌥꌦꌧꌨꌩꌪꌫꌬꌭꌮꌯꌰꌱꌲꌳꌴꌵꌶꌷꌸꌹꌺꌻꌼꌽꌾꌿ</div>
-<div class="line">ꍀꍁꍂꍃꍄꍅꍆꍇꍈꍉꍊꍋꍌꍍꍎꍏꍐꍑꍒꍓꍔꍕꍖꍗꍘꍙꍚꍛꍜꍝꍞꍟ</div>
-<div class="line">ꍠꍡꍢꍣꍤꍥꍦꍧꍨꍩꍪꍫꍬꍭꍮꍯꍰꍱꍲꍳꍴꍵꍶꍷꍸꍹꍺ</div>
-</div>
-</div>
-</div>
-<script src="support/text-orientation.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001l.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001l.html
deleted file mode 100644
index 3c2902a8d2b..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001l.html
+++ /dev/null
@@ -1,137 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: Test orientation of characters where vo=U (#3/6, 2048 code points in U+A37B-1338B).</title>
-<meta name="timeout" content="long">
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<meta name="assert" content="Test orientation of characters where vo=U (#3/6, 2048 code points in U+A37B-1338B)">
-<meta name="flags" content="dom">
-<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-.test {
- font: 16px/1 "orientation";
- height: 17em;
- writing-mode: vertical-rl;
-}
-.line {
- white-space: pre;
-}
-.U {
- text-orientation: upright;
-}
-.R {
- text-orientation: sideways;
-}
-#details {
- margin: 1em .5em;
-}
-summary {
- font-size: 1.2em;
- font-weight: bold;
- margin-top: .5em;
-}
-</style>
-<div id="log"></div>
-<div id="details"></div>
-<div id="container">
-<div data-vo="U" class="test">
-<div data-block="Yi">
-<div class="line">ꍻꍼꍽꍾꍿꎀꎁꎂꎃꎄꎅꎆꎇꎈꎉꎊꎋꎌꎍꎎꎏꎐꎑꎒꎓꎔꎕꎖꎗꎘꎙꎚ</div>
-<div class="line">ꎛꎜꎝꎞꎟꎠꎡꎢꎣꎤꎥꎦꎧꎨꎩꎪꎫꎬꎭꎮꎯꎰꎱꎲꎳꎴꎵꎶꎷꎸꎹꎺ</div>
-<div class="line">ꎻꎼꎽꎾꎿꏀꏁꏂꏃꏄꏅꏆꏇꏈꏉꏊꏋꏌꏍꏎꏏꏐꏑꏒꏓꏔꏕꏖꏗꏘꏙꏚ</div>
-<div class="line">ꏛꏜꏝꏞꏟꏠꏡꏢꏣꏤꏥꏦꏧꏨꏩꏪꏫꏬꏭꏮꏯꏰꏱꏲꏳꏴꏵꏶꏷꏸꏹꏺ</div>
-<div class="line">ꏻꏼꏽꏾꏿꐀꐁꐂꐃꐄꐅꐆꐇꐈꐉꐊꐋꐌꐍꐎꐏꐐꐑꐒꐓꐔꐕꐖꐗꐘꐙꐚ</div>
-<div class="line">ꐛꐜꐝꐞꐟꐠꐡꐢꐣꐤꐥꐦꐧꐨꐩꐪꐫꐬꐭꐮꐯꐰꐱꐲꐳꐴꐵꐶꐷꐸꐹꐺ</div>
-<div class="line">ꐻꐼꐽꐾꐿꑀꑁꑂꑃꑄꑅꑆꑇꑈꑉꑊꑋꑌꑍꑎꑏꑐꑑꑒꑓꑔꑕꑖꑗꑘꑙꑚ</div>
-<div class="line">ꑛꑜꑝꑞꑟꑠꑡꑢꑣꑤꑥꑦꑧꑨꑩꑪꑫꑬꑭꑮꑯꑰꑱꑲꑳꑴꑵꑶꑷꑸꑹꑺ</div>
-<div class="line">ꑻꑼꑽꑾꑿꒀꒁꒂꒃꒄꒅꒆꒇꒈꒉꒊꒋꒌ꒐꒑꒒꒓꒔꒕꒖꒗꒘꒙꒚꒛꒜꒝</div>
-<div class="line">꒞꒟꒠꒡꒢꒣꒤꒥꒦꒧꒨꒩꒪꒫꒬꒭꒮꒯꒰꒱꒲꒳꒴꒵꒶꒷꒸꒹꒺꒻꒼꒽</div>
-<div class="line">꒾꒿꓀꓁꓂꓃꓄꓅꓆</div>
-</div>
-<div data-block="Hangul">
-<div class="line">ꥠꥡꥢꥣꥤꥥꥦꥧꥨꥩꥪꥫꥬꥭꥮꥯꥰꥱꥲꥳꥴꥵꥶꥷꥸꥹꥺꥻꥼ가힣ힰ</div>
-<div class="line">ힱힲힳힴힵힶힷힸힹힺힻힼힽힾힿퟀퟁퟂퟃퟄퟅퟆퟋퟌퟍퟎퟏퟐퟑퟒퟓퟔ</div>
-<div class="line">ퟕퟖퟗퟘퟙퟚퟛퟜퟝퟞퟟퟠퟡퟢퟣퟤퟥퟦퟧퟨퟩퟪퟫퟬퟭퟮퟯퟰퟱퟲퟳퟴ</div>
-<div class="line">ퟵퟶퟷퟸퟹퟺퟻ</div>
-</div>
-<div data-block="CJK">
-<div class="line">豈更車賈滑串句龜龜契金喇奈懶癩羅蘿螺裸邏樂洛烙珞落酪駱亂卵欄爛蘭</div>
-<div class="line">鸞嵐濫藍襤拉臘蠟廊朗浪狼郎來冷勞擄櫓爐盧老蘆虜路露魯鷺碌祿綠菉錄</div>
-<div class="line">鹿論壟弄籠聾牢磊賂雷壘屢樓淚漏累縷陋勒肋凜凌稜綾菱陵讀拏樂諾丹寧</div>
-<div class="line">怒率異北磻便復不泌數索參塞省葉說殺辰沈拾若掠略亮兩凉梁糧良諒量勵</div>
-<div class="line">呂女廬旅濾礪閭驪麗黎力曆歷轢年憐戀撚漣煉璉秊練聯輦蓮連鍊列劣咽烈</div>
-<div class="line">裂說廉念捻殮簾獵令囹寧嶺怜玲瑩羚聆鈴零靈領例禮醴隸惡了僚寮尿料樂</div>
-<div class="line">燎療蓼遼龍暈阮劉杻柳流溜琉留硫紐類六戮陸倫崙淪輪律慄栗率隆利吏履</div>
-<div class="line">易李梨泥理痢罹裏裡里離匿溺吝燐璘藺隣鱗麟林淋臨立笠粒狀炙識什茶刺</div>
-<div class="line">切度拓糖宅洞暴輻行降見廓兀嗀﨎﨏塚﨑晴﨓﨔凞猪益礼神祥福靖精羽﨟</div>
-<div class="line">蘒﨡諸﨣﨤逸都﨧﨨﨩飯飼館鶴郞隷侮僧免勉勤卑喝嘆器塀墨層屮悔慨憎</div>
-<div class="line">懲敏既暑梅海渚漢煮爫琢碑社祉祈祐祖祝禍禎穀突節練縉繁署者臭艹艹著</div>
-<div class="line">褐視謁謹賓贈辶逸難響頻恵𤋮舘並况全侀充冀勇勺喝啕喙嗢塚墳奄奔婢嬨</div>
-<div class="line">廒廙彩徭惘慎愈憎慠懲戴揄搜摒敖晴朗望杖歹殺流滛滋漢瀞煮瞧爵犯猪瑱</div>
-<div class="line">甆画瘝瘟益盛直睊着磌窱節类絛練缾者荒華蝹襁覆視調諸請謁諾諭謹變贈</div>
-<div class="line">輸遲醙鉶陼難靖韛響頋頻鬒龜𢡊𢡄𣏕㮝䀘䀹𥉉𥳐𧻓齃龎</div>
-</div>
-<div data-block="Vertical">
-<div class="line">︐︑︒︓︔︕︖︗︘︙</div>
-</div>
-<div data-block="CJK">
-<div class="line">︰︱︲︳︴︵︶︷︸︹︺︻︼︽︾︿﹀﹁﹂﹃﹄﹅﹆﹇﹈</div>
-</div>
-<div data-block="Small">
-<div class="line">﹔﹕﹖﹗﹟﹠﹡﹢﹨﹩﹪﹫</div>
-</div>
-<div data-block="Halfwidth">
-<div class="line">"#$%&'*+/0123456789@ABCDEFGHIJKL</div>
-<div class="line">MNOPQRSTUVWXYZ\^`abcdefghijklmno</div>
-<div class="line">pqrstuvwxyz¢£¬¦¥₩</div>
-</div>
-<div data-block="Specials">
-<div class="line">�</div>
-</div>
-<div data-block="Meroitic">
-<div class="line">𐦀𐦁𐦂𐦃𐦄𐦅𐦆𐦇𐦈𐦉𐦊𐦋𐦌𐦍𐦎𐦏𐦐𐦑𐦒𐦓𐦔𐦕𐦖𐦗𐦘𐦙𐦚𐦛𐦜𐦝𐦞𐦟</div>
-</div>
-<div data-block="Siddham">
-<div class="line">𑖀𑖁𑖂𑖃𑖄𑖅𑖆𑖇𑖈𑖉𑖊𑖋𑖌𑖍𑖎𑖏𑖐𑖑𑖒𑖓𑖔𑖕𑖖𑖗𑖘𑖙𑖚𑖛𑖜𑖝𑖞𑖟</div>
-<div class="line">𑖠𑖡𑖢𑖣𑖤𑖥𑖦𑖧𑖨𑖩𑖪𑖫𑖬𑖭𑖮𑗁𑗂𑗃𑗄𑗅𑗆𑗇𑗈𑗉𑗊𑗋𑗌𑗍𑗎𑗏𑗐𑗑</div>
-<div class="line">𑗒𑗓𑗔𑗕𑗖𑗗𑗘𑗙𑗚𑗛</div>
-</div>
-<div data-block="Egyptian">
-<div class="line">𓀀𓀁𓀂𓀃𓀄𓀅𓀆𓀇𓀈𓀉𓀊𓀋𓀌𓀍𓀎𓀏𓀐𓀑𓀒𓀓𓀔𓀕𓀖𓀗𓀘𓀙𓀚𓀛𓀜𓀝𓀞𓀟</div>
-<div class="line">𓀠𓀡𓀢𓀣𓀤𓀥𓀦𓀧𓀨𓀩𓀪𓀫𓀬𓀭𓀮𓀯𓀰𓀱𓀲𓀳𓀴𓀵𓀶𓀷𓀸𓀹𓀺𓀻𓀼𓀽𓀾𓀿</div>
-<div class="line">𓁀𓁁𓁂𓁃𓁄𓁅𓁆𓁇𓁈𓁉𓁊𓁋𓁌𓁍𓁎𓁏𓁐𓁑𓁒𓁓𓁔𓁕𓁖𓁗𓁘𓁙𓁚𓁛𓁜𓁝𓁞𓁟</div>
-<div class="line">𓁠𓁡𓁢𓁣𓁤𓁥𓁦𓁧𓁨𓁩𓁪𓁫𓁬𓁭𓁮𓁯𓁰𓁱𓁲𓁳𓁴𓁵𓁶𓁷𓁸𓁹𓁺𓁻𓁼𓁽𓁾𓁿</div>
-<div class="line">𓂀𓂁𓂂𓂃𓂄𓂅𓂆𓂇𓂈𓂉𓂊𓂋𓂌𓂍𓂎𓂏𓂐𓂑𓂒𓂓𓂔𓂕𓂖𓂗𓂘𓂙𓂚𓂛𓂜𓂝𓂞𓂟</div>
-<div class="line">𓂠𓂡𓂢𓂣𓂤𓂥𓂦𓂧𓂨𓂩𓂪𓂫𓂬𓂭𓂮𓂯𓂰𓂱𓂲𓂳𓂴𓂵𓂶𓂷𓂸𓂹𓂺𓂻𓂼𓂽𓂾𓂿</div>
-<div class="line">𓃀𓃁𓃂𓃃𓃄𓃅𓃆𓃇𓃈𓃉𓃊𓃋𓃌𓃍𓃎𓃏𓃐𓃑𓃒𓃓𓃔𓃕𓃖𓃗𓃘𓃙𓃚𓃛𓃜𓃝𓃞𓃟</div>
-<div class="line">𓃠𓃡𓃢𓃣𓃤𓃥𓃦𓃧𓃨𓃩𓃪𓃫𓃬𓃭𓃮𓃯𓃰𓃱𓃲𓃳𓃴𓃵𓃶𓃷𓃸𓃹𓃺𓃻𓃼𓃽𓃾𓃿</div>
-<div class="line">𓄀𓄁𓄂𓄃𓄄𓄅𓄆𓄇𓄈𓄉𓄊𓄋𓄌𓄍𓄎𓄏𓄐𓄑𓄒𓄓𓄔𓄕𓄖𓄗𓄘𓄙𓄚𓄛𓄜𓄝𓄞𓄟</div>
-<div class="line">𓄠𓄡𓄢𓄣𓄤𓄥𓄦𓄧𓄨𓄩𓄪𓄫𓄬𓄭𓄮𓄯𓄰𓄱𓄲𓄳𓄴𓄵𓄶𓄷𓄸𓄹𓄺𓄻𓄼𓄽𓄾𓄿</div>
-<div class="line">𓅀𓅁𓅂𓅃𓅄𓅅𓅆𓅇𓅈𓅉𓅊𓅋𓅌𓅍𓅎𓅏𓅐𓅑𓅒𓅓𓅔𓅕𓅖𓅗𓅘𓅙𓅚𓅛𓅜𓅝𓅞𓅟</div>
-<div class="line">𓅠𓅡𓅢𓅣𓅤𓅥𓅦𓅧𓅨𓅩𓅪𓅫𓅬𓅭𓅮𓅯𓅰𓅱𓅲𓅳𓅴𓅵𓅶𓅷𓅸𓅹𓅺𓅻𓅼𓅽𓅾𓅿</div>
-<div class="line">𓆀𓆁𓆂𓆃𓆄𓆅𓆆𓆇𓆈𓆉𓆊𓆋𓆌𓆍𓆎𓆏𓆐𓆑𓆒𓆓𓆔𓆕𓆖𓆗𓆘𓆙𓆚𓆛𓆜𓆝𓆞𓆟</div>
-<div class="line">𓆠𓆡𓆢𓆣𓆤𓆥𓆦𓆧𓆨𓆩𓆪𓆫𓆬𓆭𓆮𓆯𓆰𓆱𓆲𓆳𓆴𓆵𓆶𓆷𓆸𓆹𓆺𓆻𓆼𓆽𓆾𓆿</div>
-<div class="line">𓇀𓇁𓇂𓇃𓇄𓇅𓇆𓇇𓇈𓇉𓇊𓇋𓇌𓇍𓇎𓇏𓇐𓇑𓇒𓇓𓇔𓇕𓇖𓇗𓇘𓇙𓇚𓇛𓇜𓇝𓇞𓇟</div>
-<div class="line">𓇠𓇡𓇢𓇣𓇤𓇥𓇦𓇧𓇨𓇩𓇪𓇫𓇬𓇭𓇮𓇯𓇰𓇱𓇲𓇳𓇴𓇵𓇶𓇷𓇸𓇹𓇺𓇻𓇼𓇽𓇾𓇿</div>
-<div class="line">𓈀𓈁𓈂𓈃𓈄𓈅𓈆𓈇𓈈𓈉𓈊𓈋𓈌𓈍𓈎𓈏𓈐𓈑𓈒𓈓𓈔𓈕𓈖𓈗𓈘𓈙𓈚𓈛𓈜𓈝𓈞𓈟</div>
-<div class="line">𓈠𓈡𓈢𓈣𓈤𓈥𓈦𓈧𓈨𓈩𓈪𓈫𓈬𓈭𓈮𓈯𓈰𓈱𓈲𓈳𓈴𓈵𓈶𓈷𓈸𓈹𓈺𓈻𓈼𓈽𓈾𓈿</div>
-<div class="line">𓉀𓉁𓉂𓉃𓉄𓉅𓉆𓉇𓉈𓉉𓉊𓉋𓉌𓉍𓉎𓉏𓉐𓉑𓉒𓉓𓉔𓉕𓉖𓉗𓉘𓉙𓉚𓉛𓉜𓉝𓉞𓉟</div>
-<div class="line">𓉠𓉡𓉢𓉣𓉤𓉥𓉦𓉧𓉨𓉩𓉪𓉫𓉬𓉭𓉮𓉯𓉰𓉱𓉲𓉳𓉴𓉵𓉶𓉷𓉸𓉹𓉺𓉻𓉼𓉽𓉾𓉿</div>
-<div class="line">𓊀𓊁𓊂𓊃𓊄𓊅𓊆𓊇𓊈𓊉𓊊𓊋𓊌𓊍𓊎𓊏𓊐𓊑𓊒𓊓𓊔𓊕𓊖𓊗𓊘𓊙𓊚𓊛𓊜𓊝𓊞𓊟</div>
-<div class="line">𓊠𓊡𓊢𓊣𓊤𓊥𓊦𓊧𓊨𓊩𓊪𓊫𓊬𓊭𓊮𓊯𓊰𓊱𓊲𓊳𓊴𓊵𓊶𓊷𓊸𓊹𓊺𓊻𓊼𓊽𓊾𓊿</div>
-<div class="line">𓋀𓋁𓋂𓋃𓋄𓋅𓋆𓋇𓋈𓋉𓋊𓋋𓋌𓋍𓋎𓋏𓋐𓋑𓋒𓋓𓋔𓋕𓋖𓋗𓋘𓋙𓋚𓋛𓋜𓋝𓋞𓋟</div>
-<div class="line">𓋠𓋡𓋢𓋣𓋤𓋥𓋦𓋧𓋨𓋩𓋪𓋫𓋬𓋭𓋮𓋯𓋰𓋱𓋲𓋳𓋴𓋵𓋶𓋷𓋸𓋹𓋺𓋻𓋼𓋽𓋾𓋿</div>
-<div class="line">𓌀𓌁𓌂𓌃𓌄𓌅𓌆𓌇𓌈𓌉𓌊𓌋𓌌𓌍𓌎𓌏𓌐𓌑𓌒𓌓𓌔𓌕𓌖𓌗𓌘𓌙𓌚𓌛𓌜𓌝𓌞𓌟</div>
-<div class="line">𓌠𓌡𓌢𓌣𓌤𓌥𓌦𓌧𓌨𓌩𓌪𓌫𓌬𓌭𓌮𓌯𓌰𓌱𓌲𓌳𓌴𓌵𓌶𓌷𓌸𓌹𓌺𓌻𓌼𓌽𓌾𓌿</div>
-<div class="line">𓍀𓍁𓍂𓍃𓍄𓍅𓍆𓍇𓍈𓍉𓍊𓍋𓍌𓍍𓍎𓍏𓍐𓍑𓍒𓍓𓍔𓍕𓍖𓍗𓍘𓍙𓍚𓍛𓍜𓍝𓍞𓍟</div>
-<div class="line">𓍠𓍡𓍢𓍣𓍤𓍥𓍦𓍧𓍨𓍩𓍪𓍫𓍬𓍭𓍮𓍯𓍰𓍱𓍲𓍳𓍴𓍵𓍶𓍷𓍸𓍹𓍺𓍻𓍼𓍽𓍾𓍿</div>
-<div class="line">𓎀𓎁𓎂𓎃𓎄𓎅𓎆𓎇𓎈𓎉𓎊𓎋</div>
-</div>
-</div>
-</div>
-<script src="support/text-orientation.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001m.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001m.html
deleted file mode 100644
index d2f568126f2..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001m.html
+++ /dev/null
@@ -1,144 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: Test orientation of characters where vo=U (#4/6, 2048 code points in U+1338C-1F0E1).</title>
-<meta name="timeout" content="long">
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<meta name="assert" content="Test orientation of characters where vo=U (#4/6, 2048 code points in U+1338C-1F0E1)">
-<meta name="flags" content="dom">
-<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-.test {
- font: 16px/1 "orientation";
- height: 17em;
- writing-mode: vertical-rl;
-}
-.line {
- white-space: pre;
-}
-.U {
- text-orientation: upright;
-}
-.R {
- text-orientation: sideways;
-}
-#details {
- margin: 1em .5em;
-}
-summary {
- font-size: 1.2em;
- font-weight: bold;
- margin-top: .5em;
-}
-</style>
-<div id="log"></div>
-<div id="details"></div>
-<div id="container">
-<div data-vo="U" class="test">
-<div data-block="Egyptian">
-<div class="line">𓎌𓎍𓎎𓎏𓎐𓎑𓎒𓎓𓎔𓎕𓎖𓎗𓎘𓎙𓎚𓎛𓎜𓎝𓎞𓎟𓎠𓎡𓎢𓎣𓎤𓎥𓎦𓎧𓎨𓎩𓎪𓎫</div>
-<div class="line">𓎬𓎭𓎮𓎯𓎰𓎱𓎲𓎳𓎴𓎵𓎶𓎷𓎸𓎹𓎺𓎻𓎼𓎽𓎾𓎿𓏀𓏁𓏂𓏃𓏄𓏅𓏆𓏇𓏈𓏉𓏊𓏋</div>
-<div class="line">𓏌𓏍𓏎𓏏𓏐𓏑𓏒𓏓𓏔𓏕𓏖𓏗𓏘𓏙𓏚𓏛𓏜𓏝𓏞𓏟𓏠𓏡𓏢𓏣𓏤𓏥𓏦𓏧𓏨𓏩𓏪𓏫</div>
-<div class="line">𓏬𓏭𓏮𓏯𓏰𓏱𓏲𓏳𓏴𓏵𓏶𓏷𓏸𓏹𓏺𓏻𓏼𓏽𓏾𓏿𓐀𓐁𓐂𓐃𓐄𓐅𓐆𓐇𓐈𓐉𓐊𓐋</div>
-<div class="line">𓐌𓐍𓐎𓐏𓐐𓐑𓐒𓐓𓐔𓐕𓐖𓐗𓐘𓐙𓐚𓐛𓐜𓐝𓐞𓐟𓐠𓐡𓐢𓐣𓐤𓐥𓐦𓐧𓐨𓐩𓐪𓐫</div>
-<div class="line">𓐬𓐭𓐮</div>
-</div>
-<div data-block="Anatolian">
-<div class="line">𔐀𔐁𔐂𔐃𔐄𔐅𔐆𔐇𔐈𔐉𔐊𔐋𔐌𔐍𔐎𔐏𔐐𔐑𔐒𔐓𔐔𔐕𔐖𔐗𔐘𔐙𔐚𔐛𔐜𔐝𔐞𔐟</div>
-<div class="line">𔐠𔐡𔐢𔐣𔐤𔐥𔐦𔐧𔐨𔐩𔐪𔐫𔐬𔐭𔐮𔐯𔐰𔐱𔐲𔐳𔐴𔐵𔐶𔐷𔐸𔐹𔐺𔐻𔐼𔐽𔐾𔐿</div>
-<div class="line">𔑀𔑁𔑂𔑃𔑄𔑅𔑆𔑇𔑈𔑉𔑊𔑋𔑌𔑍𔑎𔑏𔑐𔑑𔑒𔑓𔑔𔑕𔑖𔑗𔑘𔑙𔑚𔑛𔑜𔑝𔑞𔑟</div>
-<div class="line">𔑠𔑡𔑢𔑣𔑤𔑥𔑦𔑧𔑨𔑩𔑪𔑫𔑬𔑭𔑮𔑯𔑰𔑱𔑲𔑳𔑴𔑵𔑶𔑷𔑸𔑹𔑺𔑻𔑼𔑽𔑾𔑿</div>
-<div class="line">𔒀𔒁𔒂𔒃𔒄𔒅𔒆𔒇𔒈𔒉𔒊𔒋𔒌𔒍𔒎𔒏𔒐𔒑𔒒𔒓𔒔𔒕𔒖𔒗𔒘𔒙𔒚𔒛𔒜𔒝𔒞𔒟</div>
-<div class="line">𔒠𔒡𔒢𔒣𔒤𔒥𔒦𔒧𔒨𔒩𔒪𔒫𔒬𔒭𔒮𔒯𔒰𔒱𔒲𔒳𔒴𔒵𔒶𔒷𔒸𔒹𔒺𔒻𔒼𔒽𔒾𔒿</div>
-<div class="line">𔓀𔓁𔓂𔓃𔓄𔓅𔓆𔓇𔓈𔓉𔓊𔓋𔓌𔓍𔓎𔓏𔓐𔓑𔓒𔓓𔓔𔓕𔓖𔓗𔓘𔓙𔓚𔓛𔓜𔓝𔓞𔓟</div>
-<div class="line">𔓠𔓡𔓢𔓣𔓤𔓥𔓦𔓧𔓨𔓩𔓪𔓫𔓬𔓭𔓮𔓯𔓰𔓱𔓲𔓳𔓴𔓵𔓶𔓷𔓸𔓹𔓺𔓻𔓼𔓽𔓾𔓿</div>
-<div class="line">𔔀𔔁𔔂𔔃𔔄𔔅𔔆𔔇𔔈𔔉𔔊𔔋𔔌𔔍𔔎𔔏𔔐𔔑𔔒𔔓𔔔𔔕𔔖𔔗𔔘𔔙𔔚𔔛𔔜𔔝𔔞𔔟</div>
-<div class="line">𔔠𔔡𔔢𔔣𔔤𔔥𔔦𔔧𔔨𔔩𔔪𔔫𔔬𔔭𔔮𔔯𔔰𔔱𔔲𔔳𔔴𔔵𔔶𔔷𔔸𔔹𔔺𔔻𔔼𔔽𔔾𔔿</div>
-<div class="line">𔕀𔕁𔕂𔕃𔕄𔕅𔕆𔕇𔕈𔕉𔕊𔕋𔕌𔕍𔕎𔕏𔕐𔕑𔕒𔕓𔕔𔕕𔕖𔕗𔕘𔕙𔕚𔕛𔕜𔕝𔕞𔕟</div>
-<div class="line">𔕠𔕡𔕢𔕣𔕤𔕥𔕦𔕧𔕨𔕩𔕪𔕫𔕬𔕭𔕮𔕯𔕰𔕱𔕲𔕳𔕴𔕵𔕶𔕷𔕸𔕹𔕺𔕻𔕼𔕽𔕾𔕿</div>
-<div class="line">𔖀𔖁𔖂𔖃𔖄𔖅𔖆𔖇𔖈𔖉𔖊𔖋𔖌𔖍𔖎𔖏𔖐𔖑𔖒𔖓𔖔𔖕𔖖𔖗𔖘𔖙𔖚𔖛𔖜𔖝𔖞𔖟</div>
-<div class="line">𔖠𔖡𔖢𔖣𔖤𔖥𔖦𔖧𔖨𔖩𔖪𔖫𔖬𔖭𔖮𔖯𔖰𔖱𔖲𔖳𔖴𔖵𔖶𔖷𔖸𔖹𔖺𔖻𔖼𔖽𔖾𔖿</div>
-<div class="line">𔗀𔗁𔗂𔗃𔗄𔗅𔗆𔗇𔗈𔗉𔗊𔗋𔗌𔗍𔗎𔗏𔗐𔗑𔗒𔗓𔗔𔗕𔗖𔗗𔗘𔗙𔗚𔗛𔗜𔗝𔗞𔗟</div>
-<div class="line">𔗠𔗡𔗢𔗣𔗤𔗥𔗦𔗧𔗨𔗩𔗪𔗫𔗬𔗭𔗮𔗯𔗰𔗱𔗲𔗳𔗴𔗵𔗶𔗷𔗸𔗹𔗺𔗻𔗼𔗽𔗾𔗿</div>
-<div class="line">𔘀𔘁𔘂𔘃𔘄𔘅𔘆𔘇𔘈𔘉𔘊𔘋𔘌𔘍𔘎𔘏𔘐𔘑𔘒𔘓𔘔𔘕𔘖𔘗𔘘𔘙𔘚𔘛𔘜𔘝𔘞𔘟</div>
-<div class="line">𔘠𔘡𔘢𔘣𔘤𔘥𔘦𔘧𔘨𔘩𔘪𔘫𔘬𔘭𔘮𔘯𔘰𔘱𔘲𔘳𔘴𔘵𔘶𔘷𔘸𔘹𔘺𔘻𔘼𔘽𔘾𔘿</div>
-<div class="line">𔙀𔙁𔙂𔙃𔙄𔙅𔙆</div>
-</div>
-<div data-block="Ideographic">
-<div class="line">𖿠</div>
-</div>
-<div data-block="Tangut">
-<div class="line">𗀀𘟬𘠀𘫲</div>
-</div>
-<div data-block="Kana">
-<div class="line">𛀀𛀁</div>
-</div>
-<div data-block="Byzantine">
-<div class="line">𝀀𝀁𝀂𝀃𝀄𝀅𝀆𝀇𝀈𝀉𝀊𝀋𝀌𝀍𝀎𝀏𝀐𝀑𝀒𝀓𝀔𝀕𝀖𝀗𝀘𝀙𝀚𝀛𝀜𝀝𝀞𝀟</div>
-<div class="line">𝀠𝀡𝀢𝀣𝀤𝀥𝀦𝀧𝀨𝀩𝀪𝀫𝀬𝀭𝀮𝀯𝀰𝀱𝀲𝀳𝀴𝀵𝀶𝀷𝀸𝀹𝀺𝀻𝀼𝀽𝀾𝀿</div>
-<div class="line">𝁀𝁁𝁂𝁃𝁄𝁅𝁆𝁇𝁈𝁉𝁊𝁋𝁌𝁍𝁎𝁏𝁐𝁑𝁒𝁓𝁔𝁕𝁖𝁗𝁘𝁙𝁚𝁛𝁜𝁝𝁞𝁟</div>
-<div class="line">𝁠𝁡𝁢𝁣𝁤𝁥𝁦𝁧𝁨𝁩𝁪𝁫𝁬𝁭𝁮𝁯𝁰𝁱𝁲𝁳𝁴𝁵𝁶𝁷𝁸𝁹𝁺𝁻𝁼𝁽𝁾𝁿</div>
-<div class="line">𝂀𝂁𝂂𝂃𝂄𝂅𝂆𝂇𝂈𝂉𝂊𝂋𝂌𝂍𝂎𝂏𝂐𝂑𝂒𝂓𝂔𝂕𝂖𝂗𝂘𝂙𝂚𝂛𝂜𝂝𝂞𝂟</div>
-<div class="line">𝂠𝂡𝂢𝂣𝂤𝂥𝂦𝂧𝂨𝂩𝂪𝂫𝂬𝂭𝂮𝂯𝂰𝂱𝂲𝂳𝂴𝂵𝂶𝂷𝂸𝂹𝂺𝂻𝂼𝂽𝂾𝂿</div>
-<div class="line">𝃀𝃁𝃂𝃃𝃄𝃅𝃆𝃇𝃈𝃉𝃊𝃋𝃌𝃍𝃎𝃏𝃐𝃑𝃒𝃓𝃔𝃕𝃖𝃗𝃘𝃙𝃚𝃛𝃜𝃝𝃞𝃟</div>
-<div class="line">𝃠𝃡𝃢𝃣𝃤𝃥𝃦𝃧𝃨𝃩𝃪𝃫𝃬𝃭𝃮𝃯𝃰𝃱𝃲𝃳𝃴𝃵</div>
-</div>
-<div data-block="Musical">
-<div class="line">𝄀𝄁𝄂𝄃𝄄𝄅𝄆𝄇𝄈𝄉𝄊𝄋𝄌𝄍𝄎𝄏𝄐𝄑𝄒𝄓𝄔𝄕𝄖𝄗𝄘𝄙𝄚𝄛𝄜𝄝𝄞𝄟</div>
-<div class="line">𝄠𝄡𝄢𝄣𝄤𝄥𝄦𝄩𝄪𝄫𝄬𝄭𝄮𝄯𝄰𝄱𝄲𝄳𝄴𝄵𝄶𝄷𝄸𝄹𝄺𝄻𝄼𝄽𝄾𝄿𝅀𝅁</div>
-<div class="line">𝅂𝅃𝅄𝅅𝅆𝅇𝅈𝅉𝅊𝅋𝅌𝅍𝅎𝅏𝅐𝅑𝅒𝅓𝅔𝅕𝅖𝅗𝅘𝅙𝅚𝅛𝅜𝅝𝅗𝅥𝅘𝅥𝅘𝅥𝅮𝅘𝅥𝅯</div>
-<div class="line">𝅘𝅥𝅰𝅘𝅥𝅱𝅘𝅥𝅲𝅪𝅫𝅬𝆃𝆄𝆌𝆍𝆎𝆏𝆐𝆑𝆒𝆓𝆔𝆕𝆖𝆗𝆘𝆙𝆚𝆛𝆜𝆝𝆞𝆟𝆠𝆡𝆢𝆣</div>
-<div class="line">𝆤𝆥𝆦𝆧𝆨𝆩𝆮𝆯𝆰𝆱𝆲𝆳𝆴𝆵𝆶𝆷𝆸𝆹𝆺𝆹𝅥𝆺𝅥𝆹𝅥𝅮𝆺𝅥𝅮𝆹𝅥𝅯𝆺𝅥𝅯𝇁𝇂𝇃𝇄𝇅𝇆𝇇</div>
-<div class="line">𝇈𝇉𝇊𝇋𝇌𝇍𝇎𝇏𝇐𝇑𝇒𝇓𝇔𝇕𝇖𝇗𝇘𝇙𝇚𝇛𝇜𝇝𝇞𝇟𝇠𝇡𝇢𝇣𝇤𝇥𝇦𝇧</div>
-<div class="line">𝇨</div>
-</div>
-<div data-block="Tai">
-<div class="line">𝌀𝌁𝌂𝌃𝌄𝌅𝌆𝌇𝌈𝌉𝌊𝌋𝌌𝌍𝌎𝌏𝌐𝌑𝌒𝌓𝌔𝌕𝌖𝌗𝌘𝌙𝌚𝌛𝌜𝌝𝌞𝌟</div>
-<div class="line">𝌠𝌡𝌢𝌣𝌤𝌥𝌦𝌧𝌨𝌩𝌪𝌫𝌬𝌭𝌮𝌯𝌰𝌱𝌲𝌳𝌴𝌵𝌶𝌷𝌸𝌹𝌺𝌻𝌼𝌽𝌾𝌿</div>
-<div class="line">𝍀𝍁𝍂𝍃𝍄𝍅𝍆𝍇𝍈𝍉𝍊𝍋𝍌𝍍𝍎𝍏𝍐𝍑𝍒𝍓𝍔𝍕𝍖</div>
-</div>
-<div data-block="Counting">
-<div class="line">𝍠𝍡𝍢𝍣𝍤𝍥𝍦𝍧𝍨𝍩𝍪𝍫𝍬𝍭𝍮𝍯𝍰𝍱</div>
-</div>
-<div data-block="Sutton">
-<div class="line">𝠀𝠁𝠂𝠃𝠄𝠅𝠆𝠇𝠈𝠉𝠊𝠋𝠌𝠍𝠎𝠏𝠐𝠑𝠒𝠓𝠔𝠕𝠖𝠗𝠘𝠙𝠚𝠛𝠜𝠝𝠞𝠟</div>
-<div class="line">𝠠𝠡𝠢𝠣𝠤𝠥𝠦𝠧𝠨𝠩𝠪𝠫𝠬𝠭𝠮𝠯𝠰𝠱𝠲𝠳𝠴𝠵𝠶𝠷𝠸𝠹𝠺𝠻𝠼𝠽𝠾𝠿</div>
-<div class="line">𝡀𝡁𝡂𝡃𝡄𝡅𝡆𝡇𝡈𝡉𝡊𝡋𝡌𝡍𝡎𝡏𝡐𝡑𝡒𝡓𝡔𝡕𝡖𝡗𝡘𝡙𝡚𝡛𝡜𝡝𝡞𝡟</div>
-<div class="line">𝡠𝡡𝡢𝡣𝡤𝡥𝡦𝡧𝡨𝡩𝡪𝡫𝡬𝡭𝡮𝡯𝡰𝡱𝡲𝡳𝡴𝡵𝡶𝡷𝡸𝡹𝡺𝡻𝡼𝡽𝡾𝡿</div>
-<div class="line">𝢀𝢁𝢂𝢃𝢄𝢅𝢆𝢇𝢈𝢉𝢊𝢋𝢌𝢍𝢎𝢏𝢐𝢑𝢒𝢓𝢔𝢕𝢖𝢗𝢘𝢙𝢚𝢛𝢜𝢝𝢞𝢟</div>
-<div class="line">𝢠𝢡𝢢𝢣𝢤𝢥𝢦𝢧𝢨𝢩𝢪𝢫𝢬𝢭𝢮𝢯𝢰𝢱𝢲𝢳𝢴𝢵𝢶𝢷𝢸𝢹𝢺𝢻𝢼𝢽𝢾𝢿</div>
-<div class="line">𝣀𝣁𝣂𝣃𝣄𝣅𝣆𝣇𝣈𝣉𝣊𝣋𝣌𝣍𝣎𝣏𝣐𝣑𝣒𝣓𝣔𝣕𝣖𝣗𝣘𝣙𝣚𝣛𝣜𝣝𝣞𝣟</div>
-<div class="line">𝣠𝣡𝣢𝣣𝣤𝣥𝣦𝣧𝣨𝣩𝣪𝣫𝣬𝣭𝣮𝣯𝣰𝣱𝣲𝣳𝣴𝣵𝣶𝣷𝣸𝣹𝣺𝣻𝣼𝣽𝣾𝣿</div>
-<div class="line">𝤀𝤁𝤂𝤃𝤄𝤅𝤆𝤇𝤈𝤉𝤊𝤋𝤌𝤍𝤎𝤏𝤐𝤑𝤒𝤓𝤔𝤕𝤖𝤗𝤘𝤙𝤚𝤛𝤜𝤝𝤞𝤟</div>
-<div class="line">𝤠𝤡𝤢𝤣𝤤𝤥𝤦𝤧𝤨𝤩𝤪𝤫𝤬𝤭𝤮𝤯𝤰𝤱𝤲𝤳𝤴𝤵𝤶𝤷𝤸𝤹𝤺𝤻𝤼𝤽𝤾𝤿</div>
-<div class="line">𝥀𝥁𝥂𝥃𝥄𝥅𝥆𝥇𝥈𝥉𝥊𝥋𝥌𝥍𝥎𝥏𝥐𝥑𝥒𝥓𝥔𝥕𝥖𝥗𝥘𝥙𝥚𝥛𝥜𝥝𝥞𝥟</div>
-<div class="line">𝥠𝥡𝥢𝥣𝥤𝥥𝥦𝥧𝥨𝥩𝥪𝥫𝥬𝥭𝥮𝥯𝥰𝥱𝥲𝥳𝥴𝥵𝥶𝥷𝥸𝥹𝥺𝥻𝥼𝥽𝥾𝥿</div>
-<div class="line">𝦀𝦁𝦂𝦃𝦄𝦅𝦆𝦇𝦈𝦉𝦊𝦋𝦌𝦍𝦎𝦏𝦐𝦑𝦒𝦓𝦔𝦕𝦖𝦗𝦘𝦙𝦚𝦛𝦜𝦝𝦞𝦟</div>
-<div class="line">𝦠𝦡𝦢𝦣𝦤𝦥𝦦𝦧𝦨𝦩𝦪𝦫𝦬𝦭𝦮𝦯𝦰𝦱𝦲𝦳𝦴𝦵𝦶𝦷𝦸𝦹𝦺𝦻𝦼𝦽𝦾𝦿</div>
-<div class="line">𝧀𝧁𝧂𝧃𝧄𝧅𝧆𝧇𝧈𝧉𝧊𝧋𝧌𝧍𝧎𝧏𝧐𝧑𝧒𝧓𝧔𝧕𝧖𝧗𝧘𝧙𝧚𝧛𝧜𝧝𝧞𝧟</div>
-<div class="line">𝧠𝧡𝧢𝧣𝧤𝧥𝧦𝧧𝧨𝧩𝧪𝧫𝧬𝧭𝧮𝧯𝧰𝧱𝧲𝧳𝧴𝧵𝧶𝧷𝧸𝧹𝧺𝧻𝧼𝧽𝧾𝧿</div>
-<div class="line">𝨷𝨸𝨹𝨺𝩭𝩮𝩯𝩰𝩱𝩲𝩳𝩴𝩶𝩷𝩸𝩹𝩺𝩻𝩼𝩽𝩾𝩿𝪀𝪁𝪂𝪃𝪅𝪆𝪇𝪈𝪉𝪊</div>
-<div class="line">𝪋</div>
-</div>
-<div data-block="Mahjong">
-<div class="line">🀀🀁🀂🀃🀄🀅🀆🀇🀈🀉🀊🀋🀌🀍🀎🀏🀐🀑🀒🀓🀔🀕🀖🀗🀘🀙🀚🀛🀜🀝🀞🀟</div>
-<div class="line">🀠🀡🀢🀣🀤🀥🀦🀧🀨🀩🀪🀫</div>
-</div>
-<div data-block="Domino">
-<div class="line">🀰🀱🀲🀳🀴🀵🀶🀷🀸🀹🀺🀻🀼🀽🀾🀿🁀🁁🁂🁃🁄🁅🁆🁇🁈🁉🁊🁋🁌🁍🁎🁏</div>
-<div class="line">🁐🁑🁒🁓🁔🁕🁖🁗🁘🁙🁚🁛🁜🁝🁞🁟🁠🁡🁢🁣🁤🁥🁦🁧🁨🁩🁪🁫🁬🁭🁮🁯</div>
-<div class="line">🁰🁱🁲🁳🁴🁵🁶🁷🁸🁹🁺🁻🁼🁽🁾🁿🂀🂁🂂🂃🂄🂅🂆🂇🂈🂉🂊🂋🂌🂍🂎🂏</div>
-<div class="line">🂐🂑🂒🂓</div>
-</div>
-<div data-block="Playing">
-<div class="line">🂠🂡🂢🂣🂤🂥🂦🂧🂨🂩🂪🂫🂬🂭🂮🂱🂲🂳🂴🂵🂶🂷🂸🂹🂺🂻🂼🂽🂾🂿🃁🃂</div>
-<div class="line">🃃🃄🃅🃆🃇🃈🃉🃊🃋🃌🃍🃎🃏🃑🃒🃓🃔🃕🃖🃗🃘🃙🃚🃛🃜🃝🃞🃟🃠🃡</div>
-</div>
-</div>
-</div>
-<script src="support/text-orientation.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001n.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001n.html
deleted file mode 100644
index 7f5af1f1487..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001n.html
+++ /dev/null
@@ -1,133 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: Test orientation of characters where vo=U (#5/6, 2048 code points in U+1F0E2-2F9EA).</title>
-<meta name="timeout" content="long">
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<meta name="assert" content="Test orientation of characters where vo=U (#5/6, 2048 code points in U+1F0E2-2F9EA)">
-<meta name="flags" content="dom">
-<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-.test {
- font: 16px/1 "orientation";
- height: 17em;
- writing-mode: vertical-rl;
-}
-.line {
- white-space: pre;
-}
-.U {
- text-orientation: upright;
-}
-.R {
- text-orientation: sideways;
-}
-#details {
- margin: 1em .5em;
-}
-summary {
- font-size: 1.2em;
- font-weight: bold;
- margin-top: .5em;
-}
-</style>
-<div id="log"></div>
-<div id="details"></div>
-<div id="container">
-<div data-vo="U" class="test">
-<div data-block="Playing">
-<div class="line">🃢🃣🃤🃥🃦🃧🃨🃩🃪🃫🃬🃭🃮🃯🃰🃱🃲🃳🃴🃵</div>
-</div>
-<div data-block="Enclosed">
-<div class="line">🄀🄁🄂🄃🄄🄅🄆🄇🄈🄉🄊🄋🄌🄐🄑🄒🄓🄔🄕🄖🄗🄘🄙🄚🄛🄜🄝🄞🄟🄠🄡🄢</div>
-<div class="line">🄣🄤🄥🄦🄧🄨🄩🄪🄫🄬🄭🄮🄰🄱🄲🄳🄴🄵🄶🄷🄸🄹🄺🄻🄼🄽🄾🄿🅀🅁🅂🅃</div>
-<div class="line">🅄🅅🅆🅇🅈🅉🅊🅋🅌🅍🅎🅏🅐🅑🅒🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞🅟🅠🅡🅢🅣</div>
-<div class="line">🅤🅥🅦🅧🅨🅩🅪🅫🅰🅱🅲🅳🅴🅵🅶🅷🅸🅹🅺🅻🅼🅽🅾🅿🆀🆁🆂🆃🆄🆅🆆🆇</div>
-<div class="line">🆈🆉🆊🆋🆌🆍🆎🆏🆐🆑🆒🆓🆔🆕🆖🆗🆘🆙🆚🆛🆜🆝🆞🆟🆠🆡🆢🆣🆤🆥🆦🆧</div>
-<div class="line">🆨🆩🆪🆫🆬🇦🇧🇨🇩🇪🇫🇬🇭🇮🇯🇰🇱🇲🇳🇴🇵🇶🇷🇸🇹🇺🇻🇼🇽🇾🇿🈂</div>
-<div class="line">🈐🈑🈒🈓🈔🈕🈖🈗🈘🈙🈚🈛🈜🈝🈞🈟🈠🈡🈢🈣🈤🈥🈦🈧🈨🈩🈪🈫🈬🈭🈮🈯</div>
-<div class="line">🈰🈱🈲🈳🈴🈵🈶🈷🈸🈹🈺🈻🉀🉁🉂🉃🉄🉅🉆🉇🉈🉐🉑</div>
-</div>
-<div data-block="Miscellaneous">
-<div class="line">🌀🌁🌂🌃🌄🌅🌆🌇🌈🌉🌊🌋🌌🌍🌎🌏🌐🌑🌒🌓🌔🌕🌖🌗🌘🌙🌚🌛🌜🌝🌞🌟</div>
-<div class="line">🌠🌡🌢🌣🌤🌥🌦🌧🌨🌩🌪🌫🌬🌭🌮🌯🌰🌱🌲🌳🌴🌵🌶🌷🌸🌹🌺🌻🌼🌽🌾🌿</div>
-<div class="line">🍀🍁🍂🍃🍄🍅🍆🍇🍈🍉🍊🍋🍌🍍🍎🍏🍐🍑🍒🍓🍔🍕🍖🍗🍘🍙🍚🍛🍜🍝🍞🍟</div>
-<div class="line">🍠🍡🍢🍣🍤🍥🍦🍧🍨🍩🍪🍫🍬🍭🍮🍯🍰🍱🍲🍳🍴🍵🍶🍷🍸🍹🍺🍻🍼🍽🍾🍿</div>
-<div class="line">🎀🎁🎂🎃🎄🎅🎆🎇🎈🎉🎊🎋🎌🎍🎎🎏🎐🎑🎒🎓🎔🎕🎖🎗🎘🎙🎚🎛🎜🎝🎞🎟</div>
-<div class="line">🎠🎡🎢🎣🎤🎥🎦🎧🎨🎩🎪🎫🎬🎭🎮🎯🎰🎱🎲🎳🎴🎵🎶🎷🎸🎹🎺🎻🎼🎽🎾🎿</div>
-<div class="line">🏀🏁🏂🏃🏄🏅🏆🏇🏈🏉🏊🏋🏌🏍🏎🏏🏐🏑🏒🏓🏔🏕🏖🏗🏘🏙🏚🏛🏜🏝🏞🏟</div>
-<div class="line">🏠🏡🏢🏣🏤🏥🏦🏧🏨🏩🏪🏫🏬🏭🏮🏯🏰🏱🏲🏳🏴🏵🏶🏷🏸🏹🏺🏻🏼🏽🏾🏿</div>
-<div class="line">🐀🐁🐂🐃🐄🐅🐆🐇🐈🐉🐊🐋🐌🐍🐎🐏🐐🐑🐒🐓🐔🐕🐖🐗🐘🐙🐚🐛🐜🐝🐞🐟</div>
-<div class="line">🐠🐡🐢🐣🐤🐥🐦🐧🐨🐩🐪🐫🐬🐭🐮🐯🐰🐱🐲🐳🐴🐵🐶🐷🐸🐹🐺🐻🐼🐽🐾🐿</div>
-<div class="line">👀👁👂👃👄👅👆👇👈👉👊👋👌👍👎👏👐👑👒👓👔👕👖👗👘👙👚👛👜👝👞👟</div>
-<div class="line">👠👡👢👣👤👥👦👧👨👩👪👫👬👭👮👯👰👱👲👳👴👵👶👷👸👹👺👻👼👽👾👿</div>
-<div class="line">💀💁💂💃💄💅💆💇💈💉💊💋💌💍💎💏💐💑💒💓💔💕💖💗💘💙💚💛💜💝💞💟</div>
-<div class="line">💠💡💢💣💤💥💦💧💨💩💪💫💬💭💮💯💰💱💲💳💴💵💶💷💸💹💺💻💼💽💾💿</div>
-<div class="line">📀📁📂📃📄📅📆📇📈📉📊📋📌📍📎📏📐📑📒📓📔📕📖📗📘📙📚📛📜📝📞📟</div>
-<div class="line">📠📡📢📣📤📥📦📧📨📩📪📫📬📭📮📯📰📱📲📳📴📵📶📷📸📹📺📻📼📽📾📿</div>
-<div class="line">🔀🔁🔂🔃🔄🔅🔆🔇🔈🔉🔊🔋🔌🔍🔎🔏🔐🔑🔒🔓🔔🔕🔖🔗🔘🔙🔚🔛🔜🔝🔞🔟</div>
-<div class="line">🔠🔡🔢🔣🔤🔥🔦🔧🔨🔩🔪🔫🔬🔭🔮🔯🔰🔱🔲🔳🔴🔵🔶🔷🔸🔹🔺🔻🔼🔽🔾🔿</div>
-<div class="line">🕀🕁🕂🕃🕄🕅🕆🕇🕈🕉🕊🕋🕌🕍🕎🕏🕐🕑🕒🕓🕔🕕🕖🕗🕘🕙🕚🕛🕜🕝🕞🕟</div>
-<div class="line">🕠🕡🕢🕣🕤🕥🕦🕧🕨🕩🕪🕫🕬🕭🕮🕯🕰🕱🕲🕳🕴🕵🕶🕷🕸🕹🕺🕻🕼🕽🕾🕿</div>
-<div class="line">🖀🖁🖂🖃🖄🖅🖆🖇🖈🖉🖊🖋🖌🖍🖎🖏🖐🖑🖒🖓🖔🖕🖖🖗🖘🖙🖚🖛🖜🖝🖞🖟</div>
-<div class="line">🖠🖡🖢🖣🖤🖥🖦🖧🖨🖩🖪🖫🖬🖭🖮🖯🖰🖱🖲🖳🖴🖵🖶🖷🖸🖹🖺🖻🖼🖽🖾🖿</div>
-<div class="line">🗀🗁🗂🗃🗄🗅🗆🗇🗈🗉🗊🗋🗌🗍🗎🗏🗐🗑🗒🗓🗔🗕🗖🗗🗘🗙🗚🗛🗜🗝🗞🗟</div>
-<div class="line">🗠🗡🗢🗣🗤🗥🗦🗧🗨🗩🗪🗫🗬🗭🗮🗯🗰🗱🗲🗳🗴🗵🗶🗷🗸🗹🗺🗻🗼🗽🗾🗿</div>
-</div>
-<div data-block="Emoticons">
-<div class="line">😀😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😑😒😓😔😕😖😗😘😙😚😛😜😝😞😟</div>
-<div class="line">😠😡😢😣😤😥😦😧😨😩😪😫😬😭😮😯😰😱😲😳😴😵😶😷😸😹😺😻😼😽😾😿</div>
-<div class="line">🙀🙁🙂🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏</div>
-</div>
-<div data-block="Ornamental">
-<div class="line">🙐🙑🙒🙓🙔🙕🙖🙗🙘🙙🙚🙛🙜🙝🙞🙟🙠🙡🙢🙣🙤🙥🙦🙧🙨🙩🙪🙫🙬🙭🙮🙯</div>
-<div class="line">🙰🙱🙲🙳🙴🙵🙶🙷🙸🙹🙺🙻🙼🙽🙾🙿</div>
-</div>
-<div data-block="Transport">
-<div class="line">🚀🚁🚂🚃🚄🚅🚆🚇🚈🚉🚊🚋🚌🚍🚎🚏🚐🚑🚒🚓🚔🚕🚖🚗🚘🚙🚚🚛🚜🚝🚞🚟</div>
-<div class="line">🚠🚡🚢🚣🚤🚥🚦🚧🚨🚩🚪🚫🚬🚭🚮🚯🚰🚱🚲🚳🚴🚵🚶🚷🚸🚹🚺🚻🚼🚽🚾🚿</div>
-<div class="line">🛀🛁🛂🛃🛄🛅🛆🛇🛈🛉🛊🛋🛌🛍🛎🛏🛐🛑🛒🛠🛡🛢🛣🛤🛥🛦🛧🛨🛩🛪🛫🛬</div>
-<div class="line">🛰🛱🛲🛳🛴🛵🛶</div>
-</div>
-<div data-block="Alchemical">
-<div class="line">🜀🜁🜂🜃🜄🜅🜆🜇🜈🜉🜊🜋🜌🜍🜎🜏🜐🜑🜒🜓🜔🜕🜖🜗🜘🜙🜚🜛🜜🜝🜞🜟</div>
-<div class="line">🜠🜡🜢🜣🜤🜥🜦🜧🜨🜩🜪🜫🜬🜭🜮🜯🜰🜱🜲🜳🜴🜵🜶🜷🜸🜹🜺🜻🜼🜽🜾🜿</div>
-<div class="line">🝀🝁🝂🝃🝄🝅🝆🝇🝈🝉🝊🝋🝌🝍🝎🝏🝐🝑🝒🝓🝔🝕🝖🝗🝘🝙🝚🝛🝜🝝🝞🝟</div>
-<div class="line">🝠🝡🝢🝣🝤🝥🝦🝧🝨🝩🝪🝫🝬🝭🝮🝯🝰🝱🝲🝳</div>
-</div>
-<div data-block="Geometric">
-<div class="line">🞀🞁🞂🞃🞄🞅🞆🞇🞈🞉🞊🞋🞌🞍🞎🞏🞐🞑🞒🞓🞔🞕🞖🞗🞘🞙🞚🞛🞜🞝🞞🞟</div>
-<div class="line">🞠🞡🞢🞣🞤🞥🞦🞧🞨🞩🞪🞫🞬🞭🞮🞯🞰🞱🞲🞳🞴🞵🞶🞷🞸🞹🞺🞻🞼🞽🞾🞿</div>
-<div class="line">🟀🟁🟂🟃🟄🟅🟆🟇🟈🟉🟊🟋🟌🟍🟎🟏🟐🟑🟒🟓🟔</div>
-</div>
-<div data-block="Supplemental">
-<div class="line">🤐🤑🤒🤓🤔🤕🤖🤗🤘🤙🤚🤛🤜🤝🤞🤠🤡🤢🤣🤤🤥🤦🤧🤰🤳🤴🤵🤶🤷🤸🤹🤺</div>
-<div class="line">🤻🤼🤽🤾🥀🥁🥂🥃🥄🥅🥆🥇🥈🥉🥊🥋🥐🥑🥒🥓🥔🥕🥖🥗🥘🥙🥚🥛🥜🥝🥞🦀</div>
-<div class="line">🦁🦂🦃🦄🦅🦆🦇🦈🦉🦊🦋🦌🦍🦎🦏🦐🦑🧀</div>
-</div>
-<div data-block="CJK">
-<div class="line">𠀀𪛖𪜀𫜴𫝀𫠝𫠠𬺡丽丸乁𠄢你侮侻倂偺備僧像㒞𠘺免兔兤具𠔜㒹內再𠕋冗</div>
-<div class="line">冤仌冬况𩇟凵刃㓟刻剆割剷㔕勇勉勤勺包匆北卉卑博即卽卿卿卿𠨬灰及叟</div>
-<div class="line">𠭣叫叱吆咞吸呈周咢哶唐啓啣善善喙喫喳嗂圖嘆圗噑噴切壮城埴堍型堲報</div>
-<div class="line">墬𡓤売壷夆多夢奢𡚨𡛪姬娛娧姘婦㛮㛼嬈嬾嬾𡧈寃寘寧寳𡬘寿将当尢㞁屠</div>
-<div class="line">屮峀岍𡷤嵃𡷦嵮嵫嵼巡巢㠯巽帨帽幩㡢𢆃㡼庰庳庶廊𪎒廾𢌱𢌱舁弢弢㣇𣊸</div>
-<div class="line">𦇚形彫㣣徚忍志忹悁㤺㤜悔𢛔惇慈慌慎慌慺憎憲憤憯懞懲懶成戛扝抱拔捐</div>
-<div class="line">𢬌挽拼捨掃揤𢯱搢揅掩㨮摩摾撝摷㩬敏敬𣀊旣書晉㬙暑㬈㫤冒冕最暜肭䏙</div>
-<div class="line">朗望朡杞杓𣏃㭉柺枅桒梅𣑭梎栟椔㮝楂榣槪檨𣚣櫛㰘次𣢧歔㱎歲殟殺殻𣪍</div>
-<div class="line">𡴋𣫺汎𣲼沿泍汧洖派海流浩浸涅𣴞洴港湮㴳滋滇𣻑淹潮𣽞𣾎濆瀹瀞瀛㶖灊</div>
-<div class="line">災灷炭𠔥煅𤉣熜𤎫爨爵牐𤘈犀犕𤜵𤠔獺王㺬玥㺸㺸瑇瑜瑱璅瓊㼛甤𤰶甾𤲒</div>
-<div class="line">異𢆟瘐𤾡𤾸𥁄㿼䀈直𥃳𥃲𥄙𥄳眞真真睊䀹瞋䁆䂖𥐝硎碌磌䃣𥘦祖𥚚𥛅福秫</div>
-<div class="line">䄯穀穊穏𥥼𥪧𥪧竮䈂𥮫篆築䈧𥲀糒䊠糨糣紀𥾆絣䌁緇縂繅䌴𦈨𦉇䍙𦋙罺𦌾</div>
-<div class="line">羕翺者𦓚𦔣聠𦖨聰𣍟䏕育脃䐋脾媵𦞧𦞵𣎓𣎜舁舄辞䑫芑芋芝劳花芳芽苦𦬼</div>
-<div class="line">若茝荣莭茣莽菧著荓菊菌菜𦰶𦵫𦳕䔫蓱蓳蔖𧏊蕤𦼬䕝䕡𦾱𧃒䕫虐虜虧虩蚩</div>
-<div class="line">蚈蜎蛢蝹蜨蝫螆䗗蟡蠁䗹衠衣𧙧裗裞䘵裺㒻𧢮𧥦䚾䛇誠諭變豕𧲨貫賁贛起</div>
-<div class="line">𧼯𠠄跋趼跰𠣞軔輸𨗒𨗭邔郱鄑𨜮鄛鈸鋗鋘鉼</div>
-</div>
-</div>
-</div>
-<script src="support/text-orientation.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001o.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001o.html
deleted file mode 100644
index 3ad3745132c..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001o.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: Test orientation of characters where vo=U (#6/6, 51 code points in U+2F9EB-2FA1D).</title>
-<meta name="timeout" content="long">
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<meta name="assert" content="Test orientation of characters where vo=U (#6/6, 51 code points in U+2F9EB-2FA1D)">
-<meta name="flags" content="dom">
-<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-.test {
- font: 16px/1 "orientation";
- height: 17em;
- writing-mode: vertical-rl;
-}
-.line {
- white-space: pre;
-}
-.U {
- text-orientation: upright;
-}
-.R {
- text-orientation: sideways;
-}
-#details {
- margin: 1em .5em;
-}
-summary {
- font-size: 1.2em;
- font-weight: bold;
- margin-top: .5em;
-}
-</style>
-<div id="log"></div>
-<div id="details"></div>
-<div id="container">
-<div data-vo="U" class="test">
-<div data-block="CJK">
-<div class="line">鏹鐕𨯺開䦕閷𨵷䧦雃嶲霣𩅅𩈚䩮䩶韠𩐊䪲𩒖頋頋頩𩖶飢䬳餩馧駂駾䯎𩬰鬒</div>
-<div class="line">鱀鳽䳎䳭鵧𪃎䳸𪄅𪈎𪊑麻䵖黹黾鼅鼏鼖鼻𪘀</div>
-</div>
-</div>
-</div>
-<script src="support/text-orientation.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001p.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001p.html
deleted file mode 100644
index 7f0532fd5d3..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001p.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: Test orientation of characters where vo=Tr (47 code points in U+2329-FFE3).</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<meta name="assert" content="Test orientation of characters where vo=Tr (47 code points in U+2329-FFE3)">
-<meta name="flags" content="dom">
-<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-.test {
- font: 16px/1 "orientation";
- height: 17em;
- writing-mode: vertical-rl;
-}
-.line {
- white-space: pre;
-}
-.U {
- text-orientation: upright;
-}
-.R {
- text-orientation: sideways;
-}
-#details {
- margin: 1em .5em;
-}
-summary {
- font-size: 1.2em;
- font-weight: bold;
- margin-top: .5em;
-}
-</style>
-<div id="log"></div>
-<div id="details"></div>
-<div id="container">
-<div data-vo="Tr" class="test">
-<div data-block="Miscellaneous">
-<div class="line">〈〉</div>
-</div>
-<div data-block="CJK">
-<div class="line">〈〉《》「」『』【】〔〕〖〗〘〙〚〛〜〝〞〟〰</div>
-</div>
-<div data-block="Katakana">
-<div class="line">゠ー</div>
-</div>
-<div data-block="Small">
-<div class="line">﹙﹚﹛﹜﹝﹞</div>
-</div>
-<div data-block="Halfwidth">
-<div class="line">():;[]_{|}~⦅⦆ ̄</div>
-</div>
-</div>
-</div>
-<script src="support/text-orientation.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001q.html b/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001q.html
deleted file mode 100644
index f0fd9014591..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/text-orientation-script-001q.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: Test orientation of characters where vo=Tu (147 code points in U+3001-1F201).</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<meta name="assert" content="Test orientation of characters where vo=Tu (147 code points in U+3001-1F201)">
-<meta name="flags" content="dom">
-<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-.test {
- font: 16px/1 "orientation";
- height: 17em;
- writing-mode: vertical-rl;
-}
-.line {
- white-space: pre;
-}
-.U {
- text-orientation: upright;
-}
-.R {
- text-orientation: sideways;
-}
-#details {
- margin: 1em .5em;
-}
-summary {
- font-size: 1.2em;
- font-weight: bold;
- margin-top: .5em;
-}
-</style>
-<div id="log"></div>
-<div id="details"></div>
-<div id="container">
-<div data-vo="Tu" class="test">
-<div data-block="CJK">
-<div class="line">、。</div>
-</div>
-<div data-block="Hiragana">
-<div class="line">ぁぃぅぇぉっゃゅょゎゕゖ゛゜</div>
-</div>
-<div data-block="Katakana">
-<div class="line">ァィゥェォッャュョヮヵヶ</div>
-</div>
-<div data-block="Bopomofo">
-<div class="line">ㄧ</div>
-</div>
-<div data-block="Katakana">
-<div class="line">ㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ</div>
-</div>
-<div data-block="CJK">
-<div class="line">㌀㌁㌂㌃㌄㌅㌆㌇㌈㌉㌊㌋㌌㌍㌎㌏㌐㌑㌒㌓㌔㌕㌖㌗㌘㌙㌚㌛㌜㌝㌞㌟</div>
-<div class="line">㌠㌡㌢㌣㌤㌥㌦㌧㌨㌩㌪㌫㌬㌭㌮㌯㌰㌱㌲㌳㌴㌵㌶㌷㌸㌹㌺㌻㌼㌽㌾㌿</div>
-<div class="line">㍀㍁㍂㍃㍄㍅㍆㍇㍈㍉㍊㍋㍌㍍㍎㍏㍐㍑㍒㍓㍔㍕㍖㍗㍻㍼㍽㍾㍿</div>
-</div>
-<div data-block="Small">
-<div class="line">﹐﹑﹒</div>
-</div>
-<div data-block="Halfwidth">
-<div class="line">!,.?</div>
-</div>
-<div data-block="Enclosed">
-<div class="line">🈀🈁</div>
-</div>
-</div>
-</div>
-<script src="support/text-orientation.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/README.md b/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/README.md
index 7c584899e3f..9bf89de07a8 100644
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/README.md
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/README.md
@@ -3,7 +3,6 @@ Generators
Following test files are generated by the programs in this directory:
* orthogonal-parent-shrink-to-fit-001
-* text-orientation-script-001
## Setup
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/gulpfile.js b/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/gulpfile.js
index 0ebd13cc882..f364024084d 100644
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/gulpfile.js
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/gulpfile.js
@@ -9,22 +9,12 @@ var argv = minimist(process.argv.slice(2));
gulp.task("default", [
"orthogonal-parent-shrink-to-fit",
- "text-orientation",
]);
gulp.task("test", ["browser-sync", "watch"]);
gulp.task("watch", function () {
gulp.watch("orthogonal-parent-shrink-to-fit.ejs", ["orthogonal-parent-shrink-to-fit"]);
- gulp.watch(
- [
- "text-orientation-ref.ejs",
- "text-orientation-script.ejs",
- "text-orientation-generator.js",
- "unicode-data.js",
- ],
- ["text-orientation"])
- .on("change", file => delete require.cache[require.resolve(file.path)]);
});
gulp.task("browser-sync", function () {
@@ -59,14 +49,6 @@ gulp.task("server", function () {
gulpTaskFromTemplateWithAffixes("orthogonal-parent-shrink-to-fit", "-001", -1, 24);
-gulp.task("text-orientation", function () {
- var orientation = require("./text-orientation-generator.js");
- return Promise.all([
- orientation.generate(argv),
- orientation.generateRefTest(argv),
- ]).then(reload);
-});
-
gulp.task("update", function () {
const unicodeData = require('./unicode-data.js');
unicodeData.copyToLocal();
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/text-orientation-generator.js b/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/text-orientation-generator.js
deleted file mode 100644
index 8fe911532cc..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/text-orientation-generator.js
+++ /dev/null
@@ -1,190 +0,0 @@
-// This is a node.js program to generate text-orientation-script test files.
-'use strict';
-
-(function (exports) {
- var ejs = require("ejs");
- var fs = require("fs");
- var unicodeData = require("./unicode-data.js");
-
- class Generator {
- constructor(rangesByVO, gc, blocks) {
- this.rangesByVO = rangesByVO;
- this.gc = gc;
- this.blocks = blocks;
- this.charactersPerLine = 32;
- }
- generate(argv) {
- var codePointsByVO = {};
- var gc = this.gc;
- var skipFunc = this.createSkipFunc(argv.noskip);
- for (var value in this.rangesByVO)
- codePointsByVO[value] = unicodeData.codePointsFromRanges(this.rangesByVO[value], skipFunc);
-
- this.codePointsByVO = codePointsByVO;
- var template = fs.readFileSync("text-orientation-script.ejs", "utf-8");
- this.template = ejs.compile(template);
-
- if (!argv.nocombo)
- this.generateFile();
- if (argv.nochild)
- return;
-
- var pageSize = this.charactersPerLine * 64;
- var fileIndex = 0;
- for (var vo in codePointsByVO) {
- var codePoints = codePointsByVO[vo];
- var limit = codePoints.length;
- var pages = Math.ceil(limit / pageSize);
- for (var min = 0, page = 1; min < limit; ++page, ++fileIndex) {
- var nextLimit = Math.min(limit, min + pageSize);
- this.codePointsByVO = {};
- this.codePointsByVO[vo] = codePoints.slice(min, nextLimit);
- this.generateFile(vo, fileIndex, page, pages);
- min = nextLimit;
- }
- }
- }
- generateFile(vo, fileIndex, page, pages) {
- var path = "../../text-orientation-script-001";
- this.title = "Test orientation of characters";
- this.flags = "dom";
- // if (fileIndex)
- // path += "-" + padZero(fileIndex, 3);
- if (fileIndex === undefined)
- this.flags += " combo";
- else
- path += affixFromIndex(fileIndex);
- if (vo) {
- this.title += " where vo=" + vo;
- var codePoints = this.codePointsByVO[vo];
- var rangeText = codePoints.length + " code points in U+" +
- unicodeData.toHex(codePoints[0]) + "-" +
- unicodeData.toHex(codePoints[codePoints.length - 1]);
- if (page && pages > 1)
- rangeText = "#" + page + "/" + pages + ", " + rangeText;
- this.title += " (" + rangeText + ")";
- }
- path += ".html";
- console.log("Writing " + path + ": " + this.title);
- var output = fs.openSync(path, "w");
- fs.writeSync(output, this.template(this));
- fs.closeSync(output);
- }
- generateRefTest() {
- var template = fs.readFileSync("text-orientation-ref.ejs", "utf-8");
- this.template = ejs.compile(template);
- this.codePointRanges = [
- [0x0020, 0x007E],
- [0x3000, 0x30FF],
- [0x4E00, 0x4E1F],
- [0xFF01, 0xFF60],
- ];
- var writingModes = [
- { key: "vlr", value: "vertical-lr" },
- { key: "vrl", value: "vertical-rl" },
- ];
- var voByCodePoint = unicodeData.arrayFromRangesByValue(this.rangesByVO);
- var R = 0x0041, U = 0x56FD;
- var textOrientations = [
- { value: "mixed", ref: function (ch) { return voByCodePoint[ch] == "R" ? R : U; } },
- { value: "sideways", ref: function (ch) { return R; } },
- { value: "upright", ref: function (ch) { return U; } },
- ];
- var self = this;
- writingModes.forEach(function (writingMode) {
- self.writingMode = writingMode.value;
- textOrientations.forEach(function (textOrientation) {
- self.textOrientation = textOrientation.value;
- self.title = "writing-mode: " + self.writingMode + "; text-orientation: " + self.textOrientation;
- var key = textOrientation.value + "-" + writingMode.key;
- self.generateRefTestFile(key, false);
- self.generateRefTestFile(key, true, textOrientation.ref);
- });
- });
- }
- generateRefTestFile(key, isReference, mapCodePointForRendering) {
- var name = "text-orientation-" + key + "-100";
- var path = name + ".html";
- var reference = name + "-ref.html";
- if (isReference) {
- path = "../../" + reference;
- this.reference = null;
- } else {
- path = "../../" + path;
- this.reference = reference;
- }
- console.log("Writing " + path + ": " + this.title);
- var skipFunc0 = this.createSkipFunc(true);
- // Workaround CSS test harness bug that double-escape &lt; and &gt;.
- var skipFunc = c => c == 0x3C || c == 0x3E || skipFunc0(c);
- this.codePointsFromRangeForRendering = mapCodePointForRendering
- ? range => unicodeData.codePointsFromRanges(range, skipFunc).map(mapCodePointForRendering)
- : range => unicodeData.codePointsFromRanges(range, skipFunc);
- var output = fs.openSync(path, "w");
- fs.writeSync(output, this.template(this));
- fs.closeSync(output);
- }
- headingFromRange(range) {
- return "U+" + unicodeData.toHex(range[0]) + "-" + unicodeData.toHex(range[range.length - 1]);
- }
- createSkipFunc(noSkip) {
- var gc = this.gc;
- function skipCombiningMarks(code) {
- return unicodeData.isSkipGeneralCategory(code, gc) ||
- code == 0x0E33 || // Thai U+0E33 is class AM: https://www.microsoft.com/typography/OpenTypeDev/thai/intro.htm
- code == 0x0EB3; // Lao U+0EB3 is class AM: https://www.microsoft.com/typography/OpenTypeDev/lao/intro.htm
- }
- if (noSkip)
- return skipCombiningMarks;
- return function (code) { return unicodeData.isCJKMiddle(code) || skipCombiningMarks(code); };
- }
- splitCodePointsByBlocks(codePoints) {
- return unicodeData.splitCodePoints(codePoints, this.blocks);
- }
- linesFromCodePoints(codePoints) {
- var lines = [];
- var limit = codePoints.length;
- for (var index = 0; index < limit; ) {
- var lineLimit = Math.min(limit, index + this.charactersPerLine);
- var line = [];
- for (; index < lineLimit; ++index)
- unicodeData.encodeUtf16(codePoints[index], line);
- lines.push(String.fromCharCode.apply(String, line));
- }
- return lines;
- }
- }
-
- function affixFromIndex(index) {
- if (index < 0)
- return "";
- if (index >= 26)
- throw new Error("Affix index too large (" + index + ")");
- return String.fromCharCode("a".charCodeAt(0) + index);
- }
-
- function createGenerator(argv) {
- var promise = new Promise(function(resolve, reject) {
- Promise.all([
- unicodeData.get(unicodeData.url.vo, unicodeData.formatAsRangesByValue),
- unicodeData.get(unicodeData.url.gc),
- unicodeData.get(unicodeData.url.blocks),
- ]).then(function (results) {
- var generator = new Generator(results[0], results[1], results[2]);
- generator.prefix = argv.prefix ? "-" + argv.prefix + "-" : "";
- resolve(generator);
- });
- });
- return promise;
- }
-
- exports.generate = function (argv) {
- return createGenerator(argv)
- .then(generator => generator.generate(argv));
- };
-
- exports.generateRefTest = function (argv) {
- return createGenerator(argv)
- .then(generator => generator.generateRefTest(argv));
- };
-})(module.exports);
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/text-orientation-ref.ejs b/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/text-orientation-ref.ejs
deleted file mode 100644
index f4bc801aa68..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/text-orientation-ref.ejs
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: <%= title %>.</title>
-<% if (reference) {
-%><link rel="match" href="<%= reference %>">
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<% }
-%><link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-html {
- <%= prefix %>writing-mode: <%= writingMode %>;
-}
-.test {
- font: 20px/1 "orientation";
- height: 17em;
- <%= prefix %>text-orientation: <%= textOrientation %>;
-}
-.line {
- white-space: pre;
-}
-</style>
-<body>
-<div id="container">
-<% for (var range of codePointRanges) {
-%><div><%= headingFromRange(range) %><div class="test">
-<% var codePoints = codePointsFromRangeForRendering(range);
- for (var line of linesFromCodePoints(codePoints)) {
-%><div class="line"><%= line %></div>
-<% }
-%></div></div>
-<% } %></div>
-</body>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/text-orientation-script.ejs b/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/text-orientation-script.ejs
deleted file mode 100644
index 5366366f540..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/text-orientation-script.ejs
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Writing Modes Test: <%= title %>.</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
-<meta name="assert" content="<%= title %>">
-<meta name="flags" content="<%= flags %>">
-<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@font-face {
- font-family: "orientation";
- src: url("/fonts/adobe-fonts/CSSHWOrientationTest.otf");
-}
-.test {
- font: 16px/1 "orientation";
- height: 17em;
- <%= prefix %>writing-mode: vertical-rl;
-}
-.line {
- white-space: pre;
-}
-.U {
- <%= prefix %>text-orientation: upright;
-}
-.R {
- <%= prefix %>text-orientation: sideways;
-}
-#details {
- margin: 1em .5em;
-}
-summary {
- font-size: 1.2em;
- font-weight: bold;
- margin-top: .5em;
-}
-</style>
-<div id="log"></div>
-<div id="details"></div>
-<div id="container">
-<% for (var vo in codePointsByVO) {
-%><div data-vo="<%= vo %>" class="test">
-<% for (var codePointsOfBlock of splitCodePointsByBlocks(codePointsByVO[vo])) {
-%><div data-block="<%= codePointsOfBlock[1] %>">
-<% for (var line of linesFromCodePoints(codePointsOfBlock[0])) {
-%><div class="line"><%= line %></div>
-<% }
-%></div>
-<% }
-%></div>
-<% }
-%></div>
-<script src="support/text-orientation.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/ucd/Blocks.txt b/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/ucd/Blocks.txt
deleted file mode 100644
index 74c41e58a81..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/ucd/Blocks.txt
+++ /dev/null
@@ -1,309 +0,0 @@
-# Blocks-9.0.0.txt
-# Date: 2016-02-05, 23:48:00 GMT [KW]
-# © 2016 Unicode®, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-#
-# Unicode Character Database
-# For documentation, see http://www.unicode.org/reports/tr44/
-#
-# Format:
-# Start Code..End Code; Block Name
-
-# ================================================
-
-# Note: When comparing block names, casing, whitespace, hyphens,
-# and underbars are ignored.
-# For example, "Latin Extended-A" and "latin extended a" are equivalent.
-# For more information on the comparison of property values,
-# see UAX #44: http://www.unicode.org/reports/tr44/
-#
-# All block ranges start with a value where (cp MOD 16) = 0,
-# and end with a value where (cp MOD 16) = 15. In other words,
-# the last hexadecimal digit of the start of range is ...0
-# and the last hexadecimal digit of the end of range is ...F.
-# This constraint on block ranges guarantees that allocations
-# are done in terms of whole columns, and that code chart display
-# never involves splitting columns in the charts.
-#
-# All code points not explicitly listed for Block
-# have the value No_Block.
-
-# Property: Block
-#
-# @missing: 0000..10FFFF; No_Block
-
-0000..007F; Basic Latin
-0080..00FF; Latin-1 Supplement
-0100..017F; Latin Extended-A
-0180..024F; Latin Extended-B
-0250..02AF; IPA Extensions
-02B0..02FF; Spacing Modifier Letters
-0300..036F; Combining Diacritical Marks
-0370..03FF; Greek and Coptic
-0400..04FF; Cyrillic
-0500..052F; Cyrillic Supplement
-0530..058F; Armenian
-0590..05FF; Hebrew
-0600..06FF; Arabic
-0700..074F; Syriac
-0750..077F; Arabic Supplement
-0780..07BF; Thaana
-07C0..07FF; NKo
-0800..083F; Samaritan
-0840..085F; Mandaic
-08A0..08FF; Arabic Extended-A
-0900..097F; Devanagari
-0980..09FF; Bengali
-0A00..0A7F; Gurmukhi
-0A80..0AFF; Gujarati
-0B00..0B7F; Oriya
-0B80..0BFF; Tamil
-0C00..0C7F; Telugu
-0C80..0CFF; Kannada
-0D00..0D7F; Malayalam
-0D80..0DFF; Sinhala
-0E00..0E7F; Thai
-0E80..0EFF; Lao
-0F00..0FFF; Tibetan
-1000..109F; Myanmar
-10A0..10FF; Georgian
-1100..11FF; Hangul Jamo
-1200..137F; Ethiopic
-1380..139F; Ethiopic Supplement
-13A0..13FF; Cherokee
-1400..167F; Unified Canadian Aboriginal Syllabics
-1680..169F; Ogham
-16A0..16FF; Runic
-1700..171F; Tagalog
-1720..173F; Hanunoo
-1740..175F; Buhid
-1760..177F; Tagbanwa
-1780..17FF; Khmer
-1800..18AF; Mongolian
-18B0..18FF; Unified Canadian Aboriginal Syllabics Extended
-1900..194F; Limbu
-1950..197F; Tai Le
-1980..19DF; New Tai Lue
-19E0..19FF; Khmer Symbols
-1A00..1A1F; Buginese
-1A20..1AAF; Tai Tham
-1AB0..1AFF; Combining Diacritical Marks Extended
-1B00..1B7F; Balinese
-1B80..1BBF; Sundanese
-1BC0..1BFF; Batak
-1C00..1C4F; Lepcha
-1C50..1C7F; Ol Chiki
-1C80..1C8F; Cyrillic Extended-C
-1CC0..1CCF; Sundanese Supplement
-1CD0..1CFF; Vedic Extensions
-1D00..1D7F; Phonetic Extensions
-1D80..1DBF; Phonetic Extensions Supplement
-1DC0..1DFF; Combining Diacritical Marks Supplement
-1E00..1EFF; Latin Extended Additional
-1F00..1FFF; Greek Extended
-2000..206F; General Punctuation
-2070..209F; Superscripts and Subscripts
-20A0..20CF; Currency Symbols
-20D0..20FF; Combining Diacritical Marks for Symbols
-2100..214F; Letterlike Symbols
-2150..218F; Number Forms
-2190..21FF; Arrows
-2200..22FF; Mathematical Operators
-2300..23FF; Miscellaneous Technical
-2400..243F; Control Pictures
-2440..245F; Optical Character Recognition
-2460..24FF; Enclosed Alphanumerics
-2500..257F; Box Drawing
-2580..259F; Block Elements
-25A0..25FF; Geometric Shapes
-2600..26FF; Miscellaneous Symbols
-2700..27BF; Dingbats
-27C0..27EF; Miscellaneous Mathematical Symbols-A
-27F0..27FF; Supplemental Arrows-A
-2800..28FF; Braille Patterns
-2900..297F; Supplemental Arrows-B
-2980..29FF; Miscellaneous Mathematical Symbols-B
-2A00..2AFF; Supplemental Mathematical Operators
-2B00..2BFF; Miscellaneous Symbols and Arrows
-2C00..2C5F; Glagolitic
-2C60..2C7F; Latin Extended-C
-2C80..2CFF; Coptic
-2D00..2D2F; Georgian Supplement
-2D30..2D7F; Tifinagh
-2D80..2DDF; Ethiopic Extended
-2DE0..2DFF; Cyrillic Extended-A
-2E00..2E7F; Supplemental Punctuation
-2E80..2EFF; CJK Radicals Supplement
-2F00..2FDF; Kangxi Radicals
-2FF0..2FFF; Ideographic Description Characters
-3000..303F; CJK Symbols and Punctuation
-3040..309F; Hiragana
-30A0..30FF; Katakana
-3100..312F; Bopomofo
-3130..318F; Hangul Compatibility Jamo
-3190..319F; Kanbun
-31A0..31BF; Bopomofo Extended
-31C0..31EF; CJK Strokes
-31F0..31FF; Katakana Phonetic Extensions
-3200..32FF; Enclosed CJK Letters and Months
-3300..33FF; CJK Compatibility
-3400..4DBF; CJK Unified Ideographs Extension A
-4DC0..4DFF; Yijing Hexagram Symbols
-4E00..9FFF; CJK Unified Ideographs
-A000..A48F; Yi Syllables
-A490..A4CF; Yi Radicals
-A4D0..A4FF; Lisu
-A500..A63F; Vai
-A640..A69F; Cyrillic Extended-B
-A6A0..A6FF; Bamum
-A700..A71F; Modifier Tone Letters
-A720..A7FF; Latin Extended-D
-A800..A82F; Syloti Nagri
-A830..A83F; Common Indic Number Forms
-A840..A87F; Phags-pa
-A880..A8DF; Saurashtra
-A8E0..A8FF; Devanagari Extended
-A900..A92F; Kayah Li
-A930..A95F; Rejang
-A960..A97F; Hangul Jamo Extended-A
-A980..A9DF; Javanese
-A9E0..A9FF; Myanmar Extended-B
-AA00..AA5F; Cham
-AA60..AA7F; Myanmar Extended-A
-AA80..AADF; Tai Viet
-AAE0..AAFF; Meetei Mayek Extensions
-AB00..AB2F; Ethiopic Extended-A
-AB30..AB6F; Latin Extended-E
-AB70..ABBF; Cherokee Supplement
-ABC0..ABFF; Meetei Mayek
-AC00..D7AF; Hangul Syllables
-D7B0..D7FF; Hangul Jamo Extended-B
-D800..DB7F; High Surrogates
-DB80..DBFF; High Private Use Surrogates
-DC00..DFFF; Low Surrogates
-E000..F8FF; Private Use Area
-F900..FAFF; CJK Compatibility Ideographs
-FB00..FB4F; Alphabetic Presentation Forms
-FB50..FDFF; Arabic Presentation Forms-A
-FE00..FE0F; Variation Selectors
-FE10..FE1F; Vertical Forms
-FE20..FE2F; Combining Half Marks
-FE30..FE4F; CJK Compatibility Forms
-FE50..FE6F; Small Form Variants
-FE70..FEFF; Arabic Presentation Forms-B
-FF00..FFEF; Halfwidth and Fullwidth Forms
-FFF0..FFFF; Specials
-10000..1007F; Linear B Syllabary
-10080..100FF; Linear B Ideograms
-10100..1013F; Aegean Numbers
-10140..1018F; Ancient Greek Numbers
-10190..101CF; Ancient Symbols
-101D0..101FF; Phaistos Disc
-10280..1029F; Lycian
-102A0..102DF; Carian
-102E0..102FF; Coptic Epact Numbers
-10300..1032F; Old Italic
-10330..1034F; Gothic
-10350..1037F; Old Permic
-10380..1039F; Ugaritic
-103A0..103DF; Old Persian
-10400..1044F; Deseret
-10450..1047F; Shavian
-10480..104AF; Osmanya
-104B0..104FF; Osage
-10500..1052F; Elbasan
-10530..1056F; Caucasian Albanian
-10600..1077F; Linear A
-10800..1083F; Cypriot Syllabary
-10840..1085F; Imperial Aramaic
-10860..1087F; Palmyrene
-10880..108AF; Nabataean
-108E0..108FF; Hatran
-10900..1091F; Phoenician
-10920..1093F; Lydian
-10980..1099F; Meroitic Hieroglyphs
-109A0..109FF; Meroitic Cursive
-10A00..10A5F; Kharoshthi
-10A60..10A7F; Old South Arabian
-10A80..10A9F; Old North Arabian
-10AC0..10AFF; Manichaean
-10B00..10B3F; Avestan
-10B40..10B5F; Inscriptional Parthian
-10B60..10B7F; Inscriptional Pahlavi
-10B80..10BAF; Psalter Pahlavi
-10C00..10C4F; Old Turkic
-10C80..10CFF; Old Hungarian
-10E60..10E7F; Rumi Numeral Symbols
-11000..1107F; Brahmi
-11080..110CF; Kaithi
-110D0..110FF; Sora Sompeng
-11100..1114F; Chakma
-11150..1117F; Mahajani
-11180..111DF; Sharada
-111E0..111FF; Sinhala Archaic Numbers
-11200..1124F; Khojki
-11280..112AF; Multani
-112B0..112FF; Khudawadi
-11300..1137F; Grantha
-11400..1147F; Newa
-11480..114DF; Tirhuta
-11580..115FF; Siddham
-11600..1165F; Modi
-11660..1167F; Mongolian Supplement
-11680..116CF; Takri
-11700..1173F; Ahom
-118A0..118FF; Warang Citi
-11AC0..11AFF; Pau Cin Hau
-11C00..11C6F; Bhaiksuki
-11C70..11CBF; Marchen
-12000..123FF; Cuneiform
-12400..1247F; Cuneiform Numbers and Punctuation
-12480..1254F; Early Dynastic Cuneiform
-13000..1342F; Egyptian Hieroglyphs
-14400..1467F; Anatolian Hieroglyphs
-16800..16A3F; Bamum Supplement
-16A40..16A6F; Mro
-16AD0..16AFF; Bassa Vah
-16B00..16B8F; Pahawh Hmong
-16F00..16F9F; Miao
-16FE0..16FFF; Ideographic Symbols and Punctuation
-17000..187FF; Tangut
-18800..18AFF; Tangut Components
-1B000..1B0FF; Kana Supplement
-1BC00..1BC9F; Duployan
-1BCA0..1BCAF; Shorthand Format Controls
-1D000..1D0FF; Byzantine Musical Symbols
-1D100..1D1FF; Musical Symbols
-1D200..1D24F; Ancient Greek Musical Notation
-1D300..1D35F; Tai Xuan Jing Symbols
-1D360..1D37F; Counting Rod Numerals
-1D400..1D7FF; Mathematical Alphanumeric Symbols
-1D800..1DAAF; Sutton SignWriting
-1E000..1E02F; Glagolitic Supplement
-1E800..1E8DF; Mende Kikakui
-1E900..1E95F; Adlam
-1EE00..1EEFF; Arabic Mathematical Alphabetic Symbols
-1F000..1F02F; Mahjong Tiles
-1F030..1F09F; Domino Tiles
-1F0A0..1F0FF; Playing Cards
-1F100..1F1FF; Enclosed Alphanumeric Supplement
-1F200..1F2FF; Enclosed Ideographic Supplement
-1F300..1F5FF; Miscellaneous Symbols and Pictographs
-1F600..1F64F; Emoticons
-1F650..1F67F; Ornamental Dingbats
-1F680..1F6FF; Transport and Map Symbols
-1F700..1F77F; Alchemical Symbols
-1F780..1F7FF; Geometric Shapes Extended
-1F800..1F8FF; Supplemental Arrows-C
-1F900..1F9FF; Supplemental Symbols and Pictographs
-20000..2A6DF; CJK Unified Ideographs Extension B
-2A700..2B73F; CJK Unified Ideographs Extension C
-2B740..2B81F; CJK Unified Ideographs Extension D
-2B820..2CEAF; CJK Unified Ideographs Extension E
-2F800..2FA1F; CJK Compatibility Ideographs Supplement
-E0000..E007F; Tags
-E0100..E01EF; Variation Selectors Supplement
-F0000..FFFFF; Supplementary Private Use Area-A
-100000..10FFFF; Supplementary Private Use Area-B
-
-# EOF
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/ucd/DerivedGeneralCategory.txt b/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/ucd/DerivedGeneralCategory.txt
deleted file mode 100644
index 96dfb56f0e1..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/ucd/DerivedGeneralCategory.txt
+++ /dev/null
@@ -1,3878 +0,0 @@
-# DerivedGeneralCategory-9.0.0.txt
-# Date: 2016-06-01, 10:34:26 GMT
-# © 2016 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
-#
-# Unicode Character Database
-# For documentation, see http://www.unicode.org/reports/tr44/
-
-# ================================================
-
-# Property: General_Category
-
-# ================================================
-
-# General_Category=Unassigned
-
-0378..0379 ; Cn # [2] <reserved-0378>..<reserved-0379>
-0380..0383 ; Cn # [4] <reserved-0380>..<reserved-0383>
-038B ; Cn # <reserved-038B>
-038D ; Cn # <reserved-038D>
-03A2 ; Cn # <reserved-03A2>
-0530 ; Cn # <reserved-0530>
-0557..0558 ; Cn # [2] <reserved-0557>..<reserved-0558>
-0560 ; Cn # <reserved-0560>
-0588 ; Cn # <reserved-0588>
-058B..058C ; Cn # [2] <reserved-058B>..<reserved-058C>
-0590 ; Cn # <reserved-0590>
-05C8..05CF ; Cn # [8] <reserved-05C8>..<reserved-05CF>
-05EB..05EF ; Cn # [5] <reserved-05EB>..<reserved-05EF>
-05F5..05FF ; Cn # [11] <reserved-05F5>..<reserved-05FF>
-061D ; Cn # <reserved-061D>
-070E ; Cn # <reserved-070E>
-074B..074C ; Cn # [2] <reserved-074B>..<reserved-074C>
-07B2..07BF ; Cn # [14] <reserved-07B2>..<reserved-07BF>
-07FB..07FF ; Cn # [5] <reserved-07FB>..<reserved-07FF>
-082E..082F ; Cn # [2] <reserved-082E>..<reserved-082F>
-083F ; Cn # <reserved-083F>
-085C..085D ; Cn # [2] <reserved-085C>..<reserved-085D>
-085F..089F ; Cn # [65] <reserved-085F>..<reserved-089F>
-08B5 ; Cn # <reserved-08B5>
-08BE..08D3 ; Cn # [22] <reserved-08BE>..<reserved-08D3>
-0984 ; Cn # <reserved-0984>
-098D..098E ; Cn # [2] <reserved-098D>..<reserved-098E>
-0991..0992 ; Cn # [2] <reserved-0991>..<reserved-0992>
-09A9 ; Cn # <reserved-09A9>
-09B1 ; Cn # <reserved-09B1>
-09B3..09B5 ; Cn # [3] <reserved-09B3>..<reserved-09B5>
-09BA..09BB ; Cn # [2] <reserved-09BA>..<reserved-09BB>
-09C5..09C6 ; Cn # [2] <reserved-09C5>..<reserved-09C6>
-09C9..09CA ; Cn # [2] <reserved-09C9>..<reserved-09CA>
-09CF..09D6 ; Cn # [8] <reserved-09CF>..<reserved-09D6>
-09D8..09DB ; Cn # [4] <reserved-09D8>..<reserved-09DB>
-09DE ; Cn # <reserved-09DE>
-09E4..09E5 ; Cn # [2] <reserved-09E4>..<reserved-09E5>
-09FC..0A00 ; Cn # [5] <reserved-09FC>..<reserved-0A00>
-0A04 ; Cn # <reserved-0A04>
-0A0B..0A0E ; Cn # [4] <reserved-0A0B>..<reserved-0A0E>
-0A11..0A12 ; Cn # [2] <reserved-0A11>..<reserved-0A12>
-0A29 ; Cn # <reserved-0A29>
-0A31 ; Cn # <reserved-0A31>
-0A34 ; Cn # <reserved-0A34>
-0A37 ; Cn # <reserved-0A37>
-0A3A..0A3B ; Cn # [2] <reserved-0A3A>..<reserved-0A3B>
-0A3D ; Cn # <reserved-0A3D>
-0A43..0A46 ; Cn # [4] <reserved-0A43>..<reserved-0A46>
-0A49..0A4A ; Cn # [2] <reserved-0A49>..<reserved-0A4A>
-0A4E..0A50 ; Cn # [3] <reserved-0A4E>..<reserved-0A50>
-0A52..0A58 ; Cn # [7] <reserved-0A52>..<reserved-0A58>
-0A5D ; Cn # <reserved-0A5D>
-0A5F..0A65 ; Cn # [7] <reserved-0A5F>..<reserved-0A65>
-0A76..0A80 ; Cn # [11] <reserved-0A76>..<reserved-0A80>
-0A84 ; Cn # <reserved-0A84>
-0A8E ; Cn # <reserved-0A8E>
-0A92 ; Cn # <reserved-0A92>
-0AA9 ; Cn # <reserved-0AA9>
-0AB1 ; Cn # <reserved-0AB1>
-0AB4 ; Cn # <reserved-0AB4>
-0ABA..0ABB ; Cn # [2] <reserved-0ABA>..<reserved-0ABB>
-0AC6 ; Cn # <reserved-0AC6>
-0ACA ; Cn # <reserved-0ACA>
-0ACE..0ACF ; Cn # [2] <reserved-0ACE>..<reserved-0ACF>
-0AD1..0ADF ; Cn # [15] <reserved-0AD1>..<reserved-0ADF>
-0AE4..0AE5 ; Cn # [2] <reserved-0AE4>..<reserved-0AE5>
-0AF2..0AF8 ; Cn # [7] <reserved-0AF2>..<reserved-0AF8>
-0AFA..0B00 ; Cn # [7] <reserved-0AFA>..<reserved-0B00>
-0B04 ; Cn # <reserved-0B04>
-0B0D..0B0E ; Cn # [2] <reserved-0B0D>..<reserved-0B0E>
-0B11..0B12 ; Cn # [2] <reserved-0B11>..<reserved-0B12>
-0B29 ; Cn # <reserved-0B29>
-0B31 ; Cn # <reserved-0B31>
-0B34 ; Cn # <reserved-0B34>
-0B3A..0B3B ; Cn # [2] <reserved-0B3A>..<reserved-0B3B>
-0B45..0B46 ; Cn # [2] <reserved-0B45>..<reserved-0B46>
-0B49..0B4A ; Cn # [2] <reserved-0B49>..<reserved-0B4A>
-0B4E..0B55 ; Cn # [8] <reserved-0B4E>..<reserved-0B55>
-0B58..0B5B ; Cn # [4] <reserved-0B58>..<reserved-0B5B>
-0B5E ; Cn # <reserved-0B5E>
-0B64..0B65 ; Cn # [2] <reserved-0B64>..<reserved-0B65>
-0B78..0B81 ; Cn # [10] <reserved-0B78>..<reserved-0B81>
-0B84 ; Cn # <reserved-0B84>
-0B8B..0B8D ; Cn # [3] <reserved-0B8B>..<reserved-0B8D>
-0B91 ; Cn # <reserved-0B91>
-0B96..0B98 ; Cn # [3] <reserved-0B96>..<reserved-0B98>
-0B9B ; Cn # <reserved-0B9B>
-0B9D ; Cn # <reserved-0B9D>
-0BA0..0BA2 ; Cn # [3] <reserved-0BA0>..<reserved-0BA2>
-0BA5..0BA7 ; Cn # [3] <reserved-0BA5>..<reserved-0BA7>
-0BAB..0BAD ; Cn # [3] <reserved-0BAB>..<reserved-0BAD>
-0BBA..0BBD ; Cn # [4] <reserved-0BBA>..<reserved-0BBD>
-0BC3..0BC5 ; Cn # [3] <reserved-0BC3>..<reserved-0BC5>
-0BC9 ; Cn # <reserved-0BC9>
-0BCE..0BCF ; Cn # [2] <reserved-0BCE>..<reserved-0BCF>
-0BD1..0BD6 ; Cn # [6] <reserved-0BD1>..<reserved-0BD6>
-0BD8..0BE5 ; Cn # [14] <reserved-0BD8>..<reserved-0BE5>
-0BFB..0BFF ; Cn # [5] <reserved-0BFB>..<reserved-0BFF>
-0C04 ; Cn # <reserved-0C04>
-0C0D ; Cn # <reserved-0C0D>
-0C11 ; Cn # <reserved-0C11>
-0C29 ; Cn # <reserved-0C29>
-0C3A..0C3C ; Cn # [3] <reserved-0C3A>..<reserved-0C3C>
-0C45 ; Cn # <reserved-0C45>
-0C49 ; Cn # <reserved-0C49>
-0C4E..0C54 ; Cn # [7] <reserved-0C4E>..<reserved-0C54>
-0C57 ; Cn # <reserved-0C57>
-0C5B..0C5F ; Cn # [5] <reserved-0C5B>..<reserved-0C5F>
-0C64..0C65 ; Cn # [2] <reserved-0C64>..<reserved-0C65>
-0C70..0C77 ; Cn # [8] <reserved-0C70>..<reserved-0C77>
-0C84 ; Cn # <reserved-0C84>
-0C8D ; Cn # <reserved-0C8D>
-0C91 ; Cn # <reserved-0C91>
-0CA9 ; Cn # <reserved-0CA9>
-0CB4 ; Cn # <reserved-0CB4>
-0CBA..0CBB ; Cn # [2] <reserved-0CBA>..<reserved-0CBB>
-0CC5 ; Cn # <reserved-0CC5>
-0CC9 ; Cn # <reserved-0CC9>
-0CCE..0CD4 ; Cn # [7] <reserved-0CCE>..<reserved-0CD4>
-0CD7..0CDD ; Cn # [7] <reserved-0CD7>..<reserved-0CDD>
-0CDF ; Cn # <reserved-0CDF>
-0CE4..0CE5 ; Cn # [2] <reserved-0CE4>..<reserved-0CE5>
-0CF0 ; Cn # <reserved-0CF0>
-0CF3..0D00 ; Cn # [14] <reserved-0CF3>..<reserved-0D00>
-0D04 ; Cn # <reserved-0D04>
-0D0D ; Cn # <reserved-0D0D>
-0D11 ; Cn # <reserved-0D11>
-0D3B..0D3C ; Cn # [2] <reserved-0D3B>..<reserved-0D3C>
-0D45 ; Cn # <reserved-0D45>
-0D49 ; Cn # <reserved-0D49>
-0D50..0D53 ; Cn # [4] <reserved-0D50>..<reserved-0D53>
-0D64..0D65 ; Cn # [2] <reserved-0D64>..<reserved-0D65>
-0D80..0D81 ; Cn # [2] <reserved-0D80>..<reserved-0D81>
-0D84 ; Cn # <reserved-0D84>
-0D97..0D99 ; Cn # [3] <reserved-0D97>..<reserved-0D99>
-0DB2 ; Cn # <reserved-0DB2>
-0DBC ; Cn # <reserved-0DBC>
-0DBE..0DBF ; Cn # [2] <reserved-0DBE>..<reserved-0DBF>
-0DC7..0DC9 ; Cn # [3] <reserved-0DC7>..<reserved-0DC9>
-0DCB..0DCE ; Cn # [4] <reserved-0DCB>..<reserved-0DCE>
-0DD5 ; Cn # <reserved-0DD5>
-0DD7 ; Cn # <reserved-0DD7>
-0DE0..0DE5 ; Cn # [6] <reserved-0DE0>..<reserved-0DE5>
-0DF0..0DF1 ; Cn # [2] <reserved-0DF0>..<reserved-0DF1>
-0DF5..0E00 ; Cn # [12] <reserved-0DF5>..<reserved-0E00>
-0E3B..0E3E ; Cn # [4] <reserved-0E3B>..<reserved-0E3E>
-0E5C..0E80 ; Cn # [37] <reserved-0E5C>..<reserved-0E80>
-0E83 ; Cn # <reserved-0E83>
-0E85..0E86 ; Cn # [2] <reserved-0E85>..<reserved-0E86>
-0E89 ; Cn # <reserved-0E89>
-0E8B..0E8C ; Cn # [2] <reserved-0E8B>..<reserved-0E8C>
-0E8E..0E93 ; Cn # [6] <reserved-0E8E>..<reserved-0E93>
-0E98 ; Cn # <reserved-0E98>
-0EA0 ; Cn # <reserved-0EA0>
-0EA4 ; Cn # <reserved-0EA4>
-0EA6 ; Cn # <reserved-0EA6>
-0EA8..0EA9 ; Cn # [2] <reserved-0EA8>..<reserved-0EA9>
-0EAC ; Cn # <reserved-0EAC>
-0EBA ; Cn # <reserved-0EBA>
-0EBE..0EBF ; Cn # [2] <reserved-0EBE>..<reserved-0EBF>
-0EC5 ; Cn # <reserved-0EC5>
-0EC7 ; Cn # <reserved-0EC7>
-0ECE..0ECF ; Cn # [2] <reserved-0ECE>..<reserved-0ECF>
-0EDA..0EDB ; Cn # [2] <reserved-0EDA>..<reserved-0EDB>
-0EE0..0EFF ; Cn # [32] <reserved-0EE0>..<reserved-0EFF>
-0F48 ; Cn # <reserved-0F48>
-0F6D..0F70 ; Cn # [4] <reserved-0F6D>..<reserved-0F70>
-0F98 ; Cn # <reserved-0F98>
-0FBD ; Cn # <reserved-0FBD>
-0FCD ; Cn # <reserved-0FCD>
-0FDB..0FFF ; Cn # [37] <reserved-0FDB>..<reserved-0FFF>
-10C6 ; Cn # <reserved-10C6>
-10C8..10CC ; Cn # [5] <reserved-10C8>..<reserved-10CC>
-10CE..10CF ; Cn # [2] <reserved-10CE>..<reserved-10CF>
-1249 ; Cn # <reserved-1249>
-124E..124F ; Cn # [2] <reserved-124E>..<reserved-124F>
-1257 ; Cn # <reserved-1257>
-1259 ; Cn # <reserved-1259>
-125E..125F ; Cn # [2] <reserved-125E>..<reserved-125F>
-1289 ; Cn # <reserved-1289>
-128E..128F ; Cn # [2] <reserved-128E>..<reserved-128F>
-12B1 ; Cn # <reserved-12B1>
-12B6..12B7 ; Cn # [2] <reserved-12B6>..<reserved-12B7>
-12BF ; Cn # <reserved-12BF>
-12C1 ; Cn # <reserved-12C1>
-12C6..12C7 ; Cn # [2] <reserved-12C6>..<reserved-12C7>
-12D7 ; Cn # <reserved-12D7>
-1311 ; Cn # <reserved-1311>
-1316..1317 ; Cn # [2] <reserved-1316>..<reserved-1317>
-135B..135C ; Cn # [2] <reserved-135B>..<reserved-135C>
-137D..137F ; Cn # [3] <reserved-137D>..<reserved-137F>
-139A..139F ; Cn # [6] <reserved-139A>..<reserved-139F>
-13F6..13F7 ; Cn # [2] <reserved-13F6>..<reserved-13F7>
-13FE..13FF ; Cn # [2] <reserved-13FE>..<reserved-13FF>
-169D..169F ; Cn # [3] <reserved-169D>..<reserved-169F>
-16F9..16FF ; Cn # [7] <reserved-16F9>..<reserved-16FF>
-170D ; Cn # <reserved-170D>
-1715..171F ; Cn # [11] <reserved-1715>..<reserved-171F>
-1737..173F ; Cn # [9] <reserved-1737>..<reserved-173F>
-1754..175F ; Cn # [12] <reserved-1754>..<reserved-175F>
-176D ; Cn # <reserved-176D>
-1771 ; Cn # <reserved-1771>
-1774..177F ; Cn # [12] <reserved-1774>..<reserved-177F>
-17DE..17DF ; Cn # [2] <reserved-17DE>..<reserved-17DF>
-17EA..17EF ; Cn # [6] <reserved-17EA>..<reserved-17EF>
-17FA..17FF ; Cn # [6] <reserved-17FA>..<reserved-17FF>
-180F ; Cn # <reserved-180F>
-181A..181F ; Cn # [6] <reserved-181A>..<reserved-181F>
-1878..187F ; Cn # [8] <reserved-1878>..<reserved-187F>
-18AB..18AF ; Cn # [5] <reserved-18AB>..<reserved-18AF>
-18F6..18FF ; Cn # [10] <reserved-18F6>..<reserved-18FF>
-191F ; Cn # <reserved-191F>
-192C..192F ; Cn # [4] <reserved-192C>..<reserved-192F>
-193C..193F ; Cn # [4] <reserved-193C>..<reserved-193F>
-1941..1943 ; Cn # [3] <reserved-1941>..<reserved-1943>
-196E..196F ; Cn # [2] <reserved-196E>..<reserved-196F>
-1975..197F ; Cn # [11] <reserved-1975>..<reserved-197F>
-19AC..19AF ; Cn # [4] <reserved-19AC>..<reserved-19AF>
-19CA..19CF ; Cn # [6] <reserved-19CA>..<reserved-19CF>
-19DB..19DD ; Cn # [3] <reserved-19DB>..<reserved-19DD>
-1A1C..1A1D ; Cn # [2] <reserved-1A1C>..<reserved-1A1D>
-1A5F ; Cn # <reserved-1A5F>
-1A7D..1A7E ; Cn # [2] <reserved-1A7D>..<reserved-1A7E>
-1A8A..1A8F ; Cn # [6] <reserved-1A8A>..<reserved-1A8F>
-1A9A..1A9F ; Cn # [6] <reserved-1A9A>..<reserved-1A9F>
-1AAE..1AAF ; Cn # [2] <reserved-1AAE>..<reserved-1AAF>
-1ABF..1AFF ; Cn # [65] <reserved-1ABF>..<reserved-1AFF>
-1B4C..1B4F ; Cn # [4] <reserved-1B4C>..<reserved-1B4F>
-1B7D..1B7F ; Cn # [3] <reserved-1B7D>..<reserved-1B7F>
-1BF4..1BFB ; Cn # [8] <reserved-1BF4>..<reserved-1BFB>
-1C38..1C3A ; Cn # [3] <reserved-1C38>..<reserved-1C3A>
-1C4A..1C4C ; Cn # [3] <reserved-1C4A>..<reserved-1C4C>
-1C89..1CBF ; Cn # [55] <reserved-1C89>..<reserved-1CBF>
-1CC8..1CCF ; Cn # [8] <reserved-1CC8>..<reserved-1CCF>
-1CF7 ; Cn # <reserved-1CF7>
-1CFA..1CFF ; Cn # [6] <reserved-1CFA>..<reserved-1CFF>
-1DF6..1DFA ; Cn # [5] <reserved-1DF6>..<reserved-1DFA>
-1F16..1F17 ; Cn # [2] <reserved-1F16>..<reserved-1F17>
-1F1E..1F1F ; Cn # [2] <reserved-1F1E>..<reserved-1F1F>
-1F46..1F47 ; Cn # [2] <reserved-1F46>..<reserved-1F47>
-1F4E..1F4F ; Cn # [2] <reserved-1F4E>..<reserved-1F4F>
-1F58 ; Cn # <reserved-1F58>
-1F5A ; Cn # <reserved-1F5A>
-1F5C ; Cn # <reserved-1F5C>
-1F5E ; Cn # <reserved-1F5E>
-1F7E..1F7F ; Cn # [2] <reserved-1F7E>..<reserved-1F7F>
-1FB5 ; Cn # <reserved-1FB5>
-1FC5 ; Cn # <reserved-1FC5>
-1FD4..1FD5 ; Cn # [2] <reserved-1FD4>..<reserved-1FD5>
-1FDC ; Cn # <reserved-1FDC>
-1FF0..1FF1 ; Cn # [2] <reserved-1FF0>..<reserved-1FF1>
-1FF5 ; Cn # <reserved-1FF5>
-1FFF ; Cn # <reserved-1FFF>
-2065 ; Cn # <reserved-2065>
-2072..2073 ; Cn # [2] <reserved-2072>..<reserved-2073>
-208F ; Cn # <reserved-208F>
-209D..209F ; Cn # [3] <reserved-209D>..<reserved-209F>
-20BF..20CF ; Cn # [17] <reserved-20BF>..<reserved-20CF>
-20F1..20FF ; Cn # [15] <reserved-20F1>..<reserved-20FF>
-218C..218F ; Cn # [4] <reserved-218C>..<reserved-218F>
-23FF ; Cn # <reserved-23FF>
-2427..243F ; Cn # [25] <reserved-2427>..<reserved-243F>
-244B..245F ; Cn # [21] <reserved-244B>..<reserved-245F>
-2B74..2B75 ; Cn # [2] <reserved-2B74>..<reserved-2B75>
-2B96..2B97 ; Cn # [2] <reserved-2B96>..<reserved-2B97>
-2BBA..2BBC ; Cn # [3] <reserved-2BBA>..<reserved-2BBC>
-2BC9 ; Cn # <reserved-2BC9>
-2BD2..2BEB ; Cn # [26] <reserved-2BD2>..<reserved-2BEB>
-2BF0..2BFF ; Cn # [16] <reserved-2BF0>..<reserved-2BFF>
-2C2F ; Cn # <reserved-2C2F>
-2C5F ; Cn # <reserved-2C5F>
-2CF4..2CF8 ; Cn # [5] <reserved-2CF4>..<reserved-2CF8>
-2D26 ; Cn # <reserved-2D26>
-2D28..2D2C ; Cn # [5] <reserved-2D28>..<reserved-2D2C>
-2D2E..2D2F ; Cn # [2] <reserved-2D2E>..<reserved-2D2F>
-2D68..2D6E ; Cn # [7] <reserved-2D68>..<reserved-2D6E>
-2D71..2D7E ; Cn # [14] <reserved-2D71>..<reserved-2D7E>
-2D97..2D9F ; Cn # [9] <reserved-2D97>..<reserved-2D9F>
-2DA7 ; Cn # <reserved-2DA7>
-2DAF ; Cn # <reserved-2DAF>
-2DB7 ; Cn # <reserved-2DB7>
-2DBF ; Cn # <reserved-2DBF>
-2DC7 ; Cn # <reserved-2DC7>
-2DCF ; Cn # <reserved-2DCF>
-2DD7 ; Cn # <reserved-2DD7>
-2DDF ; Cn # <reserved-2DDF>
-2E45..2E7F ; Cn # [59] <reserved-2E45>..<reserved-2E7F>
-2E9A ; Cn # <reserved-2E9A>
-2EF4..2EFF ; Cn # [12] <reserved-2EF4>..<reserved-2EFF>
-2FD6..2FEF ; Cn # [26] <reserved-2FD6>..<reserved-2FEF>
-2FFC..2FFF ; Cn # [4] <reserved-2FFC>..<reserved-2FFF>
-3040 ; Cn # <reserved-3040>
-3097..3098 ; Cn # [2] <reserved-3097>..<reserved-3098>
-3100..3104 ; Cn # [5] <reserved-3100>..<reserved-3104>
-312E..3130 ; Cn # [3] <reserved-312E>..<reserved-3130>
-318F ; Cn # <reserved-318F>
-31BB..31BF ; Cn # [5] <reserved-31BB>..<reserved-31BF>
-31E4..31EF ; Cn # [12] <reserved-31E4>..<reserved-31EF>
-321F ; Cn # <reserved-321F>
-32FF ; Cn # <reserved-32FF>
-4DB6..4DBF ; Cn # [10] <reserved-4DB6>..<reserved-4DBF>
-9FD6..9FFF ; Cn # [42] <reserved-9FD6>..<reserved-9FFF>
-A48D..A48F ; Cn # [3] <reserved-A48D>..<reserved-A48F>
-A4C7..A4CF ; Cn # [9] <reserved-A4C7>..<reserved-A4CF>
-A62C..A63F ; Cn # [20] <reserved-A62C>..<reserved-A63F>
-A6F8..A6FF ; Cn # [8] <reserved-A6F8>..<reserved-A6FF>
-A7AF ; Cn # <reserved-A7AF>
-A7B8..A7F6 ; Cn # [63] <reserved-A7B8>..<reserved-A7F6>
-A82C..A82F ; Cn # [4] <reserved-A82C>..<reserved-A82F>
-A83A..A83F ; Cn # [6] <reserved-A83A>..<reserved-A83F>
-A878..A87F ; Cn # [8] <reserved-A878>..<reserved-A87F>
-A8C6..A8CD ; Cn # [8] <reserved-A8C6>..<reserved-A8CD>
-A8DA..A8DF ; Cn # [6] <reserved-A8DA>..<reserved-A8DF>
-A8FE..A8FF ; Cn # [2] <reserved-A8FE>..<reserved-A8FF>
-A954..A95E ; Cn # [11] <reserved-A954>..<reserved-A95E>
-A97D..A97F ; Cn # [3] <reserved-A97D>..<reserved-A97F>
-A9CE ; Cn # <reserved-A9CE>
-A9DA..A9DD ; Cn # [4] <reserved-A9DA>..<reserved-A9DD>
-A9FF ; Cn # <reserved-A9FF>
-AA37..AA3F ; Cn # [9] <reserved-AA37>..<reserved-AA3F>
-AA4E..AA4F ; Cn # [2] <reserved-AA4E>..<reserved-AA4F>
-AA5A..AA5B ; Cn # [2] <reserved-AA5A>..<reserved-AA5B>
-AAC3..AADA ; Cn # [24] <reserved-AAC3>..<reserved-AADA>
-AAF7..AB00 ; Cn # [10] <reserved-AAF7>..<reserved-AB00>
-AB07..AB08 ; Cn # [2] <reserved-AB07>..<reserved-AB08>
-AB0F..AB10 ; Cn # [2] <reserved-AB0F>..<reserved-AB10>
-AB17..AB1F ; Cn # [9] <reserved-AB17>..<reserved-AB1F>
-AB27 ; Cn # <reserved-AB27>
-AB2F ; Cn # <reserved-AB2F>
-AB66..AB6F ; Cn # [10] <reserved-AB66>..<reserved-AB6F>
-ABEE..ABEF ; Cn # [2] <reserved-ABEE>..<reserved-ABEF>
-ABFA..ABFF ; Cn # [6] <reserved-ABFA>..<reserved-ABFF>
-D7A4..D7AF ; Cn # [12] <reserved-D7A4>..<reserved-D7AF>
-D7C7..D7CA ; Cn # [4] <reserved-D7C7>..<reserved-D7CA>
-D7FC..D7FF ; Cn # [4] <reserved-D7FC>..<reserved-D7FF>
-FA6E..FA6F ; Cn # [2] <reserved-FA6E>..<reserved-FA6F>
-FADA..FAFF ; Cn # [38] <reserved-FADA>..<reserved-FAFF>
-FB07..FB12 ; Cn # [12] <reserved-FB07>..<reserved-FB12>
-FB18..FB1C ; Cn # [5] <reserved-FB18>..<reserved-FB1C>
-FB37 ; Cn # <reserved-FB37>
-FB3D ; Cn # <reserved-FB3D>
-FB3F ; Cn # <reserved-FB3F>
-FB42 ; Cn # <reserved-FB42>
-FB45 ; Cn # <reserved-FB45>
-FBC2..FBD2 ; Cn # [17] <reserved-FBC2>..<reserved-FBD2>
-FD40..FD4F ; Cn # [16] <reserved-FD40>..<reserved-FD4F>
-FD90..FD91 ; Cn # [2] <reserved-FD90>..<reserved-FD91>
-FDC8..FDEF ; Cn # [40] <reserved-FDC8>..<noncharacter-FDEF>
-FDFE..FDFF ; Cn # [2] <reserved-FDFE>..<reserved-FDFF>
-FE1A..FE1F ; Cn # [6] <reserved-FE1A>..<reserved-FE1F>
-FE53 ; Cn # <reserved-FE53>
-FE67 ; Cn # <reserved-FE67>
-FE6C..FE6F ; Cn # [4] <reserved-FE6C>..<reserved-FE6F>
-FE75 ; Cn # <reserved-FE75>
-FEFD..FEFE ; Cn # [2] <reserved-FEFD>..<reserved-FEFE>
-FF00 ; Cn # <reserved-FF00>
-FFBF..FFC1 ; Cn # [3] <reserved-FFBF>..<reserved-FFC1>
-FFC8..FFC9 ; Cn # [2] <reserved-FFC8>..<reserved-FFC9>
-FFD0..FFD1 ; Cn # [2] <reserved-FFD0>..<reserved-FFD1>
-FFD8..FFD9 ; Cn # [2] <reserved-FFD8>..<reserved-FFD9>
-FFDD..FFDF ; Cn # [3] <reserved-FFDD>..<reserved-FFDF>
-FFE7 ; Cn # <reserved-FFE7>
-FFEF..FFF8 ; Cn # [10] <reserved-FFEF>..<reserved-FFF8>
-FFFE..FFFF ; Cn # [2] <noncharacter-FFFE>..<noncharacter-FFFF>
-1000C ; Cn # <reserved-1000C>
-10027 ; Cn # <reserved-10027>
-1003B ; Cn # <reserved-1003B>
-1003E ; Cn # <reserved-1003E>
-1004E..1004F ; Cn # [2] <reserved-1004E>..<reserved-1004F>
-1005E..1007F ; Cn # [34] <reserved-1005E>..<reserved-1007F>
-100FB..100FF ; Cn # [5] <reserved-100FB>..<reserved-100FF>
-10103..10106 ; Cn # [4] <reserved-10103>..<reserved-10106>
-10134..10136 ; Cn # [3] <reserved-10134>..<reserved-10136>
-1018F ; Cn # <reserved-1018F>
-1019C..1019F ; Cn # [4] <reserved-1019C>..<reserved-1019F>
-101A1..101CF ; Cn # [47] <reserved-101A1>..<reserved-101CF>
-101FE..1027F ; Cn # [130] <reserved-101FE>..<reserved-1027F>
-1029D..1029F ; Cn # [3] <reserved-1029D>..<reserved-1029F>
-102D1..102DF ; Cn # [15] <reserved-102D1>..<reserved-102DF>
-102FC..102FF ; Cn # [4] <reserved-102FC>..<reserved-102FF>
-10324..1032F ; Cn # [12] <reserved-10324>..<reserved-1032F>
-1034B..1034F ; Cn # [5] <reserved-1034B>..<reserved-1034F>
-1037B..1037F ; Cn # [5] <reserved-1037B>..<reserved-1037F>
-1039E ; Cn # <reserved-1039E>
-103C4..103C7 ; Cn # [4] <reserved-103C4>..<reserved-103C7>
-103D6..103FF ; Cn # [42] <reserved-103D6>..<reserved-103FF>
-1049E..1049F ; Cn # [2] <reserved-1049E>..<reserved-1049F>
-104AA..104AF ; Cn # [6] <reserved-104AA>..<reserved-104AF>
-104D4..104D7 ; Cn # [4] <reserved-104D4>..<reserved-104D7>
-104FC..104FF ; Cn # [4] <reserved-104FC>..<reserved-104FF>
-10528..1052F ; Cn # [8] <reserved-10528>..<reserved-1052F>
-10564..1056E ; Cn # [11] <reserved-10564>..<reserved-1056E>
-10570..105FF ; Cn # [144] <reserved-10570>..<reserved-105FF>
-10737..1073F ; Cn # [9] <reserved-10737>..<reserved-1073F>
-10756..1075F ; Cn # [10] <reserved-10756>..<reserved-1075F>
-10768..107FF ; Cn # [152] <reserved-10768>..<reserved-107FF>
-10806..10807 ; Cn # [2] <reserved-10806>..<reserved-10807>
-10809 ; Cn # <reserved-10809>
-10836 ; Cn # <reserved-10836>
-10839..1083B ; Cn # [3] <reserved-10839>..<reserved-1083B>
-1083D..1083E ; Cn # [2] <reserved-1083D>..<reserved-1083E>
-10856 ; Cn # <reserved-10856>
-1089F..108A6 ; Cn # [8] <reserved-1089F>..<reserved-108A6>
-108B0..108DF ; Cn # [48] <reserved-108B0>..<reserved-108DF>
-108F3 ; Cn # <reserved-108F3>
-108F6..108FA ; Cn # [5] <reserved-108F6>..<reserved-108FA>
-1091C..1091E ; Cn # [3] <reserved-1091C>..<reserved-1091E>
-1093A..1093E ; Cn # [5] <reserved-1093A>..<reserved-1093E>
-10940..1097F ; Cn # [64] <reserved-10940>..<reserved-1097F>
-109B8..109BB ; Cn # [4] <reserved-109B8>..<reserved-109BB>
-109D0..109D1 ; Cn # [2] <reserved-109D0>..<reserved-109D1>
-10A04 ; Cn # <reserved-10A04>
-10A07..10A0B ; Cn # [5] <reserved-10A07>..<reserved-10A0B>
-10A14 ; Cn # <reserved-10A14>
-10A18 ; Cn # <reserved-10A18>
-10A34..10A37 ; Cn # [4] <reserved-10A34>..<reserved-10A37>
-10A3B..10A3E ; Cn # [4] <reserved-10A3B>..<reserved-10A3E>
-10A48..10A4F ; Cn # [8] <reserved-10A48>..<reserved-10A4F>
-10A59..10A5F ; Cn # [7] <reserved-10A59>..<reserved-10A5F>
-10AA0..10ABF ; Cn # [32] <reserved-10AA0>..<reserved-10ABF>
-10AE7..10AEA ; Cn # [4] <reserved-10AE7>..<reserved-10AEA>
-10AF7..10AFF ; Cn # [9] <reserved-10AF7>..<reserved-10AFF>
-10B36..10B38 ; Cn # [3] <reserved-10B36>..<reserved-10B38>
-10B56..10B57 ; Cn # [2] <reserved-10B56>..<reserved-10B57>
-10B73..10B77 ; Cn # [5] <reserved-10B73>..<reserved-10B77>
-10B92..10B98 ; Cn # [7] <reserved-10B92>..<reserved-10B98>
-10B9D..10BA8 ; Cn # [12] <reserved-10B9D>..<reserved-10BA8>
-10BB0..10BFF ; Cn # [80] <reserved-10BB0>..<reserved-10BFF>
-10C49..10C7F ; Cn # [55] <reserved-10C49>..<reserved-10C7F>
-10CB3..10CBF ; Cn # [13] <reserved-10CB3>..<reserved-10CBF>
-10CF3..10CF9 ; Cn # [7] <reserved-10CF3>..<reserved-10CF9>
-10D00..10E5F ; Cn # [352] <reserved-10D00>..<reserved-10E5F>
-10E7F..10FFF ; Cn # [385] <reserved-10E7F>..<reserved-10FFF>
-1104E..11051 ; Cn # [4] <reserved-1104E>..<reserved-11051>
-11070..1107E ; Cn # [15] <reserved-11070>..<reserved-1107E>
-110C2..110CF ; Cn # [14] <reserved-110C2>..<reserved-110CF>
-110E9..110EF ; Cn # [7] <reserved-110E9>..<reserved-110EF>
-110FA..110FF ; Cn # [6] <reserved-110FA>..<reserved-110FF>
-11135 ; Cn # <reserved-11135>
-11144..1114F ; Cn # [12] <reserved-11144>..<reserved-1114F>
-11177..1117F ; Cn # [9] <reserved-11177>..<reserved-1117F>
-111CE..111CF ; Cn # [2] <reserved-111CE>..<reserved-111CF>
-111E0 ; Cn # <reserved-111E0>
-111F5..111FF ; Cn # [11] <reserved-111F5>..<reserved-111FF>
-11212 ; Cn # <reserved-11212>
-1123F..1127F ; Cn # [65] <reserved-1123F>..<reserved-1127F>
-11287 ; Cn # <reserved-11287>
-11289 ; Cn # <reserved-11289>
-1128E ; Cn # <reserved-1128E>
-1129E ; Cn # <reserved-1129E>
-112AA..112AF ; Cn # [6] <reserved-112AA>..<reserved-112AF>
-112EB..112EF ; Cn # [5] <reserved-112EB>..<reserved-112EF>
-112FA..112FF ; Cn # [6] <reserved-112FA>..<reserved-112FF>
-11304 ; Cn # <reserved-11304>
-1130D..1130E ; Cn # [2] <reserved-1130D>..<reserved-1130E>
-11311..11312 ; Cn # [2] <reserved-11311>..<reserved-11312>
-11329 ; Cn # <reserved-11329>
-11331 ; Cn # <reserved-11331>
-11334 ; Cn # <reserved-11334>
-1133A..1133B ; Cn # [2] <reserved-1133A>..<reserved-1133B>
-11345..11346 ; Cn # [2] <reserved-11345>..<reserved-11346>
-11349..1134A ; Cn # [2] <reserved-11349>..<reserved-1134A>
-1134E..1134F ; Cn # [2] <reserved-1134E>..<reserved-1134F>
-11351..11356 ; Cn # [6] <reserved-11351>..<reserved-11356>
-11358..1135C ; Cn # [5] <reserved-11358>..<reserved-1135C>
-11364..11365 ; Cn # [2] <reserved-11364>..<reserved-11365>
-1136D..1136F ; Cn # [3] <reserved-1136D>..<reserved-1136F>
-11375..113FF ; Cn # [139] <reserved-11375>..<reserved-113FF>
-1145A ; Cn # <reserved-1145A>
-1145C ; Cn # <reserved-1145C>
-1145E..1147F ; Cn # [34] <reserved-1145E>..<reserved-1147F>
-114C8..114CF ; Cn # [8] <reserved-114C8>..<reserved-114CF>
-114DA..1157F ; Cn # [166] <reserved-114DA>..<reserved-1157F>
-115B6..115B7 ; Cn # [2] <reserved-115B6>..<reserved-115B7>
-115DE..115FF ; Cn # [34] <reserved-115DE>..<reserved-115FF>
-11645..1164F ; Cn # [11] <reserved-11645>..<reserved-1164F>
-1165A..1165F ; Cn # [6] <reserved-1165A>..<reserved-1165F>
-1166D..1167F ; Cn # [19] <reserved-1166D>..<reserved-1167F>
-116B8..116BF ; Cn # [8] <reserved-116B8>..<reserved-116BF>
-116CA..116FF ; Cn # [54] <reserved-116CA>..<reserved-116FF>
-1171A..1171C ; Cn # [3] <reserved-1171A>..<reserved-1171C>
-1172C..1172F ; Cn # [4] <reserved-1172C>..<reserved-1172F>
-11740..1189F ; Cn # [352] <reserved-11740>..<reserved-1189F>
-118F3..118FE ; Cn # [12] <reserved-118F3>..<reserved-118FE>
-11900..11ABF ; Cn # [448] <reserved-11900>..<reserved-11ABF>
-11AF9..11BFF ; Cn # [263] <reserved-11AF9>..<reserved-11BFF>
-11C09 ; Cn # <reserved-11C09>
-11C37 ; Cn # <reserved-11C37>
-11C46..11C4F ; Cn # [10] <reserved-11C46>..<reserved-11C4F>
-11C6D..11C6F ; Cn # [3] <reserved-11C6D>..<reserved-11C6F>
-11C90..11C91 ; Cn # [2] <reserved-11C90>..<reserved-11C91>
-11CA8 ; Cn # <reserved-11CA8>
-11CB7..11FFF ; Cn # [841] <reserved-11CB7>..<reserved-11FFF>
-1239A..123FF ; Cn # [102] <reserved-1239A>..<reserved-123FF>
-1246F ; Cn # <reserved-1246F>
-12475..1247F ; Cn # [11] <reserved-12475>..<reserved-1247F>
-12544..12FFF ; Cn # [2748] <reserved-12544>..<reserved-12FFF>
-1342F..143FF ; Cn # [4049] <reserved-1342F>..<reserved-143FF>
-14647..167FF ; Cn # [8633] <reserved-14647>..<reserved-167FF>
-16A39..16A3F ; Cn # [7] <reserved-16A39>..<reserved-16A3F>
-16A5F ; Cn # <reserved-16A5F>
-16A6A..16A6D ; Cn # [4] <reserved-16A6A>..<reserved-16A6D>
-16A70..16ACF ; Cn # [96] <reserved-16A70>..<reserved-16ACF>
-16AEE..16AEF ; Cn # [2] <reserved-16AEE>..<reserved-16AEF>
-16AF6..16AFF ; Cn # [10] <reserved-16AF6>..<reserved-16AFF>
-16B46..16B4F ; Cn # [10] <reserved-16B46>..<reserved-16B4F>
-16B5A ; Cn # <reserved-16B5A>
-16B62 ; Cn # <reserved-16B62>
-16B78..16B7C ; Cn # [5] <reserved-16B78>..<reserved-16B7C>
-16B90..16EFF ; Cn # [880] <reserved-16B90>..<reserved-16EFF>
-16F45..16F4F ; Cn # [11] <reserved-16F45>..<reserved-16F4F>
-16F7F..16F8E ; Cn # [16] <reserved-16F7F>..<reserved-16F8E>
-16FA0..16FDF ; Cn # [64] <reserved-16FA0>..<reserved-16FDF>
-16FE1..16FFF ; Cn # [31] <reserved-16FE1>..<reserved-16FFF>
-187ED..187FF ; Cn # [19] <reserved-187ED>..<reserved-187FF>
-18AF3..1AFFF ; Cn # [9485] <reserved-18AF3>..<reserved-1AFFF>
-1B002..1BBFF ; Cn # [3070] <reserved-1B002>..<reserved-1BBFF>
-1BC6B..1BC6F ; Cn # [5] <reserved-1BC6B>..<reserved-1BC6F>
-1BC7D..1BC7F ; Cn # [3] <reserved-1BC7D>..<reserved-1BC7F>
-1BC89..1BC8F ; Cn # [7] <reserved-1BC89>..<reserved-1BC8F>
-1BC9A..1BC9B ; Cn # [2] <reserved-1BC9A>..<reserved-1BC9B>
-1BCA4..1CFFF ; Cn # [4956] <reserved-1BCA4>..<reserved-1CFFF>
-1D0F6..1D0FF ; Cn # [10] <reserved-1D0F6>..<reserved-1D0FF>
-1D127..1D128 ; Cn # [2] <reserved-1D127>..<reserved-1D128>
-1D1E9..1D1FF ; Cn # [23] <reserved-1D1E9>..<reserved-1D1FF>
-1D246..1D2FF ; Cn # [186] <reserved-1D246>..<reserved-1D2FF>
-1D357..1D35F ; Cn # [9] <reserved-1D357>..<reserved-1D35F>
-1D372..1D3FF ; Cn # [142] <reserved-1D372>..<reserved-1D3FF>
-1D455 ; Cn # <reserved-1D455>
-1D49D ; Cn # <reserved-1D49D>
-1D4A0..1D4A1 ; Cn # [2] <reserved-1D4A0>..<reserved-1D4A1>
-1D4A3..1D4A4 ; Cn # [2] <reserved-1D4A3>..<reserved-1D4A4>
-1D4A7..1D4A8 ; Cn # [2] <reserved-1D4A7>..<reserved-1D4A8>
-1D4AD ; Cn # <reserved-1D4AD>
-1D4BA ; Cn # <reserved-1D4BA>
-1D4BC ; Cn # <reserved-1D4BC>
-1D4C4 ; Cn # <reserved-1D4C4>
-1D506 ; Cn # <reserved-1D506>
-1D50B..1D50C ; Cn # [2] <reserved-1D50B>..<reserved-1D50C>
-1D515 ; Cn # <reserved-1D515>
-1D51D ; Cn # <reserved-1D51D>
-1D53A ; Cn # <reserved-1D53A>
-1D53F ; Cn # <reserved-1D53F>
-1D545 ; Cn # <reserved-1D545>
-1D547..1D549 ; Cn # [3] <reserved-1D547>..<reserved-1D549>
-1D551 ; Cn # <reserved-1D551>
-1D6A6..1D6A7 ; Cn # [2] <reserved-1D6A6>..<reserved-1D6A7>
-1D7CC..1D7CD ; Cn # [2] <reserved-1D7CC>..<reserved-1D7CD>
-1DA8C..1DA9A ; Cn # [15] <reserved-1DA8C>..<reserved-1DA9A>
-1DAA0 ; Cn # <reserved-1DAA0>
-1DAB0..1DFFF ; Cn # [1360] <reserved-1DAB0>..<reserved-1DFFF>
-1E007 ; Cn # <reserved-1E007>
-1E019..1E01A ; Cn # [2] <reserved-1E019>..<reserved-1E01A>
-1E022 ; Cn # <reserved-1E022>
-1E025 ; Cn # <reserved-1E025>
-1E02B..1E7FF ; Cn # [2005] <reserved-1E02B>..<reserved-1E7FF>
-1E8C5..1E8C6 ; Cn # [2] <reserved-1E8C5>..<reserved-1E8C6>
-1E8D7..1E8FF ; Cn # [41] <reserved-1E8D7>..<reserved-1E8FF>
-1E94B..1E94F ; Cn # [5] <reserved-1E94B>..<reserved-1E94F>
-1E95A..1E95D ; Cn # [4] <reserved-1E95A>..<reserved-1E95D>
-1E960..1EDFF ; Cn # [1184] <reserved-1E960>..<reserved-1EDFF>
-1EE04 ; Cn # <reserved-1EE04>
-1EE20 ; Cn # <reserved-1EE20>
-1EE23 ; Cn # <reserved-1EE23>
-1EE25..1EE26 ; Cn # [2] <reserved-1EE25>..<reserved-1EE26>
-1EE28 ; Cn # <reserved-1EE28>
-1EE33 ; Cn # <reserved-1EE33>
-1EE38 ; Cn # <reserved-1EE38>
-1EE3A ; Cn # <reserved-1EE3A>
-1EE3C..1EE41 ; Cn # [6] <reserved-1EE3C>..<reserved-1EE41>
-1EE43..1EE46 ; Cn # [4] <reserved-1EE43>..<reserved-1EE46>
-1EE48 ; Cn # <reserved-1EE48>
-1EE4A ; Cn # <reserved-1EE4A>
-1EE4C ; Cn # <reserved-1EE4C>
-1EE50 ; Cn # <reserved-1EE50>
-1EE53 ; Cn # <reserved-1EE53>
-1EE55..1EE56 ; Cn # [2] <reserved-1EE55>..<reserved-1EE56>
-1EE58 ; Cn # <reserved-1EE58>
-1EE5A ; Cn # <reserved-1EE5A>
-1EE5C ; Cn # <reserved-1EE5C>
-1EE5E ; Cn # <reserved-1EE5E>
-1EE60 ; Cn # <reserved-1EE60>
-1EE63 ; Cn # <reserved-1EE63>
-1EE65..1EE66 ; Cn # [2] <reserved-1EE65>..<reserved-1EE66>
-1EE6B ; Cn # <reserved-1EE6B>
-1EE73 ; Cn # <reserved-1EE73>
-1EE78 ; Cn # <reserved-1EE78>
-1EE7D ; Cn # <reserved-1EE7D>
-1EE7F ; Cn # <reserved-1EE7F>
-1EE8A ; Cn # <reserved-1EE8A>
-1EE9C..1EEA0 ; Cn # [5] <reserved-1EE9C>..<reserved-1EEA0>
-1EEA4 ; Cn # <reserved-1EEA4>
-1EEAA ; Cn # <reserved-1EEAA>
-1EEBC..1EEEF ; Cn # [52] <reserved-1EEBC>..<reserved-1EEEF>
-1EEF2..1EFFF ; Cn # [270] <reserved-1EEF2>..<reserved-1EFFF>
-1F02C..1F02F ; Cn # [4] <reserved-1F02C>..<reserved-1F02F>
-1F094..1F09F ; Cn # [12] <reserved-1F094>..<reserved-1F09F>
-1F0AF..1F0B0 ; Cn # [2] <reserved-1F0AF>..<reserved-1F0B0>
-1F0C0 ; Cn # <reserved-1F0C0>
-1F0D0 ; Cn # <reserved-1F0D0>
-1F0F6..1F0FF ; Cn # [10] <reserved-1F0F6>..<reserved-1F0FF>
-1F10D..1F10F ; Cn # [3] <reserved-1F10D>..<reserved-1F10F>
-1F12F ; Cn # <reserved-1F12F>
-1F16C..1F16F ; Cn # [4] <reserved-1F16C>..<reserved-1F16F>
-1F1AD..1F1E5 ; Cn # [57] <reserved-1F1AD>..<reserved-1F1E5>
-1F203..1F20F ; Cn # [13] <reserved-1F203>..<reserved-1F20F>
-1F23C..1F23F ; Cn # [4] <reserved-1F23C>..<reserved-1F23F>
-1F249..1F24F ; Cn # [7] <reserved-1F249>..<reserved-1F24F>
-1F252..1F2FF ; Cn # [174] <reserved-1F252>..<reserved-1F2FF>
-1F6D3..1F6DF ; Cn # [13] <reserved-1F6D3>..<reserved-1F6DF>
-1F6ED..1F6EF ; Cn # [3] <reserved-1F6ED>..<reserved-1F6EF>
-1F6F7..1F6FF ; Cn # [9] <reserved-1F6F7>..<reserved-1F6FF>
-1F774..1F77F ; Cn # [12] <reserved-1F774>..<reserved-1F77F>
-1F7D5..1F7FF ; Cn # [43] <reserved-1F7D5>..<reserved-1F7FF>
-1F80C..1F80F ; Cn # [4] <reserved-1F80C>..<reserved-1F80F>
-1F848..1F84F ; Cn # [8] <reserved-1F848>..<reserved-1F84F>
-1F85A..1F85F ; Cn # [6] <reserved-1F85A>..<reserved-1F85F>
-1F888..1F88F ; Cn # [8] <reserved-1F888>..<reserved-1F88F>
-1F8AE..1F90F ; Cn # [98] <reserved-1F8AE>..<reserved-1F90F>
-1F91F ; Cn # <reserved-1F91F>
-1F928..1F92F ; Cn # [8] <reserved-1F928>..<reserved-1F92F>
-1F931..1F932 ; Cn # [2] <reserved-1F931>..<reserved-1F932>
-1F93F ; Cn # <reserved-1F93F>
-1F94C..1F94F ; Cn # [4] <reserved-1F94C>..<reserved-1F94F>
-1F95F..1F97F ; Cn # [33] <reserved-1F95F>..<reserved-1F97F>
-1F992..1F9BF ; Cn # [46] <reserved-1F992>..<reserved-1F9BF>
-1F9C1..1FFFF ; Cn # [1599] <reserved-1F9C1>..<noncharacter-1FFFF>
-2A6D7..2A6FF ; Cn # [41] <reserved-2A6D7>..<reserved-2A6FF>
-2B735..2B73F ; Cn # [11] <reserved-2B735>..<reserved-2B73F>
-2B81E..2B81F ; Cn # [2] <reserved-2B81E>..<reserved-2B81F>
-2CEA2..2F7FF ; Cn # [10590] <reserved-2CEA2>..<reserved-2F7FF>
-2FA1E..E0000 ; Cn # [722403] <reserved-2FA1E>..<reserved-E0000>
-E0002..E001F ; Cn # [30] <reserved-E0002>..<reserved-E001F>
-E0080..E00FF ; Cn # [128] <reserved-E0080>..<reserved-E00FF>
-E01F0..EFFFF ; Cn # [65040] <reserved-E01F0>..<noncharacter-EFFFF>
-FFFFE..FFFFF ; Cn # [2] <noncharacter-FFFFE>..<noncharacter-FFFFF>
-10FFFE..10FFFF; Cn # [2] <noncharacter-10FFFE>..<noncharacter-10FFFF>
-
-# Total code points: 846359
-
-# ================================================
-
-# General_Category=Uppercase_Letter
-
-0041..005A ; Lu # [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
-00C0..00D6 ; Lu # [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
-00D8..00DE ; Lu # [7] LATIN CAPITAL LETTER O WITH STROKE..LATIN CAPITAL LETTER THORN
-0100 ; Lu # LATIN CAPITAL LETTER A WITH MACRON
-0102 ; Lu # LATIN CAPITAL LETTER A WITH BREVE
-0104 ; Lu # LATIN CAPITAL LETTER A WITH OGONEK
-0106 ; Lu # LATIN CAPITAL LETTER C WITH ACUTE
-0108 ; Lu # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
-010A ; Lu # LATIN CAPITAL LETTER C WITH DOT ABOVE
-010C ; Lu # LATIN CAPITAL LETTER C WITH CARON
-010E ; Lu # LATIN CAPITAL LETTER D WITH CARON
-0110 ; Lu # LATIN CAPITAL LETTER D WITH STROKE
-0112 ; Lu # LATIN CAPITAL LETTER E WITH MACRON
-0114 ; Lu # LATIN CAPITAL LETTER E WITH BREVE
-0116 ; Lu # LATIN CAPITAL LETTER E WITH DOT ABOVE
-0118 ; Lu # LATIN CAPITAL LETTER E WITH OGONEK
-011A ; Lu # LATIN CAPITAL LETTER E WITH CARON
-011C ; Lu # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
-011E ; Lu # LATIN CAPITAL LETTER G WITH BREVE
-0120 ; Lu # LATIN CAPITAL LETTER G WITH DOT ABOVE
-0122 ; Lu # LATIN CAPITAL LETTER G WITH CEDILLA
-0124 ; Lu # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
-0126 ; Lu # LATIN CAPITAL LETTER H WITH STROKE
-0128 ; Lu # LATIN CAPITAL LETTER I WITH TILDE
-012A ; Lu # LATIN CAPITAL LETTER I WITH MACRON
-012C ; Lu # LATIN CAPITAL LETTER I WITH BREVE
-012E ; Lu # LATIN CAPITAL LETTER I WITH OGONEK
-0130 ; Lu # LATIN CAPITAL LETTER I WITH DOT ABOVE
-0132 ; Lu # LATIN CAPITAL LIGATURE IJ
-0134 ; Lu # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
-0136 ; Lu # LATIN CAPITAL LETTER K WITH CEDILLA
-0139 ; Lu # LATIN CAPITAL LETTER L WITH ACUTE
-013B ; Lu # LATIN CAPITAL LETTER L WITH CEDILLA
-013D ; Lu # LATIN CAPITAL LETTER L WITH CARON
-013F ; Lu # LATIN CAPITAL LETTER L WITH MIDDLE DOT
-0141 ; Lu # LATIN CAPITAL LETTER L WITH STROKE
-0143 ; Lu # LATIN CAPITAL LETTER N WITH ACUTE
-0145 ; Lu # LATIN CAPITAL LETTER N WITH CEDILLA
-0147 ; Lu # LATIN CAPITAL LETTER N WITH CARON
-014A ; Lu # LATIN CAPITAL LETTER ENG
-014C ; Lu # LATIN CAPITAL LETTER O WITH MACRON
-014E ; Lu # LATIN CAPITAL LETTER O WITH BREVE
-0150 ; Lu # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0152 ; Lu # LATIN CAPITAL LIGATURE OE
-0154 ; Lu # LATIN CAPITAL LETTER R WITH ACUTE
-0156 ; Lu # LATIN CAPITAL LETTER R WITH CEDILLA
-0158 ; Lu # LATIN CAPITAL LETTER R WITH CARON
-015A ; Lu # LATIN CAPITAL LETTER S WITH ACUTE
-015C ; Lu # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
-015E ; Lu # LATIN CAPITAL LETTER S WITH CEDILLA
-0160 ; Lu # LATIN CAPITAL LETTER S WITH CARON
-0162 ; Lu # LATIN CAPITAL LETTER T WITH CEDILLA
-0164 ; Lu # LATIN CAPITAL LETTER T WITH CARON
-0166 ; Lu # LATIN CAPITAL LETTER T WITH STROKE
-0168 ; Lu # LATIN CAPITAL LETTER U WITH TILDE
-016A ; Lu # LATIN CAPITAL LETTER U WITH MACRON
-016C ; Lu # LATIN CAPITAL LETTER U WITH BREVE
-016E ; Lu # LATIN CAPITAL LETTER U WITH RING ABOVE
-0170 ; Lu # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0172 ; Lu # LATIN CAPITAL LETTER U WITH OGONEK
-0174 ; Lu # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
-0176 ; Lu # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
-0178..0179 ; Lu # [2] LATIN CAPITAL LETTER Y WITH DIAERESIS..LATIN CAPITAL LETTER Z WITH ACUTE
-017B ; Lu # LATIN CAPITAL LETTER Z WITH DOT ABOVE
-017D ; Lu # LATIN CAPITAL LETTER Z WITH CARON
-0181..0182 ; Lu # [2] LATIN CAPITAL LETTER B WITH HOOK..LATIN CAPITAL LETTER B WITH TOPBAR
-0184 ; Lu # LATIN CAPITAL LETTER TONE SIX
-0186..0187 ; Lu # [2] LATIN CAPITAL LETTER OPEN O..LATIN CAPITAL LETTER C WITH HOOK
-0189..018B ; Lu # [3] LATIN CAPITAL LETTER AFRICAN D..LATIN CAPITAL LETTER D WITH TOPBAR
-018E..0191 ; Lu # [4] LATIN CAPITAL LETTER REVERSED E..LATIN CAPITAL LETTER F WITH HOOK
-0193..0194 ; Lu # [2] LATIN CAPITAL LETTER G WITH HOOK..LATIN CAPITAL LETTER GAMMA
-0196..0198 ; Lu # [3] LATIN CAPITAL LETTER IOTA..LATIN CAPITAL LETTER K WITH HOOK
-019C..019D ; Lu # [2] LATIN CAPITAL LETTER TURNED M..LATIN CAPITAL LETTER N WITH LEFT HOOK
-019F..01A0 ; Lu # [2] LATIN CAPITAL LETTER O WITH MIDDLE TILDE..LATIN CAPITAL LETTER O WITH HORN
-01A2 ; Lu # LATIN CAPITAL LETTER OI
-01A4 ; Lu # LATIN CAPITAL LETTER P WITH HOOK
-01A6..01A7 ; Lu # [2] LATIN LETTER YR..LATIN CAPITAL LETTER TONE TWO
-01A9 ; Lu # LATIN CAPITAL LETTER ESH
-01AC ; Lu # LATIN CAPITAL LETTER T WITH HOOK
-01AE..01AF ; Lu # [2] LATIN CAPITAL LETTER T WITH RETROFLEX HOOK..LATIN CAPITAL LETTER U WITH HORN
-01B1..01B3 ; Lu # [3] LATIN CAPITAL LETTER UPSILON..LATIN CAPITAL LETTER Y WITH HOOK
-01B5 ; Lu # LATIN CAPITAL LETTER Z WITH STROKE
-01B7..01B8 ; Lu # [2] LATIN CAPITAL LETTER EZH..LATIN CAPITAL LETTER EZH REVERSED
-01BC ; Lu # LATIN CAPITAL LETTER TONE FIVE
-01C4 ; Lu # LATIN CAPITAL LETTER DZ WITH CARON
-01C7 ; Lu # LATIN CAPITAL LETTER LJ
-01CA ; Lu # LATIN CAPITAL LETTER NJ
-01CD ; Lu # LATIN CAPITAL LETTER A WITH CARON
-01CF ; Lu # LATIN CAPITAL LETTER I WITH CARON
-01D1 ; Lu # LATIN CAPITAL LETTER O WITH CARON
-01D3 ; Lu # LATIN CAPITAL LETTER U WITH CARON
-01D5 ; Lu # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01D7 ; Lu # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D9 ; Lu # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-01DB ; Lu # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01DE ; Lu # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-01E0 ; Lu # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
-01E2 ; Lu # LATIN CAPITAL LETTER AE WITH MACRON
-01E4 ; Lu # LATIN CAPITAL LETTER G WITH STROKE
-01E6 ; Lu # LATIN CAPITAL LETTER G WITH CARON
-01E8 ; Lu # LATIN CAPITAL LETTER K WITH CARON
-01EA ; Lu # LATIN CAPITAL LETTER O WITH OGONEK
-01EC ; Lu # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
-01EE ; Lu # LATIN CAPITAL LETTER EZH WITH CARON
-01F1 ; Lu # LATIN CAPITAL LETTER DZ
-01F4 ; Lu # LATIN CAPITAL LETTER G WITH ACUTE
-01F6..01F8 ; Lu # [3] LATIN CAPITAL LETTER HWAIR..LATIN CAPITAL LETTER N WITH GRAVE
-01FA ; Lu # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
-01FC ; Lu # LATIN CAPITAL LETTER AE WITH ACUTE
-01FE ; Lu # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
-0200 ; Lu # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
-0202 ; Lu # LATIN CAPITAL LETTER A WITH INVERTED BREVE
-0204 ; Lu # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
-0206 ; Lu # LATIN CAPITAL LETTER E WITH INVERTED BREVE
-0208 ; Lu # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
-020A ; Lu # LATIN CAPITAL LETTER I WITH INVERTED BREVE
-020C ; Lu # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
-020E ; Lu # LATIN CAPITAL LETTER O WITH INVERTED BREVE
-0210 ; Lu # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
-0212 ; Lu # LATIN CAPITAL LETTER R WITH INVERTED BREVE
-0214 ; Lu # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
-0216 ; Lu # LATIN CAPITAL LETTER U WITH INVERTED BREVE
-0218 ; Lu # LATIN CAPITAL LETTER S WITH COMMA BELOW
-021A ; Lu # LATIN CAPITAL LETTER T WITH COMMA BELOW
-021C ; Lu # LATIN CAPITAL LETTER YOGH
-021E ; Lu # LATIN CAPITAL LETTER H WITH CARON
-0220 ; Lu # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
-0222 ; Lu # LATIN CAPITAL LETTER OU
-0224 ; Lu # LATIN CAPITAL LETTER Z WITH HOOK
-0226 ; Lu # LATIN CAPITAL LETTER A WITH DOT ABOVE
-0228 ; Lu # LATIN CAPITAL LETTER E WITH CEDILLA
-022A ; Lu # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-022C ; Lu # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
-022E ; Lu # LATIN CAPITAL LETTER O WITH DOT ABOVE
-0230 ; Lu # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
-0232 ; Lu # LATIN CAPITAL LETTER Y WITH MACRON
-023A..023B ; Lu # [2] LATIN CAPITAL LETTER A WITH STROKE..LATIN CAPITAL LETTER C WITH STROKE
-023D..023E ; Lu # [2] LATIN CAPITAL LETTER L WITH BAR..LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
-0241 ; Lu # LATIN CAPITAL LETTER GLOTTAL STOP
-0243..0246 ; Lu # [4] LATIN CAPITAL LETTER B WITH STROKE..LATIN CAPITAL LETTER E WITH STROKE
-0248 ; Lu # LATIN CAPITAL LETTER J WITH STROKE
-024A ; Lu # LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
-024C ; Lu # LATIN CAPITAL LETTER R WITH STROKE
-024E ; Lu # LATIN CAPITAL LETTER Y WITH STROKE
-0370 ; Lu # GREEK CAPITAL LETTER HETA
-0372 ; Lu # GREEK CAPITAL LETTER ARCHAIC SAMPI
-0376 ; Lu # GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
-037F ; Lu # GREEK CAPITAL LETTER YOT
-0386 ; Lu # GREEK CAPITAL LETTER ALPHA WITH TONOS
-0388..038A ; Lu # [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
-038C ; Lu # GREEK CAPITAL LETTER OMICRON WITH TONOS
-038E..038F ; Lu # [2] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER OMEGA WITH TONOS
-0391..03A1 ; Lu # [17] GREEK CAPITAL LETTER ALPHA..GREEK CAPITAL LETTER RHO
-03A3..03AB ; Lu # [9] GREEK CAPITAL LETTER SIGMA..GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-03CF ; Lu # GREEK CAPITAL KAI SYMBOL
-03D2..03D4 ; Lu # [3] GREEK UPSILON WITH HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
-03D8 ; Lu # GREEK LETTER ARCHAIC KOPPA
-03DA ; Lu # GREEK LETTER STIGMA
-03DC ; Lu # GREEK LETTER DIGAMMA
-03DE ; Lu # GREEK LETTER KOPPA
-03E0 ; Lu # GREEK LETTER SAMPI
-03E2 ; Lu # COPTIC CAPITAL LETTER SHEI
-03E4 ; Lu # COPTIC CAPITAL LETTER FEI
-03E6 ; Lu # COPTIC CAPITAL LETTER KHEI
-03E8 ; Lu # COPTIC CAPITAL LETTER HORI
-03EA ; Lu # COPTIC CAPITAL LETTER GANGIA
-03EC ; Lu # COPTIC CAPITAL LETTER SHIMA
-03EE ; Lu # COPTIC CAPITAL LETTER DEI
-03F4 ; Lu # GREEK CAPITAL THETA SYMBOL
-03F7 ; Lu # GREEK CAPITAL LETTER SHO
-03F9..03FA ; Lu # [2] GREEK CAPITAL LUNATE SIGMA SYMBOL..GREEK CAPITAL LETTER SAN
-03FD..042F ; Lu # [51] GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL..CYRILLIC CAPITAL LETTER YA
-0460 ; Lu # CYRILLIC CAPITAL LETTER OMEGA
-0462 ; Lu # CYRILLIC CAPITAL LETTER YAT
-0464 ; Lu # CYRILLIC CAPITAL LETTER IOTIFIED E
-0466 ; Lu # CYRILLIC CAPITAL LETTER LITTLE YUS
-0468 ; Lu # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
-046A ; Lu # CYRILLIC CAPITAL LETTER BIG YUS
-046C ; Lu # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
-046E ; Lu # CYRILLIC CAPITAL LETTER KSI
-0470 ; Lu # CYRILLIC CAPITAL LETTER PSI
-0472 ; Lu # CYRILLIC CAPITAL LETTER FITA
-0474 ; Lu # CYRILLIC CAPITAL LETTER IZHITSA
-0476 ; Lu # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0478 ; Lu # CYRILLIC CAPITAL LETTER UK
-047A ; Lu # CYRILLIC CAPITAL LETTER ROUND OMEGA
-047C ; Lu # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
-047E ; Lu # CYRILLIC CAPITAL LETTER OT
-0480 ; Lu # CYRILLIC CAPITAL LETTER KOPPA
-048A ; Lu # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
-048C ; Lu # CYRILLIC CAPITAL LETTER SEMISOFT SIGN
-048E ; Lu # CYRILLIC CAPITAL LETTER ER WITH TICK
-0490 ; Lu # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-0492 ; Lu # CYRILLIC CAPITAL LETTER GHE WITH STROKE
-0494 ; Lu # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
-0496 ; Lu # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
-0498 ; Lu # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
-049A ; Lu # CYRILLIC CAPITAL LETTER KA WITH DESCENDER
-049C ; Lu # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
-049E ; Lu # CYRILLIC CAPITAL LETTER KA WITH STROKE
-04A0 ; Lu # CYRILLIC CAPITAL LETTER BASHKIR KA
-04A2 ; Lu # CYRILLIC CAPITAL LETTER EN WITH DESCENDER
-04A4 ; Lu # CYRILLIC CAPITAL LIGATURE EN GHE
-04A6 ; Lu # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
-04A8 ; Lu # CYRILLIC CAPITAL LETTER ABKHASIAN HA
-04AA ; Lu # CYRILLIC CAPITAL LETTER ES WITH DESCENDER
-04AC ; Lu # CYRILLIC CAPITAL LETTER TE WITH DESCENDER
-04AE ; Lu # CYRILLIC CAPITAL LETTER STRAIGHT U
-04B0 ; Lu # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
-04B2 ; Lu # CYRILLIC CAPITAL LETTER HA WITH DESCENDER
-04B4 ; Lu # CYRILLIC CAPITAL LIGATURE TE TSE
-04B6 ; Lu # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
-04B8 ; Lu # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
-04BA ; Lu # CYRILLIC CAPITAL LETTER SHHA
-04BC ; Lu # CYRILLIC CAPITAL LETTER ABKHASIAN CHE
-04BE ; Lu # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
-04C0..04C1 ; Lu # [2] CYRILLIC LETTER PALOCHKA..CYRILLIC CAPITAL LETTER ZHE WITH BREVE
-04C3 ; Lu # CYRILLIC CAPITAL LETTER KA WITH HOOK
-04C5 ; Lu # CYRILLIC CAPITAL LETTER EL WITH TAIL
-04C7 ; Lu # CYRILLIC CAPITAL LETTER EN WITH HOOK
-04C9 ; Lu # CYRILLIC CAPITAL LETTER EN WITH TAIL
-04CB ; Lu # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
-04CD ; Lu # CYRILLIC CAPITAL LETTER EM WITH TAIL
-04D0 ; Lu # CYRILLIC CAPITAL LETTER A WITH BREVE
-04D2 ; Lu # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
-04D4 ; Lu # CYRILLIC CAPITAL LIGATURE A IE
-04D6 ; Lu # CYRILLIC CAPITAL LETTER IE WITH BREVE
-04D8 ; Lu # CYRILLIC CAPITAL LETTER SCHWA
-04DA ; Lu # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
-04DC ; Lu # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
-04DE ; Lu # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-04E0 ; Lu # CYRILLIC CAPITAL LETTER ABKHASIAN DZE
-04E2 ; Lu # CYRILLIC CAPITAL LETTER I WITH MACRON
-04E4 ; Lu # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
-04E6 ; Lu # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
-04E8 ; Lu # CYRILLIC CAPITAL LETTER BARRED O
-04EA ; Lu # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
-04EC ; Lu # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
-04EE ; Lu # CYRILLIC CAPITAL LETTER U WITH MACRON
-04F0 ; Lu # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
-04F2 ; Lu # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
-04F4 ; Lu # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
-04F6 ; Lu # CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
-04F8 ; Lu # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-04FA ; Lu # CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
-04FC ; Lu # CYRILLIC CAPITAL LETTER HA WITH HOOK
-04FE ; Lu # CYRILLIC CAPITAL LETTER HA WITH STROKE
-0500 ; Lu # CYRILLIC CAPITAL LETTER KOMI DE
-0502 ; Lu # CYRILLIC CAPITAL LETTER KOMI DJE
-0504 ; Lu # CYRILLIC CAPITAL LETTER KOMI ZJE
-0506 ; Lu # CYRILLIC CAPITAL LETTER KOMI DZJE
-0508 ; Lu # CYRILLIC CAPITAL LETTER KOMI LJE
-050A ; Lu # CYRILLIC CAPITAL LETTER KOMI NJE
-050C ; Lu # CYRILLIC CAPITAL LETTER KOMI SJE
-050E ; Lu # CYRILLIC CAPITAL LETTER KOMI TJE
-0510 ; Lu # CYRILLIC CAPITAL LETTER REVERSED ZE
-0512 ; Lu # CYRILLIC CAPITAL LETTER EL WITH HOOK
-0514 ; Lu # CYRILLIC CAPITAL LETTER LHA
-0516 ; Lu # CYRILLIC CAPITAL LETTER RHA
-0518 ; Lu # CYRILLIC CAPITAL LETTER YAE
-051A ; Lu # CYRILLIC CAPITAL LETTER QA
-051C ; Lu # CYRILLIC CAPITAL LETTER WE
-051E ; Lu # CYRILLIC CAPITAL LETTER ALEUT KA
-0520 ; Lu # CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK
-0522 ; Lu # CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK
-0524 ; Lu # CYRILLIC CAPITAL LETTER PE WITH DESCENDER
-0526 ; Lu # CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER
-0528 ; Lu # CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK
-052A ; Lu # CYRILLIC CAPITAL LETTER DZZHE
-052C ; Lu # CYRILLIC CAPITAL LETTER DCHE
-052E ; Lu # CYRILLIC CAPITAL LETTER EL WITH DESCENDER
-0531..0556 ; Lu # [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
-10A0..10C5 ; Lu # [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
-10C7 ; Lu # GEORGIAN CAPITAL LETTER YN
-10CD ; Lu # GEORGIAN CAPITAL LETTER AEN
-13A0..13F5 ; Lu # [86] CHEROKEE LETTER A..CHEROKEE LETTER MV
-1E00 ; Lu # LATIN CAPITAL LETTER A WITH RING BELOW
-1E02 ; Lu # LATIN CAPITAL LETTER B WITH DOT ABOVE
-1E04 ; Lu # LATIN CAPITAL LETTER B WITH DOT BELOW
-1E06 ; Lu # LATIN CAPITAL LETTER B WITH LINE BELOW
-1E08 ; Lu # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
-1E0A ; Lu # LATIN CAPITAL LETTER D WITH DOT ABOVE
-1E0C ; Lu # LATIN CAPITAL LETTER D WITH DOT BELOW
-1E0E ; Lu # LATIN CAPITAL LETTER D WITH LINE BELOW
-1E10 ; Lu # LATIN CAPITAL LETTER D WITH CEDILLA
-1E12 ; Lu # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
-1E14 ; Lu # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
-1E16 ; Lu # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
-1E18 ; Lu # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
-1E1A ; Lu # LATIN CAPITAL LETTER E WITH TILDE BELOW
-1E1C ; Lu # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
-1E1E ; Lu # LATIN CAPITAL LETTER F WITH DOT ABOVE
-1E20 ; Lu # LATIN CAPITAL LETTER G WITH MACRON
-1E22 ; Lu # LATIN CAPITAL LETTER H WITH DOT ABOVE
-1E24 ; Lu # LATIN CAPITAL LETTER H WITH DOT BELOW
-1E26 ; Lu # LATIN CAPITAL LETTER H WITH DIAERESIS
-1E28 ; Lu # LATIN CAPITAL LETTER H WITH CEDILLA
-1E2A ; Lu # LATIN CAPITAL LETTER H WITH BREVE BELOW
-1E2C ; Lu # LATIN CAPITAL LETTER I WITH TILDE BELOW
-1E2E ; Lu # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
-1E30 ; Lu # LATIN CAPITAL LETTER K WITH ACUTE
-1E32 ; Lu # LATIN CAPITAL LETTER K WITH DOT BELOW
-1E34 ; Lu # LATIN CAPITAL LETTER K WITH LINE BELOW
-1E36 ; Lu # LATIN CAPITAL LETTER L WITH DOT BELOW
-1E38 ; Lu # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
-1E3A ; Lu # LATIN CAPITAL LETTER L WITH LINE BELOW
-1E3C ; Lu # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
-1E3E ; Lu # LATIN CAPITAL LETTER M WITH ACUTE
-1E40 ; Lu # LATIN CAPITAL LETTER M WITH DOT ABOVE
-1E42 ; Lu # LATIN CAPITAL LETTER M WITH DOT BELOW
-1E44 ; Lu # LATIN CAPITAL LETTER N WITH DOT ABOVE
-1E46 ; Lu # LATIN CAPITAL LETTER N WITH DOT BELOW
-1E48 ; Lu # LATIN CAPITAL LETTER N WITH LINE BELOW
-1E4A ; Lu # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
-1E4C ; Lu # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
-1E4E ; Lu # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
-1E50 ; Lu # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
-1E52 ; Lu # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
-1E54 ; Lu # LATIN CAPITAL LETTER P WITH ACUTE
-1E56 ; Lu # LATIN CAPITAL LETTER P WITH DOT ABOVE
-1E58 ; Lu # LATIN CAPITAL LETTER R WITH DOT ABOVE
-1E5A ; Lu # LATIN CAPITAL LETTER R WITH DOT BELOW
-1E5C ; Lu # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
-1E5E ; Lu # LATIN CAPITAL LETTER R WITH LINE BELOW
-1E60 ; Lu # LATIN CAPITAL LETTER S WITH DOT ABOVE
-1E62 ; Lu # LATIN CAPITAL LETTER S WITH DOT BELOW
-1E64 ; Lu # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
-1E66 ; Lu # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
-1E68 ; Lu # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
-1E6A ; Lu # LATIN CAPITAL LETTER T WITH DOT ABOVE
-1E6C ; Lu # LATIN CAPITAL LETTER T WITH DOT BELOW
-1E6E ; Lu # LATIN CAPITAL LETTER T WITH LINE BELOW
-1E70 ; Lu # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
-1E72 ; Lu # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
-1E74 ; Lu # LATIN CAPITAL LETTER U WITH TILDE BELOW
-1E76 ; Lu # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
-1E78 ; Lu # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
-1E7A ; Lu # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
-1E7C ; Lu # LATIN CAPITAL LETTER V WITH TILDE
-1E7E ; Lu # LATIN CAPITAL LETTER V WITH DOT BELOW
-1E80 ; Lu # LATIN CAPITAL LETTER W WITH GRAVE
-1E82 ; Lu # LATIN CAPITAL LETTER W WITH ACUTE
-1E84 ; Lu # LATIN CAPITAL LETTER W WITH DIAERESIS
-1E86 ; Lu # LATIN CAPITAL LETTER W WITH DOT ABOVE
-1E88 ; Lu # LATIN CAPITAL LETTER W WITH DOT BELOW
-1E8A ; Lu # LATIN CAPITAL LETTER X WITH DOT ABOVE
-1E8C ; Lu # LATIN CAPITAL LETTER X WITH DIAERESIS
-1E8E ; Lu # LATIN CAPITAL LETTER Y WITH DOT ABOVE
-1E90 ; Lu # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
-1E92 ; Lu # LATIN CAPITAL LETTER Z WITH DOT BELOW
-1E94 ; Lu # LATIN CAPITAL LETTER Z WITH LINE BELOW
-1E9E ; Lu # LATIN CAPITAL LETTER SHARP S
-1EA0 ; Lu # LATIN CAPITAL LETTER A WITH DOT BELOW
-1EA2 ; Lu # LATIN CAPITAL LETTER A WITH HOOK ABOVE
-1EA4 ; Lu # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
-1EA6 ; Lu # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
-1EA8 ; Lu # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-1EAA ; Lu # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
-1EAC ; Lu # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-1EAE ; Lu # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
-1EB0 ; Lu # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
-1EB2 ; Lu # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
-1EB4 ; Lu # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
-1EB6 ; Lu # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
-1EB8 ; Lu # LATIN CAPITAL LETTER E WITH DOT BELOW
-1EBA ; Lu # LATIN CAPITAL LETTER E WITH HOOK ABOVE
-1EBC ; Lu # LATIN CAPITAL LETTER E WITH TILDE
-1EBE ; Lu # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EC0 ; Lu # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC2 ; Lu # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC4 ; Lu # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC6 ; Lu # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC8 ; Lu # LATIN CAPITAL LETTER I WITH HOOK ABOVE
-1ECA ; Lu # LATIN CAPITAL LETTER I WITH DOT BELOW
-1ECC ; Lu # LATIN CAPITAL LETTER O WITH DOT BELOW
-1ECE ; Lu # LATIN CAPITAL LETTER O WITH HOOK ABOVE
-1ED0 ; Lu # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED2 ; Lu # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED4 ; Lu # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED6 ; Lu # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED8 ; Lu # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1EDA ; Lu # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
-1EDC ; Lu # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
-1EDE ; Lu # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
-1EE0 ; Lu # LATIN CAPITAL LETTER O WITH HORN AND TILDE
-1EE2 ; Lu # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
-1EE4 ; Lu # LATIN CAPITAL LETTER U WITH DOT BELOW
-1EE6 ; Lu # LATIN CAPITAL LETTER U WITH HOOK ABOVE
-1EE8 ; Lu # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
-1EEA ; Lu # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
-1EEC ; Lu # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
-1EEE ; Lu # LATIN CAPITAL LETTER U WITH HORN AND TILDE
-1EF0 ; Lu # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
-1EF2 ; Lu # LATIN CAPITAL LETTER Y WITH GRAVE
-1EF4 ; Lu # LATIN CAPITAL LETTER Y WITH DOT BELOW
-1EF6 ; Lu # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
-1EF8 ; Lu # LATIN CAPITAL LETTER Y WITH TILDE
-1EFA ; Lu # LATIN CAPITAL LETTER MIDDLE-WELSH LL
-1EFC ; Lu # LATIN CAPITAL LETTER MIDDLE-WELSH V
-1EFE ; Lu # LATIN CAPITAL LETTER Y WITH LOOP
-1F08..1F0F ; Lu # [8] GREEK CAPITAL LETTER ALPHA WITH PSILI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
-1F18..1F1D ; Lu # [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
-1F28..1F2F ; Lu # [8] GREEK CAPITAL LETTER ETA WITH PSILI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
-1F38..1F3F ; Lu # [8] GREEK CAPITAL LETTER IOTA WITH PSILI..GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
-1F48..1F4D ; Lu # [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
-1F59 ; Lu # GREEK CAPITAL LETTER UPSILON WITH DASIA
-1F5B ; Lu # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
-1F5D ; Lu # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
-1F5F ; Lu # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
-1F68..1F6F ; Lu # [8] GREEK CAPITAL LETTER OMEGA WITH PSILI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
-1FB8..1FBB ; Lu # [4] GREEK CAPITAL LETTER ALPHA WITH VRACHY..GREEK CAPITAL LETTER ALPHA WITH OXIA
-1FC8..1FCB ; Lu # [4] GREEK CAPITAL LETTER EPSILON WITH VARIA..GREEK CAPITAL LETTER ETA WITH OXIA
-1FD8..1FDB ; Lu # [4] GREEK CAPITAL LETTER IOTA WITH VRACHY..GREEK CAPITAL LETTER IOTA WITH OXIA
-1FE8..1FEC ; Lu # [5] GREEK CAPITAL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
-1FF8..1FFB ; Lu # [4] GREEK CAPITAL LETTER OMICRON WITH VARIA..GREEK CAPITAL LETTER OMEGA WITH OXIA
-2102 ; Lu # DOUBLE-STRUCK CAPITAL C
-2107 ; Lu # EULER CONSTANT
-210B..210D ; Lu # [3] SCRIPT CAPITAL H..DOUBLE-STRUCK CAPITAL H
-2110..2112 ; Lu # [3] SCRIPT CAPITAL I..SCRIPT CAPITAL L
-2115 ; Lu # DOUBLE-STRUCK CAPITAL N
-2119..211D ; Lu # [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
-2124 ; Lu # DOUBLE-STRUCK CAPITAL Z
-2126 ; Lu # OHM SIGN
-2128 ; Lu # BLACK-LETTER CAPITAL Z
-212A..212D ; Lu # [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
-2130..2133 ; Lu # [4] SCRIPT CAPITAL E..SCRIPT CAPITAL M
-213E..213F ; Lu # [2] DOUBLE-STRUCK CAPITAL GAMMA..DOUBLE-STRUCK CAPITAL PI
-2145 ; Lu # DOUBLE-STRUCK ITALIC CAPITAL D
-2183 ; Lu # ROMAN NUMERAL REVERSED ONE HUNDRED
-2C00..2C2E ; Lu # [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
-2C60 ; Lu # LATIN CAPITAL LETTER L WITH DOUBLE BAR
-2C62..2C64 ; Lu # [3] LATIN CAPITAL LETTER L WITH MIDDLE TILDE..LATIN CAPITAL LETTER R WITH TAIL
-2C67 ; Lu # LATIN CAPITAL LETTER H WITH DESCENDER
-2C69 ; Lu # LATIN CAPITAL LETTER K WITH DESCENDER
-2C6B ; Lu # LATIN CAPITAL LETTER Z WITH DESCENDER
-2C6D..2C70 ; Lu # [4] LATIN CAPITAL LETTER ALPHA..LATIN CAPITAL LETTER TURNED ALPHA
-2C72 ; Lu # LATIN CAPITAL LETTER W WITH HOOK
-2C75 ; Lu # LATIN CAPITAL LETTER HALF H
-2C7E..2C80 ; Lu # [3] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC CAPITAL LETTER ALFA
-2C82 ; Lu # COPTIC CAPITAL LETTER VIDA
-2C84 ; Lu # COPTIC CAPITAL LETTER GAMMA
-2C86 ; Lu # COPTIC CAPITAL LETTER DALDA
-2C88 ; Lu # COPTIC CAPITAL LETTER EIE
-2C8A ; Lu # COPTIC CAPITAL LETTER SOU
-2C8C ; Lu # COPTIC CAPITAL LETTER ZATA
-2C8E ; Lu # COPTIC CAPITAL LETTER HATE
-2C90 ; Lu # COPTIC CAPITAL LETTER THETHE
-2C92 ; Lu # COPTIC CAPITAL LETTER IAUDA
-2C94 ; Lu # COPTIC CAPITAL LETTER KAPA
-2C96 ; Lu # COPTIC CAPITAL LETTER LAULA
-2C98 ; Lu # COPTIC CAPITAL LETTER MI
-2C9A ; Lu # COPTIC CAPITAL LETTER NI
-2C9C ; Lu # COPTIC CAPITAL LETTER KSI
-2C9E ; Lu # COPTIC CAPITAL LETTER O
-2CA0 ; Lu # COPTIC CAPITAL LETTER PI
-2CA2 ; Lu # COPTIC CAPITAL LETTER RO
-2CA4 ; Lu # COPTIC CAPITAL LETTER SIMA
-2CA6 ; Lu # COPTIC CAPITAL LETTER TAU
-2CA8 ; Lu # COPTIC CAPITAL LETTER UA
-2CAA ; Lu # COPTIC CAPITAL LETTER FI
-2CAC ; Lu # COPTIC CAPITAL LETTER KHI
-2CAE ; Lu # COPTIC CAPITAL LETTER PSI
-2CB0 ; Lu # COPTIC CAPITAL LETTER OOU
-2CB2 ; Lu # COPTIC CAPITAL LETTER DIALECT-P ALEF
-2CB4 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC AIN
-2CB6 ; Lu # COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
-2CB8 ; Lu # COPTIC CAPITAL LETTER DIALECT-P KAPA
-2CBA ; Lu # COPTIC CAPITAL LETTER DIALECT-P NI
-2CBC ; Lu # COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
-2CBE ; Lu # COPTIC CAPITAL LETTER OLD COPTIC OOU
-2CC0 ; Lu # COPTIC CAPITAL LETTER SAMPI
-2CC2 ; Lu # COPTIC CAPITAL LETTER CROSSED SHEI
-2CC4 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC SHEI
-2CC6 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC ESH
-2CC8 ; Lu # COPTIC CAPITAL LETTER AKHMIMIC KHEI
-2CCA ; Lu # COPTIC CAPITAL LETTER DIALECT-P HORI
-2CCC ; Lu # COPTIC CAPITAL LETTER OLD COPTIC HORI
-2CCE ; Lu # COPTIC CAPITAL LETTER OLD COPTIC HA
-2CD0 ; Lu # COPTIC CAPITAL LETTER L-SHAPED HA
-2CD2 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC HEI
-2CD4 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC HAT
-2CD6 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC GANGIA
-2CD8 ; Lu # COPTIC CAPITAL LETTER OLD COPTIC DJA
-2CDA ; Lu # COPTIC CAPITAL LETTER OLD COPTIC SHIMA
-2CDC ; Lu # COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
-2CDE ; Lu # COPTIC CAPITAL LETTER OLD NUBIAN NGI
-2CE0 ; Lu # COPTIC CAPITAL LETTER OLD NUBIAN NYI
-2CE2 ; Lu # COPTIC CAPITAL LETTER OLD NUBIAN WAU
-2CEB ; Lu # COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI
-2CED ; Lu # COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA
-2CF2 ; Lu # COPTIC CAPITAL LETTER BOHAIRIC KHEI
-A640 ; Lu # CYRILLIC CAPITAL LETTER ZEMLYA
-A642 ; Lu # CYRILLIC CAPITAL LETTER DZELO
-A644 ; Lu # CYRILLIC CAPITAL LETTER REVERSED DZE
-A646 ; Lu # CYRILLIC CAPITAL LETTER IOTA
-A648 ; Lu # CYRILLIC CAPITAL LETTER DJERV
-A64A ; Lu # CYRILLIC CAPITAL LETTER MONOGRAPH UK
-A64C ; Lu # CYRILLIC CAPITAL LETTER BROAD OMEGA
-A64E ; Lu # CYRILLIC CAPITAL LETTER NEUTRAL YER
-A650 ; Lu # CYRILLIC CAPITAL LETTER YERU WITH BACK YER
-A652 ; Lu # CYRILLIC CAPITAL LETTER IOTIFIED YAT
-A654 ; Lu # CYRILLIC CAPITAL LETTER REVERSED YU
-A656 ; Lu # CYRILLIC CAPITAL LETTER IOTIFIED A
-A658 ; Lu # CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS
-A65A ; Lu # CYRILLIC CAPITAL LETTER BLENDED YUS
-A65C ; Lu # CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS
-A65E ; Lu # CYRILLIC CAPITAL LETTER YN
-A660 ; Lu # CYRILLIC CAPITAL LETTER REVERSED TSE
-A662 ; Lu # CYRILLIC CAPITAL LETTER SOFT DE
-A664 ; Lu # CYRILLIC CAPITAL LETTER SOFT EL
-A666 ; Lu # CYRILLIC CAPITAL LETTER SOFT EM
-A668 ; Lu # CYRILLIC CAPITAL LETTER MONOCULAR O
-A66A ; Lu # CYRILLIC CAPITAL LETTER BINOCULAR O
-A66C ; Lu # CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O
-A680 ; Lu # CYRILLIC CAPITAL LETTER DWE
-A682 ; Lu # CYRILLIC CAPITAL LETTER DZWE
-A684 ; Lu # CYRILLIC CAPITAL LETTER ZHWE
-A686 ; Lu # CYRILLIC CAPITAL LETTER CCHE
-A688 ; Lu # CYRILLIC CAPITAL LETTER DZZE
-A68A ; Lu # CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK
-A68C ; Lu # CYRILLIC CAPITAL LETTER TWE
-A68E ; Lu # CYRILLIC CAPITAL LETTER TSWE
-A690 ; Lu # CYRILLIC CAPITAL LETTER TSSE
-A692 ; Lu # CYRILLIC CAPITAL LETTER TCHE
-A694 ; Lu # CYRILLIC CAPITAL LETTER HWE
-A696 ; Lu # CYRILLIC CAPITAL LETTER SHWE
-A698 ; Lu # CYRILLIC CAPITAL LETTER DOUBLE O
-A69A ; Lu # CYRILLIC CAPITAL LETTER CROSSED O
-A722 ; Lu # LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
-A724 ; Lu # LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
-A726 ; Lu # LATIN CAPITAL LETTER HENG
-A728 ; Lu # LATIN CAPITAL LETTER TZ
-A72A ; Lu # LATIN CAPITAL LETTER TRESILLO
-A72C ; Lu # LATIN CAPITAL LETTER CUATRILLO
-A72E ; Lu # LATIN CAPITAL LETTER CUATRILLO WITH COMMA
-A732 ; Lu # LATIN CAPITAL LETTER AA
-A734 ; Lu # LATIN CAPITAL LETTER AO
-A736 ; Lu # LATIN CAPITAL LETTER AU
-A738 ; Lu # LATIN CAPITAL LETTER AV
-A73A ; Lu # LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR
-A73C ; Lu # LATIN CAPITAL LETTER AY
-A73E ; Lu # LATIN CAPITAL LETTER REVERSED C WITH DOT
-A740 ; Lu # LATIN CAPITAL LETTER K WITH STROKE
-A742 ; Lu # LATIN CAPITAL LETTER K WITH DIAGONAL STROKE
-A744 ; Lu # LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE
-A746 ; Lu # LATIN CAPITAL LETTER BROKEN L
-A748 ; Lu # LATIN CAPITAL LETTER L WITH HIGH STROKE
-A74A ; Lu # LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY
-A74C ; Lu # LATIN CAPITAL LETTER O WITH LOOP
-A74E ; Lu # LATIN CAPITAL LETTER OO
-A750 ; Lu # LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER
-A752 ; Lu # LATIN CAPITAL LETTER P WITH FLOURISH
-A754 ; Lu # LATIN CAPITAL LETTER P WITH SQUIRREL TAIL
-A756 ; Lu # LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER
-A758 ; Lu # LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE
-A75A ; Lu # LATIN CAPITAL LETTER R ROTUNDA
-A75C ; Lu # LATIN CAPITAL LETTER RUM ROTUNDA
-A75E ; Lu # LATIN CAPITAL LETTER V WITH DIAGONAL STROKE
-A760 ; Lu # LATIN CAPITAL LETTER VY
-A762 ; Lu # LATIN CAPITAL LETTER VISIGOTHIC Z
-A764 ; Lu # LATIN CAPITAL LETTER THORN WITH STROKE
-A766 ; Lu # LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER
-A768 ; Lu # LATIN CAPITAL LETTER VEND
-A76A ; Lu # LATIN CAPITAL LETTER ET
-A76C ; Lu # LATIN CAPITAL LETTER IS
-A76E ; Lu # LATIN CAPITAL LETTER CON
-A779 ; Lu # LATIN CAPITAL LETTER INSULAR D
-A77B ; Lu # LATIN CAPITAL LETTER INSULAR F
-A77D..A77E ; Lu # [2] LATIN CAPITAL LETTER INSULAR G..LATIN CAPITAL LETTER TURNED INSULAR G
-A780 ; Lu # LATIN CAPITAL LETTER TURNED L
-A782 ; Lu # LATIN CAPITAL LETTER INSULAR R
-A784 ; Lu # LATIN CAPITAL LETTER INSULAR S
-A786 ; Lu # LATIN CAPITAL LETTER INSULAR T
-A78B ; Lu # LATIN CAPITAL LETTER SALTILLO
-A78D ; Lu # LATIN CAPITAL LETTER TURNED H
-A790 ; Lu # LATIN CAPITAL LETTER N WITH DESCENDER
-A792 ; Lu # LATIN CAPITAL LETTER C WITH BAR
-A796 ; Lu # LATIN CAPITAL LETTER B WITH FLOURISH
-A798 ; Lu # LATIN CAPITAL LETTER F WITH STROKE
-A79A ; Lu # LATIN CAPITAL LETTER VOLAPUK AE
-A79C ; Lu # LATIN CAPITAL LETTER VOLAPUK OE
-A79E ; Lu # LATIN CAPITAL LETTER VOLAPUK UE
-A7A0 ; Lu # LATIN CAPITAL LETTER G WITH OBLIQUE STROKE
-A7A2 ; Lu # LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
-A7A4 ; Lu # LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
-A7A6 ; Lu # LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
-A7A8 ; Lu # LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
-A7AA..A7AE ; Lu # [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I
-A7B0..A7B4 ; Lu # [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA
-A7B6 ; Lu # LATIN CAPITAL LETTER OMEGA
-FF21..FF3A ; Lu # [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
-10400..10427 ; Lu # [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW
-104B0..104D3 ; Lu # [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
-10C80..10CB2 ; Lu # [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
-118A0..118BF ; Lu # [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO
-1D400..1D419 ; Lu # [26] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL BOLD CAPITAL Z
-1D434..1D44D ; Lu # [26] MATHEMATICAL ITALIC CAPITAL A..MATHEMATICAL ITALIC CAPITAL Z
-1D468..1D481 ; Lu # [26] MATHEMATICAL BOLD ITALIC CAPITAL A..MATHEMATICAL BOLD ITALIC CAPITAL Z
-1D49C ; Lu # MATHEMATICAL SCRIPT CAPITAL A
-1D49E..1D49F ; Lu # [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
-1D4A2 ; Lu # MATHEMATICAL SCRIPT CAPITAL G
-1D4A5..1D4A6 ; Lu # [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
-1D4A9..1D4AC ; Lu # [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
-1D4AE..1D4B5 ; Lu # [8] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT CAPITAL Z
-1D4D0..1D4E9 ; Lu # [26] MATHEMATICAL BOLD SCRIPT CAPITAL A..MATHEMATICAL BOLD SCRIPT CAPITAL Z
-1D504..1D505 ; Lu # [2] MATHEMATICAL FRAKTUR CAPITAL A..MATHEMATICAL FRAKTUR CAPITAL B
-1D507..1D50A ; Lu # [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
-1D50D..1D514 ; Lu # [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
-1D516..1D51C ; Lu # [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
-1D538..1D539 ; Lu # [2] MATHEMATICAL DOUBLE-STRUCK CAPITAL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
-1D53B..1D53E ; Lu # [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
-1D540..1D544 ; Lu # [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
-1D546 ; Lu # MATHEMATICAL DOUBLE-STRUCK CAPITAL O
-1D54A..1D550 ; Lu # [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
-1D56C..1D585 ; Lu # [26] MATHEMATICAL BOLD FRAKTUR CAPITAL A..MATHEMATICAL BOLD FRAKTUR CAPITAL Z
-1D5A0..1D5B9 ; Lu # [26] MATHEMATICAL SANS-SERIF CAPITAL A..MATHEMATICAL SANS-SERIF CAPITAL Z
-1D5D4..1D5ED ; Lu # [26] MATHEMATICAL SANS-SERIF BOLD CAPITAL A..MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
-1D608..1D621 ; Lu # [26] MATHEMATICAL SANS-SERIF ITALIC CAPITAL A..MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
-1D63C..1D655 ; Lu # [26] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
-1D670..1D689 ; Lu # [26] MATHEMATICAL MONOSPACE CAPITAL A..MATHEMATICAL MONOSPACE CAPITAL Z
-1D6A8..1D6C0 ; Lu # [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
-1D6E2..1D6FA ; Lu # [25] MATHEMATICAL ITALIC CAPITAL ALPHA..MATHEMATICAL ITALIC CAPITAL OMEGA
-1D71C..1D734 ; Lu # [25] MATHEMATICAL BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
-1D756..1D76E ; Lu # [25] MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
-1D790..1D7A8 ; Lu # [25] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
-1D7CA ; Lu # MATHEMATICAL BOLD CAPITAL DIGAMMA
-1E900..1E921 ; Lu # [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA
-
-# Total code points: 1702
-
-# ================================================
-
-# General_Category=Lowercase_Letter
-
-0061..007A ; Ll # [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
-00B5 ; Ll # MICRO SIGN
-00DF..00F6 ; Ll # [24] LATIN SMALL LETTER SHARP S..LATIN SMALL LETTER O WITH DIAERESIS
-00F8..00FF ; Ll # [8] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER Y WITH DIAERESIS
-0101 ; Ll # LATIN SMALL LETTER A WITH MACRON
-0103 ; Ll # LATIN SMALL LETTER A WITH BREVE
-0105 ; Ll # LATIN SMALL LETTER A WITH OGONEK
-0107 ; Ll # LATIN SMALL LETTER C WITH ACUTE
-0109 ; Ll # LATIN SMALL LETTER C WITH CIRCUMFLEX
-010B ; Ll # LATIN SMALL LETTER C WITH DOT ABOVE
-010D ; Ll # LATIN SMALL LETTER C WITH CARON
-010F ; Ll # LATIN SMALL LETTER D WITH CARON
-0111 ; Ll # LATIN SMALL LETTER D WITH STROKE
-0113 ; Ll # LATIN SMALL LETTER E WITH MACRON
-0115 ; Ll # LATIN SMALL LETTER E WITH BREVE
-0117 ; Ll # LATIN SMALL LETTER E WITH DOT ABOVE
-0119 ; Ll # LATIN SMALL LETTER E WITH OGONEK
-011B ; Ll # LATIN SMALL LETTER E WITH CARON
-011D ; Ll # LATIN SMALL LETTER G WITH CIRCUMFLEX
-011F ; Ll # LATIN SMALL LETTER G WITH BREVE
-0121 ; Ll # LATIN SMALL LETTER G WITH DOT ABOVE
-0123 ; Ll # LATIN SMALL LETTER G WITH CEDILLA
-0125 ; Ll # LATIN SMALL LETTER H WITH CIRCUMFLEX
-0127 ; Ll # LATIN SMALL LETTER H WITH STROKE
-0129 ; Ll # LATIN SMALL LETTER I WITH TILDE
-012B ; Ll # LATIN SMALL LETTER I WITH MACRON
-012D ; Ll # LATIN SMALL LETTER I WITH BREVE
-012F ; Ll # LATIN SMALL LETTER I WITH OGONEK
-0131 ; Ll # LATIN SMALL LETTER DOTLESS I
-0133 ; Ll # LATIN SMALL LIGATURE IJ
-0135 ; Ll # LATIN SMALL LETTER J WITH CIRCUMFLEX
-0137..0138 ; Ll # [2] LATIN SMALL LETTER K WITH CEDILLA..LATIN SMALL LETTER KRA
-013A ; Ll # LATIN SMALL LETTER L WITH ACUTE
-013C ; Ll # LATIN SMALL LETTER L WITH CEDILLA
-013E ; Ll # LATIN SMALL LETTER L WITH CARON
-0140 ; Ll # LATIN SMALL LETTER L WITH MIDDLE DOT
-0142 ; Ll # LATIN SMALL LETTER L WITH STROKE
-0144 ; Ll # LATIN SMALL LETTER N WITH ACUTE
-0146 ; Ll # LATIN SMALL LETTER N WITH CEDILLA
-0148..0149 ; Ll # [2] LATIN SMALL LETTER N WITH CARON..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-014B ; Ll # LATIN SMALL LETTER ENG
-014D ; Ll # LATIN SMALL LETTER O WITH MACRON
-014F ; Ll # LATIN SMALL LETTER O WITH BREVE
-0151 ; Ll # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0153 ; Ll # LATIN SMALL LIGATURE OE
-0155 ; Ll # LATIN SMALL LETTER R WITH ACUTE
-0157 ; Ll # LATIN SMALL LETTER R WITH CEDILLA
-0159 ; Ll # LATIN SMALL LETTER R WITH CARON
-015B ; Ll # LATIN SMALL LETTER S WITH ACUTE
-015D ; Ll # LATIN SMALL LETTER S WITH CIRCUMFLEX
-015F ; Ll # LATIN SMALL LETTER S WITH CEDILLA
-0161 ; Ll # LATIN SMALL LETTER S WITH CARON
-0163 ; Ll # LATIN SMALL LETTER T WITH CEDILLA
-0165 ; Ll # LATIN SMALL LETTER T WITH CARON
-0167 ; Ll # LATIN SMALL LETTER T WITH STROKE
-0169 ; Ll # LATIN SMALL LETTER U WITH TILDE
-016B ; Ll # LATIN SMALL LETTER U WITH MACRON
-016D ; Ll # LATIN SMALL LETTER U WITH BREVE
-016F ; Ll # LATIN SMALL LETTER U WITH RING ABOVE
-0171 ; Ll # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0173 ; Ll # LATIN SMALL LETTER U WITH OGONEK
-0175 ; Ll # LATIN SMALL LETTER W WITH CIRCUMFLEX
-0177 ; Ll # LATIN SMALL LETTER Y WITH CIRCUMFLEX
-017A ; Ll # LATIN SMALL LETTER Z WITH ACUTE
-017C ; Ll # LATIN SMALL LETTER Z WITH DOT ABOVE
-017E..0180 ; Ll # [3] LATIN SMALL LETTER Z WITH CARON..LATIN SMALL LETTER B WITH STROKE
-0183 ; Ll # LATIN SMALL LETTER B WITH TOPBAR
-0185 ; Ll # LATIN SMALL LETTER TONE SIX
-0188 ; Ll # LATIN SMALL LETTER C WITH HOOK
-018C..018D ; Ll # [2] LATIN SMALL LETTER D WITH TOPBAR..LATIN SMALL LETTER TURNED DELTA
-0192 ; Ll # LATIN SMALL LETTER F WITH HOOK
-0195 ; Ll # LATIN SMALL LETTER HV
-0199..019B ; Ll # [3] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER LAMBDA WITH STROKE
-019E ; Ll # LATIN SMALL LETTER N WITH LONG RIGHT LEG
-01A1 ; Ll # LATIN SMALL LETTER O WITH HORN
-01A3 ; Ll # LATIN SMALL LETTER OI
-01A5 ; Ll # LATIN SMALL LETTER P WITH HOOK
-01A8 ; Ll # LATIN SMALL LETTER TONE TWO
-01AA..01AB ; Ll # [2] LATIN LETTER REVERSED ESH LOOP..LATIN SMALL LETTER T WITH PALATAL HOOK
-01AD ; Ll # LATIN SMALL LETTER T WITH HOOK
-01B0 ; Ll # LATIN SMALL LETTER U WITH HORN
-01B4 ; Ll # LATIN SMALL LETTER Y WITH HOOK
-01B6 ; Ll # LATIN SMALL LETTER Z WITH STROKE
-01B9..01BA ; Ll # [2] LATIN SMALL LETTER EZH REVERSED..LATIN SMALL LETTER EZH WITH TAIL
-01BD..01BF ; Ll # [3] LATIN SMALL LETTER TONE FIVE..LATIN LETTER WYNN
-01C6 ; Ll # LATIN SMALL LETTER DZ WITH CARON
-01C9 ; Ll # LATIN SMALL LETTER LJ
-01CC ; Ll # LATIN SMALL LETTER NJ
-01CE ; Ll # LATIN SMALL LETTER A WITH CARON
-01D0 ; Ll # LATIN SMALL LETTER I WITH CARON
-01D2 ; Ll # LATIN SMALL LETTER O WITH CARON
-01D4 ; Ll # LATIN SMALL LETTER U WITH CARON
-01D6 ; Ll # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D8 ; Ll # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01DA ; Ll # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01DC..01DD ; Ll # [2] LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE..LATIN SMALL LETTER TURNED E
-01DF ; Ll # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01E1 ; Ll # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
-01E3 ; Ll # LATIN SMALL LETTER AE WITH MACRON
-01E5 ; Ll # LATIN SMALL LETTER G WITH STROKE
-01E7 ; Ll # LATIN SMALL LETTER G WITH CARON
-01E9 ; Ll # LATIN SMALL LETTER K WITH CARON
-01EB ; Ll # LATIN SMALL LETTER O WITH OGONEK
-01ED ; Ll # LATIN SMALL LETTER O WITH OGONEK AND MACRON
-01EF..01F0 ; Ll # [2] LATIN SMALL LETTER EZH WITH CARON..LATIN SMALL LETTER J WITH CARON
-01F3 ; Ll # LATIN SMALL LETTER DZ
-01F5 ; Ll # LATIN SMALL LETTER G WITH ACUTE
-01F9 ; Ll # LATIN SMALL LETTER N WITH GRAVE
-01FB ; Ll # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
-01FD ; Ll # LATIN SMALL LETTER AE WITH ACUTE
-01FF ; Ll # LATIN SMALL LETTER O WITH STROKE AND ACUTE
-0201 ; Ll # LATIN SMALL LETTER A WITH DOUBLE GRAVE
-0203 ; Ll # LATIN SMALL LETTER A WITH INVERTED BREVE
-0205 ; Ll # LATIN SMALL LETTER E WITH DOUBLE GRAVE
-0207 ; Ll # LATIN SMALL LETTER E WITH INVERTED BREVE
-0209 ; Ll # LATIN SMALL LETTER I WITH DOUBLE GRAVE
-020B ; Ll # LATIN SMALL LETTER I WITH INVERTED BREVE
-020D ; Ll # LATIN SMALL LETTER O WITH DOUBLE GRAVE
-020F ; Ll # LATIN SMALL LETTER O WITH INVERTED BREVE
-0211 ; Ll # LATIN SMALL LETTER R WITH DOUBLE GRAVE
-0213 ; Ll # LATIN SMALL LETTER R WITH INVERTED BREVE
-0215 ; Ll # LATIN SMALL LETTER U WITH DOUBLE GRAVE
-0217 ; Ll # LATIN SMALL LETTER U WITH INVERTED BREVE
-0219 ; Ll # LATIN SMALL LETTER S WITH COMMA BELOW
-021B ; Ll # LATIN SMALL LETTER T WITH COMMA BELOW
-021D ; Ll # LATIN SMALL LETTER YOGH
-021F ; Ll # LATIN SMALL LETTER H WITH CARON
-0221 ; Ll # LATIN SMALL LETTER D WITH CURL
-0223 ; Ll # LATIN SMALL LETTER OU
-0225 ; Ll # LATIN SMALL LETTER Z WITH HOOK
-0227 ; Ll # LATIN SMALL LETTER A WITH DOT ABOVE
-0229 ; Ll # LATIN SMALL LETTER E WITH CEDILLA
-022B ; Ll # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022D ; Ll # LATIN SMALL LETTER O WITH TILDE AND MACRON
-022F ; Ll # LATIN SMALL LETTER O WITH DOT ABOVE
-0231 ; Ll # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
-0233..0239 ; Ll # [7] LATIN SMALL LETTER Y WITH MACRON..LATIN SMALL LETTER QP DIGRAPH
-023C ; Ll # LATIN SMALL LETTER C WITH STROKE
-023F..0240 ; Ll # [2] LATIN SMALL LETTER S WITH SWASH TAIL..LATIN SMALL LETTER Z WITH SWASH TAIL
-0242 ; Ll # LATIN SMALL LETTER GLOTTAL STOP
-0247 ; Ll # LATIN SMALL LETTER E WITH STROKE
-0249 ; Ll # LATIN SMALL LETTER J WITH STROKE
-024B ; Ll # LATIN SMALL LETTER Q WITH HOOK TAIL
-024D ; Ll # LATIN SMALL LETTER R WITH STROKE
-024F..0293 ; Ll # [69] LATIN SMALL LETTER Y WITH STROKE..LATIN SMALL LETTER EZH WITH CURL
-0295..02AF ; Ll # [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
-0371 ; Ll # GREEK SMALL LETTER HETA
-0373 ; Ll # GREEK SMALL LETTER ARCHAIC SAMPI
-0377 ; Ll # GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
-037B..037D ; Ll # [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
-0390 ; Ll # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-03AC..03CE ; Ll # [35] GREEK SMALL LETTER ALPHA WITH TONOS..GREEK SMALL LETTER OMEGA WITH TONOS
-03D0..03D1 ; Ll # [2] GREEK BETA SYMBOL..GREEK THETA SYMBOL
-03D5..03D7 ; Ll # [3] GREEK PHI SYMBOL..GREEK KAI SYMBOL
-03D9 ; Ll # GREEK SMALL LETTER ARCHAIC KOPPA
-03DB ; Ll # GREEK SMALL LETTER STIGMA
-03DD ; Ll # GREEK SMALL LETTER DIGAMMA
-03DF ; Ll # GREEK SMALL LETTER KOPPA
-03E1 ; Ll # GREEK SMALL LETTER SAMPI
-03E3 ; Ll # COPTIC SMALL LETTER SHEI
-03E5 ; Ll # COPTIC SMALL LETTER FEI
-03E7 ; Ll # COPTIC SMALL LETTER KHEI
-03E9 ; Ll # COPTIC SMALL LETTER HORI
-03EB ; Ll # COPTIC SMALL LETTER GANGIA
-03ED ; Ll # COPTIC SMALL LETTER SHIMA
-03EF..03F3 ; Ll # [5] COPTIC SMALL LETTER DEI..GREEK LETTER YOT
-03F5 ; Ll # GREEK LUNATE EPSILON SYMBOL
-03F8 ; Ll # GREEK SMALL LETTER SHO
-03FB..03FC ; Ll # [2] GREEK SMALL LETTER SAN..GREEK RHO WITH STROKE SYMBOL
-0430..045F ; Ll # [48] CYRILLIC SMALL LETTER A..CYRILLIC SMALL LETTER DZHE
-0461 ; Ll # CYRILLIC SMALL LETTER OMEGA
-0463 ; Ll # CYRILLIC SMALL LETTER YAT
-0465 ; Ll # CYRILLIC SMALL LETTER IOTIFIED E
-0467 ; Ll # CYRILLIC SMALL LETTER LITTLE YUS
-0469 ; Ll # CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
-046B ; Ll # CYRILLIC SMALL LETTER BIG YUS
-046D ; Ll # CYRILLIC SMALL LETTER IOTIFIED BIG YUS
-046F ; Ll # CYRILLIC SMALL LETTER KSI
-0471 ; Ll # CYRILLIC SMALL LETTER PSI
-0473 ; Ll # CYRILLIC SMALL LETTER FITA
-0475 ; Ll # CYRILLIC SMALL LETTER IZHITSA
-0477 ; Ll # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0479 ; Ll # CYRILLIC SMALL LETTER UK
-047B ; Ll # CYRILLIC SMALL LETTER ROUND OMEGA
-047D ; Ll # CYRILLIC SMALL LETTER OMEGA WITH TITLO
-047F ; Ll # CYRILLIC SMALL LETTER OT
-0481 ; Ll # CYRILLIC SMALL LETTER KOPPA
-048B ; Ll # CYRILLIC SMALL LETTER SHORT I WITH TAIL
-048D ; Ll # CYRILLIC SMALL LETTER SEMISOFT SIGN
-048F ; Ll # CYRILLIC SMALL LETTER ER WITH TICK
-0491 ; Ll # CYRILLIC SMALL LETTER GHE WITH UPTURN
-0493 ; Ll # CYRILLIC SMALL LETTER GHE WITH STROKE
-0495 ; Ll # CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
-0497 ; Ll # CYRILLIC SMALL LETTER ZHE WITH DESCENDER
-0499 ; Ll # CYRILLIC SMALL LETTER ZE WITH DESCENDER
-049B ; Ll # CYRILLIC SMALL LETTER KA WITH DESCENDER
-049D ; Ll # CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
-049F ; Ll # CYRILLIC SMALL LETTER KA WITH STROKE
-04A1 ; Ll # CYRILLIC SMALL LETTER BASHKIR KA
-04A3 ; Ll # CYRILLIC SMALL LETTER EN WITH DESCENDER
-04A5 ; Ll # CYRILLIC SMALL LIGATURE EN GHE
-04A7 ; Ll # CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
-04A9 ; Ll # CYRILLIC SMALL LETTER ABKHASIAN HA
-04AB ; Ll # CYRILLIC SMALL LETTER ES WITH DESCENDER
-04AD ; Ll # CYRILLIC SMALL LETTER TE WITH DESCENDER
-04AF ; Ll # CYRILLIC SMALL LETTER STRAIGHT U
-04B1 ; Ll # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
-04B3 ; Ll # CYRILLIC SMALL LETTER HA WITH DESCENDER
-04B5 ; Ll # CYRILLIC SMALL LIGATURE TE TSE
-04B7 ; Ll # CYRILLIC SMALL LETTER CHE WITH DESCENDER
-04B9 ; Ll # CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
-04BB ; Ll # CYRILLIC SMALL LETTER SHHA
-04BD ; Ll # CYRILLIC SMALL LETTER ABKHASIAN CHE
-04BF ; Ll # CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
-04C2 ; Ll # CYRILLIC SMALL LETTER ZHE WITH BREVE
-04C4 ; Ll # CYRILLIC SMALL LETTER KA WITH HOOK
-04C6 ; Ll # CYRILLIC SMALL LETTER EL WITH TAIL
-04C8 ; Ll # CYRILLIC SMALL LETTER EN WITH HOOK
-04CA ; Ll # CYRILLIC SMALL LETTER EN WITH TAIL
-04CC ; Ll # CYRILLIC SMALL LETTER KHAKASSIAN CHE
-04CE..04CF ; Ll # [2] CYRILLIC SMALL LETTER EM WITH TAIL..CYRILLIC SMALL LETTER PALOCHKA
-04D1 ; Ll # CYRILLIC SMALL LETTER A WITH BREVE
-04D3 ; Ll # CYRILLIC SMALL LETTER A WITH DIAERESIS
-04D5 ; Ll # CYRILLIC SMALL LIGATURE A IE
-04D7 ; Ll # CYRILLIC SMALL LETTER IE WITH BREVE
-04D9 ; Ll # CYRILLIC SMALL LETTER SCHWA
-04DB ; Ll # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
-04DD ; Ll # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
-04DF ; Ll # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
-04E1 ; Ll # CYRILLIC SMALL LETTER ABKHASIAN DZE
-04E3 ; Ll # CYRILLIC SMALL LETTER I WITH MACRON
-04E5 ; Ll # CYRILLIC SMALL LETTER I WITH DIAERESIS
-04E7 ; Ll # CYRILLIC SMALL LETTER O WITH DIAERESIS
-04E9 ; Ll # CYRILLIC SMALL LETTER BARRED O
-04EB ; Ll # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
-04ED ; Ll # CYRILLIC SMALL LETTER E WITH DIAERESIS
-04EF ; Ll # CYRILLIC SMALL LETTER U WITH MACRON
-04F1 ; Ll # CYRILLIC SMALL LETTER U WITH DIAERESIS
-04F3 ; Ll # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
-04F5 ; Ll # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
-04F7 ; Ll # CYRILLIC SMALL LETTER GHE WITH DESCENDER
-04F9 ; Ll # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
-04FB ; Ll # CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK
-04FD ; Ll # CYRILLIC SMALL LETTER HA WITH HOOK
-04FF ; Ll # CYRILLIC SMALL LETTER HA WITH STROKE
-0501 ; Ll # CYRILLIC SMALL LETTER KOMI DE
-0503 ; Ll # CYRILLIC SMALL LETTER KOMI DJE
-0505 ; Ll # CYRILLIC SMALL LETTER KOMI ZJE
-0507 ; Ll # CYRILLIC SMALL LETTER KOMI DZJE
-0509 ; Ll # CYRILLIC SMALL LETTER KOMI LJE
-050B ; Ll # CYRILLIC SMALL LETTER KOMI NJE
-050D ; Ll # CYRILLIC SMALL LETTER KOMI SJE
-050F ; Ll # CYRILLIC SMALL LETTER KOMI TJE
-0511 ; Ll # CYRILLIC SMALL LETTER REVERSED ZE
-0513 ; Ll # CYRILLIC SMALL LETTER EL WITH HOOK
-0515 ; Ll # CYRILLIC SMALL LETTER LHA
-0517 ; Ll # CYRILLIC SMALL LETTER RHA
-0519 ; Ll # CYRILLIC SMALL LETTER YAE
-051B ; Ll # CYRILLIC SMALL LETTER QA
-051D ; Ll # CYRILLIC SMALL LETTER WE
-051F ; Ll # CYRILLIC SMALL LETTER ALEUT KA
-0521 ; Ll # CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK
-0523 ; Ll # CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK
-0525 ; Ll # CYRILLIC SMALL LETTER PE WITH DESCENDER
-0527 ; Ll # CYRILLIC SMALL LETTER SHHA WITH DESCENDER
-0529 ; Ll # CYRILLIC SMALL LETTER EN WITH LEFT HOOK
-052B ; Ll # CYRILLIC SMALL LETTER DZZHE
-052D ; Ll # CYRILLIC SMALL LETTER DCHE
-052F ; Ll # CYRILLIC SMALL LETTER EL WITH DESCENDER
-0561..0587 ; Ll # [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
-13F8..13FD ; Ll # [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
-1C80..1C88 ; Ll # [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
-1D00..1D2B ; Ll # [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
-1D6B..1D77 ; Ll # [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G
-1D79..1D9A ; Ll # [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
-1E01 ; Ll # LATIN SMALL LETTER A WITH RING BELOW
-1E03 ; Ll # LATIN SMALL LETTER B WITH DOT ABOVE
-1E05 ; Ll # LATIN SMALL LETTER B WITH DOT BELOW
-1E07 ; Ll # LATIN SMALL LETTER B WITH LINE BELOW
-1E09 ; Ll # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
-1E0B ; Ll # LATIN SMALL LETTER D WITH DOT ABOVE
-1E0D ; Ll # LATIN SMALL LETTER D WITH DOT BELOW
-1E0F ; Ll # LATIN SMALL LETTER D WITH LINE BELOW
-1E11 ; Ll # LATIN SMALL LETTER D WITH CEDILLA
-1E13 ; Ll # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
-1E15 ; Ll # LATIN SMALL LETTER E WITH MACRON AND GRAVE
-1E17 ; Ll # LATIN SMALL LETTER E WITH MACRON AND ACUTE
-1E19 ; Ll # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
-1E1B ; Ll # LATIN SMALL LETTER E WITH TILDE BELOW
-1E1D ; Ll # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
-1E1F ; Ll # LATIN SMALL LETTER F WITH DOT ABOVE
-1E21 ; Ll # LATIN SMALL LETTER G WITH MACRON
-1E23 ; Ll # LATIN SMALL LETTER H WITH DOT ABOVE
-1E25 ; Ll # LATIN SMALL LETTER H WITH DOT BELOW
-1E27 ; Ll # LATIN SMALL LETTER H WITH DIAERESIS
-1E29 ; Ll # LATIN SMALL LETTER H WITH CEDILLA
-1E2B ; Ll # LATIN SMALL LETTER H WITH BREVE BELOW
-1E2D ; Ll # LATIN SMALL LETTER I WITH TILDE BELOW
-1E2F ; Ll # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
-1E31 ; Ll # LATIN SMALL LETTER K WITH ACUTE
-1E33 ; Ll # LATIN SMALL LETTER K WITH DOT BELOW
-1E35 ; Ll # LATIN SMALL LETTER K WITH LINE BELOW
-1E37 ; Ll # LATIN SMALL LETTER L WITH DOT BELOW
-1E39 ; Ll # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
-1E3B ; Ll # LATIN SMALL LETTER L WITH LINE BELOW
-1E3D ; Ll # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
-1E3F ; Ll # LATIN SMALL LETTER M WITH ACUTE
-1E41 ; Ll # LATIN SMALL LETTER M WITH DOT ABOVE
-1E43 ; Ll # LATIN SMALL LETTER M WITH DOT BELOW
-1E45 ; Ll # LATIN SMALL LETTER N WITH DOT ABOVE
-1E47 ; Ll # LATIN SMALL LETTER N WITH DOT BELOW
-1E49 ; Ll # LATIN SMALL LETTER N WITH LINE BELOW
-1E4B ; Ll # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
-1E4D ; Ll # LATIN SMALL LETTER O WITH TILDE AND ACUTE
-1E4F ; Ll # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
-1E51 ; Ll # LATIN SMALL LETTER O WITH MACRON AND GRAVE
-1E53 ; Ll # LATIN SMALL LETTER O WITH MACRON AND ACUTE
-1E55 ; Ll # LATIN SMALL LETTER P WITH ACUTE
-1E57 ; Ll # LATIN SMALL LETTER P WITH DOT ABOVE
-1E59 ; Ll # LATIN SMALL LETTER R WITH DOT ABOVE
-1E5B ; Ll # LATIN SMALL LETTER R WITH DOT BELOW
-1E5D ; Ll # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
-1E5F ; Ll # LATIN SMALL LETTER R WITH LINE BELOW
-1E61 ; Ll # LATIN SMALL LETTER S WITH DOT ABOVE
-1E63 ; Ll # LATIN SMALL LETTER S WITH DOT BELOW
-1E65 ; Ll # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
-1E67 ; Ll # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
-1E69 ; Ll # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
-1E6B ; Ll # LATIN SMALL LETTER T WITH DOT ABOVE
-1E6D ; Ll # LATIN SMALL LETTER T WITH DOT BELOW
-1E6F ; Ll # LATIN SMALL LETTER T WITH LINE BELOW
-1E71 ; Ll # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
-1E73 ; Ll # LATIN SMALL LETTER U WITH DIAERESIS BELOW
-1E75 ; Ll # LATIN SMALL LETTER U WITH TILDE BELOW
-1E77 ; Ll # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
-1E79 ; Ll # LATIN SMALL LETTER U WITH TILDE AND ACUTE
-1E7B ; Ll # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
-1E7D ; Ll # LATIN SMALL LETTER V WITH TILDE
-1E7F ; Ll # LATIN SMALL LETTER V WITH DOT BELOW
-1E81 ; Ll # LATIN SMALL LETTER W WITH GRAVE
-1E83 ; Ll # LATIN SMALL LETTER W WITH ACUTE
-1E85 ; Ll # LATIN SMALL LETTER W WITH DIAERESIS
-1E87 ; Ll # LATIN SMALL LETTER W WITH DOT ABOVE
-1E89 ; Ll # LATIN SMALL LETTER W WITH DOT BELOW
-1E8B ; Ll # LATIN SMALL LETTER X WITH DOT ABOVE
-1E8D ; Ll # LATIN SMALL LETTER X WITH DIAERESIS
-1E8F ; Ll # LATIN SMALL LETTER Y WITH DOT ABOVE
-1E91 ; Ll # LATIN SMALL LETTER Z WITH CIRCUMFLEX
-1E93 ; Ll # LATIN SMALL LETTER Z WITH DOT BELOW
-1E95..1E9D ; Ll # [9] LATIN SMALL LETTER Z WITH LINE BELOW..LATIN SMALL LETTER LONG S WITH HIGH STROKE
-1E9F ; Ll # LATIN SMALL LETTER DELTA
-1EA1 ; Ll # LATIN SMALL LETTER A WITH DOT BELOW
-1EA3 ; Ll # LATIN SMALL LETTER A WITH HOOK ABOVE
-1EA5 ; Ll # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
-1EA7 ; Ll # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
-1EA9 ; Ll # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-1EAB ; Ll # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
-1EAD ; Ll # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-1EAF ; Ll # LATIN SMALL LETTER A WITH BREVE AND ACUTE
-1EB1 ; Ll # LATIN SMALL LETTER A WITH BREVE AND GRAVE
-1EB3 ; Ll # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
-1EB5 ; Ll # LATIN SMALL LETTER A WITH BREVE AND TILDE
-1EB7 ; Ll # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
-1EB9 ; Ll # LATIN SMALL LETTER E WITH DOT BELOW
-1EBB ; Ll # LATIN SMALL LETTER E WITH HOOK ABOVE
-1EBD ; Ll # LATIN SMALL LETTER E WITH TILDE
-1EBF ; Ll # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EC1 ; Ll # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC3 ; Ll # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC5 ; Ll # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC7 ; Ll # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC9 ; Ll # LATIN SMALL LETTER I WITH HOOK ABOVE
-1ECB ; Ll # LATIN SMALL LETTER I WITH DOT BELOW
-1ECD ; Ll # LATIN SMALL LETTER O WITH DOT BELOW
-1ECF ; Ll # LATIN SMALL LETTER O WITH HOOK ABOVE
-1ED1 ; Ll # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED3 ; Ll # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED5 ; Ll # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED7 ; Ll # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED9 ; Ll # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1EDB ; Ll # LATIN SMALL LETTER O WITH HORN AND ACUTE
-1EDD ; Ll # LATIN SMALL LETTER O WITH HORN AND GRAVE
-1EDF ; Ll # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
-1EE1 ; Ll # LATIN SMALL LETTER O WITH HORN AND TILDE
-1EE3 ; Ll # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
-1EE5 ; Ll # LATIN SMALL LETTER U WITH DOT BELOW
-1EE7 ; Ll # LATIN SMALL LETTER U WITH HOOK ABOVE
-1EE9 ; Ll # LATIN SMALL LETTER U WITH HORN AND ACUTE
-1EEB ; Ll # LATIN SMALL LETTER U WITH HORN AND GRAVE
-1EED ; Ll # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
-1EEF ; Ll # LATIN SMALL LETTER U WITH HORN AND TILDE
-1EF1 ; Ll # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
-1EF3 ; Ll # LATIN SMALL LETTER Y WITH GRAVE
-1EF5 ; Ll # LATIN SMALL LETTER Y WITH DOT BELOW
-1EF7 ; Ll # LATIN SMALL LETTER Y WITH HOOK ABOVE
-1EF9 ; Ll # LATIN SMALL LETTER Y WITH TILDE
-1EFB ; Ll # LATIN SMALL LETTER MIDDLE-WELSH LL
-1EFD ; Ll # LATIN SMALL LETTER MIDDLE-WELSH V
-1EFF..1F07 ; Ll # [9] LATIN SMALL LETTER Y WITH LOOP..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
-1F10..1F15 ; Ll # [6] GREEK SMALL LETTER EPSILON WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
-1F20..1F27 ; Ll # [8] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
-1F30..1F37 ; Ll # [8] GREEK SMALL LETTER IOTA WITH PSILI..GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
-1F40..1F45 ; Ll # [6] GREEK SMALL LETTER OMICRON WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
-1F50..1F57 ; Ll # [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
-1F60..1F67 ; Ll # [8] GREEK SMALL LETTER OMEGA WITH PSILI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
-1F70..1F7D ; Ll # [14] GREEK SMALL LETTER ALPHA WITH VARIA..GREEK SMALL LETTER OMEGA WITH OXIA
-1F80..1F87 ; Ll # [8] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1F90..1F97 ; Ll # [8] GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1FA0..1FA7 ; Ll # [8] GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1FB0..1FB4 ; Ll # [5] GREEK SMALL LETTER ALPHA WITH VRACHY..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
-1FB6..1FB7 ; Ll # [2] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FBE ; Ll # GREEK PROSGEGRAMMENI
-1FC2..1FC4 ; Ll # [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
-1FC6..1FC7 ; Ll # [2] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FD0..1FD3 ; Ll # [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
-1FD6..1FD7 ; Ll # [2] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
-1FE0..1FE7 ; Ll # [8] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
-1FF2..1FF4 ; Ll # [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
-1FF6..1FF7 ; Ll # [2] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
-210A ; Ll # SCRIPT SMALL G
-210E..210F ; Ll # [2] PLANCK CONSTANT..PLANCK CONSTANT OVER TWO PI
-2113 ; Ll # SCRIPT SMALL L
-212F ; Ll # SCRIPT SMALL E
-2134 ; Ll # SCRIPT SMALL O
-2139 ; Ll # INFORMATION SOURCE
-213C..213D ; Ll # [2] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK SMALL GAMMA
-2146..2149 ; Ll # [4] DOUBLE-STRUCK ITALIC SMALL D..DOUBLE-STRUCK ITALIC SMALL J
-214E ; Ll # TURNED SMALL F
-2184 ; Ll # LATIN SMALL LETTER REVERSED C
-2C30..2C5E ; Ll # [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE
-2C61 ; Ll # LATIN SMALL LETTER L WITH DOUBLE BAR
-2C65..2C66 ; Ll # [2] LATIN SMALL LETTER A WITH STROKE..LATIN SMALL LETTER T WITH DIAGONAL STROKE
-2C68 ; Ll # LATIN SMALL LETTER H WITH DESCENDER
-2C6A ; Ll # LATIN SMALL LETTER K WITH DESCENDER
-2C6C ; Ll # LATIN SMALL LETTER Z WITH DESCENDER
-2C71 ; Ll # LATIN SMALL LETTER V WITH RIGHT HOOK
-2C73..2C74 ; Ll # [2] LATIN SMALL LETTER W WITH HOOK..LATIN SMALL LETTER V WITH CURL
-2C76..2C7B ; Ll # [6] LATIN SMALL LETTER HALF H..LATIN LETTER SMALL CAPITAL TURNED E
-2C81 ; Ll # COPTIC SMALL LETTER ALFA
-2C83 ; Ll # COPTIC SMALL LETTER VIDA
-2C85 ; Ll # COPTIC SMALL LETTER GAMMA
-2C87 ; Ll # COPTIC SMALL LETTER DALDA
-2C89 ; Ll # COPTIC SMALL LETTER EIE
-2C8B ; Ll # COPTIC SMALL LETTER SOU
-2C8D ; Ll # COPTIC SMALL LETTER ZATA
-2C8F ; Ll # COPTIC SMALL LETTER HATE
-2C91 ; Ll # COPTIC SMALL LETTER THETHE
-2C93 ; Ll # COPTIC SMALL LETTER IAUDA
-2C95 ; Ll # COPTIC SMALL LETTER KAPA
-2C97 ; Ll # COPTIC SMALL LETTER LAULA
-2C99 ; Ll # COPTIC SMALL LETTER MI
-2C9B ; Ll # COPTIC SMALL LETTER NI
-2C9D ; Ll # COPTIC SMALL LETTER KSI
-2C9F ; Ll # COPTIC SMALL LETTER O
-2CA1 ; Ll # COPTIC SMALL LETTER PI
-2CA3 ; Ll # COPTIC SMALL LETTER RO
-2CA5 ; Ll # COPTIC SMALL LETTER SIMA
-2CA7 ; Ll # COPTIC SMALL LETTER TAU
-2CA9 ; Ll # COPTIC SMALL LETTER UA
-2CAB ; Ll # COPTIC SMALL LETTER FI
-2CAD ; Ll # COPTIC SMALL LETTER KHI
-2CAF ; Ll # COPTIC SMALL LETTER PSI
-2CB1 ; Ll # COPTIC SMALL LETTER OOU
-2CB3 ; Ll # COPTIC SMALL LETTER DIALECT-P ALEF
-2CB5 ; Ll # COPTIC SMALL LETTER OLD COPTIC AIN
-2CB7 ; Ll # COPTIC SMALL LETTER CRYPTOGRAMMIC EIE
-2CB9 ; Ll # COPTIC SMALL LETTER DIALECT-P KAPA
-2CBB ; Ll # COPTIC SMALL LETTER DIALECT-P NI
-2CBD ; Ll # COPTIC SMALL LETTER CRYPTOGRAMMIC NI
-2CBF ; Ll # COPTIC SMALL LETTER OLD COPTIC OOU
-2CC1 ; Ll # COPTIC SMALL LETTER SAMPI
-2CC3 ; Ll # COPTIC SMALL LETTER CROSSED SHEI
-2CC5 ; Ll # COPTIC SMALL LETTER OLD COPTIC SHEI
-2CC7 ; Ll # COPTIC SMALL LETTER OLD COPTIC ESH
-2CC9 ; Ll # COPTIC SMALL LETTER AKHMIMIC KHEI
-2CCB ; Ll # COPTIC SMALL LETTER DIALECT-P HORI
-2CCD ; Ll # COPTIC SMALL LETTER OLD COPTIC HORI
-2CCF ; Ll # COPTIC SMALL LETTER OLD COPTIC HA
-2CD1 ; Ll # COPTIC SMALL LETTER L-SHAPED HA
-2CD3 ; Ll # COPTIC SMALL LETTER OLD COPTIC HEI
-2CD5 ; Ll # COPTIC SMALL LETTER OLD COPTIC HAT
-2CD7 ; Ll # COPTIC SMALL LETTER OLD COPTIC GANGIA
-2CD9 ; Ll # COPTIC SMALL LETTER OLD COPTIC DJA
-2CDB ; Ll # COPTIC SMALL LETTER OLD COPTIC SHIMA
-2CDD ; Ll # COPTIC SMALL LETTER OLD NUBIAN SHIMA
-2CDF ; Ll # COPTIC SMALL LETTER OLD NUBIAN NGI
-2CE1 ; Ll # COPTIC SMALL LETTER OLD NUBIAN NYI
-2CE3..2CE4 ; Ll # [2] COPTIC SMALL LETTER OLD NUBIAN WAU..COPTIC SYMBOL KAI
-2CEC ; Ll # COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI
-2CEE ; Ll # COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA
-2CF3 ; Ll # COPTIC SMALL LETTER BOHAIRIC KHEI
-2D00..2D25 ; Ll # [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
-2D27 ; Ll # GEORGIAN SMALL LETTER YN
-2D2D ; Ll # GEORGIAN SMALL LETTER AEN
-A641 ; Ll # CYRILLIC SMALL LETTER ZEMLYA
-A643 ; Ll # CYRILLIC SMALL LETTER DZELO
-A645 ; Ll # CYRILLIC SMALL LETTER REVERSED DZE
-A647 ; Ll # CYRILLIC SMALL LETTER IOTA
-A649 ; Ll # CYRILLIC SMALL LETTER DJERV
-A64B ; Ll # CYRILLIC SMALL LETTER MONOGRAPH UK
-A64D ; Ll # CYRILLIC SMALL LETTER BROAD OMEGA
-A64F ; Ll # CYRILLIC SMALL LETTER NEUTRAL YER
-A651 ; Ll # CYRILLIC SMALL LETTER YERU WITH BACK YER
-A653 ; Ll # CYRILLIC SMALL LETTER IOTIFIED YAT
-A655 ; Ll # CYRILLIC SMALL LETTER REVERSED YU
-A657 ; Ll # CYRILLIC SMALL LETTER IOTIFIED A
-A659 ; Ll # CYRILLIC SMALL LETTER CLOSED LITTLE YUS
-A65B ; Ll # CYRILLIC SMALL LETTER BLENDED YUS
-A65D ; Ll # CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS
-A65F ; Ll # CYRILLIC SMALL LETTER YN
-A661 ; Ll # CYRILLIC SMALL LETTER REVERSED TSE
-A663 ; Ll # CYRILLIC SMALL LETTER SOFT DE
-A665 ; Ll # CYRILLIC SMALL LETTER SOFT EL
-A667 ; Ll # CYRILLIC SMALL LETTER SOFT EM
-A669 ; Ll # CYRILLIC SMALL LETTER MONOCULAR O
-A66B ; Ll # CYRILLIC SMALL LETTER BINOCULAR O
-A66D ; Ll # CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
-A681 ; Ll # CYRILLIC SMALL LETTER DWE
-A683 ; Ll # CYRILLIC SMALL LETTER DZWE
-A685 ; Ll # CYRILLIC SMALL LETTER ZHWE
-A687 ; Ll # CYRILLIC SMALL LETTER CCHE
-A689 ; Ll # CYRILLIC SMALL LETTER DZZE
-A68B ; Ll # CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK
-A68D ; Ll # CYRILLIC SMALL LETTER TWE
-A68F ; Ll # CYRILLIC SMALL LETTER TSWE
-A691 ; Ll # CYRILLIC SMALL LETTER TSSE
-A693 ; Ll # CYRILLIC SMALL LETTER TCHE
-A695 ; Ll # CYRILLIC SMALL LETTER HWE
-A697 ; Ll # CYRILLIC SMALL LETTER SHWE
-A699 ; Ll # CYRILLIC SMALL LETTER DOUBLE O
-A69B ; Ll # CYRILLIC SMALL LETTER CROSSED O
-A723 ; Ll # LATIN SMALL LETTER EGYPTOLOGICAL ALEF
-A725 ; Ll # LATIN SMALL LETTER EGYPTOLOGICAL AIN
-A727 ; Ll # LATIN SMALL LETTER HENG
-A729 ; Ll # LATIN SMALL LETTER TZ
-A72B ; Ll # LATIN SMALL LETTER TRESILLO
-A72D ; Ll # LATIN SMALL LETTER CUATRILLO
-A72F..A731 ; Ll # [3] LATIN SMALL LETTER CUATRILLO WITH COMMA..LATIN LETTER SMALL CAPITAL S
-A733 ; Ll # LATIN SMALL LETTER AA
-A735 ; Ll # LATIN SMALL LETTER AO
-A737 ; Ll # LATIN SMALL LETTER AU
-A739 ; Ll # LATIN SMALL LETTER AV
-A73B ; Ll # LATIN SMALL LETTER AV WITH HORIZONTAL BAR
-A73D ; Ll # LATIN SMALL LETTER AY
-A73F ; Ll # LATIN SMALL LETTER REVERSED C WITH DOT
-A741 ; Ll # LATIN SMALL LETTER K WITH STROKE
-A743 ; Ll # LATIN SMALL LETTER K WITH DIAGONAL STROKE
-A745 ; Ll # LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE
-A747 ; Ll # LATIN SMALL LETTER BROKEN L
-A749 ; Ll # LATIN SMALL LETTER L WITH HIGH STROKE
-A74B ; Ll # LATIN SMALL LETTER O WITH LONG STROKE OVERLAY
-A74D ; Ll # LATIN SMALL LETTER O WITH LOOP
-A74F ; Ll # LATIN SMALL LETTER OO
-A751 ; Ll # LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER
-A753 ; Ll # LATIN SMALL LETTER P WITH FLOURISH
-A755 ; Ll # LATIN SMALL LETTER P WITH SQUIRREL TAIL
-A757 ; Ll # LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER
-A759 ; Ll # LATIN SMALL LETTER Q WITH DIAGONAL STROKE
-A75B ; Ll # LATIN SMALL LETTER R ROTUNDA
-A75D ; Ll # LATIN SMALL LETTER RUM ROTUNDA
-A75F ; Ll # LATIN SMALL LETTER V WITH DIAGONAL STROKE
-A761 ; Ll # LATIN SMALL LETTER VY
-A763 ; Ll # LATIN SMALL LETTER VISIGOTHIC Z
-A765 ; Ll # LATIN SMALL LETTER THORN WITH STROKE
-A767 ; Ll # LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER
-A769 ; Ll # LATIN SMALL LETTER VEND
-A76B ; Ll # LATIN SMALL LETTER ET
-A76D ; Ll # LATIN SMALL LETTER IS
-A76F ; Ll # LATIN SMALL LETTER CON
-A771..A778 ; Ll # [8] LATIN SMALL LETTER DUM..LATIN SMALL LETTER UM
-A77A ; Ll # LATIN SMALL LETTER INSULAR D
-A77C ; Ll # LATIN SMALL LETTER INSULAR F
-A77F ; Ll # LATIN SMALL LETTER TURNED INSULAR G
-A781 ; Ll # LATIN SMALL LETTER TURNED L
-A783 ; Ll # LATIN SMALL LETTER INSULAR R
-A785 ; Ll # LATIN SMALL LETTER INSULAR S
-A787 ; Ll # LATIN SMALL LETTER INSULAR T
-A78C ; Ll # LATIN SMALL LETTER SALTILLO
-A78E ; Ll # LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
-A791 ; Ll # LATIN SMALL LETTER N WITH DESCENDER
-A793..A795 ; Ll # [3] LATIN SMALL LETTER C WITH BAR..LATIN SMALL LETTER H WITH PALATAL HOOK
-A797 ; Ll # LATIN SMALL LETTER B WITH FLOURISH
-A799 ; Ll # LATIN SMALL LETTER F WITH STROKE
-A79B ; Ll # LATIN SMALL LETTER VOLAPUK AE
-A79D ; Ll # LATIN SMALL LETTER VOLAPUK OE
-A79F ; Ll # LATIN SMALL LETTER VOLAPUK UE
-A7A1 ; Ll # LATIN SMALL LETTER G WITH OBLIQUE STROKE
-A7A3 ; Ll # LATIN SMALL LETTER K WITH OBLIQUE STROKE
-A7A5 ; Ll # LATIN SMALL LETTER N WITH OBLIQUE STROKE
-A7A7 ; Ll # LATIN SMALL LETTER R WITH OBLIQUE STROKE
-A7A9 ; Ll # LATIN SMALL LETTER S WITH OBLIQUE STROKE
-A7B5 ; Ll # LATIN SMALL LETTER BETA
-A7B7 ; Ll # LATIN SMALL LETTER OMEGA
-A7FA ; Ll # LATIN LETTER SMALL CAPITAL TURNED M
-AB30..AB5A ; Ll # [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
-AB60..AB65 ; Ll # [6] LATIN SMALL LETTER SAKHA YAT..GREEK LETTER SMALL CAPITAL OMEGA
-AB70..ABBF ; Ll # [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
-FB00..FB06 ; Ll # [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
-FB13..FB17 ; Ll # [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
-FF41..FF5A ; Ll # [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
-10428..1044F ; Ll # [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW
-104D8..104FB ; Ll # [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
-10CC0..10CF2 ; Ll # [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
-118C0..118DF ; Ll # [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
-1D41A..1D433 ; Ll # [26] MATHEMATICAL BOLD SMALL A..MATHEMATICAL BOLD SMALL Z
-1D44E..1D454 ; Ll # [7] MATHEMATICAL ITALIC SMALL A..MATHEMATICAL ITALIC SMALL G
-1D456..1D467 ; Ll # [18] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL ITALIC SMALL Z
-1D482..1D49B ; Ll # [26] MATHEMATICAL BOLD ITALIC SMALL A..MATHEMATICAL BOLD ITALIC SMALL Z
-1D4B6..1D4B9 ; Ll # [4] MATHEMATICAL SCRIPT SMALL A..MATHEMATICAL SCRIPT SMALL D
-1D4BB ; Ll # MATHEMATICAL SCRIPT SMALL F
-1D4BD..1D4C3 ; Ll # [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
-1D4C5..1D4CF ; Ll # [11] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL SCRIPT SMALL Z
-1D4EA..1D503 ; Ll # [26] MATHEMATICAL BOLD SCRIPT SMALL A..MATHEMATICAL BOLD SCRIPT SMALL Z
-1D51E..1D537 ; Ll # [26] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL FRAKTUR SMALL Z
-1D552..1D56B ; Ll # [26] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL DOUBLE-STRUCK SMALL Z
-1D586..1D59F ; Ll # [26] MATHEMATICAL BOLD FRAKTUR SMALL A..MATHEMATICAL BOLD FRAKTUR SMALL Z
-1D5BA..1D5D3 ; Ll # [26] MATHEMATICAL SANS-SERIF SMALL A..MATHEMATICAL SANS-SERIF SMALL Z
-1D5EE..1D607 ; Ll # [26] MATHEMATICAL SANS-SERIF BOLD SMALL A..MATHEMATICAL SANS-SERIF BOLD SMALL Z
-1D622..1D63B ; Ll # [26] MATHEMATICAL SANS-SERIF ITALIC SMALL A..MATHEMATICAL SANS-SERIF ITALIC SMALL Z
-1D656..1D66F ; Ll # [26] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
-1D68A..1D6A5 ; Ll # [28] MATHEMATICAL MONOSPACE SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
-1D6C2..1D6DA ; Ll # [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
-1D6DC..1D6E1 ; Ll # [6] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL BOLD PI SYMBOL
-1D6FC..1D714 ; Ll # [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
-1D716..1D71B ; Ll # [6] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL ITALIC PI SYMBOL
-1D736..1D74E ; Ll # [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
-1D750..1D755 ; Ll # [6] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC PI SYMBOL
-1D770..1D788 ; Ll # [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
-1D78A..1D78F ; Ll # [6] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
-1D7AA..1D7C2 ; Ll # [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
-1D7C4..1D7C9 ; Ll # [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
-1D7CB ; Ll # MATHEMATICAL BOLD SMALL DIGAMMA
-1E922..1E943 ; Ll # [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA
-
-# Total code points: 2063
-
-# ================================================
-
-# General_Category=Titlecase_Letter
-
-01C5 ; Lt # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
-01C8 ; Lt # LATIN CAPITAL LETTER L WITH SMALL LETTER J
-01CB ; Lt # LATIN CAPITAL LETTER N WITH SMALL LETTER J
-01F2 ; Lt # LATIN CAPITAL LETTER D WITH SMALL LETTER Z
-1F88..1F8F ; Lt # [8] GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1F98..1F9F ; Lt # [8] GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1FA8..1FAF ; Lt # [8] GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1FBC ; Lt # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
-1FCC ; Lt # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
-1FFC ; Lt # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
-
-# Total code points: 31
-
-# ================================================
-
-# General_Category=Modifier_Letter
-
-02B0..02C1 ; Lm # [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP
-02C6..02D1 ; Lm # [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
-02E0..02E4 ; Lm # [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
-02EC ; Lm # MODIFIER LETTER VOICING
-02EE ; Lm # MODIFIER LETTER DOUBLE APOSTROPHE
-0374 ; Lm # GREEK NUMERAL SIGN
-037A ; Lm # GREEK YPOGEGRAMMENI
-0559 ; Lm # ARMENIAN MODIFIER LETTER LEFT HALF RING
-0640 ; Lm # ARABIC TATWEEL
-06E5..06E6 ; Lm # [2] ARABIC SMALL WAW..ARABIC SMALL YEH
-07F4..07F5 ; Lm # [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
-07FA ; Lm # NKO LAJANYALAN
-081A ; Lm # SAMARITAN MODIFIER LETTER EPENTHETIC YUT
-0824 ; Lm # SAMARITAN MODIFIER LETTER SHORT A
-0828 ; Lm # SAMARITAN MODIFIER LETTER I
-0971 ; Lm # DEVANAGARI SIGN HIGH SPACING DOT
-0E46 ; Lm # THAI CHARACTER MAIYAMOK
-0EC6 ; Lm # LAO KO LA
-10FC ; Lm # MODIFIER LETTER GEORGIAN NAR
-17D7 ; Lm # KHMER SIGN LEK TOO
-1843 ; Lm # MONGOLIAN LETTER TODO LONG VOWEL SIGN
-1AA7 ; Lm # TAI THAM SIGN MAI YAMOK
-1C78..1C7D ; Lm # [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
-1D2C..1D6A ; Lm # [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
-1D78 ; Lm # MODIFIER LETTER CYRILLIC EN
-1D9B..1DBF ; Lm # [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
-2071 ; Lm # SUPERSCRIPT LATIN SMALL LETTER I
-207F ; Lm # SUPERSCRIPT LATIN SMALL LETTER N
-2090..209C ; Lm # [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
-2C7C..2C7D ; Lm # [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
-2D6F ; Lm # TIFINAGH MODIFIER LETTER LABIALIZATION MARK
-2E2F ; Lm # VERTICAL TILDE
-3005 ; Lm # IDEOGRAPHIC ITERATION MARK
-3031..3035 ; Lm # [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
-303B ; Lm # VERTICAL IDEOGRAPHIC ITERATION MARK
-309D..309E ; Lm # [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
-30FC..30FE ; Lm # [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK
-A015 ; Lm # YI SYLLABLE WU
-A4F8..A4FD ; Lm # [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU
-A60C ; Lm # VAI SYLLABLE LENGTHENER
-A67F ; Lm # CYRILLIC PAYEROK
-A69C..A69D ; Lm # [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
-A717..A71F ; Lm # [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK
-A770 ; Lm # MODIFIER LETTER US
-A788 ; Lm # MODIFIER LETTER LOW CIRCUMFLEX ACCENT
-A7F8..A7F9 ; Lm # [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
-A9CF ; Lm # JAVANESE PANGRANGKEP
-A9E6 ; Lm # MYANMAR MODIFIER LETTER SHAN REDUPLICATION
-AA70 ; Lm # MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION
-AADD ; Lm # TAI VIET SYMBOL SAM
-AAF3..AAF4 ; Lm # [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK
-AB5C..AB5F ; Lm # [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
-FF70 ; Lm # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
-FF9E..FF9F ; Lm # [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
-16B40..16B43 ; Lm # [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM
-16F93..16F9F ; Lm # [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
-16FE0 ; Lm # TANGUT ITERATION MARK
-
-# Total code points: 249
-
-# ================================================
-
-# General_Category=Other_Letter
-
-00AA ; Lo # FEMININE ORDINAL INDICATOR
-00BA ; Lo # MASCULINE ORDINAL INDICATOR
-01BB ; Lo # LATIN LETTER TWO WITH STROKE
-01C0..01C3 ; Lo # [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK
-0294 ; Lo # LATIN LETTER GLOTTAL STOP
-05D0..05EA ; Lo # [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
-05F0..05F2 ; Lo # [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD
-0620..063F ; Lo # [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
-0641..064A ; Lo # [10] ARABIC LETTER FEH..ARABIC LETTER YEH
-066E..066F ; Lo # [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
-0671..06D3 ; Lo # [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
-06D5 ; Lo # ARABIC LETTER AE
-06EE..06EF ; Lo # [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
-06FA..06FC ; Lo # [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW
-06FF ; Lo # ARABIC LETTER HEH WITH INVERTED V
-0710 ; Lo # SYRIAC LETTER ALAPH
-0712..072F ; Lo # [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH
-074D..07A5 ; Lo # [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU
-07B1 ; Lo # THAANA LETTER NAA
-07CA..07EA ; Lo # [33] NKO LETTER A..NKO LETTER JONA RA
-0800..0815 ; Lo # [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF
-0840..0858 ; Lo # [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
-08A0..08B4 ; Lo # [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
-08B6..08BD ; Lo # [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
-0904..0939 ; Lo # [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
-093D ; Lo # DEVANAGARI SIGN AVAGRAHA
-0950 ; Lo # DEVANAGARI OM
-0958..0961 ; Lo # [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
-0972..0980 ; Lo # [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI
-0985..098C ; Lo # [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L
-098F..0990 ; Lo # [2] BENGALI LETTER E..BENGALI LETTER AI
-0993..09A8 ; Lo # [22] BENGALI LETTER O..BENGALI LETTER NA
-09AA..09B0 ; Lo # [7] BENGALI LETTER PA..BENGALI LETTER RA
-09B2 ; Lo # BENGALI LETTER LA
-09B6..09B9 ; Lo # [4] BENGALI LETTER SHA..BENGALI LETTER HA
-09BD ; Lo # BENGALI SIGN AVAGRAHA
-09CE ; Lo # BENGALI LETTER KHANDA TA
-09DC..09DD ; Lo # [2] BENGALI LETTER RRA..BENGALI LETTER RHA
-09DF..09E1 ; Lo # [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL
-09F0..09F1 ; Lo # [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL
-0A05..0A0A ; Lo # [6] GURMUKHI LETTER A..GURMUKHI LETTER UU
-0A0F..0A10 ; Lo # [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI
-0A13..0A28 ; Lo # [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA
-0A2A..0A30 ; Lo # [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA
-0A32..0A33 ; Lo # [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA
-0A35..0A36 ; Lo # [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA
-0A38..0A39 ; Lo # [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA
-0A59..0A5C ; Lo # [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA
-0A5E ; Lo # GURMUKHI LETTER FA
-0A72..0A74 ; Lo # [3] GURMUKHI IRI..GURMUKHI EK ONKAR
-0A85..0A8D ; Lo # [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E
-0A8F..0A91 ; Lo # [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
-0A93..0AA8 ; Lo # [22] GUJARATI LETTER O..GUJARATI LETTER NA
-0AAA..0AB0 ; Lo # [7] GUJARATI LETTER PA..GUJARATI LETTER RA
-0AB2..0AB3 ; Lo # [2] GUJARATI LETTER LA..GUJARATI LETTER LLA
-0AB5..0AB9 ; Lo # [5] GUJARATI LETTER VA..GUJARATI LETTER HA
-0ABD ; Lo # GUJARATI SIGN AVAGRAHA
-0AD0 ; Lo # GUJARATI OM
-0AE0..0AE1 ; Lo # [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL
-0AF9 ; Lo # GUJARATI LETTER ZHA
-0B05..0B0C ; Lo # [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L
-0B0F..0B10 ; Lo # [2] ORIYA LETTER E..ORIYA LETTER AI
-0B13..0B28 ; Lo # [22] ORIYA LETTER O..ORIYA LETTER NA
-0B2A..0B30 ; Lo # [7] ORIYA LETTER PA..ORIYA LETTER RA
-0B32..0B33 ; Lo # [2] ORIYA LETTER LA..ORIYA LETTER LLA
-0B35..0B39 ; Lo # [5] ORIYA LETTER VA..ORIYA LETTER HA
-0B3D ; Lo # ORIYA SIGN AVAGRAHA
-0B5C..0B5D ; Lo # [2] ORIYA LETTER RRA..ORIYA LETTER RHA
-0B5F..0B61 ; Lo # [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
-0B71 ; Lo # ORIYA LETTER WA
-0B83 ; Lo # TAMIL SIGN VISARGA
-0B85..0B8A ; Lo # [6] TAMIL LETTER A..TAMIL LETTER UU
-0B8E..0B90 ; Lo # [3] TAMIL LETTER E..TAMIL LETTER AI
-0B92..0B95 ; Lo # [4] TAMIL LETTER O..TAMIL LETTER KA
-0B99..0B9A ; Lo # [2] TAMIL LETTER NGA..TAMIL LETTER CA
-0B9C ; Lo # TAMIL LETTER JA
-0B9E..0B9F ; Lo # [2] TAMIL LETTER NYA..TAMIL LETTER TTA
-0BA3..0BA4 ; Lo # [2] TAMIL LETTER NNA..TAMIL LETTER TA
-0BA8..0BAA ; Lo # [3] TAMIL LETTER NA..TAMIL LETTER PA
-0BAE..0BB9 ; Lo # [12] TAMIL LETTER MA..TAMIL LETTER HA
-0BD0 ; Lo # TAMIL OM
-0C05..0C0C ; Lo # [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
-0C0E..0C10 ; Lo # [3] TELUGU LETTER E..TELUGU LETTER AI
-0C12..0C28 ; Lo # [23] TELUGU LETTER O..TELUGU LETTER NA
-0C2A..0C39 ; Lo # [16] TELUGU LETTER PA..TELUGU LETTER HA
-0C3D ; Lo # TELUGU SIGN AVAGRAHA
-0C58..0C5A ; Lo # [3] TELUGU LETTER TSA..TELUGU LETTER RRRA
-0C60..0C61 ; Lo # [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
-0C80 ; Lo # KANNADA SIGN SPACING CANDRABINDU
-0C85..0C8C ; Lo # [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
-0C8E..0C90 ; Lo # [3] KANNADA LETTER E..KANNADA LETTER AI
-0C92..0CA8 ; Lo # [23] KANNADA LETTER O..KANNADA LETTER NA
-0CAA..0CB3 ; Lo # [10] KANNADA LETTER PA..KANNADA LETTER LLA
-0CB5..0CB9 ; Lo # [5] KANNADA LETTER VA..KANNADA LETTER HA
-0CBD ; Lo # KANNADA SIGN AVAGRAHA
-0CDE ; Lo # KANNADA LETTER FA
-0CE0..0CE1 ; Lo # [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
-0CF1..0CF2 ; Lo # [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
-0D05..0D0C ; Lo # [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L
-0D0E..0D10 ; Lo # [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
-0D12..0D3A ; Lo # [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA
-0D3D ; Lo # MALAYALAM SIGN AVAGRAHA
-0D4E ; Lo # MALAYALAM LETTER DOT REPH
-0D54..0D56 ; Lo # [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
-0D5F..0D61 ; Lo # [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
-0D7A..0D7F ; Lo # [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
-0D85..0D96 ; Lo # [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
-0D9A..0DB1 ; Lo # [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
-0DB3..0DBB ; Lo # [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
-0DBD ; Lo # SINHALA LETTER DANTAJA LAYANNA
-0DC0..0DC6 ; Lo # [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
-0E01..0E30 ; Lo # [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A
-0E32..0E33 ; Lo # [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM
-0E40..0E45 ; Lo # [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO
-0E81..0E82 ; Lo # [2] LAO LETTER KO..LAO LETTER KHO SUNG
-0E84 ; Lo # LAO LETTER KHO TAM
-0E87..0E88 ; Lo # [2] LAO LETTER NGO..LAO LETTER CO
-0E8A ; Lo # LAO LETTER SO TAM
-0E8D ; Lo # LAO LETTER NYO
-0E94..0E97 ; Lo # [4] LAO LETTER DO..LAO LETTER THO TAM
-0E99..0E9F ; Lo # [7] LAO LETTER NO..LAO LETTER FO SUNG
-0EA1..0EA3 ; Lo # [3] LAO LETTER MO..LAO LETTER LO LING
-0EA5 ; Lo # LAO LETTER LO LOOT
-0EA7 ; Lo # LAO LETTER WO
-0EAA..0EAB ; Lo # [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG
-0EAD..0EB0 ; Lo # [4] LAO LETTER O..LAO VOWEL SIGN A
-0EB2..0EB3 ; Lo # [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM
-0EBD ; Lo # LAO SEMIVOWEL SIGN NYO
-0EC0..0EC4 ; Lo # [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
-0EDC..0EDF ; Lo # [4] LAO HO NO..LAO LETTER KHMU NYO
-0F00 ; Lo # TIBETAN SYLLABLE OM
-0F40..0F47 ; Lo # [8] TIBETAN LETTER KA..TIBETAN LETTER JA
-0F49..0F6C ; Lo # [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA
-0F88..0F8C ; Lo # [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN
-1000..102A ; Lo # [43] MYANMAR LETTER KA..MYANMAR LETTER AU
-103F ; Lo # MYANMAR LETTER GREAT SA
-1050..1055 ; Lo # [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL
-105A..105D ; Lo # [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE
-1061 ; Lo # MYANMAR LETTER SGAW KAREN SHA
-1065..1066 ; Lo # [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA
-106E..1070 ; Lo # [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA
-1075..1081 ; Lo # [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA
-108E ; Lo # MYANMAR LETTER RUMAI PALAUNG FA
-10D0..10FA ; Lo # [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
-10FD..1248 ; Lo # [332] GEORGIAN LETTER AEN..ETHIOPIC SYLLABLE QWA
-124A..124D ; Lo # [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
-1250..1256 ; Lo # [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
-1258 ; Lo # ETHIOPIC SYLLABLE QHWA
-125A..125D ; Lo # [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
-1260..1288 ; Lo # [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA
-128A..128D ; Lo # [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
-1290..12B0 ; Lo # [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA
-12B2..12B5 ; Lo # [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
-12B8..12BE ; Lo # [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
-12C0 ; Lo # ETHIOPIC SYLLABLE KXWA
-12C2..12C5 ; Lo # [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
-12C8..12D6 ; Lo # [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O
-12D8..1310 ; Lo # [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA
-1312..1315 ; Lo # [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
-1318..135A ; Lo # [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA
-1380..138F ; Lo # [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE
-1401..166C ; Lo # [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
-166F..167F ; Lo # [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W
-1681..169A ; Lo # [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH
-16A0..16EA ; Lo # [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X
-16F1..16F8 ; Lo # [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC
-1700..170C ; Lo # [13] TAGALOG LETTER A..TAGALOG LETTER YA
-170E..1711 ; Lo # [4] TAGALOG LETTER LA..TAGALOG LETTER HA
-1720..1731 ; Lo # [18] HANUNOO LETTER A..HANUNOO LETTER HA
-1740..1751 ; Lo # [18] BUHID LETTER A..BUHID LETTER HA
-1760..176C ; Lo # [13] TAGBANWA LETTER A..TAGBANWA LETTER YA
-176E..1770 ; Lo # [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA
-1780..17B3 ; Lo # [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU
-17DC ; Lo # KHMER SIGN AVAKRAHASANYA
-1820..1842 ; Lo # [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
-1844..1877 ; Lo # [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
-1880..1884 ; Lo # [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
-1887..18A8 ; Lo # [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
-18AA ; Lo # MONGOLIAN LETTER MANCHU ALI GALI LHA
-18B0..18F5 ; Lo # [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
-1900..191E ; Lo # [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA
-1950..196D ; Lo # [30] TAI LE LETTER KA..TAI LE LETTER AI
-1970..1974 ; Lo # [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6
-1980..19AB ; Lo # [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA
-19B0..19C9 ; Lo # [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2
-1A00..1A16 ; Lo # [23] BUGINESE LETTER KA..BUGINESE LETTER HA
-1A20..1A54 ; Lo # [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA
-1B05..1B33 ; Lo # [47] BALINESE LETTER AKARA..BALINESE LETTER HA
-1B45..1B4B ; Lo # [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK
-1B83..1BA0 ; Lo # [30] SUNDANESE LETTER A..SUNDANESE LETTER HA
-1BAE..1BAF ; Lo # [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA
-1BBA..1BE5 ; Lo # [44] SUNDANESE AVAGRAHA..BATAK LETTER U
-1C00..1C23 ; Lo # [36] LEPCHA LETTER KA..LEPCHA LETTER A
-1C4D..1C4F ; Lo # [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
-1C5A..1C77 ; Lo # [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
-1CE9..1CEC ; Lo # [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
-1CEE..1CF1 ; Lo # [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA
-1CF5..1CF6 ; Lo # [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA
-2135..2138 ; Lo # [4] ALEF SYMBOL..DALET SYMBOL
-2D30..2D67 ; Lo # [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO
-2D80..2D96 ; Lo # [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE
-2DA0..2DA6 ; Lo # [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO
-2DA8..2DAE ; Lo # [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO
-2DB0..2DB6 ; Lo # [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO
-2DB8..2DBE ; Lo # [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO
-2DC0..2DC6 ; Lo # [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO
-2DC8..2DCE ; Lo # [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
-2DD0..2DD6 ; Lo # [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
-2DD8..2DDE ; Lo # [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
-3006 ; Lo # IDEOGRAPHIC CLOSING MARK
-303C ; Lo # MASU MARK
-3041..3096 ; Lo # [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE
-309F ; Lo # HIRAGANA DIGRAPH YORI
-30A1..30FA ; Lo # [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO
-30FF ; Lo # KATAKANA DIGRAPH KOTO
-3105..312D ; Lo # [41] BOPOMOFO LETTER B..BOPOMOFO LETTER IH
-3131..318E ; Lo # [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
-31A0..31BA ; Lo # [27] BOPOMOFO LETTER BU..BOPOMOFO LETTER ZY
-31F0..31FF ; Lo # [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
-3400..4DB5 ; Lo # [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
-4E00..9FD5 ; Lo # [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5
-A000..A014 ; Lo # [21] YI SYLLABLE IT..YI SYLLABLE E
-A016..A48C ; Lo # [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
-A4D0..A4F7 ; Lo # [40] LISU LETTER BA..LISU LETTER OE
-A500..A60B ; Lo # [268] VAI SYLLABLE EE..VAI SYLLABLE NG
-A610..A61F ; Lo # [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG
-A62A..A62B ; Lo # [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO
-A66E ; Lo # CYRILLIC LETTER MULTIOCULAR O
-A6A0..A6E5 ; Lo # [70] BAMUM LETTER A..BAMUM LETTER KI
-A78F ; Lo # LATIN LETTER SINOLOGICAL DOT
-A7F7 ; Lo # LATIN EPIGRAPHIC LETTER SIDEWAYS I
-A7FB..A801 ; Lo # [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I
-A803..A805 ; Lo # [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O
-A807..A80A ; Lo # [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO
-A80C..A822 ; Lo # [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO
-A840..A873 ; Lo # [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU
-A882..A8B3 ; Lo # [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA
-A8F2..A8F7 ; Lo # [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA
-A8FB ; Lo # DEVANAGARI HEADSTROKE
-A8FD ; Lo # DEVANAGARI JAIN OM
-A90A..A925 ; Lo # [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO
-A930..A946 ; Lo # [23] REJANG LETTER KA..REJANG LETTER A
-A960..A97C ; Lo # [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH
-A984..A9B2 ; Lo # [47] JAVANESE LETTER A..JAVANESE LETTER HA
-A9E0..A9E4 ; Lo # [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA
-A9E7..A9EF ; Lo # [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA
-A9FA..A9FE ; Lo # [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA
-AA00..AA28 ; Lo # [41] CHAM LETTER A..CHAM LETTER HA
-AA40..AA42 ; Lo # [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG
-AA44..AA4B ; Lo # [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS
-AA60..AA6F ; Lo # [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA
-AA71..AA76 ; Lo # [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM
-AA7A ; Lo # MYANMAR LETTER AITON RA
-AA7E..AAAF ; Lo # [50] MYANMAR LETTER SHWE PALAUNG CHA..TAI VIET LETTER HIGH O
-AAB1 ; Lo # TAI VIET VOWEL AA
-AAB5..AAB6 ; Lo # [2] TAI VIET VOWEL E..TAI VIET VOWEL O
-AAB9..AABD ; Lo # [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN
-AAC0 ; Lo # TAI VIET TONE MAI NUENG
-AAC2 ; Lo # TAI VIET TONE MAI SONG
-AADB..AADC ; Lo # [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG
-AAE0..AAEA ; Lo # [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA
-AAF2 ; Lo # MEETEI MAYEK ANJI
-AB01..AB06 ; Lo # [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO
-AB09..AB0E ; Lo # [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO
-AB11..AB16 ; Lo # [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO
-AB20..AB26 ; Lo # [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO
-AB28..AB2E ; Lo # [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO
-ABC0..ABE2 ; Lo # [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM
-AC00..D7A3 ; Lo # [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
-D7B0..D7C6 ; Lo # [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E
-D7CB..D7FB ; Lo # [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH
-F900..FA6D ; Lo # [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
-FA70..FAD9 ; Lo # [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
-FB1D ; Lo # HEBREW LETTER YOD WITH HIRIQ
-FB1F..FB28 ; Lo # [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
-FB2A..FB36 ; Lo # [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
-FB38..FB3C ; Lo # [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
-FB3E ; Lo # HEBREW LETTER MEM WITH DAGESH
-FB40..FB41 ; Lo # [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
-FB43..FB44 ; Lo # [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
-FB46..FBB1 ; Lo # [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
-FBD3..FD3D ; Lo # [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
-FD50..FD8F ; Lo # [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
-FD92..FDC7 ; Lo # [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
-FDF0..FDFB ; Lo # [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
-FE70..FE74 ; Lo # [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM
-FE76..FEFC ; Lo # [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
-FF66..FF6F ; Lo # [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
-FF71..FF9D ; Lo # [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
-FFA0..FFBE ; Lo # [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
-FFC2..FFC7 ; Lo # [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
-FFCA..FFCF ; Lo # [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
-FFD2..FFD7 ; Lo # [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
-FFDA..FFDC ; Lo # [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
-10000..1000B ; Lo # [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE
-1000D..10026 ; Lo # [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO
-10028..1003A ; Lo # [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO
-1003C..1003D ; Lo # [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE
-1003F..1004D ; Lo # [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO
-10050..1005D ; Lo # [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089
-10080..100FA ; Lo # [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305
-10280..1029C ; Lo # [29] LYCIAN LETTER A..LYCIAN LETTER X
-102A0..102D0 ; Lo # [49] CARIAN LETTER A..CARIAN LETTER UUU3
-10300..1031F ; Lo # [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS
-10330..10340 ; Lo # [17] GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA
-10342..10349 ; Lo # [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL
-10350..10375 ; Lo # [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA
-10380..1039D ; Lo # [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU
-103A0..103C3 ; Lo # [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA
-103C8..103CF ; Lo # [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH
-10450..1049D ; Lo # [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
-10500..10527 ; Lo # [40] ELBASAN LETTER A..ELBASAN LETTER KHE
-10530..10563 ; Lo # [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
-10600..10736 ; Lo # [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
-10740..10755 ; Lo # [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
-10760..10767 ; Lo # [8] LINEAR A SIGN A800..LINEAR A SIGN A807
-10800..10805 ; Lo # [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
-10808 ; Lo # CYPRIOT SYLLABLE JO
-1080A..10835 ; Lo # [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
-10837..10838 ; Lo # [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE
-1083C ; Lo # CYPRIOT SYLLABLE ZA
-1083F..10855 ; Lo # [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW
-10860..10876 ; Lo # [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW
-10880..1089E ; Lo # [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW
-108E0..108F2 ; Lo # [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH
-108F4..108F5 ; Lo # [2] HATRAN LETTER SHIN..HATRAN LETTER TAW
-10900..10915 ; Lo # [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU
-10920..10939 ; Lo # [26] LYDIAN LETTER A..LYDIAN LETTER C
-10980..109B7 ; Lo # [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA
-109BE..109BF ; Lo # [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN
-10A00 ; Lo # KHAROSHTHI LETTER A
-10A10..10A13 ; Lo # [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA
-10A15..10A17 ; Lo # [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
-10A19..10A33 ; Lo # [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA
-10A60..10A7C ; Lo # [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH
-10A80..10A9C ; Lo # [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH
-10AC0..10AC7 ; Lo # [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW
-10AC9..10AE4 ; Lo # [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW
-10B00..10B35 ; Lo # [54] AVESTAN LETTER A..AVESTAN LETTER HE
-10B40..10B55 ; Lo # [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW
-10B60..10B72 ; Lo # [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW
-10B80..10B91 ; Lo # [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW
-10C00..10C48 ; Lo # [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH
-11003..11037 ; Lo # [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA
-11083..110AF ; Lo # [45] KAITHI LETTER A..KAITHI LETTER HA
-110D0..110E8 ; Lo # [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE
-11103..11126 ; Lo # [36] CHAKMA LETTER AA..CHAKMA LETTER HAA
-11150..11172 ; Lo # [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA
-11176 ; Lo # MAHAJANI LIGATURE SHRI
-11183..111B2 ; Lo # [48] SHARADA LETTER A..SHARADA LETTER HA
-111C1..111C4 ; Lo # [4] SHARADA SIGN AVAGRAHA..SHARADA OM
-111DA ; Lo # SHARADA EKAM
-111DC ; Lo # SHARADA HEADSTROKE
-11200..11211 ; Lo # [18] KHOJKI LETTER A..KHOJKI LETTER JJA
-11213..1122B ; Lo # [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA
-11280..11286 ; Lo # [7] MULTANI LETTER A..MULTANI LETTER GA
-11288 ; Lo # MULTANI LETTER GHA
-1128A..1128D ; Lo # [4] MULTANI LETTER CA..MULTANI LETTER JJA
-1128F..1129D ; Lo # [15] MULTANI LETTER NYA..MULTANI LETTER BA
-1129F..112A8 ; Lo # [10] MULTANI LETTER BHA..MULTANI LETTER RHA
-112B0..112DE ; Lo # [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA
-11305..1130C ; Lo # [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L
-1130F..11310 ; Lo # [2] GRANTHA LETTER EE..GRANTHA LETTER AI
-11313..11328 ; Lo # [22] GRANTHA LETTER OO..GRANTHA LETTER NA
-1132A..11330 ; Lo # [7] GRANTHA LETTER PA..GRANTHA LETTER RA
-11332..11333 ; Lo # [2] GRANTHA LETTER LA..GRANTHA LETTER LLA
-11335..11339 ; Lo # [5] GRANTHA LETTER VA..GRANTHA LETTER HA
-1133D ; Lo # GRANTHA SIGN AVAGRAHA
-11350 ; Lo # GRANTHA OM
-1135D..11361 ; Lo # [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
-11400..11434 ; Lo # [53] NEWA LETTER A..NEWA LETTER HA
-11447..1144A ; Lo # [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
-11480..114AF ; Lo # [48] TIRHUTA ANJI..TIRHUTA LETTER HA
-114C4..114C5 ; Lo # [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG
-114C7 ; Lo # TIRHUTA OM
-11580..115AE ; Lo # [47] SIDDHAM LETTER A..SIDDHAM LETTER HA
-115D8..115DB ; Lo # [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U
-11600..1162F ; Lo # [48] MODI LETTER A..MODI LETTER LLA
-11644 ; Lo # MODI SIGN HUVA
-11680..116AA ; Lo # [43] TAKRI LETTER A..TAKRI LETTER RRA
-11700..11719 ; Lo # [26] AHOM LETTER KA..AHOM LETTER JHA
-118FF ; Lo # WARANG CITI OM
-11AC0..11AF8 ; Lo # [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
-11C00..11C08 ; Lo # [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
-11C0A..11C2E ; Lo # [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
-11C40 ; Lo # BHAIKSUKI SIGN AVAGRAHA
-11C72..11C8F ; Lo # [30] MARCHEN LETTER KA..MARCHEN LETTER A
-12000..12399 ; Lo # [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
-12480..12543 ; Lo # [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
-13000..1342E ; Lo # [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032
-14400..14646 ; Lo # [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
-16800..16A38 ; Lo # [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
-16A40..16A5E ; Lo # [31] MRO LETTER TA..MRO LETTER TEK
-16AD0..16AED ; Lo # [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I
-16B00..16B2F ; Lo # [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU
-16B63..16B77 ; Lo # [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
-16B7D..16B8F ; Lo # [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
-16F00..16F44 ; Lo # [69] MIAO LETTER PA..MIAO LETTER HHA
-16F50 ; Lo # MIAO LETTER NASALIZATION
-17000..187EC ; Lo # [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
-18800..18AF2 ; Lo # [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
-1B000..1B001 ; Lo # [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE
-1BC00..1BC6A ; Lo # [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
-1BC70..1BC7C ; Lo # [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
-1BC80..1BC88 ; Lo # [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL
-1BC90..1BC99 ; Lo # [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW
-1E800..1E8C4 ; Lo # [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
-1EE00..1EE03 ; Lo # [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
-1EE05..1EE1F ; Lo # [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
-1EE21..1EE22 ; Lo # [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
-1EE24 ; Lo # ARABIC MATHEMATICAL INITIAL HEH
-1EE27 ; Lo # ARABIC MATHEMATICAL INITIAL HAH
-1EE29..1EE32 ; Lo # [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF
-1EE34..1EE37 ; Lo # [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH
-1EE39 ; Lo # ARABIC MATHEMATICAL INITIAL DAD
-1EE3B ; Lo # ARABIC MATHEMATICAL INITIAL GHAIN
-1EE42 ; Lo # ARABIC MATHEMATICAL TAILED JEEM
-1EE47 ; Lo # ARABIC MATHEMATICAL TAILED HAH
-1EE49 ; Lo # ARABIC MATHEMATICAL TAILED YEH
-1EE4B ; Lo # ARABIC MATHEMATICAL TAILED LAM
-1EE4D..1EE4F ; Lo # [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN
-1EE51..1EE52 ; Lo # [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF
-1EE54 ; Lo # ARABIC MATHEMATICAL TAILED SHEEN
-1EE57 ; Lo # ARABIC MATHEMATICAL TAILED KHAH
-1EE59 ; Lo # ARABIC MATHEMATICAL TAILED DAD
-1EE5B ; Lo # ARABIC MATHEMATICAL TAILED GHAIN
-1EE5D ; Lo # ARABIC MATHEMATICAL TAILED DOTLESS NOON
-1EE5F ; Lo # ARABIC MATHEMATICAL TAILED DOTLESS QAF
-1EE61..1EE62 ; Lo # [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM
-1EE64 ; Lo # ARABIC MATHEMATICAL STRETCHED HEH
-1EE67..1EE6A ; Lo # [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF
-1EE6C..1EE72 ; Lo # [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF
-1EE74..1EE77 ; Lo # [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH
-1EE79..1EE7C ; Lo # [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
-1EE7E ; Lo # ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
-1EE80..1EE89 ; Lo # [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH
-1EE8B..1EE9B ; Lo # [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN
-1EEA1..1EEA3 ; Lo # [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
-1EEA5..1EEA9 ; Lo # [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
-1EEAB..1EEBB ; Lo # [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
-20000..2A6D6 ; Lo # [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
-2A700..2B734 ; Lo # [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
-2B740..2B81D ; Lo # [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
-2B820..2CEA1 ; Lo # [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
-2F800..2FA1D ; Lo # [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
-
-# Total code points: 112721
-
-# ================================================
-
-# General_Category=Nonspacing_Mark
-
-0300..036F ; Mn # [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
-0483..0487 ; Mn # [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE
-0591..05BD ; Mn # [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG
-05BF ; Mn # HEBREW POINT RAFE
-05C1..05C2 ; Mn # [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
-05C4..05C5 ; Mn # [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
-05C7 ; Mn # HEBREW POINT QAMATS QATAN
-0610..061A ; Mn # [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
-064B..065F ; Mn # [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW
-0670 ; Mn # ARABIC LETTER SUPERSCRIPT ALEF
-06D6..06DC ; Mn # [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
-06DF..06E4 ; Mn # [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
-06E7..06E8 ; Mn # [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
-06EA..06ED ; Mn # [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
-0711 ; Mn # SYRIAC LETTER SUPERSCRIPT ALAPH
-0730..074A ; Mn # [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
-07A6..07B0 ; Mn # [11] THAANA ABAFILI..THAANA SUKUN
-07EB..07F3 ; Mn # [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
-0816..0819 ; Mn # [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH
-081B..0823 ; Mn # [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A
-0825..0827 ; Mn # [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
-0829..082D ; Mn # [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
-0859..085B ; Mn # [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
-08D4..08E1 ; Mn # [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
-08E3..0902 ; Mn # [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
-093A ; Mn # DEVANAGARI VOWEL SIGN OE
-093C ; Mn # DEVANAGARI SIGN NUKTA
-0941..0948 ; Mn # [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
-094D ; Mn # DEVANAGARI SIGN VIRAMA
-0951..0957 ; Mn # [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE
-0962..0963 ; Mn # [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
-0981 ; Mn # BENGALI SIGN CANDRABINDU
-09BC ; Mn # BENGALI SIGN NUKTA
-09C1..09C4 ; Mn # [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
-09CD ; Mn # BENGALI SIGN VIRAMA
-09E2..09E3 ; Mn # [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
-0A01..0A02 ; Mn # [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
-0A3C ; Mn # GURMUKHI SIGN NUKTA
-0A41..0A42 ; Mn # [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
-0A47..0A48 ; Mn # [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
-0A4B..0A4D ; Mn # [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
-0A51 ; Mn # GURMUKHI SIGN UDAAT
-0A70..0A71 ; Mn # [2] GURMUKHI TIPPI..GURMUKHI ADDAK
-0A75 ; Mn # GURMUKHI SIGN YAKASH
-0A81..0A82 ; Mn # [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
-0ABC ; Mn # GUJARATI SIGN NUKTA
-0AC1..0AC5 ; Mn # [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
-0AC7..0AC8 ; Mn # [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
-0ACD ; Mn # GUJARATI SIGN VIRAMA
-0AE2..0AE3 ; Mn # [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
-0B01 ; Mn # ORIYA SIGN CANDRABINDU
-0B3C ; Mn # ORIYA SIGN NUKTA
-0B3F ; Mn # ORIYA VOWEL SIGN I
-0B41..0B44 ; Mn # [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR
-0B4D ; Mn # ORIYA SIGN VIRAMA
-0B56 ; Mn # ORIYA AI LENGTH MARK
-0B62..0B63 ; Mn # [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
-0B82 ; Mn # TAMIL SIGN ANUSVARA
-0BC0 ; Mn # TAMIL VOWEL SIGN II
-0BCD ; Mn # TAMIL SIGN VIRAMA
-0C00 ; Mn # TELUGU SIGN COMBINING CANDRABINDU ABOVE
-0C3E..0C40 ; Mn # [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
-0C46..0C48 ; Mn # [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
-0C4A..0C4D ; Mn # [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
-0C55..0C56 ; Mn # [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
-0C62..0C63 ; Mn # [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
-0C81 ; Mn # KANNADA SIGN CANDRABINDU
-0CBC ; Mn # KANNADA SIGN NUKTA
-0CBF ; Mn # KANNADA VOWEL SIGN I
-0CC6 ; Mn # KANNADA VOWEL SIGN E
-0CCC..0CCD ; Mn # [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
-0CE2..0CE3 ; Mn # [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
-0D01 ; Mn # MALAYALAM SIGN CANDRABINDU
-0D41..0D44 ; Mn # [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
-0D4D ; Mn # MALAYALAM SIGN VIRAMA
-0D62..0D63 ; Mn # [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
-0DCA ; Mn # SINHALA SIGN AL-LAKUNA
-0DD2..0DD4 ; Mn # [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
-0DD6 ; Mn # SINHALA VOWEL SIGN DIGA PAA-PILLA
-0E31 ; Mn # THAI CHARACTER MAI HAN-AKAT
-0E34..0E3A ; Mn # [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
-0E47..0E4E ; Mn # [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
-0EB1 ; Mn # LAO VOWEL SIGN MAI KAN
-0EB4..0EB9 ; Mn # [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU
-0EBB..0EBC ; Mn # [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO
-0EC8..0ECD ; Mn # [6] LAO TONE MAI EK..LAO NIGGAHITA
-0F18..0F19 ; Mn # [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
-0F35 ; Mn # TIBETAN MARK NGAS BZUNG NYI ZLA
-0F37 ; Mn # TIBETAN MARK NGAS BZUNG SGOR RTAGS
-0F39 ; Mn # TIBETAN MARK TSA -PHRU
-0F71..0F7E ; Mn # [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
-0F80..0F84 ; Mn # [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
-0F86..0F87 ; Mn # [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
-0F8D..0F97 ; Mn # [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA
-0F99..0FBC ; Mn # [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
-0FC6 ; Mn # TIBETAN SYMBOL PADMA GDAN
-102D..1030 ; Mn # [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
-1032..1037 ; Mn # [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW
-1039..103A ; Mn # [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT
-103D..103E ; Mn # [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA
-1058..1059 ; Mn # [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
-105E..1060 ; Mn # [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA
-1071..1074 ; Mn # [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE
-1082 ; Mn # MYANMAR CONSONANT SIGN SHAN MEDIAL WA
-1085..1086 ; Mn # [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y
-108D ; Mn # MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
-109D ; Mn # MYANMAR VOWEL SIGN AITON AI
-135D..135F ; Mn # [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
-1712..1714 ; Mn # [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
-1732..1734 ; Mn # [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD
-1752..1753 ; Mn # [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
-1772..1773 ; Mn # [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
-17B4..17B5 ; Mn # [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
-17B7..17BD ; Mn # [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
-17C6 ; Mn # KHMER SIGN NIKAHIT
-17C9..17D3 ; Mn # [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
-17DD ; Mn # KHMER SIGN ATTHACAN
-180B..180D ; Mn # [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
-1885..1886 ; Mn # [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
-18A9 ; Mn # MONGOLIAN LETTER ALI GALI DAGALGA
-1920..1922 ; Mn # [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
-1927..1928 ; Mn # [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
-1932 ; Mn # LIMBU SMALL LETTER ANUSVARA
-1939..193B ; Mn # [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
-1A17..1A18 ; Mn # [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
-1A1B ; Mn # BUGINESE VOWEL SIGN AE
-1A56 ; Mn # TAI THAM CONSONANT SIGN MEDIAL LA
-1A58..1A5E ; Mn # [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA
-1A60 ; Mn # TAI THAM SIGN SAKOT
-1A62 ; Mn # TAI THAM VOWEL SIGN MAI SAT
-1A65..1A6C ; Mn # [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW
-1A73..1A7C ; Mn # [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN
-1A7F ; Mn # TAI THAM COMBINING CRYPTOGRAMMIC DOT
-1AB0..1ABD ; Mn # [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
-1B00..1B03 ; Mn # [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
-1B34 ; Mn # BALINESE SIGN REREKAN
-1B36..1B3A ; Mn # [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
-1B3C ; Mn # BALINESE VOWEL SIGN LA LENGA
-1B42 ; Mn # BALINESE VOWEL SIGN PEPET
-1B6B..1B73 ; Mn # [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
-1B80..1B81 ; Mn # [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
-1BA2..1BA5 ; Mn # [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU
-1BA8..1BA9 ; Mn # [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
-1BAB..1BAD ; Mn # [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA
-1BE6 ; Mn # BATAK SIGN TOMPI
-1BE8..1BE9 ; Mn # [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE
-1BED ; Mn # BATAK VOWEL SIGN KARO O
-1BEF..1BF1 ; Mn # [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H
-1C2C..1C33 ; Mn # [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
-1C36..1C37 ; Mn # [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA
-1CD0..1CD2 ; Mn # [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
-1CD4..1CE0 ; Mn # [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
-1CE2..1CE8 ; Mn # [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
-1CED ; Mn # VEDIC SIGN TIRYAK
-1CF4 ; Mn # VEDIC TONE CANDRA ABOVE
-1CF8..1CF9 ; Mn # [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
-1DC0..1DF5 ; Mn # [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE
-1DFB..1DFF ; Mn # [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
-20D0..20DC ; Mn # [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
-20E1 ; Mn # COMBINING LEFT RIGHT ARROW ABOVE
-20E5..20F0 ; Mn # [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE
-2CEF..2CF1 ; Mn # [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS
-2D7F ; Mn # TIFINAGH CONSONANT JOINER
-2DE0..2DFF ; Mn # [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
-302A..302D ; Mn # [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK
-3099..309A ; Mn # [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-A66F ; Mn # COMBINING CYRILLIC VZMET
-A674..A67D ; Mn # [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK
-A69E..A69F ; Mn # [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E
-A6F0..A6F1 ; Mn # [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS
-A802 ; Mn # SYLOTI NAGRI SIGN DVISVARA
-A806 ; Mn # SYLOTI NAGRI SIGN HASANTA
-A80B ; Mn # SYLOTI NAGRI SIGN ANUSVARA
-A825..A826 ; Mn # [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
-A8C4..A8C5 ; Mn # [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
-A8E0..A8F1 ; Mn # [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
-A926..A92D ; Mn # [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
-A947..A951 ; Mn # [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
-A980..A982 ; Mn # [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR
-A9B3 ; Mn # JAVANESE SIGN CECAK TELU
-A9B6..A9B9 ; Mn # [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT
-A9BC ; Mn # JAVANESE VOWEL SIGN PEPET
-A9E5 ; Mn # MYANMAR SIGN SHAN SAW
-AA29..AA2E ; Mn # [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
-AA31..AA32 ; Mn # [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
-AA35..AA36 ; Mn # [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA
-AA43 ; Mn # CHAM CONSONANT SIGN FINAL NG
-AA4C ; Mn # CHAM CONSONANT SIGN FINAL M
-AA7C ; Mn # MYANMAR SIGN TAI LAING TONE-2
-AAB0 ; Mn # TAI VIET MAI KANG
-AAB2..AAB4 ; Mn # [3] TAI VIET VOWEL I..TAI VIET VOWEL U
-AAB7..AAB8 ; Mn # [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA
-AABE..AABF ; Mn # [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK
-AAC1 ; Mn # TAI VIET TONE MAI THO
-AAEC..AAED ; Mn # [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI
-AAF6 ; Mn # MEETEI MAYEK VIRAMA
-ABE5 ; Mn # MEETEI MAYEK VOWEL SIGN ANAP
-ABE8 ; Mn # MEETEI MAYEK VOWEL SIGN UNAP
-ABED ; Mn # MEETEI MAYEK APUN IYEK
-FB1E ; Mn # HEBREW POINT JUDEO-SPANISH VARIKA
-FE00..FE0F ; Mn # [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
-FE20..FE2F ; Mn # [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF
-101FD ; Mn # PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
-102E0 ; Mn # COPTIC EPACT THOUSANDS MARK
-10376..1037A ; Mn # [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII
-10A01..10A03 ; Mn # [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
-10A05..10A06 ; Mn # [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
-10A0C..10A0F ; Mn # [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
-10A38..10A3A ; Mn # [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
-10A3F ; Mn # KHAROSHTHI VIRAMA
-10AE5..10AE6 ; Mn # [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
-11001 ; Mn # BRAHMI SIGN ANUSVARA
-11038..11046 ; Mn # [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA
-1107F..11081 ; Mn # [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA
-110B3..110B6 ; Mn # [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI
-110B9..110BA ; Mn # [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA
-11100..11102 ; Mn # [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA
-11127..1112B ; Mn # [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU
-1112D..11134 ; Mn # [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA
-11173 ; Mn # MAHAJANI SIGN NUKTA
-11180..11181 ; Mn # [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA
-111B6..111BE ; Mn # [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
-111CA..111CC ; Mn # [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK
-1122F..11231 ; Mn # [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
-11234 ; Mn # KHOJKI SIGN ANUSVARA
-11236..11237 ; Mn # [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
-1123E ; Mn # KHOJKI SIGN SUKUN
-112DF ; Mn # KHUDAWADI SIGN ANUSVARA
-112E3..112EA ; Mn # [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
-11300..11301 ; Mn # [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
-1133C ; Mn # GRANTHA SIGN NUKTA
-11340 ; Mn # GRANTHA VOWEL SIGN II
-11366..1136C ; Mn # [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
-11370..11374 ; Mn # [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
-11438..1143F ; Mn # [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
-11442..11444 ; Mn # [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
-11446 ; Mn # NEWA SIGN NUKTA
-114B3..114B8 ; Mn # [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
-114BA ; Mn # TIRHUTA VOWEL SIGN SHORT E
-114BF..114C0 ; Mn # [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
-114C2..114C3 ; Mn # [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA
-115B2..115B5 ; Mn # [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR
-115BC..115BD ; Mn # [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA
-115BF..115C0 ; Mn # [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA
-115DC..115DD ; Mn # [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU
-11633..1163A ; Mn # [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI
-1163D ; Mn # MODI SIGN ANUSVARA
-1163F..11640 ; Mn # [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA
-116AB ; Mn # TAKRI SIGN ANUSVARA
-116AD ; Mn # TAKRI VOWEL SIGN AA
-116B0..116B5 ; Mn # [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
-116B7 ; Mn # TAKRI SIGN NUKTA
-1171D..1171F ; Mn # [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
-11722..11725 ; Mn # [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
-11727..1172B ; Mn # [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
-11C30..11C36 ; Mn # [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
-11C38..11C3D ; Mn # [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
-11C3F ; Mn # BHAIKSUKI SIGN VIRAMA
-11C92..11CA7 ; Mn # [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
-11CAA..11CB0 ; Mn # [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
-11CB2..11CB3 ; Mn # [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
-11CB5..11CB6 ; Mn # [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
-16AF0..16AF4 ; Mn # [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
-16B30..16B36 ; Mn # [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
-16F8F..16F92 ; Mn # [4] MIAO TONE RIGHT..MIAO TONE BELOW
-1BC9D..1BC9E ; Mn # [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
-1D167..1D169 ; Mn # [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
-1D17B..1D182 ; Mn # [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
-1D185..1D18B ; Mn # [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
-1D1AA..1D1AD ; Mn # [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
-1D242..1D244 ; Mn # [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
-1DA00..1DA36 ; Mn # [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN
-1DA3B..1DA6C ; Mn # [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT
-1DA75 ; Mn # SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS
-1DA84 ; Mn # SIGNWRITING LOCATION HEAD NECK
-1DA9B..1DA9F ; Mn # [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
-1DAA1..1DAAF ; Mn # [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
-1E000..1E006 ; Mn # [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
-1E008..1E018 ; Mn # [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
-1E01B..1E021 ; Mn # [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
-1E023..1E024 ; Mn # [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
-1E026..1E02A ; Mn # [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
-1E8D0..1E8D6 ; Mn # [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
-1E944..1E94A ; Mn # [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
-E0100..E01EF ; Mn # [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
-
-# Total code points: 1690
-
-# ================================================
-
-# General_Category=Enclosing_Mark
-
-0488..0489 ; Me # [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
-1ABE ; Me # COMBINING PARENTHESES OVERLAY
-20DD..20E0 ; Me # [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
-20E2..20E4 ; Me # [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
-A670..A672 ; Me # [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN
-
-# Total code points: 13
-
-# ================================================
-
-# General_Category=Spacing_Mark
-
-0903 ; Mc # DEVANAGARI SIGN VISARGA
-093B ; Mc # DEVANAGARI VOWEL SIGN OOE
-093E..0940 ; Mc # [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
-0949..094C ; Mc # [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
-094E..094F ; Mc # [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW
-0982..0983 ; Mc # [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
-09BE..09C0 ; Mc # [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II
-09C7..09C8 ; Mc # [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
-09CB..09CC ; Mc # [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
-09D7 ; Mc # BENGALI AU LENGTH MARK
-0A03 ; Mc # GURMUKHI SIGN VISARGA
-0A3E..0A40 ; Mc # [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
-0A83 ; Mc # GUJARATI SIGN VISARGA
-0ABE..0AC0 ; Mc # [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
-0AC9 ; Mc # GUJARATI VOWEL SIGN CANDRA O
-0ACB..0ACC ; Mc # [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
-0B02..0B03 ; Mc # [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
-0B3E ; Mc # ORIYA VOWEL SIGN AA
-0B40 ; Mc # ORIYA VOWEL SIGN II
-0B47..0B48 ; Mc # [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
-0B4B..0B4C ; Mc # [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
-0B57 ; Mc # ORIYA AU LENGTH MARK
-0BBE..0BBF ; Mc # [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I
-0BC1..0BC2 ; Mc # [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
-0BC6..0BC8 ; Mc # [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
-0BCA..0BCC ; Mc # [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
-0BD7 ; Mc # TAMIL AU LENGTH MARK
-0C01..0C03 ; Mc # [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
-0C41..0C44 ; Mc # [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
-0C82..0C83 ; Mc # [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
-0CBE ; Mc # KANNADA VOWEL SIGN AA
-0CC0..0CC4 ; Mc # [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR
-0CC7..0CC8 ; Mc # [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
-0CCA..0CCB ; Mc # [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
-0CD5..0CD6 ; Mc # [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
-0D02..0D03 ; Mc # [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
-0D3E..0D40 ; Mc # [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II
-0D46..0D48 ; Mc # [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
-0D4A..0D4C ; Mc # [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
-0D57 ; Mc # MALAYALAM AU LENGTH MARK
-0D82..0D83 ; Mc # [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
-0DCF..0DD1 ; Mc # [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
-0DD8..0DDF ; Mc # [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA
-0DF2..0DF3 ; Mc # [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
-0F3E..0F3F ; Mc # [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES
-0F7F ; Mc # TIBETAN SIGN RNAM BCAD
-102B..102C ; Mc # [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA
-1031 ; Mc # MYANMAR VOWEL SIGN E
-1038 ; Mc # MYANMAR SIGN VISARGA
-103B..103C ; Mc # [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA
-1056..1057 ; Mc # [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
-1062..1064 ; Mc # [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO
-1067..106D ; Mc # [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5
-1083..1084 ; Mc # [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E
-1087..108C ; Mc # [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3
-108F ; Mc # MYANMAR SIGN RUMAI PALAUNG TONE-5
-109A..109C ; Mc # [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A
-17B6 ; Mc # KHMER VOWEL SIGN AA
-17BE..17C5 ; Mc # [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
-17C7..17C8 ; Mc # [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
-1923..1926 ; Mc # [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
-1929..192B ; Mc # [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
-1930..1931 ; Mc # [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
-1933..1938 ; Mc # [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
-1A19..1A1A ; Mc # [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O
-1A55 ; Mc # TAI THAM CONSONANT SIGN MEDIAL RA
-1A57 ; Mc # TAI THAM CONSONANT SIGN LA TANG LAI
-1A61 ; Mc # TAI THAM VOWEL SIGN A
-1A63..1A64 ; Mc # [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA
-1A6D..1A72 ; Mc # [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI
-1B04 ; Mc # BALINESE SIGN BISAH
-1B35 ; Mc # BALINESE VOWEL SIGN TEDUNG
-1B3B ; Mc # BALINESE VOWEL SIGN RA REPA TEDUNG
-1B3D..1B41 ; Mc # [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
-1B43..1B44 ; Mc # [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
-1B82 ; Mc # SUNDANESE SIGN PANGWISAD
-1BA1 ; Mc # SUNDANESE CONSONANT SIGN PAMINGKAL
-1BA6..1BA7 ; Mc # [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG
-1BAA ; Mc # SUNDANESE SIGN PAMAAEH
-1BE7 ; Mc # BATAK VOWEL SIGN E
-1BEA..1BEC ; Mc # [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O
-1BEE ; Mc # BATAK VOWEL SIGN U
-1BF2..1BF3 ; Mc # [2] BATAK PANGOLAT..BATAK PANONGONAN
-1C24..1C2B ; Mc # [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU
-1C34..1C35 ; Mc # [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG
-1CE1 ; Mc # VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
-1CF2..1CF3 ; Mc # [2] VEDIC SIGN ARDHAVISARGA..VEDIC SIGN ROTATED ARDHAVISARGA
-302E..302F ; Mc # [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK
-A823..A824 ; Mc # [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
-A827 ; Mc # SYLOTI NAGRI VOWEL SIGN OO
-A880..A881 ; Mc # [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
-A8B4..A8C3 ; Mc # [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
-A952..A953 ; Mc # [2] REJANG CONSONANT SIGN H..REJANG VIRAMA
-A983 ; Mc # JAVANESE SIGN WIGNYAN
-A9B4..A9B5 ; Mc # [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG
-A9BA..A9BB ; Mc # [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE
-A9BD..A9C0 ; Mc # [4] JAVANESE CONSONANT SIGN KERET..JAVANESE PANGKON
-AA2F..AA30 ; Mc # [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI
-AA33..AA34 ; Mc # [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA
-AA4D ; Mc # CHAM CONSONANT SIGN FINAL H
-AA7B ; Mc # MYANMAR SIGN PAO KAREN TONE
-AA7D ; Mc # MYANMAR SIGN TAI LAING TONE-5
-AAEB ; Mc # MEETEI MAYEK VOWEL SIGN II
-AAEE..AAEF ; Mc # [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU
-AAF5 ; Mc # MEETEI MAYEK VOWEL SIGN VISARGA
-ABE3..ABE4 ; Mc # [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP
-ABE6..ABE7 ; Mc # [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP
-ABE9..ABEA ; Mc # [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG
-ABEC ; Mc # MEETEI MAYEK LUM IYEK
-11000 ; Mc # BRAHMI SIGN CANDRABINDU
-11002 ; Mc # BRAHMI SIGN VISARGA
-11082 ; Mc # KAITHI SIGN VISARGA
-110B0..110B2 ; Mc # [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II
-110B7..110B8 ; Mc # [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU
-1112C ; Mc # CHAKMA VOWEL SIGN E
-11182 ; Mc # SHARADA SIGN VISARGA
-111B3..111B5 ; Mc # [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II
-111BF..111C0 ; Mc # [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA
-1122C..1122E ; Mc # [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II
-11232..11233 ; Mc # [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU
-11235 ; Mc # KHOJKI SIGN VIRAMA
-112E0..112E2 ; Mc # [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II
-11302..11303 ; Mc # [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA
-1133E..1133F ; Mc # [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I
-11341..11344 ; Mc # [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR
-11347..11348 ; Mc # [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI
-1134B..1134D ; Mc # [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA
-11357 ; Mc # GRANTHA AU LENGTH MARK
-11362..11363 ; Mc # [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
-11435..11437 ; Mc # [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
-11440..11441 ; Mc # [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
-11445 ; Mc # NEWA SIGN VISARGA
-114B0..114B2 ; Mc # [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
-114B9 ; Mc # TIRHUTA VOWEL SIGN E
-114BB..114BE ; Mc # [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU
-114C1 ; Mc # TIRHUTA SIGN VISARGA
-115AF..115B1 ; Mc # [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II
-115B8..115BB ; Mc # [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU
-115BE ; Mc # SIDDHAM SIGN VISARGA
-11630..11632 ; Mc # [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II
-1163B..1163C ; Mc # [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU
-1163E ; Mc # MODI SIGN VISARGA
-116AC ; Mc # TAKRI SIGN VISARGA
-116AE..116AF ; Mc # [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II
-116B6 ; Mc # TAKRI SIGN VIRAMA
-11720..11721 ; Mc # [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
-11726 ; Mc # AHOM VOWEL SIGN E
-11C2F ; Mc # BHAIKSUKI VOWEL SIGN AA
-11C3E ; Mc # BHAIKSUKI SIGN VISARGA
-11CA9 ; Mc # MARCHEN SUBJOINED LETTER YA
-11CB1 ; Mc # MARCHEN VOWEL SIGN I
-11CB4 ; Mc # MARCHEN VOWEL SIGN O
-16F51..16F7E ; Mc # [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
-1D165..1D166 ; Mc # [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
-1D16D..1D172 ; Mc # [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
-
-# Total code points: 394
-
-# ================================================
-
-# General_Category=Decimal_Number
-
-0030..0039 ; Nd # [10] DIGIT ZERO..DIGIT NINE
-0660..0669 ; Nd # [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
-06F0..06F9 ; Nd # [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE
-07C0..07C9 ; Nd # [10] NKO DIGIT ZERO..NKO DIGIT NINE
-0966..096F ; Nd # [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
-09E6..09EF ; Nd # [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE
-0A66..0A6F ; Nd # [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE
-0AE6..0AEF ; Nd # [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
-0B66..0B6F ; Nd # [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE
-0BE6..0BEF ; Nd # [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
-0C66..0C6F ; Nd # [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
-0CE6..0CEF ; Nd # [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
-0D66..0D6F ; Nd # [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
-0DE6..0DEF ; Nd # [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE
-0E50..0E59 ; Nd # [10] THAI DIGIT ZERO..THAI DIGIT NINE
-0ED0..0ED9 ; Nd # [10] LAO DIGIT ZERO..LAO DIGIT NINE
-0F20..0F29 ; Nd # [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE
-1040..1049 ; Nd # [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
-1090..1099 ; Nd # [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE
-17E0..17E9 ; Nd # [10] KHMER DIGIT ZERO..KHMER DIGIT NINE
-1810..1819 ; Nd # [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
-1946..194F ; Nd # [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE
-19D0..19D9 ; Nd # [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
-1A80..1A89 ; Nd # [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE
-1A90..1A99 ; Nd # [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE
-1B50..1B59 ; Nd # [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
-1BB0..1BB9 ; Nd # [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE
-1C40..1C49 ; Nd # [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE
-1C50..1C59 ; Nd # [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE
-A620..A629 ; Nd # [10] VAI DIGIT ZERO..VAI DIGIT NINE
-A8D0..A8D9 ; Nd # [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE
-A900..A909 ; Nd # [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE
-A9D0..A9D9 ; Nd # [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE
-A9F0..A9F9 ; Nd # [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE
-AA50..AA59 ; Nd # [10] CHAM DIGIT ZERO..CHAM DIGIT NINE
-ABF0..ABF9 ; Nd # [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
-FF10..FF19 ; Nd # [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
-104A0..104A9 ; Nd # [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
-11066..1106F ; Nd # [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE
-110F0..110F9 ; Nd # [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE
-11136..1113F ; Nd # [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE
-111D0..111D9 ; Nd # [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE
-112F0..112F9 ; Nd # [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE
-11450..11459 ; Nd # [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
-114D0..114D9 ; Nd # [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE
-11650..11659 ; Nd # [10] MODI DIGIT ZERO..MODI DIGIT NINE
-116C0..116C9 ; Nd # [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
-11730..11739 ; Nd # [10] AHOM DIGIT ZERO..AHOM DIGIT NINE
-118E0..118E9 ; Nd # [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE
-11C50..11C59 ; Nd # [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
-16A60..16A69 ; Nd # [10] MRO DIGIT ZERO..MRO DIGIT NINE
-16B50..16B59 ; Nd # [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE
-1D7CE..1D7FF ; Nd # [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
-1E950..1E959 ; Nd # [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
-
-# Total code points: 580
-
-# ================================================
-
-# General_Category=Letter_Number
-
-16EE..16F0 ; Nl # [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
-2160..2182 ; Nl # [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND
-2185..2188 ; Nl # [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND
-3007 ; Nl # IDEOGRAPHIC NUMBER ZERO
-3021..3029 ; Nl # [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
-3038..303A ; Nl # [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
-A6E6..A6EF ; Nl # [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM
-10140..10174 ; Nl # [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS
-10341 ; Nl # GOTHIC LETTER NINETY
-1034A ; Nl # GOTHIC LETTER NINE HUNDRED
-103D1..103D5 ; Nl # [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
-12400..1246E ; Nl # [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
-
-# Total code points: 236
-
-# ================================================
-
-# General_Category=Other_Number
-
-00B2..00B3 ; No # [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
-00B9 ; No # SUPERSCRIPT ONE
-00BC..00BE ; No # [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
-09F4..09F9 ; No # [6] BENGALI CURRENCY NUMERATOR ONE..BENGALI CURRENCY DENOMINATOR SIXTEEN
-0B72..0B77 ; No # [6] ORIYA FRACTION ONE QUARTER..ORIYA FRACTION THREE SIXTEENTHS
-0BF0..0BF2 ; No # [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND
-0C78..0C7E ; No # [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
-0D58..0D5E ; No # [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH
-0D70..0D78 ; No # [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS
-0F2A..0F33 ; No # [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO
-1369..137C ; No # [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND
-17F0..17F9 ; No # [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON
-19DA ; No # NEW TAI LUE THAM DIGIT ONE
-2070 ; No # SUPERSCRIPT ZERO
-2074..2079 ; No # [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
-2080..2089 ; No # [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
-2150..215F ; No # [16] VULGAR FRACTION ONE SEVENTH..FRACTION NUMERATOR ONE
-2189 ; No # VULGAR FRACTION ZERO THIRDS
-2460..249B ; No # [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
-24EA..24FF ; No # [22] CIRCLED DIGIT ZERO..NEGATIVE CIRCLED DIGIT ZERO
-2776..2793 ; No # [30] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
-2CFD ; No # COPTIC FRACTION ONE HALF
-3192..3195 ; No # [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
-3220..3229 ; No # [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
-3248..324F ; No # [8] CIRCLED NUMBER TEN ON BLACK SQUARE..CIRCLED NUMBER EIGHTY ON BLACK SQUARE
-3251..325F ; No # [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
-3280..3289 ; No # [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
-32B1..32BF ; No # [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
-A830..A835 ; No # [6] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTION THREE SIXTEENTHS
-10107..10133 ; No # [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND
-10175..10178 ; No # [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN
-1018A..1018B ; No # [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN
-102E1..102FB ; No # [27] COPTIC EPACT DIGIT ONE..COPTIC EPACT NUMBER NINE HUNDRED
-10320..10323 ; No # [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY
-10858..1085F ; No # [8] IMPERIAL ARAMAIC NUMBER ONE..IMPERIAL ARAMAIC NUMBER TEN THOUSAND
-10879..1087F ; No # [7] PALMYRENE NUMBER ONE..PALMYRENE NUMBER TWENTY
-108A7..108AF ; No # [9] NABATAEAN NUMBER ONE..NABATAEAN NUMBER ONE HUNDRED
-108FB..108FF ; No # [5] HATRAN NUMBER ONE..HATRAN NUMBER ONE HUNDRED
-10916..1091B ; No # [6] PHOENICIAN NUMBER ONE..PHOENICIAN NUMBER THREE
-109BC..109BD ; No # [2] MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS..MEROITIC CURSIVE FRACTION ONE HALF
-109C0..109CF ; No # [16] MEROITIC CURSIVE NUMBER ONE..MEROITIC CURSIVE NUMBER SEVENTY
-109D2..109FF ; No # [46] MEROITIC CURSIVE NUMBER ONE HUNDRED..MEROITIC CURSIVE FRACTION TEN TWELFTHS
-10A40..10A47 ; No # [8] KHAROSHTHI DIGIT ONE..KHAROSHTHI NUMBER ONE THOUSAND
-10A7D..10A7E ; No # [2] OLD SOUTH ARABIAN NUMBER ONE..OLD SOUTH ARABIAN NUMBER FIFTY
-10A9D..10A9F ; No # [3] OLD NORTH ARABIAN NUMBER ONE..OLD NORTH ARABIAN NUMBER TWENTY
-10AEB..10AEF ; No # [5] MANICHAEAN NUMBER ONE..MANICHAEAN NUMBER ONE HUNDRED
-10B58..10B5F ; No # [8] INSCRIPTIONAL PARTHIAN NUMBER ONE..INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND
-10B78..10B7F ; No # [8] INSCRIPTIONAL PAHLAVI NUMBER ONE..INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND
-10BA9..10BAF ; No # [7] PSALTER PAHLAVI NUMBER ONE..PSALTER PAHLAVI NUMBER ONE HUNDRED
-10CFA..10CFF ; No # [6] OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND
-10E60..10E7E ; No # [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS
-11052..11065 ; No # [20] BRAHMI NUMBER ONE..BRAHMI NUMBER ONE THOUSAND
-111E1..111F4 ; No # [20] SINHALA ARCHAIC DIGIT ONE..SINHALA ARCHAIC NUMBER ONE THOUSAND
-1173A..1173B ; No # [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY
-118EA..118F2 ; No # [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY
-11C5A..11C6C ; No # [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK
-16B5B..16B61 ; No # [7] PAHAWH HMONG NUMBER TENS..PAHAWH HMONG NUMBER TRILLIONS
-1D360..1D371 ; No # [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
-1E8C7..1E8CF ; No # [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE
-1F100..1F10C ; No # [13] DIGIT ZERO FULL STOP..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
-
-# Total code points: 676
-
-# ================================================
-
-# General_Category=Space_Separator
-
-0020 ; Zs # SPACE
-00A0 ; Zs # NO-BREAK SPACE
-1680 ; Zs # OGHAM SPACE MARK
-2000..200A ; Zs # [11] EN QUAD..HAIR SPACE
-202F ; Zs # NARROW NO-BREAK SPACE
-205F ; Zs # MEDIUM MATHEMATICAL SPACE
-3000 ; Zs # IDEOGRAPHIC SPACE
-
-# Total code points: 17
-
-# ================================================
-
-# General_Category=Line_Separator
-
-2028 ; Zl # LINE SEPARATOR
-
-# Total code points: 1
-
-# ================================================
-
-# General_Category=Paragraph_Separator
-
-2029 ; Zp # PARAGRAPH SEPARATOR
-
-# Total code points: 1
-
-# ================================================
-
-# General_Category=Control
-
-0000..001F ; Cc # [32] <control-0000>..<control-001F>
-007F..009F ; Cc # [33] <control-007F>..<control-009F>
-
-# Total code points: 65
-
-# ================================================
-
-# General_Category=Format
-
-00AD ; Cf # SOFT HYPHEN
-0600..0605 ; Cf # [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE
-061C ; Cf # ARABIC LETTER MARK
-06DD ; Cf # ARABIC END OF AYAH
-070F ; Cf # SYRIAC ABBREVIATION MARK
-08E2 ; Cf # ARABIC DISPUTED END OF AYAH
-180E ; Cf # MONGOLIAN VOWEL SEPARATOR
-200B..200F ; Cf # [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK
-202A..202E ; Cf # [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
-2060..2064 ; Cf # [5] WORD JOINER..INVISIBLE PLUS
-2066..206F ; Cf # [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES
-FEFF ; Cf # ZERO WIDTH NO-BREAK SPACE
-FFF9..FFFB ; Cf # [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
-110BD ; Cf # KAITHI NUMBER SIGN
-1BCA0..1BCA3 ; Cf # [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
-1D173..1D17A ; Cf # [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
-E0001 ; Cf # LANGUAGE TAG
-E0020..E007F ; Cf # [96] TAG SPACE..CANCEL TAG
-
-# Total code points: 151
-
-# ================================================
-
-# General_Category=Private_Use
-
-E000..F8FF ; Co # [6400] <private-use-E000>..<private-use-F8FF>
-F0000..FFFFD ; Co # [65534] <private-use-F0000>..<private-use-FFFFD>
-100000..10FFFD; Co # [65534] <private-use-100000>..<private-use-10FFFD>
-
-# Total code points: 137468
-
-# ================================================
-
-# General_Category=Surrogate
-
-D800..DFFF ; Cs # [2048] <surrogate-D800>..<surrogate-DFFF>
-
-# Total code points: 2048
-
-# ================================================
-
-# General_Category=Dash_Punctuation
-
-002D ; Pd # HYPHEN-MINUS
-058A ; Pd # ARMENIAN HYPHEN
-05BE ; Pd # HEBREW PUNCTUATION MAQAF
-1400 ; Pd # CANADIAN SYLLABICS HYPHEN
-1806 ; Pd # MONGOLIAN TODO SOFT HYPHEN
-2010..2015 ; Pd # [6] HYPHEN..HORIZONTAL BAR
-2E17 ; Pd # DOUBLE OBLIQUE HYPHEN
-2E1A ; Pd # HYPHEN WITH DIAERESIS
-2E3A..2E3B ; Pd # [2] TWO-EM DASH..THREE-EM DASH
-2E40 ; Pd # DOUBLE HYPHEN
-301C ; Pd # WAVE DASH
-3030 ; Pd # WAVY DASH
-30A0 ; Pd # KATAKANA-HIRAGANA DOUBLE HYPHEN
-FE31..FE32 ; Pd # [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
-FE58 ; Pd # SMALL EM DASH
-FE63 ; Pd # SMALL HYPHEN-MINUS
-FF0D ; Pd # FULLWIDTH HYPHEN-MINUS
-
-# Total code points: 24
-
-# ================================================
-
-# General_Category=Open_Punctuation
-
-0028 ; Ps # LEFT PARENTHESIS
-005B ; Ps # LEFT SQUARE BRACKET
-007B ; Ps # LEFT CURLY BRACKET
-0F3A ; Ps # TIBETAN MARK GUG RTAGS GYON
-0F3C ; Ps # TIBETAN MARK ANG KHANG GYON
-169B ; Ps # OGHAM FEATHER MARK
-201A ; Ps # SINGLE LOW-9 QUOTATION MARK
-201E ; Ps # DOUBLE LOW-9 QUOTATION MARK
-2045 ; Ps # LEFT SQUARE BRACKET WITH QUILL
-207D ; Ps # SUPERSCRIPT LEFT PARENTHESIS
-208D ; Ps # SUBSCRIPT LEFT PARENTHESIS
-2308 ; Ps # LEFT CEILING
-230A ; Ps # LEFT FLOOR
-2329 ; Ps # LEFT-POINTING ANGLE BRACKET
-2768 ; Ps # MEDIUM LEFT PARENTHESIS ORNAMENT
-276A ; Ps # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
-276C ; Ps # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
-276E ; Ps # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
-2770 ; Ps # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
-2772 ; Ps # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
-2774 ; Ps # MEDIUM LEFT CURLY BRACKET ORNAMENT
-27C5 ; Ps # LEFT S-SHAPED BAG DELIMITER
-27E6 ; Ps # MATHEMATICAL LEFT WHITE SQUARE BRACKET
-27E8 ; Ps # MATHEMATICAL LEFT ANGLE BRACKET
-27EA ; Ps # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
-27EC ; Ps # MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
-27EE ; Ps # MATHEMATICAL LEFT FLATTENED PARENTHESIS
-2983 ; Ps # LEFT WHITE CURLY BRACKET
-2985 ; Ps # LEFT WHITE PARENTHESIS
-2987 ; Ps # Z NOTATION LEFT IMAGE BRACKET
-2989 ; Ps # Z NOTATION LEFT BINDING BRACKET
-298B ; Ps # LEFT SQUARE BRACKET WITH UNDERBAR
-298D ; Ps # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
-298F ; Ps # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-2991 ; Ps # LEFT ANGLE BRACKET WITH DOT
-2993 ; Ps # LEFT ARC LESS-THAN BRACKET
-2995 ; Ps # DOUBLE LEFT ARC GREATER-THAN BRACKET
-2997 ; Ps # LEFT BLACK TORTOISE SHELL BRACKET
-29D8 ; Ps # LEFT WIGGLY FENCE
-29DA ; Ps # LEFT DOUBLE WIGGLY FENCE
-29FC ; Ps # LEFT-POINTING CURVED ANGLE BRACKET
-2E22 ; Ps # TOP LEFT HALF BRACKET
-2E24 ; Ps # BOTTOM LEFT HALF BRACKET
-2E26 ; Ps # LEFT SIDEWAYS U BRACKET
-2E28 ; Ps # LEFT DOUBLE PARENTHESIS
-2E42 ; Ps # DOUBLE LOW-REVERSED-9 QUOTATION MARK
-3008 ; Ps # LEFT ANGLE BRACKET
-300A ; Ps # LEFT DOUBLE ANGLE BRACKET
-300C ; Ps # LEFT CORNER BRACKET
-300E ; Ps # LEFT WHITE CORNER BRACKET
-3010 ; Ps # LEFT BLACK LENTICULAR BRACKET
-3014 ; Ps # LEFT TORTOISE SHELL BRACKET
-3016 ; Ps # LEFT WHITE LENTICULAR BRACKET
-3018 ; Ps # LEFT WHITE TORTOISE SHELL BRACKET
-301A ; Ps # LEFT WHITE SQUARE BRACKET
-301D ; Ps # REVERSED DOUBLE PRIME QUOTATION MARK
-FD3F ; Ps # ORNATE RIGHT PARENTHESIS
-FE17 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
-FE35 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
-FE37 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
-FE39 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
-FE3B ; Ps # PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
-FE3D ; Ps # PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
-FE3F ; Ps # PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
-FE41 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
-FE43 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
-FE47 ; Ps # PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
-FE59 ; Ps # SMALL LEFT PARENTHESIS
-FE5B ; Ps # SMALL LEFT CURLY BRACKET
-FE5D ; Ps # SMALL LEFT TORTOISE SHELL BRACKET
-FF08 ; Ps # FULLWIDTH LEFT PARENTHESIS
-FF3B ; Ps # FULLWIDTH LEFT SQUARE BRACKET
-FF5B ; Ps # FULLWIDTH LEFT CURLY BRACKET
-FF5F ; Ps # FULLWIDTH LEFT WHITE PARENTHESIS
-FF62 ; Ps # HALFWIDTH LEFT CORNER BRACKET
-
-# Total code points: 75
-
-# ================================================
-
-# General_Category=Close_Punctuation
-
-0029 ; Pe # RIGHT PARENTHESIS
-005D ; Pe # RIGHT SQUARE BRACKET
-007D ; Pe # RIGHT CURLY BRACKET
-0F3B ; Pe # TIBETAN MARK GUG RTAGS GYAS
-0F3D ; Pe # TIBETAN MARK ANG KHANG GYAS
-169C ; Pe # OGHAM REVERSED FEATHER MARK
-2046 ; Pe # RIGHT SQUARE BRACKET WITH QUILL
-207E ; Pe # SUPERSCRIPT RIGHT PARENTHESIS
-208E ; Pe # SUBSCRIPT RIGHT PARENTHESIS
-2309 ; Pe # RIGHT CEILING
-230B ; Pe # RIGHT FLOOR
-232A ; Pe # RIGHT-POINTING ANGLE BRACKET
-2769 ; Pe # MEDIUM RIGHT PARENTHESIS ORNAMENT
-276B ; Pe # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
-276D ; Pe # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
-276F ; Pe # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
-2771 ; Pe # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
-2773 ; Pe # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
-2775 ; Pe # MEDIUM RIGHT CURLY BRACKET ORNAMENT
-27C6 ; Pe # RIGHT S-SHAPED BAG DELIMITER
-27E7 ; Pe # MATHEMATICAL RIGHT WHITE SQUARE BRACKET
-27E9 ; Pe # MATHEMATICAL RIGHT ANGLE BRACKET
-27EB ; Pe # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
-27ED ; Pe # MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
-27EF ; Pe # MATHEMATICAL RIGHT FLATTENED PARENTHESIS
-2984 ; Pe # RIGHT WHITE CURLY BRACKET
-2986 ; Pe # RIGHT WHITE PARENTHESIS
-2988 ; Pe # Z NOTATION RIGHT IMAGE BRACKET
-298A ; Pe # Z NOTATION RIGHT BINDING BRACKET
-298C ; Pe # RIGHT SQUARE BRACKET WITH UNDERBAR
-298E ; Pe # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-2990 ; Pe # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
-2992 ; Pe # RIGHT ANGLE BRACKET WITH DOT
-2994 ; Pe # RIGHT ARC GREATER-THAN BRACKET
-2996 ; Pe # DOUBLE RIGHT ARC LESS-THAN BRACKET
-2998 ; Pe # RIGHT BLACK TORTOISE SHELL BRACKET
-29D9 ; Pe # RIGHT WIGGLY FENCE
-29DB ; Pe # RIGHT DOUBLE WIGGLY FENCE
-29FD ; Pe # RIGHT-POINTING CURVED ANGLE BRACKET
-2E23 ; Pe # TOP RIGHT HALF BRACKET
-2E25 ; Pe # BOTTOM RIGHT HALF BRACKET
-2E27 ; Pe # RIGHT SIDEWAYS U BRACKET
-2E29 ; Pe # RIGHT DOUBLE PARENTHESIS
-3009 ; Pe # RIGHT ANGLE BRACKET
-300B ; Pe # RIGHT DOUBLE ANGLE BRACKET
-300D ; Pe # RIGHT CORNER BRACKET
-300F ; Pe # RIGHT WHITE CORNER BRACKET
-3011 ; Pe # RIGHT BLACK LENTICULAR BRACKET
-3015 ; Pe # RIGHT TORTOISE SHELL BRACKET
-3017 ; Pe # RIGHT WHITE LENTICULAR BRACKET
-3019 ; Pe # RIGHT WHITE TORTOISE SHELL BRACKET
-301B ; Pe # RIGHT WHITE SQUARE BRACKET
-301E..301F ; Pe # [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK
-FD3E ; Pe # ORNATE LEFT PARENTHESIS
-FE18 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
-FE36 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
-FE38 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
-FE3A ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
-FE3C ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
-FE3E ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
-FE40 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
-FE42 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
-FE44 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
-FE48 ; Pe # PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
-FE5A ; Pe # SMALL RIGHT PARENTHESIS
-FE5C ; Pe # SMALL RIGHT CURLY BRACKET
-FE5E ; Pe # SMALL RIGHT TORTOISE SHELL BRACKET
-FF09 ; Pe # FULLWIDTH RIGHT PARENTHESIS
-FF3D ; Pe # FULLWIDTH RIGHT SQUARE BRACKET
-FF5D ; Pe # FULLWIDTH RIGHT CURLY BRACKET
-FF60 ; Pe # FULLWIDTH RIGHT WHITE PARENTHESIS
-FF63 ; Pe # HALFWIDTH RIGHT CORNER BRACKET
-
-# Total code points: 73
-
-# ================================================
-
-# General_Category=Connector_Punctuation
-
-005F ; Pc # LOW LINE
-203F..2040 ; Pc # [2] UNDERTIE..CHARACTER TIE
-2054 ; Pc # INVERTED UNDERTIE
-FE33..FE34 ; Pc # [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
-FE4D..FE4F ; Pc # [3] DASHED LOW LINE..WAVY LOW LINE
-FF3F ; Pc # FULLWIDTH LOW LINE
-
-# Total code points: 10
-
-# ================================================
-
-# General_Category=Other_Punctuation
-
-0021..0023 ; Po # [3] EXCLAMATION MARK..NUMBER SIGN
-0025..0027 ; Po # [3] PERCENT SIGN..APOSTROPHE
-002A ; Po # ASTERISK
-002C ; Po # COMMA
-002E..002F ; Po # [2] FULL STOP..SOLIDUS
-003A..003B ; Po # [2] COLON..SEMICOLON
-003F..0040 ; Po # [2] QUESTION MARK..COMMERCIAL AT
-005C ; Po # REVERSE SOLIDUS
-00A1 ; Po # INVERTED EXCLAMATION MARK
-00A7 ; Po # SECTION SIGN
-00B6..00B7 ; Po # [2] PILCROW SIGN..MIDDLE DOT
-00BF ; Po # INVERTED QUESTION MARK
-037E ; Po # GREEK QUESTION MARK
-0387 ; Po # GREEK ANO TELEIA
-055A..055F ; Po # [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK
-0589 ; Po # ARMENIAN FULL STOP
-05C0 ; Po # HEBREW PUNCTUATION PASEQ
-05C3 ; Po # HEBREW PUNCTUATION SOF PASUQ
-05C6 ; Po # HEBREW PUNCTUATION NUN HAFUKHA
-05F3..05F4 ; Po # [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM
-0609..060A ; Po # [2] ARABIC-INDIC PER MILLE SIGN..ARABIC-INDIC PER TEN THOUSAND SIGN
-060C..060D ; Po # [2] ARABIC COMMA..ARABIC DATE SEPARATOR
-061B ; Po # ARABIC SEMICOLON
-061E..061F ; Po # [2] ARABIC TRIPLE DOT PUNCTUATION MARK..ARABIC QUESTION MARK
-066A..066D ; Po # [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR
-06D4 ; Po # ARABIC FULL STOP
-0700..070D ; Po # [14] SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS
-07F7..07F9 ; Po # [3] NKO SYMBOL GBAKURUNEN..NKO EXCLAMATION MARK
-0830..083E ; Po # [15] SAMARITAN PUNCTUATION NEQUDAA..SAMARITAN PUNCTUATION ANNAAU
-085E ; Po # MANDAIC PUNCTUATION
-0964..0965 ; Po # [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
-0970 ; Po # DEVANAGARI ABBREVIATION SIGN
-0AF0 ; Po # GUJARATI ABBREVIATION SIGN
-0DF4 ; Po # SINHALA PUNCTUATION KUNDDALIYA
-0E4F ; Po # THAI CHARACTER FONGMAN
-0E5A..0E5B ; Po # [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT
-0F04..0F12 ; Po # [15] TIBETAN MARK INITIAL YIG MGO MDUN MA..TIBETAN MARK RGYA GRAM SHAD
-0F14 ; Po # TIBETAN MARK GTER TSHEG
-0F85 ; Po # TIBETAN MARK PALUTA
-0FD0..0FD4 ; Po # [5] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA
-0FD9..0FDA ; Po # [2] TIBETAN MARK LEADING MCHAN RTAGS..TIBETAN MARK TRAILING MCHAN RTAGS
-104A..104F ; Po # [6] MYANMAR SIGN LITTLE SECTION..MYANMAR SYMBOL GENITIVE
-10FB ; Po # GEORGIAN PARAGRAPH SEPARATOR
-1360..1368 ; Po # [9] ETHIOPIC SECTION MARK..ETHIOPIC PARAGRAPH SEPARATOR
-166D..166E ; Po # [2] CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP
-16EB..16ED ; Po # [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION
-1735..1736 ; Po # [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
-17D4..17D6 ; Po # [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH
-17D8..17DA ; Po # [3] KHMER SIGN BEYYAL..KHMER SIGN KOOMUUT
-1800..1805 ; Po # [6] MONGOLIAN BIRGA..MONGOLIAN FOUR DOTS
-1807..180A ; Po # [4] MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU
-1944..1945 ; Po # [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK
-1A1E..1A1F ; Po # [2] BUGINESE PALLAWA..BUGINESE END OF SECTION
-1AA0..1AA6 ; Po # [7] TAI THAM SIGN WIANG..TAI THAM SIGN REVERSED ROTATED RANA
-1AA8..1AAD ; Po # [6] TAI THAM SIGN KAAN..TAI THAM SIGN CAANG
-1B5A..1B60 ; Po # [7] BALINESE PANTI..BALINESE PAMENENG
-1BFC..1BFF ; Po # [4] BATAK SYMBOL BINDU NA METEK..BATAK SYMBOL BINDU PANGOLAT
-1C3B..1C3F ; Po # [5] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK
-1C7E..1C7F ; Po # [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
-1CC0..1CC7 ; Po # [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA
-1CD3 ; Po # VEDIC SIGN NIHSHVASA
-2016..2017 ; Po # [2] DOUBLE VERTICAL LINE..DOUBLE LOW LINE
-2020..2027 ; Po # [8] DAGGER..HYPHENATION POINT
-2030..2038 ; Po # [9] PER MILLE SIGN..CARET
-203B..203E ; Po # [4] REFERENCE MARK..OVERLINE
-2041..2043 ; Po # [3] CARET INSERTION POINT..HYPHEN BULLET
-2047..2051 ; Po # [11] DOUBLE QUESTION MARK..TWO ASTERISKS ALIGNED VERTICALLY
-2053 ; Po # SWUNG DASH
-2055..205E ; Po # [10] FLOWER PUNCTUATION MARK..VERTICAL FOUR DOTS
-2CF9..2CFC ; Po # [4] COPTIC OLD NUBIAN FULL STOP..COPTIC OLD NUBIAN VERSE DIVIDER
-2CFE..2CFF ; Po # [2] COPTIC FULL STOP..COPTIC MORPHOLOGICAL DIVIDER
-2D70 ; Po # TIFINAGH SEPARATOR MARK
-2E00..2E01 ; Po # [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
-2E06..2E08 ; Po # [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER
-2E0B ; Po # RAISED SQUARE
-2E0E..2E16 ; Po # [9] EDITORIAL CORONIS..DOTTED RIGHT-POINTING ANGLE
-2E18..2E19 ; Po # [2] INVERTED INTERROBANG..PALM BRANCH
-2E1B ; Po # TILDE WITH RING ABOVE
-2E1E..2E1F ; Po # [2] TILDE WITH DOT ABOVE..TILDE WITH DOT BELOW
-2E2A..2E2E ; Po # [5] TWO DOTS OVER ONE DOT PUNCTUATION..REVERSED QUESTION MARK
-2E30..2E39 ; Po # [10] RING POINT..TOP HALF SECTION SIGN
-2E3C..2E3F ; Po # [4] STENOGRAPHIC FULL STOP..CAPITULUM
-2E41 ; Po # REVERSED COMMA
-2E43..2E44 ; Po # [2] DASH WITH LEFT UPTURN..DOUBLE SUSPENSION MARK
-3001..3003 ; Po # [3] IDEOGRAPHIC COMMA..DITTO MARK
-303D ; Po # PART ALTERNATION MARK
-30FB ; Po # KATAKANA MIDDLE DOT
-A4FE..A4FF ; Po # [2] LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP
-A60D..A60F ; Po # [3] VAI COMMA..VAI QUESTION MARK
-A673 ; Po # SLAVONIC ASTERISK
-A67E ; Po # CYRILLIC KAVYKA
-A6F2..A6F7 ; Po # [6] BAMUM NJAEMLI..BAMUM QUESTION MARK
-A874..A877 ; Po # [4] PHAGS-PA SINGLE HEAD MARK..PHAGS-PA MARK DOUBLE SHAD
-A8CE..A8CF ; Po # [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA
-A8F8..A8FA ; Po # [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET
-A8FC ; Po # DEVANAGARI SIGN SIDDHAM
-A92E..A92F ; Po # [2] KAYAH LI SIGN CWI..KAYAH LI SIGN SHYA
-A95F ; Po # REJANG SECTION MARK
-A9C1..A9CD ; Po # [13] JAVANESE LEFT RERENGGAN..JAVANESE TURNED PADA PISELEH
-A9DE..A9DF ; Po # [2] JAVANESE PADA TIRTA TUMETES..JAVANESE PADA ISEN-ISEN
-AA5C..AA5F ; Po # [4] CHAM PUNCTUATION SPIRAL..CHAM PUNCTUATION TRIPLE DANDA
-AADE..AADF ; Po # [2] TAI VIET SYMBOL HO HOI..TAI VIET SYMBOL KOI KOI
-AAF0..AAF1 ; Po # [2] MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM
-ABEB ; Po # MEETEI MAYEK CHEIKHEI
-FE10..FE16 ; Po # [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
-FE19 ; Po # PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
-FE30 ; Po # PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
-FE45..FE46 ; Po # [2] SESAME DOT..WHITE SESAME DOT
-FE49..FE4C ; Po # [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
-FE50..FE52 ; Po # [3] SMALL COMMA..SMALL FULL STOP
-FE54..FE57 ; Po # [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
-FE5F..FE61 ; Po # [3] SMALL NUMBER SIGN..SMALL ASTERISK
-FE68 ; Po # SMALL REVERSE SOLIDUS
-FE6A..FE6B ; Po # [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
-FF01..FF03 ; Po # [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN
-FF05..FF07 ; Po # [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE
-FF0A ; Po # FULLWIDTH ASTERISK
-FF0C ; Po # FULLWIDTH COMMA
-FF0E..FF0F ; Po # [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS
-FF1A..FF1B ; Po # [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
-FF1F..FF20 ; Po # [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT
-FF3C ; Po # FULLWIDTH REVERSE SOLIDUS
-FF61 ; Po # HALFWIDTH IDEOGRAPHIC FULL STOP
-FF64..FF65 ; Po # [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
-10100..10102 ; Po # [3] AEGEAN WORD SEPARATOR LINE..AEGEAN CHECK MARK
-1039F ; Po # UGARITIC WORD DIVIDER
-103D0 ; Po # OLD PERSIAN WORD DIVIDER
-1056F ; Po # CAUCASIAN ALBANIAN CITATION MARK
-10857 ; Po # IMPERIAL ARAMAIC SECTION SIGN
-1091F ; Po # PHOENICIAN WORD SEPARATOR
-1093F ; Po # LYDIAN TRIANGULAR MARK
-10A50..10A58 ; Po # [9] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES
-10A7F ; Po # OLD SOUTH ARABIAN NUMERIC INDICATOR
-10AF0..10AF6 ; Po # [7] MANICHAEAN PUNCTUATION STAR..MANICHAEAN PUNCTUATION LINE FILLER
-10B39..10B3F ; Po # [7] AVESTAN ABBREVIATION MARK..LARGE ONE RING OVER TWO RINGS PUNCTUATION
-10B99..10B9C ; Po # [4] PSALTER PAHLAVI SECTION MARK..PSALTER PAHLAVI FOUR DOTS WITH DOT
-11047..1104D ; Po # [7] BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS
-110BB..110BC ; Po # [2] KAITHI ABBREVIATION SIGN..KAITHI ENUMERATION SIGN
-110BE..110C1 ; Po # [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA
-11140..11143 ; Po # [4] CHAKMA SECTION MARK..CHAKMA QUESTION MARK
-11174..11175 ; Po # [2] MAHAJANI ABBREVIATION SIGN..MAHAJANI SECTION MARK
-111C5..111C9 ; Po # [5] SHARADA DANDA..SHARADA SANDHI MARK
-111CD ; Po # SHARADA SUTRA MARK
-111DB ; Po # SHARADA SIGN SIDDHAM
-111DD..111DF ; Po # [3] SHARADA CONTINUATION SIGN..SHARADA SECTION MARK-2
-11238..1123D ; Po # [6] KHOJKI DANDA..KHOJKI ABBREVIATION SIGN
-112A9 ; Po # MULTANI SECTION MARK
-1144B..1144F ; Po # [5] NEWA DANDA..NEWA ABBREVIATION SIGN
-1145B ; Po # NEWA PLACEHOLDER MARK
-1145D ; Po # NEWA INSERTION SIGN
-114C6 ; Po # TIRHUTA ABBREVIATION SIGN
-115C1..115D7 ; Po # [23] SIDDHAM SIGN SIDDHAM..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
-11641..11643 ; Po # [3] MODI DANDA..MODI ABBREVIATION SIGN
-11660..1166C ; Po # [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
-1173C..1173E ; Po # [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
-11C41..11C45 ; Po # [5] BHAIKSUKI DANDA..BHAIKSUKI GAP FILLER-2
-11C70..11C71 ; Po # [2] MARCHEN HEAD MARK..MARCHEN MARK SHAD
-12470..12474 ; Po # [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
-16A6E..16A6F ; Po # [2] MRO DANDA..MRO DOUBLE DANDA
-16AF5 ; Po # BASSA VAH FULL STOP
-16B37..16B3B ; Po # [5] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS FEEM
-16B44 ; Po # PAHAWH HMONG SIGN XAUS
-1BC9F ; Po # DUPLOYAN PUNCTUATION CHINOOK FULL STOP
-1DA87..1DA8B ; Po # [5] SIGNWRITING COMMA..SIGNWRITING PARENTHESIS
-1E95E..1E95F ; Po # [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK
-
-# Total code points: 544
-
-# ================================================
-
-# General_Category=Math_Symbol
-
-002B ; Sm # PLUS SIGN
-003C..003E ; Sm # [3] LESS-THAN SIGN..GREATER-THAN SIGN
-007C ; Sm # VERTICAL LINE
-007E ; Sm # TILDE
-00AC ; Sm # NOT SIGN
-00B1 ; Sm # PLUS-MINUS SIGN
-00D7 ; Sm # MULTIPLICATION SIGN
-00F7 ; Sm # DIVISION SIGN
-03F6 ; Sm # GREEK REVERSED LUNATE EPSILON SYMBOL
-0606..0608 ; Sm # [3] ARABIC-INDIC CUBE ROOT..ARABIC RAY
-2044 ; Sm # FRACTION SLASH
-2052 ; Sm # COMMERCIAL MINUS SIGN
-207A..207C ; Sm # [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
-208A..208C ; Sm # [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
-2118 ; Sm # SCRIPT CAPITAL P
-2140..2144 ; Sm # [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y
-214B ; Sm # TURNED AMPERSAND
-2190..2194 ; Sm # [5] LEFTWARDS ARROW..LEFT RIGHT ARROW
-219A..219B ; Sm # [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
-21A0 ; Sm # RIGHTWARDS TWO HEADED ARROW
-21A3 ; Sm # RIGHTWARDS ARROW WITH TAIL
-21A6 ; Sm # RIGHTWARDS ARROW FROM BAR
-21AE ; Sm # LEFT RIGHT ARROW WITH STROKE
-21CE..21CF ; Sm # [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
-21D2 ; Sm # RIGHTWARDS DOUBLE ARROW
-21D4 ; Sm # LEFT RIGHT DOUBLE ARROW
-21F4..22FF ; Sm # [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP
-2320..2321 ; Sm # [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL
-237C ; Sm # RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
-239B..23B3 ; Sm # [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
-23DC..23E1 ; Sm # [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
-25B7 ; Sm # WHITE RIGHT-POINTING TRIANGLE
-25C1 ; Sm # WHITE LEFT-POINTING TRIANGLE
-25F8..25FF ; Sm # [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
-266F ; Sm # MUSIC SHARP SIGN
-27C0..27C4 ; Sm # [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET
-27C7..27E5 ; Sm # [31] OR WITH DOT INSIDE..WHITE SQUARE WITH RIGHTWARDS TICK
-27F0..27FF ; Sm # [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW
-2900..2982 ; Sm # [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON
-2999..29D7 ; Sm # [63] DOTTED FENCE..BLACK HOURGLASS
-29DC..29FB ; Sm # [32] INCOMPLETE INFINITY..TRIPLE PLUS
-29FE..2AFF ; Sm # [258] TINY..N-ARY WHITE VERTICAL BAR
-2B30..2B44 ; Sm # [21] LEFT ARROW WITH SMALL CIRCLE..RIGHTWARDS ARROW THROUGH SUPERSET
-2B47..2B4C ; Sm # [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
-FB29 ; Sm # HEBREW LETTER ALTERNATIVE PLUS SIGN
-FE62 ; Sm # SMALL PLUS SIGN
-FE64..FE66 ; Sm # [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
-FF0B ; Sm # FULLWIDTH PLUS SIGN
-FF1C..FF1E ; Sm # [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
-FF5C ; Sm # FULLWIDTH VERTICAL LINE
-FF5E ; Sm # FULLWIDTH TILDE
-FFE2 ; Sm # FULLWIDTH NOT SIGN
-FFE9..FFEC ; Sm # [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
-1D6C1 ; Sm # MATHEMATICAL BOLD NABLA
-1D6DB ; Sm # MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
-1D6FB ; Sm # MATHEMATICAL ITALIC NABLA
-1D715 ; Sm # MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
-1D735 ; Sm # MATHEMATICAL BOLD ITALIC NABLA
-1D74F ; Sm # MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
-1D76F ; Sm # MATHEMATICAL SANS-SERIF BOLD NABLA
-1D789 ; Sm # MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
-1D7A9 ; Sm # MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
-1D7C3 ; Sm # MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
-1EEF0..1EEF1 ; Sm # [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL
-
-# Total code points: 948
-
-# ================================================
-
-# General_Category=Currency_Symbol
-
-0024 ; Sc # DOLLAR SIGN
-00A2..00A5 ; Sc # [4] CENT SIGN..YEN SIGN
-058F ; Sc # ARMENIAN DRAM SIGN
-060B ; Sc # AFGHANI SIGN
-09F2..09F3 ; Sc # [2] BENGALI RUPEE MARK..BENGALI RUPEE SIGN
-09FB ; Sc # BENGALI GANDA MARK
-0AF1 ; Sc # GUJARATI RUPEE SIGN
-0BF9 ; Sc # TAMIL RUPEE SIGN
-0E3F ; Sc # THAI CURRENCY SYMBOL BAHT
-17DB ; Sc # KHMER CURRENCY SYMBOL RIEL
-20A0..20BE ; Sc # [31] EURO-CURRENCY SIGN..LARI SIGN
-A838 ; Sc # NORTH INDIC RUPEE MARK
-FDFC ; Sc # RIAL SIGN
-FE69 ; Sc # SMALL DOLLAR SIGN
-FF04 ; Sc # FULLWIDTH DOLLAR SIGN
-FFE0..FFE1 ; Sc # [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
-FFE5..FFE6 ; Sc # [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
-
-# Total code points: 53
-
-# ================================================
-
-# General_Category=Modifier_Symbol
-
-005E ; Sk # CIRCUMFLEX ACCENT
-0060 ; Sk # GRAVE ACCENT
-00A8 ; Sk # DIAERESIS
-00AF ; Sk # MACRON
-00B4 ; Sk # ACUTE ACCENT
-00B8 ; Sk # CEDILLA
-02C2..02C5 ; Sk # [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD
-02D2..02DF ; Sk # [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT
-02E5..02EB ; Sk # [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK
-02ED ; Sk # MODIFIER LETTER UNASPIRATED
-02EF..02FF ; Sk # [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW
-0375 ; Sk # GREEK LOWER NUMERAL SIGN
-0384..0385 ; Sk # [2] GREEK TONOS..GREEK DIALYTIKA TONOS
-1FBD ; Sk # GREEK KORONIS
-1FBF..1FC1 ; Sk # [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
-1FCD..1FCF ; Sk # [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
-1FDD..1FDF ; Sk # [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
-1FED..1FEF ; Sk # [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
-1FFD..1FFE ; Sk # [2] GREEK OXIA..GREEK DASIA
-309B..309C ; Sk # [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-A700..A716 ; Sk # [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
-A720..A721 ; Sk # [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE
-A789..A78A ; Sk # [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
-AB5B ; Sk # MODIFIER BREVE WITH INVERTED BREVE
-FBB2..FBC1 ; Sk # [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW
-FF3E ; Sk # FULLWIDTH CIRCUMFLEX ACCENT
-FF40 ; Sk # FULLWIDTH GRAVE ACCENT
-FFE3 ; Sk # FULLWIDTH MACRON
-1F3FB..1F3FF ; Sk # [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
-
-# Total code points: 121
-
-# ================================================
-
-# General_Category=Other_Symbol
-
-00A6 ; So # BROKEN BAR
-00A9 ; So # COPYRIGHT SIGN
-00AE ; So # REGISTERED SIGN
-00B0 ; So # DEGREE SIGN
-0482 ; So # CYRILLIC THOUSANDS SIGN
-058D..058E ; So # [2] RIGHT-FACING ARMENIAN ETERNITY SIGN..LEFT-FACING ARMENIAN ETERNITY SIGN
-060E..060F ; So # [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA
-06DE ; So # ARABIC START OF RUB EL HIZB
-06E9 ; So # ARABIC PLACE OF SAJDAH
-06FD..06FE ; So # [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN
-07F6 ; So # NKO SYMBOL OO DENNEN
-09FA ; So # BENGALI ISSHAR
-0B70 ; So # ORIYA ISSHAR
-0BF3..0BF8 ; So # [6] TAMIL DAY SIGN..TAMIL AS ABOVE SIGN
-0BFA ; So # TAMIL NUMBER SIGN
-0C7F ; So # TELUGU SIGN TUUMU
-0D4F ; So # MALAYALAM SIGN PARA
-0D79 ; So # MALAYALAM DATE MARK
-0F01..0F03 ; So # [3] TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA
-0F13 ; So # TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN
-0F15..0F17 ; So # [3] TIBETAN LOGOTYPE SIGN CHAD RTAGS..TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS
-0F1A..0F1F ; So # [6] TIBETAN SIGN RDEL DKAR GCIG..TIBETAN SIGN RDEL DKAR RDEL NAG
-0F34 ; So # TIBETAN MARK BSDUS RTAGS
-0F36 ; So # TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN
-0F38 ; So # TIBETAN MARK CHE MGO
-0FBE..0FC5 ; So # [8] TIBETAN KU RU KHA..TIBETAN SYMBOL RDO RJE
-0FC7..0FCC ; So # [6] TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL
-0FCE..0FCF ; So # [2] TIBETAN SIGN RDEL NAG RDEL DKAR..TIBETAN SIGN RDEL NAG GSUM
-0FD5..0FD8 ; So # [4] RIGHT-FACING SVASTI SIGN..LEFT-FACING SVASTI SIGN WITH DOTS
-109E..109F ; So # [2] MYANMAR SYMBOL SHAN ONE..MYANMAR SYMBOL SHAN EXCLAMATION
-1390..1399 ; So # [10] ETHIOPIC TONAL MARK YIZET..ETHIOPIC TONAL MARK KURT
-1940 ; So # LIMBU SIGN LOO
-19DE..19FF ; So # [34] NEW TAI LUE SIGN LAE..KHMER SYMBOL DAP-PRAM ROC
-1B61..1B6A ; So # [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE
-1B74..1B7C ; So # [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
-2100..2101 ; So # [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
-2103..2106 ; So # [4] DEGREE CELSIUS..CADA UNA
-2108..2109 ; So # [2] SCRUPLE..DEGREE FAHRENHEIT
-2114 ; So # L B BAR SYMBOL
-2116..2117 ; So # [2] NUMERO SIGN..SOUND RECORDING COPYRIGHT
-211E..2123 ; So # [6] PRESCRIPTION TAKE..VERSICLE
-2125 ; So # OUNCE SIGN
-2127 ; So # INVERTED OHM SIGN
-2129 ; So # TURNED GREEK SMALL LETTER IOTA
-212E ; So # ESTIMATED SYMBOL
-213A..213B ; So # [2] ROTATED CAPITAL Q..FACSIMILE SIGN
-214A ; So # PROPERTY LINE
-214C..214D ; So # [2] PER SIGN..AKTIESELSKAB
-214F ; So # SYMBOL FOR SAMARITAN SOURCE
-218A..218B ; So # [2] TURNED DIGIT TWO..TURNED DIGIT THREE
-2195..2199 ; So # [5] UP DOWN ARROW..SOUTH WEST ARROW
-219C..219F ; So # [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW
-21A1..21A2 ; So # [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL
-21A4..21A5 ; So # [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR
-21A7..21AD ; So # [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW
-21AF..21CD ; So # [31] DOWNWARDS ZIGZAG ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE
-21D0..21D1 ; So # [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW
-21D3 ; So # DOWNWARDS DOUBLE ARROW
-21D5..21F3 ; So # [31] UP DOWN DOUBLE ARROW..UP DOWN WHITE ARROW
-2300..2307 ; So # [8] DIAMETER SIGN..WAVY LINE
-230C..231F ; So # [20] BOTTOM RIGHT CROP..BOTTOM RIGHT CORNER
-2322..2328 ; So # [7] FROWN..KEYBOARD
-232B..237B ; So # [81] ERASE TO THE LEFT..NOT CHECK MARK
-237D..239A ; So # [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL
-23B4..23DB ; So # [40] TOP SQUARE BRACKET..FUSE
-23E2..23FE ; So # [29] WHITE TRAPEZIUM..POWER SLEEP SYMBOL
-2400..2426 ; So # [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
-2440..244A ; So # [11] OCR HOOK..OCR DOUBLE BACKSLASH
-249C..24E9 ; So # [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
-2500..25B6 ; So # [183] BOX DRAWINGS LIGHT HORIZONTAL..BLACK RIGHT-POINTING TRIANGLE
-25B8..25C0 ; So # [9] BLACK RIGHT-POINTING SMALL TRIANGLE..BLACK LEFT-POINTING TRIANGLE
-25C2..25F7 ; So # [54] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE CIRCLE WITH UPPER RIGHT QUADRANT
-2600..266E ; So # [111] BLACK SUN WITH RAYS..MUSIC NATURAL SIGN
-2670..2767 ; So # [248] WEST SYRIAC CROSS..ROTATED FLORAL HEART BULLET
-2794..27BF ; So # [44] HEAVY WIDE-HEADED RIGHTWARDS ARROW..DOUBLE CURLY LOOP
-2800..28FF ; So # [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678
-2B00..2B2F ; So # [48] NORTH EAST WHITE ARROW..WHITE VERTICAL ELLIPSE
-2B45..2B46 ; So # [2] LEFTWARDS QUADRUPLE ARROW..RIGHTWARDS QUADRUPLE ARROW
-2B4D..2B73 ; So # [39] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR
-2B76..2B95 ; So # [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW
-2B98..2BB9 ; So # [34] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..UP ARROWHEAD IN A RECTANGLE BOX
-2BBD..2BC8 ; So # [12] BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED
-2BCA..2BD1 ; So # [8] TOP HALF BLACK CIRCLE..UNCERTAINTY SIGN
-2BEC..2BEF ; So # [4] LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
-2CE5..2CEA ; So # [6] COPTIC SYMBOL MI RO..COPTIC SYMBOL SHIMA SIMA
-2E80..2E99 ; So # [26] CJK RADICAL REPEAT..CJK RADICAL RAP
-2E9B..2EF3 ; So # [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
-2F00..2FD5 ; So # [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
-2FF0..2FFB ; So # [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
-3004 ; So # JAPANESE INDUSTRIAL STANDARD SYMBOL
-3012..3013 ; So # [2] POSTAL MARK..GETA MARK
-3020 ; So # POSTAL MARK FACE
-3036..3037 ; So # [2] CIRCLED POSTAL MARK..IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
-303E..303F ; So # [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE
-3190..3191 ; So # [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK
-3196..319F ; So # [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
-31C0..31E3 ; So # [36] CJK STROKE T..CJK STROKE Q
-3200..321E ; So # [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
-322A..3247 ; So # [30] PARENTHESIZED IDEOGRAPH MOON..CIRCLED IDEOGRAPH KOTO
-3250 ; So # PARTNERSHIP SIGN
-3260..327F ; So # [32] CIRCLED HANGUL KIYEOK..KOREAN STANDARD SYMBOL
-328A..32B0 ; So # [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
-32C0..32FE ; So # [63] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..CIRCLED KATAKANA WO
-3300..33FF ; So # [256] SQUARE APAATO..SQUARE GAL
-4DC0..4DFF ; So # [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
-A490..A4C6 ; So # [55] YI RADICAL QOT..YI RADICAL KE
-A828..A82B ; So # [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4
-A836..A837 ; So # [2] NORTH INDIC QUARTER MARK..NORTH INDIC PLACEHOLDER MARK
-A839 ; So # NORTH INDIC QUANTITY MARK
-AA77..AA79 ; So # [3] MYANMAR SYMBOL AITON EXCLAMATION..MYANMAR SYMBOL AITON TWO
-FDFD ; So # ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
-FFE4 ; So # FULLWIDTH BROKEN BAR
-FFE8 ; So # HALFWIDTH FORMS LIGHT VERTICAL
-FFED..FFEE ; So # [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
-FFFC..FFFD ; So # [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
-10137..1013F ; So # [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT
-10179..10189 ; So # [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN
-1018C..1018E ; So # [3] GREEK SINUSOID SIGN..NOMISMA SIGN
-10190..1019B ; So # [12] ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN
-101A0 ; So # GREEK SYMBOL TAU RHO
-101D0..101FC ; So # [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
-10877..10878 ; So # [2] PALMYRENE LEFT-POINTING FLEURON..PALMYRENE RIGHT-POINTING FLEURON
-10AC8 ; So # MANICHAEAN SIGN UD
-1173F ; So # AHOM SYMBOL VI
-16B3C..16B3F ; So # [4] PAHAWH HMONG SIGN XYEEM NTXIV..PAHAWH HMONG SIGN XYEEM FAIB
-16B45 ; So # PAHAWH HMONG SIGN CIM TSOV ROG
-1BC9C ; So # DUPLOYAN SIGN O WITH CROSS
-1D000..1D0F5 ; So # [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
-1D100..1D126 ; So # [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2
-1D129..1D164 ; So # [60] MUSICAL SYMBOL MULTIPLE MEASURE REST..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
-1D16A..1D16C ; So # [3] MUSICAL SYMBOL FINGERED TREMOLO-1..MUSICAL SYMBOL FINGERED TREMOLO-3
-1D183..1D184 ; So # [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN
-1D18C..1D1A9 ; So # [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH
-1D1AE..1D1E8 ; So # [59] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KIEVAN FLAT SIGN
-1D200..1D241 ; So # [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54
-1D245 ; So # GREEK MUSICAL LEIMMA
-1D300..1D356 ; So # [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
-1D800..1D9FF ; So # [512] SIGNWRITING HAND-FIST INDEX..SIGNWRITING HEAD
-1DA37..1DA3A ; So # [4] SIGNWRITING AIR BLOW SMALL ROTATIONS..SIGNWRITING BREATH EXHALE
-1DA6D..1DA74 ; So # [8] SIGNWRITING SHOULDER HIP SPINE..SIGNWRITING TORSO-FLOORPLANE TWISTING
-1DA76..1DA83 ; So # [14] SIGNWRITING LIMB COMBINATION..SIGNWRITING LOCATION DEPTH
-1DA85..1DA86 ; So # [2] SIGNWRITING LOCATION TORSO..SIGNWRITING LOCATION LIMBS DIGITS
-1F000..1F02B ; So # [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK
-1F030..1F093 ; So # [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06
-1F0A0..1F0AE ; So # [15] PLAYING CARD BACK..PLAYING CARD KING OF SPADES
-1F0B1..1F0BF ; So # [15] PLAYING CARD ACE OF HEARTS..PLAYING CARD RED JOKER
-1F0C1..1F0CF ; So # [15] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER
-1F0D1..1F0F5 ; So # [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21
-1F110..1F12E ; So # [31] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED WZ
-1F130..1F16B ; So # [60] SQUARED LATIN CAPITAL LETTER A..RAISED MD SIGN
-1F170..1F1AC ; So # [61] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VOD
-1F1E6..1F202 ; So # [29] REGIONAL INDICATOR SYMBOL LETTER A..SQUARED KATAKANA SA
-1F210..1F23B ; So # [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
-1F240..1F248 ; So # [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
-1F250..1F251 ; So # [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
-1F300..1F3FA ; So # [251] CYCLONE..AMPHORA
-1F400..1F6D2 ; So # [723] RAT..SHOPPING TROLLEY
-1F6E0..1F6EC ; So # [13] HAMMER AND WRENCH..AIRPLANE ARRIVING
-1F6F0..1F6F6 ; So # [7] SATELLITE..CANOE
-1F700..1F773 ; So # [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
-1F780..1F7D4 ; So # [85] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR
-1F800..1F80B ; So # [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
-1F810..1F847 ; So # [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW
-1F850..1F859 ; So # [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
-1F860..1F887 ; So # [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
-1F890..1F8AD ; So # [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
-1F910..1F91E ; So # [15] ZIPPER-MOUTH FACE..HAND WITH INDEX AND MIDDLE FINGERS CROSSED
-1F920..1F927 ; So # [8] FACE WITH COWBOY HAT..SNEEZING FACE
-1F930 ; So # PREGNANT WOMAN
-1F933..1F93E ; So # [12] SELFIE..HANDBALL
-1F940..1F94B ; So # [12] WILTED FLOWER..MARTIAL ARTS UNIFORM
-1F950..1F95E ; So # [15] CROISSANT..PANCAKES
-1F980..1F991 ; So # [18] CRAB..SQUID
-1F9C0 ; So # CHEESE WEDGE
-
-# Total code points: 5777
-
-# ================================================
-
-# General_Category=Initial_Punctuation
-
-00AB ; Pi # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-2018 ; Pi # LEFT SINGLE QUOTATION MARK
-201B..201C ; Pi # [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK
-201F ; Pi # DOUBLE HIGH-REVERSED-9 QUOTATION MARK
-2039 ; Pi # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-2E02 ; Pi # LEFT SUBSTITUTION BRACKET
-2E04 ; Pi # LEFT DOTTED SUBSTITUTION BRACKET
-2E09 ; Pi # LEFT TRANSPOSITION BRACKET
-2E0C ; Pi # LEFT RAISED OMISSION BRACKET
-2E1C ; Pi # LEFT LOW PARAPHRASE BRACKET
-2E20 ; Pi # LEFT VERTICAL BAR WITH QUILL
-
-# Total code points: 12
-
-# ================================================
-
-# General_Category=Final_Punctuation
-
-00BB ; Pf # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-2019 ; Pf # RIGHT SINGLE QUOTATION MARK
-201D ; Pf # RIGHT DOUBLE QUOTATION MARK
-203A ; Pf # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-2E03 ; Pf # RIGHT SUBSTITUTION BRACKET
-2E05 ; Pf # RIGHT DOTTED SUBSTITUTION BRACKET
-2E0A ; Pf # RIGHT TRANSPOSITION BRACKET
-2E0D ; Pf # RIGHT RAISED OMISSION BRACKET
-2E1D ; Pf # RIGHT LOW PARAPHRASE BRACKET
-2E21 ; Pf # RIGHT VERTICAL BAR WITH QUILL
-
-# Total code points: 10
-
-# EOF
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/ucd/VerticalOrientation-16.txt b/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/ucd/VerticalOrientation-16.txt
deleted file mode 100644
index 0e715b297ab..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/ucd/VerticalOrientation-16.txt
+++ /dev/null
@@ -1,1033 +0,0 @@
-# VerticalOrientation-16.txt
-# Date: 2016-07-23, 01:00:00 GMT [EM, KI, LI]
-# © 2016 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
-#
-# Note: This data file accompanies Revision 16 of Unicode Technical
-# Report #50, which has the status of Proposed Update. The approved
-# version of this data file will appear in the subsequent Revision 17.
-#
-# Vertical_Orientation (vo) Property
-#
-# This file defines the Vertical_Orientation property. The file is not
-# formally part of the Unicode Character Database.
-#
-# For documentation, see Revision 16 of
-# Unicode Technical Report #50: Unicode Vertical Text Layout,
-# at http://www.unicode.org/reports/tr50/tr50-16.html
-#
-# The character repertoire of this revision is the repertoire of
-# Unicode Version 9.0.
-#
-# The format of the file is two fields separated by a semicolon.
-# Field 0: Unicode code point value or range of code point values in
-# hexadecimal form
-# Field 1: Vertical_Orientation property value, one of the following:
-# U - Upright, the same orientation as in the code charts
-# R - Rotated 90 degrees clockwise compared to the code charts
-# Tu - Transformed typographically, with fallback to Upright
-# Tr - Transformed typographically, with fallback to Rotated
-#
-# @missing: 0000..10FFFF; R
-
-0000..001F ; R
-0020 ; R
-0021 ; R
-0022 ; R
-0023 ; R
-0024 ; R
-0025 ; R
-0026 ; R
-0027 ; R
-0028 ; R
-0029 ; R
-002A ; R
-002B ; R
-002C ; R
-002D ; R
-002E..005A ; R
-005B ; R
-005C ; R
-005D ; R
-005E ; R
-005F ; R
-0060..007A ; R
-007B ; R
-007C ; R
-007D ; R
-007E ; R
-007F ; R
-0080..009F ; R
-00A0 ; R
-00A1 ; R
-00A2 ; R
-00A3 ; R
-00A4 ; R
-00A5 ; R
-00A6 ; R
-00A7 ; U
-00A8 ; R
-00A9 ; U
-00AA ; R
-00AB ; R
-00AC ; R
-00AD ; R
-00AE ; U
-00AF ; R
-00B0 ; R
-00B1 ; U
-00B2 ; R
-00B3 ; R
-00B4 ; R
-00B5 ; R
-00B6 ; R
-00B7 ; R
-00B8 ; R
-00B9 ; R
-00BA ; R
-00BB ; R
-00BC ; U
-00BD ; U
-00BE ; U
-00BF ; R
-00C0..00D6 ; R
-00D7 ; U
-00D8..00F6 ; R
-00F7 ; U
-00F8..00FF ; R
-0100..017F ; R
-0180..024F ; R
-0250..02AF ; R
-02B0..02E4 ; R
-02E5 ; R
-02E6 ; R
-02E7 ; R
-02E8 ; R
-02E9 ; R
-02EA ; U
-02EB ; U
-02EC..02FF ; R
-0300..036F ; R
-0370..03FF ; R
-0400..04FF ; R
-0500..052F ; R
-0530..0589 ; R
-058A ; R
-058B..058C ; R
-058D..058E ; R
-058F ; R
-0590..05BD ; R
-05BE ; R
-05BF..05FF ; R
-0600..06FF ; R
-0700..074F ; R
-0750..077F ; R
-0780..07BF ; R
-07C0..07FF ; R
-0800..083F ; R
-0840..085F ; R
-08A0..08FF ; R
-0900..097F ; R
-0980..09FF ; R
-0A00..0A7F ; R
-0A80..0AFF ; R
-0B00..0B7F ; R
-0B80..0BFF ; R
-0C00..0C7F ; R
-0C80..0CFF ; R
-0D00..0D7F ; R
-0D80..0DFF ; R
-0E00..0E7F ; R
-0E80..0EFF ; R
-0F00..0FFF ; R
-1000..109F ; R
-10A0..10FF ; R
-1100..11FF ; U
-1200..137F ; R
-1380..139F ; R
-13A0..13FF ; R
-1400 ; R
-1401..167F ; U
-1680..169F ; R
-16A0..16FF ; R
-1700..171F ; R
-1720..173F ; R
-1740..175F ; R
-1760..177F ; R
-1780..17FF ; R
-1800..18AF ; R
-18B0..18FF ; U
-1900..194F ; R
-1950..197F ; R
-1980..19DF ; R
-19E0..19FF ; R
-1A00..1A1F ; R
-1A20..1AAF ; R
-1AB0..1AFF ; R
-1B00..1B7F ; R
-1B80..1BBF ; R
-1BC0..1BFF ; R
-1C00..1C4F ; R
-1C50..1C7F ; R
-1C80..1C8F ; R
-1CC0..1CCF ; R
-1CD0..1CFF ; R
-1D00..1D7F ; R
-1D80..1DBF ; R
-1DC0..1DFF ; R
-1E00..1EFF ; R
-1F00..1FFF ; R
-2000..200A ; R
-200B..200F ; R
-2010 ; R
-2011 ; R
-2012 ; R
-2013 ; R
-2014 ; R
-2015 ; R
-2016 ; U
-2017 ; R
-2018 ; R
-2019 ; R
-201A ; R
-201B ; R
-201C ; R
-201D ; R
-201E ; R
-201F ; R
-2020 ; U
-2021 ; U
-2022 ; R
-2023 ; R
-2024 ; R
-2025 ; R
-2026 ; R
-2027 ; R
-2028..2029 ; R
-202A..202E ; R
-202F ; R
-2030 ; U
-2031 ; U
-2032 ; R
-2033 ; R
-2034 ; R
-2035 ; R
-2036 ; R
-2037 ; R
-2038 ; R
-2039 ; R
-203A ; R
-203B ; U
-203C ; U
-203D ; R
-203E ; R
-203F ; R
-2040 ; R
-2041 ; R
-2042 ; U
-2043 ; R
-2044 ; R
-2045 ; R
-2046 ; R
-2047 ; U
-2048 ; U
-2049 ; U
-204A ; R
-204B ; R
-204C ; R
-204D ; R
-204E ; R
-204F ; R
-2050 ; R
-2051 ; U
-2052 ; R
-2053 ; R
-2054 ; R
-2055 ; R
-2056 ; R
-2057 ; R
-2058 ; R
-2059 ; R
-205A ; R
-205B ; R
-205C ; R
-205D ; R
-205E ; R
-205F ; R
-2060..2064 ; R
-2065 ; U
-2066..2069 ; R
-206A..206F ; R
-2070..209F ; R
-20A0..20AB ; R
-20AC ; R
-20AD..20CF ; R
-20D0..20DC ; R
-20DD..20E0 ; U
-20E1 ; R
-20E2..20E4 ; U
-20E5..20FF ; R
-2100 ; U
-2101 ; U
-2102 ; R
-2103 ; U
-2104 ; U
-2105 ; U
-2106 ; U
-2107 ; U
-2108 ; U
-2109 ; U
-210A ; R
-210B ; R
-210C ; R
-210D ; R
-210E ; R
-210F ; U
-2110 ; R
-2111 ; R
-2112 ; R
-2113 ; U
-2114 ; U
-2115 ; R
-2116 ; U
-2117 ; U
-2118 ; R
-2119 ; R
-211A ; R
-211B ; R
-211C ; R
-211D ; R
-211E ; U
-211F ; U
-2120 ; U
-2121 ; U
-2122 ; U
-2123 ; U
-2124 ; R
-2125 ; U
-2126 ; R
-2127 ; U
-2128 ; R
-2129 ; U
-212A ; R
-212B ; R
-212C ; R
-212D ; R
-212E ; U
-212F ; R
-2130 ; R
-2131 ; R
-2132 ; R
-2133 ; R
-2134 ; R
-2135 ; U
-2136 ; U
-2137 ; U
-2138 ; U
-2139 ; U
-213A ; U
-213B ; U
-213C ; U
-213D ; U
-213E ; U
-213F ; U
-2140 ; R
-2141 ; R
-2142 ; R
-2143 ; R
-2144 ; R
-2145 ; U
-2146 ; U
-2147 ; U
-2148 ; U
-2149 ; U
-214A ; U
-214B ; R
-214C ; U
-214D ; U
-214E ; R
-214F ; U
-2150..2189 ; U
-218A..218B ; R
-218C..218F ; U
-2190..21FF ; R
-2200..221D ; R
-221E ; U
-221F..2233 ; R
-2234..2235 ; U
-2236..22FF ; R
-2300..2307 ; U
-2308..230B ; R
-230C..231F ; U
-2320 ; R
-2321 ; R
-2322..2323 ; R
-2324..2328 ; U
-2329 ; Tr
-232A ; Tr
-232B ; U
-232C..237C ; R
-237D..239A ; U
-239B..23B3 ; R
-23B4..23B6 ; R
-23B7..23B9 ; R
-23BA..23BD ; R
-23BE..23CD ; U
-23CE ; R
-23CF ; U
-23D0 ; R
-23D1..23DB ; U
-23DC..23E1 ; R
-23E2..23FF ; U
-2400..2422 ; U
-2423 ; R
-2424..243F ; U
-2440..245F ; U
-2460..24FF ; U
-2500..257F ; R
-2580..259F ; R
-25A0..25FF ; U
-2600..2619 ; U
-261A..261F ; R
-2620..26FF ; U
-2700..2767 ; U
-2768..2775 ; R
-2776..2793 ; U
-2794..27BF ; R
-27C0..27C4 ; R
-27C5..27C6 ; R
-27C7..27E5 ; R
-27E6..27EF ; R
-27F0..27FF ; R
-2800..28FF ; R
-2900..297F ; R
-2980..2982 ; R
-2983..2998 ; R
-2999..29D7 ; R
-29D8..29DB ; R
-29DC..29FB ; R
-29FC..29FD ; R
-29FE..29FF ; R
-2A00..2AFF ; R
-2B00..2B11 ; R
-2B12..2B2F ; U
-2B30..2B4F ; R
-2B50..2B59 ; U
-2B5A..2BB7 ; R
-2BB8..2BEB ; U
-2BEC..2BEF ; R
-2BF0..2BFF ; U
-2C00..2C5F ; R
-2C60..2C7F ; R
-2C80..2CFF ; R
-2D00..2D2F ; R
-2D30..2D7F ; R
-2D80..2DDF ; R
-2DE0..2DFF ; R
-2E00..2E16 ; R
-2E17 ; R
-2E18..2E19 ; R
-2E1A ; R
-2E1B..2E1F ; R
-2E20..2E21 ; R
-2E22..2E25 ; R
-2E26..2E29 ; R
-2E2A..2E39 ; R
-2E3A ; R
-2E3B ; R
-2E3C..2E44 ; R
-2E45..2E7F ; R
-2E80..2EFF ; U
-2F00..2FDF ; U
-2FE0..2FEF ; U
-2FF0..2FFF ; U
-3000 ; U
-3001 ; Tu
-3002 ; Tu
-3003 ; U
-3004 ; U
-3005 ; U
-3006 ; U
-3007 ; U
-3008 ; Tr
-3009 ; Tr
-300A ; Tr
-300B ; Tr
-300C ; Tr
-300D ; Tr
-300E ; Tr
-300F ; Tr
-3010 ; Tr
-3011 ; Tr
-3012 ; U
-3013 ; U
-3014 ; Tr
-3015 ; Tr
-3016 ; Tr
-3017 ; Tr
-3018 ; Tr
-3019 ; Tr
-301A ; Tr
-301B ; Tr
-301C ; Tr
-301D ; Tr
-301E ; Tr
-301F ; Tr
-3020 ; U
-3021 ; U
-3022 ; U
-3023 ; U
-3024 ; U
-3025 ; U
-3026 ; U
-3027 ; U
-3028 ; U
-3029 ; U
-302A ; U
-302B ; U
-302C ; U
-302D ; U
-302E ; U
-302F ; U
-3030 ; Tr
-3031 ; U
-3032 ; U
-3033 ; U
-3034 ; U
-3035 ; U
-3036 ; U
-3037 ; U
-3038 ; U
-3039 ; U
-303A ; U
-303B ; U
-303C ; U
-303D ; U
-303E ; U
-303F ; U
-3040 ; U
-3041 ; Tu
-3042 ; U
-3043 ; Tu
-3044 ; U
-3045 ; Tu
-3046 ; U
-3047 ; Tu
-3048 ; U
-3049 ; Tu
-304A ; U
-304B ; U
-304C ; U
-304D ; U
-304E ; U
-304F ; U
-3050 ; U
-3051 ; U
-3052 ; U
-3053 ; U
-3054 ; U
-3055 ; U
-3056 ; U
-3057 ; U
-3058 ; U
-3059 ; U
-305A ; U
-305B ; U
-305C ; U
-305D ; U
-305E ; U
-305F ; U
-3060 ; U
-3061 ; U
-3062 ; U
-3063 ; Tu
-3064 ; U
-3065 ; U
-3066 ; U
-3067 ; U
-3068 ; U
-3069 ; U
-306A ; U
-306B ; U
-306C ; U
-306D ; U
-306E ; U
-306F ; U
-3070 ; U
-3071 ; U
-3072 ; U
-3073 ; U
-3074 ; U
-3075 ; U
-3076 ; U
-3077 ; U
-3078 ; U
-3079 ; U
-307A ; U
-307B ; U
-307C ; U
-307D ; U
-307E ; U
-307F ; U
-3080 ; U
-3081 ; U
-3082 ; U
-3083 ; Tu
-3084 ; U
-3085 ; Tu
-3086 ; U
-3087 ; Tu
-3088 ; U
-3089 ; U
-308A ; U
-308B ; U
-308C ; U
-308D ; U
-308E ; Tu
-308F ; U
-3090 ; U
-3091 ; U
-3092 ; U
-3093 ; U
-3094 ; U
-3095 ; Tu
-3096 ; Tu
-3097 ; U
-3098 ; U
-3099 ; U
-309A ; U
-309B ; Tu
-309C ; Tu
-309D ; U
-309E ; U
-309F ; U
-30A0 ; Tr
-30A1 ; Tu
-30A2 ; U
-30A3 ; Tu
-30A4 ; U
-30A5 ; Tu
-30A6 ; U
-30A7 ; Tu
-30A8 ; U
-30A9 ; Tu
-30AA ; U
-30AB ; U
-30AC ; U
-30AD ; U
-30AE ; U
-30AF ; U
-30B0 ; U
-30B1 ; U
-30B2 ; U
-30B3 ; U
-30B4 ; U
-30B5 ; U
-30B6 ; U
-30B7 ; U
-30B8 ; U
-30B9 ; U
-30BA ; U
-30BB ; U
-30BC ; U
-30BD ; U
-30BE ; U
-30BF ; U
-30C0 ; U
-30C1 ; U
-30C2 ; U
-30C3 ; Tu
-30C4 ; U
-30C5 ; U
-30C6 ; U
-30C7 ; U
-30C8 ; U
-30C9 ; U
-30CA ; U
-30CB ; U
-30CC ; U
-30CD ; U
-30CE ; U
-30CF ; U
-30D0 ; U
-30D1 ; U
-30D2 ; U
-30D3 ; U
-30D4 ; U
-30D5 ; U
-30D6 ; U
-30D7 ; U
-30D8 ; U
-30D9 ; U
-30DA ; U
-30DB ; U
-30DC ; U
-30DD ; U
-30DE ; U
-30DF ; U
-30E0 ; U
-30E1 ; U
-30E2 ; U
-30E3 ; Tu
-30E4 ; U
-30E5 ; Tu
-30E6 ; U
-30E7 ; Tu
-30E8 ; U
-30E9 ; U
-30EA ; U
-30EB ; U
-30EC ; U
-30ED ; U
-30EE ; Tu
-30EF ; U
-30F0 ; U
-30F1 ; U
-30F2 ; U
-30F3 ; U
-30F4 ; U
-30F5 ; Tu
-30F6 ; Tu
-30F7 ; U
-30F8 ; U
-30F9 ; U
-30FA ; U
-30FB ; U
-30FC ; Tr
-30FD ; U
-30FE ; U
-30FF ; U
-3100..3126 ; U
-3127 ; Tu
-3128..312F ; U
-3130..318F ; U
-3190..319F ; U
-31A0..31BF ; U
-31C0..31EF ; U
-31F0..31FF ; Tu
-3200..321E ; U
-321F..32FF ; U
-3300..3357 ; Tu
-3358..337A ; U
-337B..337F ; Tu
-3380..33FF ; U
-3400..4DBF ; U
-4DC0..4DFF ; U
-4E00..9FFF ; U
-A000..A48F ; U
-A490..A4CF ; U
-A4D0..A4FF ; R
-A500..A63F ; R
-A640..A69F ; R
-A6A0..A6FF ; R
-A700..A71F ; R
-A720..A7FF ; R
-A800..A82F ; R
-A830..A83F ; R
-A840..A87F ; R
-A880..A8DF ; R
-A8E0..A8FF ; R
-A900..A92F ; R
-A930..A95F ; R
-A960..A97F ; U
-A980..A9DF ; R
-A9E0..A9FF ; R
-AA00..AA5F ; R
-AA60..AA7F ; R
-AA80..AADF ; R
-AAE0..AAFF ; R
-AB00..AB2F ; R
-AB30..AB6F ; R
-AB70..ABBF ; R
-ABC0..ABFF ; R
-AC00..D7AF ; U
-D7B0..D7FF ; U
-D800..DFFF ; R
-E000..F8FF ; U
-F900..FAFF ; U
-FB00..FB4F ; R
-FB50..FDFF ; R
-FE00..FE0F ; R
-FE10 ; U
-FE11 ; U
-FE12 ; U
-FE13 ; U
-FE14 ; U
-FE15 ; U
-FE16 ; U
-FE17 ; U
-FE18 ; U
-FE19 ; U
-FE1A..FE1F ; U
-FE20..FE2F ; R
-FE30 ; U
-FE31 ; U
-FE32 ; U
-FE33 ; U
-FE34 ; U
-FE35 ; U
-FE36 ; U
-FE37 ; U
-FE38 ; U
-FE39 ; U
-FE3A ; U
-FE3B ; U
-FE3C ; U
-FE3D ; U
-FE3E ; U
-FE3F ; U
-FE40 ; U
-FE41 ; U
-FE42 ; U
-FE43 ; U
-FE44 ; U
-FE45 ; U
-FE46 ; U
-FE47 ; U
-FE48 ; U
-FE49 ; R
-FE4A ; R
-FE4B ; R
-FE4C ; R
-FE4D ; R
-FE4E ; R
-FE4F ; R
-FE50 ; Tu
-FE51 ; Tu
-FE52 ; Tu
-FE53 ; U
-FE54 ; U
-FE55 ; U
-FE56 ; U
-FE57 ; U
-FE58 ; R
-FE59 ; Tr
-FE5A ; Tr
-FE5B ; Tr
-FE5C ; Tr
-FE5D ; Tr
-FE5E ; Tr
-FE5F ; U
-FE60 ; U
-FE61 ; U
-FE62 ; U
-FE63 ; R
-FE64 ; R
-FE65 ; R
-FE66 ; R
-FE67 ; U
-FE68 ; U
-FE69 ; U
-FE6A ; U
-FE6B ; U
-FE6C..FE6F ; U
-FE70..FEFF ; R
-FF00 ; R
-FF01 ; Tu
-FF02 ; U
-FF03 ; U
-FF04 ; U
-FF05 ; U
-FF06 ; U
-FF07 ; U
-FF08 ; Tr
-FF09 ; Tr
-FF0A ; U
-FF0B ; U
-FF0C ; Tu
-FF0D ; R
-FF0E ; Tu
-FF0F ; U
-FF10 ; U
-FF11 ; U
-FF12 ; U
-FF13 ; U
-FF14 ; U
-FF15 ; U
-FF16 ; U
-FF17 ; U
-FF18 ; U
-FF19 ; U
-FF1A ; Tr
-FF1B ; Tr
-FF1C ; R
-FF1D ; R
-FF1E ; R
-FF1F ; Tu
-FF20 ; U
-FF21..FF3A ; U
-FF3B ; Tr
-FF3C ; U
-FF3D ; Tr
-FF3E ; U
-FF3F ; Tr
-FF40 ; U
-FF41..FF5A ; U
-FF5B ; Tr
-FF5C ; Tr
-FF5D ; Tr
-FF5E ; Tr
-FF5F ; Tr
-FF60 ; Tr
-FF61 ; R
-FF62 ; R
-FF63 ; R
-FF64 ; R
-FF65 ; R
-FF66 ; R
-FF67 ; R
-FF68 ; R
-FF69 ; R
-FF6A ; R
-FF6B ; R
-FF6C ; R
-FF6D ; R
-FF6E ; R
-FF6F ; R
-FF70 ; R
-FF71..FF9F ; R
-FFA0..FFDF ; R
-FFE0 ; U
-FFE1 ; U
-FFE2 ; U
-FFE3 ; Tr
-FFE4 ; U
-FFE5 ; U
-FFE6 ; U
-FFE7 ; U
-FFE8 ; R
-FFE9 ; R
-FFEA ; R
-FFEB ; R
-FFEC ; R
-FFED ; R
-FFEE ; R
-FFEF ; R
-FFF0..FFF8 ; U
-FFF9..FFFB ; R
-FFFC ; U
-FFFD ; U
-FFFE ; R
-FFFF ; R
-10000..1007F ; R
-10080..100FF ; R
-10100..1013F ; R
-10140..1018F ; R
-10190..101CF ; R
-101D0..101FF ; R
-10280..1029F ; R
-102A0..102DF ; R
-102E0..102FF ; R
-10300..1032F ; R
-10330..1034F ; R
-10350..1037F ; R
-10380..1039F ; R
-103A0..103DF ; R
-10400..1044F ; R
-10450..1047F ; R
-10480..104AF ; R
-104B0..104FF ; R
-10500..1052F ; R
-10530..1056F ; R
-10600..1077F ; R
-10800..1083F ; R
-10840..1085F ; R
-10860..1087F ; R
-10880..108AF ; R
-108E0..108FF ; R
-10900..1091F ; R
-10920..1093F ; R
-10980..1099F ; U
-109A0..109FF ; R
-10A00..10A5F ; R
-10A60..10A7F ; R
-10A80..10A9F ; R
-10AC0..10AFF ; R
-10B00..10B3F ; R
-10B40..10B5F ; R
-10B60..10B7F ; R
-10B80..10BAF ; R
-10C00..10C4F ; R
-10C80..10CFF ; R
-10E60..10E7F ; R
-11000..1107F ; R
-11080..110CF ; R
-110D0..110FF ; R
-11100..1114F ; R
-11150..1117F ; R
-11180..111DF ; R
-111E0..111FF ; R
-11200..1124F ; R
-11280..112AF ; R
-112B0..112FF ; R
-11300..1137F ; R
-11400..1147F ; R
-11480..114DF ; R
-11580..115FF ; U
-11600..1165F ; R
-11660..1167F ; R
-11680..116CF ; R
-11700..1173F ; R
-118A0..118FF ; R
-11AC0..11AFF ; R
-11C00..11C6F ; R
-11C70..11CBF ; R
-12000..123FF ; R
-12400..1247F ; R
-12480..1254F ; R
-13000..1342F ; U
-14400..1467F ; U
-16800..16A3F ; R
-16A40..16A6F ; R
-16AD0..16AFF ; R
-16B00..16B8F ; R
-16F00..16F9F ; R
-16FE0..16FFF ; U
-17000..187FF ; U
-18800..18AFF ; U
-1B000..1B0FF ; U
-1BC00..1BC9F ; R
-1BCA0..1BCAF ; R
-1D000..1D0FF ; U
-1D100..1D1FF ; U
-1D200..1D24F ; R
-1D300..1D35F ; U
-1D360..1D37F ; U
-1D400..1D7FF ; R
-1D800..1DAAF ; U
-1E000..1E02F ; R
-1E800..1E8DF ; R
-1E900..1E95F ; R
-1EE00..1EEFF ; R
-1F000..1F02F ; U
-1F030..1F09F ; U
-1F0A0..1F0FF ; U
-1F100..1F1FF ; U
-1F200 ; Tu
-1F201 ; Tu
-1F202..1F2FF ; U
-1F300..1F5FF ; U
-1F600..1F64F ; U
-1F650..1F67F ; U
-1F680..1F6FF ; U
-1F700..1F77F ; U
-1F780..1F7FF ; U
-1F800..1F8FF ; R
-1F900..1F9FF ; U
-20000..2A6DF ; U
-2A6E0..2A6FF ; U
-2A700..2B73F ; U
-2B740..2B81F ; U
-2B820..2CEAF ; U
-2CEB0..2F7FF ; U
-2F800..2FA1F ; U
-2FA20..2FFFD ; U
-30000..3FFFD ; U
-E0000..E007F ; R
-E0100..E01EF ; R
-F0000..FFFFD ; U
-100000..10FFFD ; U
-
-# EOF
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/unicode-data.js b/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/unicode-data.js
deleted file mode 100644
index b3135a72a85..00000000000
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/tools/generators/unicode-data.js
+++ /dev/null
@@ -1,170 +0,0 @@
-'use strict';
-
-module.exports = (function () {
- var fs = require("fs");
- var http = require("http");
- var path = require("path");
- var stream = require("stream");
- var url = require("url");
-
- var unicodeData = {
- url: {
- blocks: "http://www.unicode.org/Public/UCD/latest/ucd/Blocks.txt",
- gc: "http://www.unicode.org/Public/UCD/latest/ucd/extracted/DerivedGeneralCategory.txt",
- vo: "http://www.unicode.org/Public/vertical/revision-16/VerticalOrientation-16.txt",
- },
- get: function (source, formatter) {
- formatter = formatter || this.formatAsArray;
- var buffer = "";
- var parser = new stream.Writable();
- parser._write = function (chunk, encoding, next) {
- buffer += chunk;
- next();
- };
- var promise = new Promise(function(resolve, reject) {
- parser.on("finish", function () {
- var results = null;
- for (var line of buffer.split("\n"))
- results = unicodeData.parseLine(line, formatter, results);
- resolve(results);
- });
- });
- var basename = path.basename(url.parse(source).path);
- var local = "ucd/" + basename;
- if (fs.existsSync(local)) {
- fs.createReadStream(local)
- .pipe(parser);
- } else {
- http.get(source, function (res) {
- res.pipe(parser);
- });
- }
- return promise;
- },
- copyToLocal: function () {
- for (let key in unicodeData.url) {
- let source = unicodeData.url[key];
- let basename = path.basename(url.parse(source).path);
- let local = "ucd/" + basename;
- console.log(`Copying ${key}: ${source} to ${local}`);
- http.get(source, function (res) {
- res.pipe(fs.createWriteStream(local));
- console.log(`Done ${key}: ${source} to ${local}`);
- });
- }
- },
- parseLine: function (line, formatter, results) {
- if (!line.length || line[0] == "#")
- return results;
- var match = /([0-9A-F]+)(\.\.([0-9A-F]+))?\s*;\s*(\w+)/.exec(line);
- if (!match)
- throw new Error("Inavlid format: " + line);
- var from = parseInt(match[1], 16);
- var to = match[3] ? parseInt(match[3], 16) : from;
- var value = match[4];
- return formatter(results, from, to, value);
- },
- formatAsArray: function (results, from, to, value) {
- results = results || [];
- for (var code = from; code <= to; code++)
- results[code] = value;
- return results;
- },
- formatAsRangesByValue: function (results, from, to, value) {
- results = results || {};
- var list = results[value];
- if (!list) {
- list = [];
- results[value] = list;
- } else {
- var last = list[list.length - 1];
- if (last == from - 1) {
- list[list.length - 1] = to;
- return results;
- }
- }
- list.push(from);
- list.push(to);
- return results;
- },
- arrayFromRangesByValue: function (dict) {
- var array = [];
- for (var value in dict) {
- var ranges = dict[value];
- for (var i = 0; i < ranges.length; i += 2) {
- var to = ranges[i+1];
- for (var code = ranges[i]; code <= to; code++)
- array[code] = value;
- }
- }
- return array;
- },
- isSkipGeneralCategory: function (code, gc) {
- var gc0 = gc[code][0];
- // General Category M* and C* are omitted as they're likely to not render well
- return gc0 == "M" || gc0 == "C";
- },
- isCJKMiddle: function (code) {
- // To make tests smaller, omit some obvious ranges except the first and the last
- return code > 0x3400 && code < 0x4DB5 || // CJK Unified Ideographs Extension A
- code > 0x4E00 && code < 0x9FCC || // CJK Unified Ideographs (Han)
- code > 0xAC00 && code < 0xD7A3 || // Hangul Syllables
- code > 0x17000 && code < 0x187EC || // Tangut
- code > 0x18800 && code < 0x18AF2 || // Tangut Components
- code > 0x20000 && code < 0x2A6D6 || // CJK Unified Ideographs Extension B
- code > 0x2A700 && code < 0x2B734 || // CJK Unified Ideographs Extension C
- code > 0x2B740 && code < 0x2B81D || // CJK Unified Ideographs Extension D
- code > 0x2B820 && code < 0x2CEA1; // CJK Unified Ideographs Extension E
- },
- codePointsFromRanges: function (ranges, skipFunc) {
- var codePoints = [];
- for (var i = 0; i < ranges.length; i += 2) {
- var code = ranges[i];
- var to = ranges[i+1];
- for (; code <= to; code++) {
- if (code >= 0xD800 && code <= 0xDFFF) // Surrogate Pairs
- continue;
- if (skipFunc && skipFunc(code))
- continue;
- codePoints.push(code);
- }
- }
- return codePoints;
- },
- splitCodePoints: function (codePoints, values) {
- var results = [];
- var currentCodePoints = [];
- var currentValue = null;
- for (var code of codePoints) {
- var value = values[code];
- if (value != currentValue) {
- results.push([currentCodePoints, currentValue]);
- currentValue = value;
- currentCodePoints = [];
- }
- currentCodePoints.push(code);
- }
- if (currentCodePoints.length)
- results.push([currentCodePoints, currentValue]);
- return results.slice(1);
- },
- encodeUtf16: function (code, output) {
- if (code >= 0x10000) {
- code -= 0x10000;
- output.push(code >>> 10 & 0x3FF | 0xD800);
- code = 0xDC00 | code & 0x3FF;
- }
- output.push(code);
- },
- toHex: function (value) {
- return unicodeData.padZero(value.toString(16).toUpperCase(), 4);
- },
- padZero: function (value, digits) {
- if (value.length >= digits)
- return value;
- value = "0000" + value;
- return value.substr(value.length - digits);
- },
- };
- return unicodeData;
-})();
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/getBoundingClientRect-empty-inline.html b/tests/wpt/web-platform-tests/css/cssom-view/getBoundingClientRect-empty-inline.html
new file mode 100644
index 00000000000..443ded230f4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom-view/getBoundingClientRect-empty-inline.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-getboundingclientrect">
+<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+div {
+ font: 10px/1 Ahem;
+}
+.inline-block {
+ display: inline-block;
+ height: 100px;
+}
+</style>
+<body>
+ <div>
+ <span id="empty"></span>
+ <span class="inline-block"></span>
+ </div>
+<script>
+run(document.getElementById('empty'));
+function run(element) {
+ test(() => {
+ let rect = element.getBoundingClientRect();
+ let cb = element.parentElement;
+ let cb_rect = cb.getBoundingClientRect();
+ assert_equals(rect.y - cb_rect.y, 92, "y");
+ assert_equals(rect.height, 10, "height");
+ });
+}
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/interfaces.html b/tests/wpt/web-platform-tests/css/cssom-view/idlharness.html
index d3de0cfa595..d3de0cfa595 100644
--- a/tests/wpt/web-platform-tests/css/cssom-view/interfaces.html
+++ b/tests/wpt/web-platform-tests/css/cssom-view/idlharness.html
diff --git a/tests/wpt/web-platform-tests/css/cssom/interfaces.html b/tests/wpt/web-platform-tests/css/cssom/idlharness.html
index 3204fb8c7e7..3204fb8c7e7 100644
--- a/tests/wpt/web-platform-tests/css/cssom/interfaces.html
+++ b/tests/wpt/web-platform-tests/css/cssom/idlharness.html
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/interfaces.any.js b/tests/wpt/web-platform-tests/css/filter-effects/idlharness.any.js
index e7de16e8d62..e7de16e8d62 100644
--- a/tests/wpt/web-platform-tests/css/filter-effects/interfaces.any.js
+++ b/tests/wpt/web-platform-tests/css/filter-effects/idlharness.any.js
diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-001.html b/tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-001.html
index 0dad9ea7929..09878061267 100644
--- a/tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-001.html
+++ b/tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-001.html
@@ -7,7 +7,8 @@
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<meta name="flags" content="">
<meta name="assert" content="The 'aspect-ratio' property with prefix 'min' set '59/79' means that the minimum of ratio is '59/79',
-only and only if the value of the 'width' to the value of the 'height' is greater than value of 'min-aspect-ratio', the style sheet will be applied.">
+only and only if the value of the 'width' to the value of the 'height' is greater than value of 'min-aspect-ratio', the style sheet will be applied.
+The test runner will run this test in a 800/600 viewport (https://github.com/web-platform-tests/wpt/pull/12695).">
<style>
div {
background-color: red;
diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-003.html b/tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-003.html
index 76bebd70272..14868108ac4 100644
--- a/tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-003.html
+++ b/tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-003.html
@@ -6,7 +6,9 @@
<link rel="help" title="4.6. aspect-ratio" href="http://www.w3.org/TR/css3-mediaqueries/#aspect-ratio">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<meta name="flags" content="">
-<meta name="assert" content="The 'aspect-ratio' property with prefix 'max' set '1280/720' means that the maximum of ratio is '1280/720', only and only if the value of the 'width' to the value of the 'height' is lower than value of 'max-aspect-ratio', the style sheet will be applied.">
+<meta name="assert" content="The 'aspect-ratio' property with prefix 'max' set '1280/720' means that the maximum of ratio is '1280/720',
+only and only if the value of the 'width' to the value of the 'height' is lower than value of 'max-aspect-ratio', the style sheet will be applied.
+The test runner will run this test in a 800/600 viewport (https://github.com/web-platform-tests/wpt/pull/12695)">
<style>
div {
background-color: red;
diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-005.html b/tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-005.html
new file mode 100644
index 00000000000..2c9d9edcf76
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-005.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Media Queries Test: max-aspect-ratio - 1280.1/720.01 ('aspect-ratio' property with prefix 'max')</title>
+<link rel="author" title="Joel Olsson" href="mailto:joel_1st@hotmail.com">
+<link rel="help" title="aspect-ratio" href="https://drafts.csswg.org/mediaqueries-4/#aspect-ratio">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<meta name="flags" content="">
+<meta name="assert" content="The 'aspect-ratio' property with prefix 'max' set 1280.1/720.01. Only and only if the value of the 'width'
+to the value of the 'height' is lower than value of 'max-aspect-ratio', the style sheet will be applied.
+The test runner will run this test in a 800/600 viewport (https://github.com/web-platform-tests/wpt/pull/12695)">
+<style>
+ div {
+ background-color: red;
+ height: 100px;
+ width: 100px;
+ }
+ @media screen and (max-aspect-ratio: 1280.1/720.01) {
+ div {
+ background-color: green;
+ }
+ }
+</style>
+<body>
+ <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+ <div></div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-006.html b/tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-006.html
new file mode 100644
index 00000000000..188a65b7152
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-006.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Media Queries Test: min-aspect-ratio - 0.7 ('aspect-ratio' property with prefix 'min')</title>
+<link rel="author" title="Joel Olsson" href="mailto:joel_1st@hotmail.com">
+<link rel="help" title="aspect-ratio" href="https://drafts.csswg.org/mediaqueries-4/#aspect-ratio">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<meta name="flags" content="">
+<meta name="assert" content="The 'aspect-ratio' property with prefix 'min' set '0.7' means that the minimum of ratio is '0.7',
+only and only if the value of the 'width' to the value of the 'height' is greater than value of 'min-aspect-ratio', the style sheet will be applied.
+The test runner will run this test in a 800/600 viewport (https://github.com/web-platform-tests/wpt/pull/12695)">
+<style>
+ div {
+ background-color: red;
+ height: 100px;
+ width: 100px;
+ }
+ @media screen and (min-aspect-ratio: 0.2) {
+ div {
+ background-color: green;
+ }
+ }
+</style>
+<body>
+ <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+ <div></div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/test_media_queries.html b/tests/wpt/web-platform-tests/css/mediaqueries/test_media_queries.html
index d08d83c34fd..d368acf8b57 100644
--- a/tests/wpt/web-platform-tests/css/mediaqueries/test_media_queries.html
+++ b/tests/wpt/web-platform-tests/css/mediaqueries/test_media_queries.html
@@ -318,6 +318,11 @@ function run() {
expression_should_not_be_parseable(feature + ": -1/1");
expression_should_not_be_parseable(feature + ": 1/-1");
expression_should_not_be_parseable(feature + ": -1/-1");
+ expression_should_not_be_parseable(feature + ": -1/-1");
+ expression_should_not_be_parseable(feature + ": -1/-1");
+ expression_should_not_be_parseable(feature + ": invalid");
+ expression_should_not_be_parseable(feature + ": 1 / invalid");
+ expression_should_not_be_parseable(feature + ": 1 invalid");
}
var is_monochrome = query_applies("all and (min-monochrome: 1)");
diff --git a/tests/wpt/web-platform-tests/dom/ranges/StaticRange-constructor.html b/tests/wpt/web-platform-tests/dom/ranges/StaticRange-constructor.html
new file mode 100644
index 00000000000..55a969415ce
--- /dev/null
+++ b/tests/wpt/web-platform-tests/dom/ranges/StaticRange-constructor.html
@@ -0,0 +1,200 @@
+<!doctype html>
+<title>StaticRange constructor test</title>
+<link rel='author' title='Sanket Joshi' href='mailto:sajos@microsoft.com'>
+<div id='log'></div>
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<div id='testDiv'>abc<span>def</span>ghi</div>
+<script>
+'use strict';
+
+const testDiv = document.getElementById('testDiv');
+const testTextNode = testDiv.firstChild;
+const testPINode = document.createProcessingInstruction('foo', 'abc');
+const testCommentNode = document.createComment('abc');
+document.body.append(testPINode, testCommentNode);
+
+test(function() {
+ const staticRange = new StaticRange({startContainer: testDiv, startOffset: 1, endContainer: testDiv, endOffset: 2});
+ assert_equals(staticRange.startContainer, testDiv, 'valid startContainer');
+ assert_equals(staticRange.startOffset, 1, 'valid startOffset');
+ assert_equals(staticRange.endContainer, testDiv, 'valid endContainer');
+ assert_equals(staticRange.endOffset, 2, 'valid endOffset');
+ assert_false(staticRange.collapsed, 'not collapsed');
+}, 'Construct static range with Element container');
+
+test(function() {
+ const staticRange = new StaticRange({startContainer: testTextNode, startOffset: 1, endContainer: testTextNode, endOffset: 2});
+ assert_equals(staticRange.startContainer, testTextNode, 'valid startContainer');
+ assert_equals(staticRange.startOffset, 1, 'valid startOffset');
+ assert_equals(staticRange.endContainer, testTextNode, 'valid endContainer');
+ assert_equals(staticRange.endOffset, 2, 'valid endOffset');
+ assert_false(staticRange.collapsed, 'not collapsed');
+}, 'Construct static range with Text container');
+
+test(function() {
+ const staticRange = new StaticRange({startContainer: testDiv, startOffset: 0, endContainer: testTextNode, endOffset: 1});
+ assert_equals(staticRange.startContainer, testDiv, 'valid startContainer');
+ assert_equals(staticRange.startOffset, 0, 'valid startOffset');
+ assert_equals(staticRange.endContainer, testTextNode, 'valid endContainer');
+ assert_equals(staticRange.endOffset, 1, 'valid endOffset');
+ assert_false(staticRange.collapsed, 'not collapsed');
+}, 'Construct static range with Element startContainer and Text endContainer');
+
+test(function() {
+ const staticRange = new StaticRange({startContainer: testTextNode, startOffset: 0, endContainer: testDiv, endOffset: 3});
+ assert_equals(staticRange.startContainer, testTextNode, 'valid startContainer');
+ assert_equals(staticRange.startOffset, 0, 'valid startOffset');
+ assert_equals(staticRange.endContainer, testDiv, 'valid endContainer');
+ assert_equals(staticRange.endOffset, 3, 'valid endOffset');
+ assert_false(staticRange.collapsed, 'not collapsed');
+}, 'Construct static range with Text startContainer and Element endContainer');
+
+test(function() {
+ const staticRange = new StaticRange({startContainer: testPINode, startOffset: 1, endContainer: testPINode, endOffset: 2});
+ assert_equals(staticRange.startContainer, testPINode, 'valid startContainer');
+ assert_equals(staticRange.startOffset, 1, 'valid startOffset');
+ assert_equals(staticRange.endContainer, testPINode, 'valid endContainer');
+ assert_equals(staticRange.endOffset, 2, 'valid endOffset');
+ assert_false(staticRange.collapsed, 'not collapsed');
+}, 'Construct static range with ProcessingInstruction container');
+
+test(function() {
+ const staticRange = new StaticRange({startContainer: testCommentNode, startOffset: 1, endContainer: testCommentNode, endOffset: 2});
+ assert_equals(staticRange.startContainer, testCommentNode, 'valid startContainer');
+ assert_equals(staticRange.startOffset, 1, 'valid startOffset');
+ assert_equals(staticRange.endContainer, testCommentNode, 'valid endContainer');
+ assert_equals(staticRange.endOffset, 2, 'valid endOffset');
+ assert_false(staticRange.collapsed, 'not collapsed');
+}, 'Construct static range with Comment container');
+
+test(function() {
+ const xmlDoc = new DOMParser().parseFromString('<xml></xml>', 'application/xml');
+ const testCDATASection = xmlDoc.createCDATASection('abc');
+ const staticRange = new StaticRange({startContainer: testCDATASection, startOffset: 1, endContainer: testCDATASection, endOffset: 2});
+ assert_equals(staticRange.startContainer, testCDATASection, 'valid startContainer');
+ assert_equals(staticRange.startOffset, 1, 'valid startOffset');
+ assert_equals(staticRange.endContainer, testCDATASection, 'valid endContainer');
+ assert_equals(staticRange.endOffset, 2, 'valid endOffset');
+ assert_false(staticRange.collapsed, 'not collapsed');
+}, 'Construct static range with CDATASection container');
+
+test(function() {
+ const staticRange = new StaticRange({startContainer: document, startOffset: 0, endContainer: document, endOffset: 1});
+ assert_equals(staticRange.startContainer, document, 'valid startContainer');
+ assert_equals(staticRange.startOffset, 0, 'valid startOffset');
+ assert_equals(staticRange.endContainer, document, 'valid endContainer');
+ assert_equals(staticRange.endOffset, 1, 'valid endOffset');
+ assert_false(staticRange.collapsed, 'not collapsed');
+}, 'Construct static range with Document container');
+
+test(function() {
+ const testDocFrag = document.createDocumentFragment();
+ testDocFrag.append('a','b','c');
+ const staticRange = new StaticRange({startContainer: testDocFrag, startOffset: 0, endContainer: testDocFrag, endOffset: 1});
+ assert_equals(staticRange.startContainer, testDocFrag, 'valid startContainer');
+ assert_equals(staticRange.startOffset, 0, 'valid startOffset');
+ assert_equals(staticRange.endContainer, testDocFrag, 'valid endContainer');
+ assert_equals(staticRange.endOffset, 1, 'valid endOffset');
+ assert_false(staticRange.collapsed, 'not collapsed');
+}, 'Construct static range with DocumentFragment container');
+
+test(function() {
+ const staticRange = new StaticRange({startContainer: testDiv, startOffset: 0, endContainer: testDiv, endOffset: 0});
+ assert_equals(staticRange.startContainer, testDiv, 'valid startContainer');
+ assert_equals(staticRange.startOffset, 0, 'valid startOffset');
+ assert_equals(staticRange.endContainer, testDiv, 'valid endContainer');
+ assert_equals(staticRange.endOffset, 0, 'valid endOffset');
+ assert_true(staticRange.collapsed, 'collapsed');
+}, 'Construct collapsed static range');
+
+test(function() {
+ const staticRange = new StaticRange({startContainer: testDiv, startOffset: 1, endContainer: document.body, endOffset: 0});
+ assert_equals(staticRange.startContainer, testDiv, 'valid startContainer');
+ assert_equals(staticRange.startOffset, 1, 'valid startOffset');
+ assert_equals(staticRange.endContainer, document.body, 'valid endContainer');
+ assert_equals(staticRange.endOffset, 0, 'valid endOffset');
+ assert_false(staticRange.collapsed, 'not collapsed');
+}, 'Construct inverted static range');
+
+test(function() {
+ const staticRange = new StaticRange({startContainer: testDiv, startOffset: 0, endContainer: testDiv, endOffset: 15});
+ assert_equals(staticRange.startContainer, testDiv, 'valid startContainer');
+ assert_equals(staticRange.startOffset, 0, 'valid startOffset');
+ assert_equals(staticRange.endContainer, testDiv, 'valid endContainer');
+ assert_equals(staticRange.endOffset, 15, 'valid endOffset');
+ assert_false(staticRange.collapsed, 'not collapsed');
+}, 'Construct static range with offset greater than length');
+
+test(function() {
+ const testNode = document.createTextNode('abc');
+ const staticRange = new StaticRange({startContainer: testNode, startOffset: 1, endContainer: testNode, endOffset: 2});
+ assert_equals(staticRange.startContainer, testNode, 'valid startContainer');
+ assert_equals(staticRange.startOffset, 1, 'valid startOffset');
+ assert_equals(staticRange.endContainer, testNode, 'valid endContainer');
+ assert_equals(staticRange.endOffset, 2, 'valid endOffset');
+ assert_false(staticRange.collapsed, 'not collapsed');
+}, 'Construct static range with standalone Node container');
+
+test(function() {
+ const testRoot = document.createElement('div');
+ testRoot.append('a','b');
+ const staticRange = new StaticRange({startContainer: testDiv, startOffset: 1, endContainer: testRoot, endOffset: 2});
+ assert_equals(staticRange.startContainer, testDiv, 'valid startContainer');
+ assert_equals(staticRange.startOffset, 1, 'valid startOffset');
+ assert_equals(staticRange.endContainer, testRoot, 'valid endContainer');
+ assert_equals(staticRange.endOffset, 2, 'valid endOffset');
+ assert_false(staticRange.collapsed, 'not collapsed');
+}, 'Construct static range with endpoints in disconnected trees');
+
+test(function() {
+ const testDocNode = document.implementation.createDocument('about:blank', 'html', null);
+ const staticRange = new StaticRange({startContainer: document, startOffset: 0, endContainer: testDocNode.documentElement, endOffset: 0});
+ assert_equals(staticRange.startContainer, document, 'valid startContainer');
+ assert_equals(staticRange.startOffset, 0, 'valid startOffset');
+ assert_equals(staticRange.endContainer, testDocNode.documentElement, 'valid endContainer');
+ assert_equals(staticRange.endOffset, 0, 'valid endOffset');
+ assert_false(staticRange.collapsed, 'not collapsed');
+}, 'Construct static range with endpoints in disconnected documents');
+
+test(function() {
+ assert_throws('INVALID_NODE_TYPE_ERR', function() {
+ const staticRange = new StaticRange({startContainer: document.doctype, startOffset: 0, endContainer: document.doctype, endOffset: 0});
+ }, 'throw a InvalidNodeTypeError when a DocumentType is passed as a startContainer or endContainer');
+
+ assert_throws('INVALID_NODE_TYPE_ERR', function() {
+ const testAttrNode = testDiv.getAttributeNode('id');
+ const staticRange = new StaticRange({startContainer: testAttrNode, startOffset: 0, endContainer: testAttrNode, endOffset: 0});
+ }, 'throw a InvalidNodeTypeError when a Attr is passed as a startContainer or endContainer');
+}, 'Throw on DocumentType or Attr container');
+
+test(function () {
+ assert_throws({'name': 'TypeError'}, function () {
+ const staticRange = new StaticRange();
+ }, 'throw a TypeError when no argument is passed');
+
+ assert_throws({'name': 'TypeError'}, function () {
+ const staticRange = new StaticRange({startOffset: 0, endContainer: testDiv, endOffset: 0});
+ }, 'throw a TypeError when a startContainer is not passed');
+
+ assert_throws({'name': 'TypeError'}, function () {
+ const staticRange = new StaticRange({startContainer: testDiv, endContainer: testDiv, endOffset: 0});
+ }, 'throw a TypeError when a startOffset is not passed');
+
+ assert_throws({'name': 'TypeError'}, function () {
+ const staticRange = new StaticRange({startContainer: testDiv, startOffset: 0, endOffset: 0});
+ }, 'throw a TypeError when an endContainer is not passed');
+
+ assert_throws({'name': 'TypeError'}, function () {
+ const staticRange = new StaticRange({startContainer: testDiv, startOffset: 0, endContainer: testDiv});
+ }, 'throw a TypeError when an endOffset is not passed');
+
+ assert_throws({'name': 'TypeError'}, function () {
+ const staticRange = new StaticRange({startContainer: null, startOffset: 0, endContainer: testDiv, endOffset: 0});
+ }, 'throw a TypeError when a null startContainer is passed');
+
+ assert_throws({'name': 'TypeError'}, function () {
+ const staticRange = new StaticRange({startContainer: testDiv, startOffset: 0, endContainer: null, endOffset: 0});
+ }, 'throw a TypeError when a null endContainer is passed');
+}, 'Throw on missing or invalid arguments');
+</script>
diff --git a/tests/wpt/web-platform-tests/domparsing/interfaces.any.js b/tests/wpt/web-platform-tests/domparsing/idlharness.window.js
index 870c165b215..870c165b215 100644
--- a/tests/wpt/web-platform-tests/domparsing/interfaces.any.js
+++ b/tests/wpt/web-platform-tests/domparsing/idlharness.window.js
diff --git a/tests/wpt/web-platform-tests/element-timing/text-with-display-style.html b/tests/wpt/web-platform-tests/element-timing/text-with-display-style.html
new file mode 100644
index 00000000000..03939473be3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/element-timing/text-with-display-style.html
@@ -0,0 +1,56 @@
+<!DOCTYPE HTML>
+<meta charset=utf-8>
+<title>Element Timing: observe text with display style.</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/element-timing-helpers.js"></script>
+<style>
+h1 {
+ display: flex;
+}
+h2 {
+ display: grid;
+}
+h3 {
+ display: block;
+}
+</style>
+<h1 id='title1' elementtiming='h1'>I am h1</h1>
+<h2 id='title2' elementtiming='h2'>I am h2</h2>
+<h3 id='title3' elementtiming='h3'>I am h3</h3>
+<script>
+ async_test(function (t) {
+ if (!window.LargestContentfulPaint) {
+ assert_unreached("LargestContentfulPaint is not implemented");
+ }
+ const beforeRender = performance.now();
+ let observedFlex = false;
+ let observedGrid = false;
+ let observedBlock = false;
+ const observer = new PerformanceObserver(
+ t.step_func(function(entryList) {
+ entryList.getEntries().forEach(entry => {
+ if (entry.id === 'title1') {
+ assert_false(observedFlex, 'Should observe flex once');
+ observedFlex = true;
+ checkTextElement(entry, 'h1', 'title1', beforeRender, document.getElementById('title1'));
+ } else if (entry.id === 'title2') {
+ assert_false(observedGrid, 'Should observe grid once');
+ observedGrid = true;
+ checkTextElement(entry, 'h2', 'title2', beforeRender, document.getElementById('title2'));
+ } else {
+ assert_equals(entry.id, 'title3', 'ID should be title1, title2, or title3');
+ assert_false(observedBlock, 'Should observe block once');
+ observedBlock = true;
+ checkTextElement(entry, 'h3', 'title3', beforeRender, document.getElementById('title3'));
+ }
+ });
+ if (observedFlex && observedGrid && observedBlock)
+ t.done();
+ })
+ );
+ observer.observe({type: 'element', buffered: true});
+ }, 'Text with display style is observable.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/feature-policy/resources/featurepolicy.js b/tests/wpt/web-platform-tests/feature-policy/resources/featurepolicy.js
index 744c4c62069..9aba0ab8c67 100644
--- a/tests/wpt/web-platform-tests/feature-policy/resources/featurepolicy.js
+++ b/tests/wpt/web-platform-tests/feature-policy/resources/featurepolicy.js
@@ -251,6 +251,16 @@ function run_all_fp_tests_allow_all(
},
'Feature policy "' + feature_name +
'" can be disabled in cross-origin iframes using "allow" attribute.');
+
+ // 5. Blocked in same-origin iframe with "allow" attribute set to 'none'.
+ async_test(
+ t => {
+ test_feature_availability_with_post_message_result(
+ t, same_origin_frame_pathname, '#' + error_name,
+ feature_name + " 'none'");
+ },
+ 'Feature policy "' + feature_name +
+ '" can be disabled in same-origin iframes using "allow" attribute.');
}
// This function tests that a given policy allows each feature for the correct
diff --git a/tests/wpt/web-platform-tests/fetch/api/idl.any.js b/tests/wpt/web-platform-tests/fetch/api/idlharness.any.js
index ccd4d2c0b46..ccd4d2c0b46 100644
--- a/tests/wpt/web-platform-tests/fetch/api/idl.any.js
+++ b/tests/wpt/web-platform-tests/fetch/api/idlharness.any.js
diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/document-access/document_access_feature_policy.tentative.sub.html b/tests/wpt/web-platform-tests/html/browsers/windows/document-access/document_access_feature_policy.tentative.sub.html
new file mode 100644
index 00000000000..2b3f512e381
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/browsers/windows/document-access/document_access_feature_policy.tentative.sub.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<body>
+ <script src=/resources/testharness.js></script>
+ <script src=/resources/testharnessreport.js></script>
+ <script src=/feature-policy/resources/featurepolicy.js></script>
+ <script>
+ run_all_fp_tests_allow_all(
+ 'http://{{domains[www]}}:{{ports[http][0]}}',
+ 'document-access',
+ 'SecurityError',
+ () => {
+ return new Promise((resolve, reject) => {
+ try {
+ var iframe = document.createElement('iframe');
+ iframe.srcdoc ="<p>same origin iframe</p>";
+ document.documentElement.append(iframe);
+
+ // attempt to access something in a same origin iframe that would
+ // should be prevented by the feature policy.
+ iframe.contentWindow.location.href;
+ resolve();
+ } catch(e) {
+ reject(e);
+ }
+ });
+ });
+ </script>
+</body>
diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/document-access/document_access_parent_access.tentative.html b/tests/wpt/web-platform-tests/html/browsers/windows/document-access/document_access_parent_access.tentative.html
new file mode 100644
index 00000000000..9a06d1beb4a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/browsers/windows/document-access/document_access_parent_access.tentative.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<body>
+ <script src=/resources/testharness.js></script>
+ <script src=/resources/testharnessreport.js></script>
+ <iframe allow="document-access 'none'" src="resources/child.html"></iframe>
+ <script>
+ async_test(function (t) {
+ // Ensure post message works correctly.
+ window.onmessage = t.step_func((e) => {
+ if (e.data == 'load') {
+ frames[0].postMessage('ping');
+ } else if (e.data == 'pong') {
+ t.done();
+ }
+ });
+ try {
+ // Test that the parent is not allowed to access the child either.
+ frames[0].alert;
+ assert_unreachable('Security Error should have been thrown');
+ } catch(e) {
+ assert_equals(e.name, 'SecurityError', 'Security Error thrown');
+ }
+ });
+ </script>
+</body>
diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/document-access/resources/child.html b/tests/wpt/web-platform-tests/html/browsers/windows/document-access/resources/child.html
new file mode 100644
index 00000000000..614b6a087dd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/browsers/windows/document-access/resources/child.html
@@ -0,0 +1,6 @@
+<script>
+ parent.postMessage('load');
+ window.onmessage = (e) => {
+ parent.postMessage('pong');
+ };
+</script>
diff --git a/tests/wpt/web-platform-tests/html/dom/interfaces.https.html b/tests/wpt/web-platform-tests/html/dom/idlharness.https.html
index 0d3f1160d28..0d3f1160d28 100644
--- a/tests/wpt/web-platform-tests/html/dom/interfaces.https.html
+++ b/tests/wpt/web-platform-tests/html/dom/idlharness.https.html
diff --git a/tests/wpt/web-platform-tests/html/dom/interfaces.worker.js b/tests/wpt/web-platform-tests/html/dom/idlharness.worker.js
index b720d54f3d9..b720d54f3d9 100644
--- a/tests/wpt/web-platform-tests/html/dom/interfaces.worker.js
+++ b/tests/wpt/web-platform-tests/html/dom/idlharness.worker.js
diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/resets.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/resets.html
new file mode 100644
index 00000000000..ae4da454014
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/resets.html
@@ -0,0 +1,130 @@
+<!doctype html>
+<title>default style resets</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+/* Have some non-initial values on the parent so we can tell the difference whether the UA stylesheet uses 'initial' keyword. */
+#tests, #refs {
+ letter-spacing: 5px;
+ word-spacing: 5px;
+ line-height: 5px;
+ text-transform: uppercase;
+ text-indent: 5px;
+ text-shadow: 0 0 5px transparent;
+ text-align: right;
+}
+</style>
+<style>
+/* Specify this bogus namespace, so the rules in this stylesheet only apply to the `fakeClone`d elements in #refs, not the HTML elements in #tests. */
+@namespace url(urn:not-html);
+
+input, select, button, textarea {
+ letter-spacing: initial;
+ word-spacing: initial;
+ line-height: initial;
+ text-transform: initial;
+ text-indent: initial;
+ text-shadow: initial;
+}
+input, select, textarea {
+ text-align: initial;
+}
+input[type=reset i], input[type=button i], input[type=submit i], button {
+ text-align: center;
+}
+marquee {
+ text-align: initial;
+}
+table {
+ text-indent: initial;
+}
+</style>
+
+<div id="tests">
+ <input type="hidden">
+ <input type="text">
+ <input type="search">
+ <input type="tel">
+ <input type="url">
+ <input type="email">
+ <input type="password">
+ <input type="date">
+ <input type="month">
+ <input type="week">
+ <input type="time">
+ <input type="datetime-local">
+ <input type="number">
+ <input type="range">
+ <input type="color">
+ <input type="checkbox">
+ <input type="radio">
+ <input type="file">
+ <input type="submit">
+ <input type="image">
+ <input type="reset">
+ <input type="button">
+ <select><optgroup><option></select>
+ <select multiple></select>
+ <optgroup></optgroup>
+ <option></option>
+ <button></button>
+ <textarea></textarea>
+ <table><tbody><tr><td></table>
+ <marquee></marquee>
+</div>
+
+<div id="refs"></div>
+
+<script>
+ const props = ['letter-spacing',
+ 'word-spacing',
+ 'line-height',
+ 'text-transform',
+ 'text-indent',
+ 'text-shadow',
+ 'text-align'];
+ const refs = document.getElementById('refs');
+ for (const el of document.querySelectorAll('#tests > *')) {
+ const clone = fakeClone(el);
+ refs.append(clone);
+ }
+ const testsContainer = document.getElementById('tests');
+ const testEls = document.querySelectorAll('#tests *');
+ const refEls = document.querySelectorAll('#refs *');
+ for (let i = 0; i < testEls.length; ++i) {
+ const testEl = testEls[i];
+ const refEl = refEls[i];
+ const testStyle = getComputedStyle(testEl);
+ const refStyle = getComputedStyle(refEl);
+ for (const prop of props) {
+ test(() => {
+ assert_equals(testStyle.getPropertyValue(prop), refStyle.getPropertyValue(prop));
+ }, `${testNameContext(testEl)} - ${prop}`);
+ }
+ }
+
+ function fakeClone(el) {
+ const clone = document.createElementNS('urn:not-html', el.localName);
+ for (const att of el.attributes) {
+ clone.setAttributeNS(att.namespaceURI, att.name, att.value);
+ }
+ // deep clone
+ for (const child of el.children) {
+ clone.append(fakeClone(child));
+ }
+ return clone;
+ }
+
+ function testNameContext(el) {
+ const outerHTML = el.outerHTML;
+ const startTags = outerHTML.substring(0, outerHTML.indexOf('</')) || outerHTML;
+
+ let ancestors = [];
+ let current = el.parentNode;
+ while (current != testsContainer) {
+ ancestors.unshift(current.localName);
+ current = current.parentNode;
+ }
+ return startTags + (ancestors.length ? ` (in ${ancestors.join(' > ')})` : '');
+ }
+</script>
diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/text-transform-ref.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/text-transform-ref.html
new file mode 100644
index 00000000000..5dc26a78dbb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/text-transform-ref.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+</head>
+<body>
+ <span>THIS TEXT SHOULD BE UPPER-CASE.</span><br />
+
+ <input type="text" value="this text should be lower-case."><br />
+
+ <select>
+ <option>this text should be lower-case.</option>
+ </select><br />
+ <select multiple>
+ <option>this text should be lower-case.</option>
+ </select><br />
+ <select multiple>
+ <optgroup label="this text should be lower-case.">
+ <option>this text should be lower-case.</option>
+ </optgroup>
+ </select><br />
+
+ <select>
+ <option>THIS TEXT SHOULD BE UPPER-CASE.</option>
+ </select><br />
+ <select multiple>
+ <option>THIS TEXT SHOULD BE UPPER-CASE.</option>
+ </select><br />
+ <select multiple>
+ <optgroup label="THIS TEXT SHOULD BE UPPER-CASE.">
+ <option>THIS TEXT SHOULD BE UPPER-CASE.</option>
+ </optgroup>
+ </select><br />
+
+ <button>this text should be lower-case.</button><br />
+
+ <textarea>this text should be lower-case.</textarea><br />
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/text-transform.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/text-transform.html
new file mode 100644
index 00000000000..f57f0929823
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/form-controls/text-transform.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <link rel="match" href="text-transform-ref.html">
+</head>
+<body style="text-transform: uppercase;">
+ <span>this text should be upper-case.</span><br />
+
+ <input type="text" value="this text should be lower-case."><br />
+
+ <select>
+ <option>this text should be lower-case.</option>
+ </select><br />
+ <select multiple>
+ <option>this text should be lower-case.</option>
+ </select><br />
+ <select multiple>
+ <optgroup label="this text should be lower-case.">
+ <option>this text should be lower-case.</option>
+ </optgroup>
+ </select><br />
+
+ <select style="text-transform: uppercase;">
+ <option>this text should be upper-case.</option>
+ </select><br />
+ <select multiple style="text-transform: uppercase;">
+ <option>this text should be upper-case.</option>
+ </select><br />
+ <select multiple style="text-transform: uppercase;">
+ <optgroup label="this text should be upper-case.">
+ <option>this text should be upper-case.</option>
+ </optgroup>
+ </select><br />
+
+ <button>this text should be lower-case.</button><br />
+
+ <textarea>this text should be lower-case.</textarea><br />
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/srcdoc_change_hash.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/srcdoc_change_hash.html
new file mode 100644
index 00000000000..457a07f9e2f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/srcdoc_change_hash.html
@@ -0,0 +1,73 @@
+<!--
+ Test same-document navigation inside an srcdoc iframe using location.hash
+-->
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script>
+ async function test() {
+ // Wait until 'document' is available.
+ await new Promise(resolve => window.addEventListener('load', resolve));
+
+ // Create an iframe, wait until is is loaded.
+ let iframe = document.createElement('iframe');
+ await new Promise(resolve => {
+ iframe.srcdoc = "srcdoc document";
+ iframe.onload = resolve;
+ document.body.appendChild(iframe);
+ });
+
+ assert_equals(iframe.contentDocument.body.innerText, "srcdoc document");
+ assert_equals(iframe.contentWindow.location.href, "about:srcdoc");
+
+ function iframeHashChanged() {
+ return new Promise(resolve => {
+ iframe.contentWindow.onhashchange = resolve;
+ })
+ }
+
+ // 1) hash = "1".
+ {
+ let hash_changed = iframeHashChanged();
+ await test_driver.bless("hash = '1'", () => {
+ iframe.contentWindow.location.hash = "1";
+ });
+ await hash_changed;
+ assert_equals(iframe.contentWindow.location.href, "about:srcdoc#1");
+ }
+
+ // 2) hash = "2".
+ {
+ let hash_changed = iframeHashChanged();
+ await test_driver.bless("hash = '2'", () => {
+ iframe.contentWindow.location.hash = "2";
+ });
+ await hash_changed;
+ assert_equals(iframe.contentWindow.location.href, "about:srcdoc#2");
+ }
+
+ // 3) history.back().
+ {
+ let hash_changed = iframeHashChanged();
+ await test_driver.bless("history.back()", () => {
+ history.back();
+ });
+ await hash_changed;
+ assert_equals(iframe.contentWindow.location.href, "about:srcdoc#1");
+ }
+
+ // 4) history.forward().
+ {
+ let hash_changed = iframeHashChanged();
+ await test_driver.bless("history.forward()", () => {
+ history.forward();
+ });
+ await hash_changed;
+ assert_equals(iframe.contentWindow.location.href, "about:srcdoc#2");
+ }
+
+ done();
+ }
+ test();
+</script>
diff --git a/tests/wpt/web-platform-tests/interfaces/css-fonts.idl b/tests/wpt/web-platform-tests/interfaces/css-fonts.idl
index d9e6d21d4ed..42e88e46c54 100644
--- a/tests/wpt/web-platform-tests/interfaces/css-fonts.idl
+++ b/tests/wpt/web-platform-tests/interfaces/css-fonts.idl
@@ -10,7 +10,9 @@ interface CSSFontFaceRule : CSSRule {
partial interface CSSRule { const unsigned short FONT_FEATURE_VALUES_RULE = 14;
};
-interface CSSFontFeatureValuesRule : CSSRule { attribute CSSOMString fontFamily;
+[Exposed=Window]
+interface CSSFontFeatureValuesRule : CSSRule {
+ attribute CSSOMString fontFamily;
readonly attribute CSSFontFeatureValuesMap annotation;
readonly attribute CSSFontFeatureValuesMap ornaments;
readonly attribute CSSFontFeatureValuesMap stylistic;
@@ -19,15 +21,16 @@ interface CSSFontFeatureValuesRule : CSSRule { attribute CSSOMString fontFamily
readonly attribute CSSFontFeatureValuesMap styleset;
};
+[Exposed=Window]
interface CSSFontFeatureValuesMap {
maplike<CSSOMString, sequence<unsigned long>>;
void set(CSSOMString featureValueName,
(unsigned long or sequence<unsigned long>) values);
};
-partial interface CSSRule {
- const unsigned short FONT_PALETTE_VALUES_RULE = 15;
+partial interface CSSRule { const unsigned short FONT_PALETTE_VALUES_RULE = 15;
};
+[Exposed=Window]
interface CSSFontPaletteValuesRule : CSSRule {
maplike<unsigned long, CSSOMString>;
attribute CSSOMString fontFamily;
diff --git a/tests/wpt/web-platform-tests/interfaces/dom.idl b/tests/wpt/web-platform-tests/interfaces/dom.idl
index 285e5f00b87..91157033c82 100644
--- a/tests/wpt/web-platform-tests/interfaces/dom.idl
+++ b/tests/wpt/web-platform-tests/interfaces/dom.idl
@@ -441,7 +441,15 @@ interface AbstractRange {
readonly attribute boolean collapsed;
};
-[Exposed=Window]
+dictionary StaticRangeInit {
+ required Node startContainer;
+ required unsigned long startOffset;
+ required Node endContainer;
+ required unsigned long endOffset;
+};
+
+[Constructor(StaticRangeInit init),
+ Exposed=Window]
interface StaticRange : AbstractRange {
};
diff --git a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
index ff28d84de3d..76ed6f0d959 100644
--- a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
+++ b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
@@ -23,7 +23,7 @@ interface NDEFRecord {
USVString? toText();
[NewObject] ArrayBuffer? toArrayBuffer();
- [NewObject] object? toJSON();
+ [NewObject] any toJSON();
};
dictionary NDEFRecordInit {
diff --git a/tests/wpt/web-platform-tests/interfaces/webaudio.idl b/tests/wpt/web-platform-tests/interfaces/webaudio.idl
index 19d80789423..1b6af25b3b3 100644
--- a/tests/wpt/web-platform-tests/interfaces/webaudio.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webaudio.idl
@@ -193,7 +193,7 @@ interface AudioScheduledSourceNode : AudioNode {
};
[Exposed=Window,
- Constructor (BaseAudioContext context, optional AnalyserOptions options)]
+ Constructor (BaseAudioContext context, optional AnalyserOptions options = {})]
interface AnalyserNode : AudioNode {
void getFloatFrequencyData (Float32Array array);
void getByteFrequencyData (Uint8Array array);
@@ -214,7 +214,7 @@ dictionary AnalyserOptions : AudioNodeOptions {
};
[Exposed=Window,
- Constructor (BaseAudioContext context, optional AudioBufferSourceOptions options)]
+ Constructor (BaseAudioContext context, optional AudioBufferSourceOptions options = {})]
interface AudioBufferSourceNode : AudioScheduledSourceNode {
attribute AudioBuffer? buffer;
readonly attribute AudioParam playbackRate;
@@ -282,7 +282,7 @@ enum BiquadFilterType {
};
[Exposed=Window,
- Constructor (BaseAudioContext context, optional BiquadFilterOptions options)]
+ Constructor (BaseAudioContext context, optional BiquadFilterOptions options = {})]
interface BiquadFilterNode : AudioNode {
attribute BiquadFilterType type;
readonly attribute AudioParam frequency;
@@ -301,7 +301,7 @@ dictionary BiquadFilterOptions : AudioNodeOptions {
};
[Exposed=Window,
- Constructor (BaseAudioContext context, optional ChannelMergerOptions options)]
+ Constructor (BaseAudioContext context, optional ChannelMergerOptions options = {})]
interface ChannelMergerNode : AudioNode {
};
@@ -310,7 +310,7 @@ dictionary ChannelMergerOptions : AudioNodeOptions {
};
[Exposed=Window,
- Constructor (BaseAudioContext context, optional ChannelSplitterOptions options)]
+ Constructor (BaseAudioContext context, optional ChannelSplitterOptions options = {})]
interface ChannelSplitterNode : AudioNode {
};
@@ -319,7 +319,7 @@ dictionary ChannelSplitterOptions : AudioNodeOptions {
};
[Exposed=Window,
- Constructor (BaseAudioContext context, optional ConstantSourceOptions options)]
+ Constructor (BaseAudioContext context, optional ConstantSourceOptions options = {})]
interface ConstantSourceNode : AudioScheduledSourceNode {
readonly attribute AudioParam offset;
};
@@ -329,7 +329,7 @@ dictionary ConstantSourceOptions {
};
[Exposed=Window,
- Constructor (BaseAudioContext context, optional ConvolverOptions options)]
+ Constructor (BaseAudioContext context, optional ConvolverOptions options = {})]
interface ConvolverNode : AudioNode {
attribute AudioBuffer? buffer;
attribute boolean normalize;
@@ -341,7 +341,7 @@ dictionary ConvolverOptions : AudioNodeOptions {
};
[Exposed=Window,
- Constructor (BaseAudioContext context, optional DelayOptions options)]
+ Constructor (BaseAudioContext context, optional DelayOptions options = {})]
interface DelayNode : AudioNode {
readonly attribute AudioParam delayTime;
};
@@ -352,7 +352,7 @@ dictionary DelayOptions : AudioNodeOptions {
};
[Exposed=Window,
- Constructor (BaseAudioContext context, optional DynamicsCompressorOptions options)]
+ Constructor (BaseAudioContext context, optional DynamicsCompressorOptions options = {})]
interface DynamicsCompressorNode : AudioNode {
readonly attribute AudioParam threshold;
readonly attribute AudioParam knee;
@@ -371,7 +371,7 @@ dictionary DynamicsCompressorOptions : AudioNodeOptions {
};
[Exposed=Window,
- Constructor (BaseAudioContext context, optional GainOptions options)]
+ Constructor (BaseAudioContext context, optional GainOptions options = {})]
interface GainNode : AudioNode {
readonly attribute AudioParam gain;
};
@@ -402,7 +402,7 @@ dictionary MediaElementAudioSourceOptions {
};
[Exposed=Window,
- Constructor (AudioContext context, optional AudioNodeOptions options)]
+ Constructor (AudioContext context, optional AudioNodeOptions options = {})]
interface MediaStreamAudioDestinationNode : AudioNode {
readonly attribute MediaStream stream;
};
@@ -435,7 +435,7 @@ enum OscillatorType {
};
[Exposed=Window,
- Constructor (BaseAudioContext context, optional OscillatorOptions options)]
+ Constructor (BaseAudioContext context, optional OscillatorOptions options = {})]
interface OscillatorNode : AudioScheduledSourceNode {
attribute OscillatorType type;
readonly attribute AudioParam frequency;
@@ -462,7 +462,7 @@ enum DistanceModelType {
};
[Exposed=Window,
- Constructor (BaseAudioContext context, optional PannerOptions options)]
+ Constructor (BaseAudioContext context, optional PannerOptions options = {})]
interface PannerNode : AudioNode {
attribute PanningModelType panningModel;
readonly attribute AudioParam positionX;
@@ -500,7 +500,7 @@ dictionary PannerOptions : AudioNodeOptions {
};
[Exposed=Window,
- Constructor (BaseAudioContext context, optional PeriodicWaveOptions options)]
+ Constructor (BaseAudioContext context, optional PeriodicWaveOptions options = {})]
interface PeriodicWave {
};
@@ -520,7 +520,7 @@ interface ScriptProcessorNode : AudioNode {
};
[Exposed=Window,
- Constructor (BaseAudioContext context, optional StereoPannerOptions options)]
+ Constructor (BaseAudioContext context, optional StereoPannerOptions options = {})]
interface StereoPannerNode : AudioNode {
readonly attribute AudioParam pan;
};
@@ -536,7 +536,7 @@ enum OverSampleType {
};
[Exposed=Window,
- Constructor (BaseAudioContext context, optional WaveShaperOptions options)]
+ Constructor (BaseAudioContext context, optional WaveShaperOptions options = {})]
interface WaveShaperNode : AudioNode {
attribute Float32Array? curve;
attribute OverSampleType oversample;
@@ -569,7 +569,7 @@ interface AudioParamMap {
[Exposed=Window,
SecureContext,
Constructor (BaseAudioContext context, DOMString name,
- optional AudioWorkletNodeOptions options)]
+ optional AudioWorkletNodeOptions options = {})]
interface AudioWorkletNode : AudioNode {
readonly attribute AudioParamMap parameters;
readonly attribute MessagePort port;
@@ -585,7 +585,7 @@ dictionary AudioWorkletNodeOptions : AudioNodeOptions {
};
[Exposed=AudioWorklet,
-Constructor (optional AudioWorkletNodeOptions options)]
+Constructor (optional AudioWorkletNodeOptions options = {})]
interface AudioWorkletProcessor {
readonly attribute MessagePort port;
};
diff --git a/tests/wpt/web-platform-tests/interfaces/webauthn.idl b/tests/wpt/web-platform-tests/interfaces/webauthn.idl
index 67fd504a54e..cf86a25b101 100644
--- a/tests/wpt/web-platform-tests/interfaces/webauthn.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webauthn.idl
@@ -30,7 +30,7 @@ interface AuthenticatorResponse {
[SecureContext, Exposed=Window]
interface AuthenticatorAttestationResponse : AuthenticatorResponse {
[SameObject] readonly attribute ArrayBuffer attestationObject;
- sequence<AuthenticatorTransport> getTransports();
+ sequence<DOMString> getTransports();
};
[SecureContext, Exposed=Window]
@@ -135,14 +135,15 @@ enum PublicKeyCredentialType {
dictionary PublicKeyCredentialDescriptor {
required PublicKeyCredentialType type;
required BufferSource id;
- sequence<AuthenticatorTransport> transports;
+ sequence<DOMString> transports;
};
enum AuthenticatorTransport {
"usb",
"nfc",
"ble",
- "internal"
+ "internal",
+ "lightning"
};
typedef long COSEAlgorithmIdentifier;
diff --git a/tests/wpt/web-platform-tests/interfaces/webgl1.idl b/tests/wpt/web-platform-tests/interfaces/webgl1.idl
index 8fb5e01b044..5edd66e21d0 100644
--- a/tests/wpt/web-platform-tests/interfaces/webgl1.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webgl1.idl
@@ -537,10 +537,6 @@ interface mixin WebGLRenderingContextBase
void blendFuncSeparate(GLenum srcRGB, GLenum dstRGB,
GLenum srcAlpha, GLenum dstAlpha);
- void bufferData(GLenum target, GLsizeiptr size, GLenum usage);
- void bufferData(GLenum target, [AllowShared] BufferSource? data, GLenum usage);
- void bufferSubData(GLenum target, GLintptr offset, [AllowShared] BufferSource data);
-
[WebGLHandlesContextLoss] GLenum checkFramebufferStatus(GLenum target);
void clear(GLbitfield mask);
void clearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
@@ -549,14 +545,6 @@ interface mixin WebGLRenderingContextBase
void colorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
void compileShader(WebGLShader shader);
- void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat,
- GLsizei width, GLsizei height, GLint border,
- [AllowShared] ArrayBufferView data);
- void compressedTexSubImage2D(GLenum target, GLint level,
- GLint xoffset, GLint yoffset,
- GLsizei width, GLsizei height, GLenum format,
- [AllowShared] ArrayBufferView data);
-
void copyTexImage2D(GLenum target, GLint level, GLenum internalformat,
GLint x, GLint y, GLsizei width, GLsizei height,
GLint border);
@@ -646,9 +634,6 @@ interface mixin WebGLRenderingContextBase
void pixelStorei(GLenum pname, GLint param);
void polygonOffset(GLfloat factor, GLfloat units);
- void readPixels(GLint x, GLint y, GLsizei width, GLsizei height,
- GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
-
void renderbufferStorage(GLenum target, GLenum internalformat,
GLsizei width, GLsizei height);
void sampleCoverage(GLclampf value, GLboolean invert);
@@ -663,21 +648,9 @@ interface mixin WebGLRenderingContextBase
void stencilOp(GLenum fail, GLenum zfail, GLenum zpass);
void stencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
- void texImage2D(GLenum target, GLint level, GLint internalformat,
- GLsizei width, GLsizei height, GLint border, GLenum format,
- GLenum type, [AllowShared] ArrayBufferView? pixels);
- void texImage2D(GLenum target, GLint level, GLint internalformat,
- GLenum format, GLenum type, TexImageSource source); // May throw DOMException
-
void texParameterf(GLenum target, GLenum pname, GLfloat param);
void texParameteri(GLenum target, GLenum pname, GLint param);
- void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
- GLsizei width, GLsizei height,
- GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
- void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
- GLenum format, GLenum type, TexImageSource source); // May throw DOMException
-
void uniform1f(WebGLUniformLocation? location, GLfloat x);
void uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y);
void uniform3f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z);
@@ -688,20 +661,6 @@ interface mixin WebGLRenderingContextBase
void uniform3i(WebGLUniformLocation? location, GLint x, GLint y, GLint z);
void uniform4i(WebGLUniformLocation? location, GLint x, GLint y, GLint z, GLint w);
- void uniform1fv(WebGLUniformLocation? location, Float32List v);
- void uniform2fv(WebGLUniformLocation? location, Float32List v);
- void uniform3fv(WebGLUniformLocation? location, Float32List v);
- void uniform4fv(WebGLUniformLocation? location, Float32List v);
-
- void uniform1iv(WebGLUniformLocation? location, Int32List v);
- void uniform2iv(WebGLUniformLocation? location, Int32List v);
- void uniform3iv(WebGLUniformLocation? location, Int32List v);
- void uniform4iv(WebGLUniformLocation? location, Int32List v);
-
- void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
- void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
- void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
-
void useProgram(WebGLProgram? program);
void validateProgram(WebGLProgram program);
@@ -721,15 +680,60 @@ interface mixin WebGLRenderingContextBase
void viewport(GLint x, GLint y, GLsizei width, GLsizei height);
};
+interface mixin WebGLRenderingContextOverloads
+{
+ void bufferData(GLenum target, GLsizeiptr size, GLenum usage);
+ void bufferData(GLenum target, [AllowShared] BufferSource? data, GLenum usage);
+ void bufferSubData(GLenum target, GLintptr offset, [AllowShared] BufferSource data);
+
+ void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat,
+ GLsizei width, GLsizei height, GLint border,
+ [AllowShared] ArrayBufferView data);
+ void compressedTexSubImage2D(GLenum target, GLint level,
+ GLint xoffset, GLint yoffset,
+ GLsizei width, GLsizei height, GLenum format,
+ [AllowShared] ArrayBufferView data);
+
+ void readPixels(GLint x, GLint y, GLsizei width, GLsizei height,
+ GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
+
+ void texImage2D(GLenum target, GLint level, GLint internalformat,
+ GLsizei width, GLsizei height, GLint border, GLenum format,
+ GLenum type, [AllowShared] ArrayBufferView? pixels);
+ void texImage2D(GLenum target, GLint level, GLint internalformat,
+ GLenum format, GLenum type, TexImageSource source); // May throw DOMException
+
+ void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
+ GLsizei width, GLsizei height,
+ GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
+ void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
+ GLenum format, GLenum type, TexImageSource source); // May throw DOMException
+
+ void uniform1fv(WebGLUniformLocation? location, Float32List v);
+ void uniform2fv(WebGLUniformLocation? location, Float32List v);
+ void uniform3fv(WebGLUniformLocation? location, Float32List v);
+ void uniform4fv(WebGLUniformLocation? location, Float32List v);
+
+ void uniform1iv(WebGLUniformLocation? location, Int32List v);
+ void uniform2iv(WebGLUniformLocation? location, Int32List v);
+ void uniform3iv(WebGLUniformLocation? location, Int32List v);
+ void uniform4iv(WebGLUniformLocation? location, Int32List v);
+
+ void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
+ void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
+ void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value);
+};
+
[Exposed=(Window,Worker)]
interface WebGLRenderingContext
{
};
WebGLRenderingContext includes WebGLRenderingContextBase;
+WebGLRenderingContext includes WebGLRenderingContextOverloads;
[Exposed=(Window,Worker),
Constructor(DOMString type,
- optional WebGLContextEventInit eventInit)]
+ optional WebGLContextEventInit eventInit = {})]
interface WebGLContextEvent : Event {
readonly attribute DOMString statusMessage;
};
diff --git a/tests/wpt/web-platform-tests/interfaces/webgl2.idl b/tests/wpt/web-platform-tests/interfaces/webgl2.idl
index 11d0d8c2a3b..be9365e3893 100644
--- a/tests/wpt/web-platform-tests/interfaces/webgl2.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webgl2.idl
@@ -177,8 +177,6 @@ interface mixin WebGL2RenderingContextBase
const GLenum FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216;
const GLenum FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217;
const GLenum FRAMEBUFFER_DEFAULT = 0x8218;
- const GLenum DEPTH_STENCIL_ATTACHMENT = 0x821A;
- const GLenum DEPTH_STENCIL = 0x84F9;
const GLenum UNSIGNED_INT_24_8 = 0x84FA;
const GLenum DEPTH24_STENCIL8 = 0x88F0;
const GLenum UNSIGNED_NORMALIZED = 0x8C17;
@@ -300,16 +298,6 @@ interface mixin WebGL2RenderingContextBase
const GLenum MAX_CLIENT_WAIT_TIMEOUT_WEBGL = 0x9247;
/* Buffer objects */
- // WebGL1:
- void bufferData(GLenum target, GLsizeiptr size, GLenum usage);
- void bufferData(GLenum target, [AllowShared] BufferSource? srcData, GLenum usage);
- void bufferSubData(GLenum target, GLintptr dstByteOffset, [AllowShared] BufferSource srcData);
- // WebGL2:
- void bufferData(GLenum target, [AllowShared] ArrayBufferView srcData, GLenum usage, GLuint srcOffset,
- optional GLuint length = 0);
- void bufferSubData(GLenum target, GLintptr dstByteOffset, [AllowShared] ArrayBufferView srcData,
- GLuint srcOffset, optional GLuint length = 0);
-
void copyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset,
GLintptr writeOffset, GLsizeiptr size);
// MapBufferRange, in particular its read-only and write-only modes,
@@ -339,29 +327,6 @@ interface mixin WebGL2RenderingContextBase
void texStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width,
GLsizei height, GLsizei depth);
- // WebGL1 legacy entrypoints:
- void texImage2D(GLenum target, GLint level, GLint internalformat,
- GLsizei width, GLsizei height, GLint border, GLenum format,
- GLenum type, [AllowShared] ArrayBufferView? pixels);
- void texImage2D(GLenum target, GLint level, GLint internalformat,
- GLenum format, GLenum type, TexImageSource source); // May throw DOMException
-
- void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
- GLsizei width, GLsizei height,
- GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
- void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
- GLenum format, GLenum type, TexImageSource source); // May throw DOMException
-
- // WebGL2 entrypoints:
- void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
- GLint border, GLenum format, GLenum type, GLintptr pboOffset);
- void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
- GLint border, GLenum format, GLenum type,
- TexImageSource source); // May throw DOMException
- void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
- GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
- GLuint srcOffset);
-
void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
GLsizei depth, GLint border, GLenum format, GLenum type, GLintptr pboOffset);
void texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
@@ -373,15 +338,6 @@ interface mixin WebGL2RenderingContextBase
GLsizei depth, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
GLuint srcOffset);
- void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
- GLsizei height, GLenum format, GLenum type, GLintptr pboOffset);
- void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
- GLsizei height, GLenum format, GLenum type,
- TexImageSource source); // May throw DOMException
- void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
- GLsizei height, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
- GLuint srcOffset);
-
void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
GLintptr pboOffset);
@@ -395,26 +351,12 @@ interface mixin WebGL2RenderingContextBase
void copyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
GLint x, GLint y, GLsizei width, GLsizei height);
- void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
- GLsizei height, GLint border, GLsizei imageSize, GLintptr offset);
- void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
- GLsizei height, GLint border, [AllowShared] ArrayBufferView srcData,
- optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0);
-
void compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLintptr offset);
void compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
GLsizei height, GLsizei depth, GLint border, [AllowShared] ArrayBufferView srcData,
optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0);
- void compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
- GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, GLintptr offset);
- void compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
- GLsizei width, GLsizei height, GLenum format,
- [AllowShared] ArrayBufferView srcData,
- optional GLuint srcOffset = 0,
- optional GLuint srcLengthOverride = 0);
-
void compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
GLenum format, GLsizei imageSize, GLintptr offset);
@@ -433,24 +375,6 @@ interface mixin WebGL2RenderingContextBase
void uniform3ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2);
void uniform4ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
- void uniform1fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
- optional GLuint srcLength = 0);
- void uniform2fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
- optional GLuint srcLength = 0);
- void uniform3fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
- optional GLuint srcLength = 0);
- void uniform4fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
- optional GLuint srcLength = 0);
-
- void uniform1iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
- optional GLuint srcLength = 0);
- void uniform2iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
- optional GLuint srcLength = 0);
- void uniform3iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
- optional GLuint srcLength = 0);
- void uniform4iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
- optional GLuint srcLength = 0);
-
void uniform1uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
void uniform2uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
@@ -459,9 +383,6 @@ interface mixin WebGL2RenderingContextBase
optional GLuint srcLength = 0);
void uniform4uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
optional GLuint srcLength = 0);
-
- void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
- optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
void uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
void uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
@@ -469,8 +390,6 @@ interface mixin WebGL2RenderingContextBase
void uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
- void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
- optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
void uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
@@ -478,8 +397,6 @@ interface mixin WebGL2RenderingContextBase
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
void uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
- void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
- optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
/* Vertex attribs */
void vertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w);
@@ -494,16 +411,6 @@ interface mixin WebGL2RenderingContextBase
void drawElementsInstanced(GLenum mode, GLsizei count, GLenum type, GLintptr offset, GLsizei instanceCount);
void drawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLintptr offset);
- /* Reading back pixels */
- // WebGL1:
- void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
- [AllowShared] ArrayBufferView? dstData);
- // WebGL2:
- void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
- GLintptr offset);
- void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
- [AllowShared] ArrayBufferView dstData, GLuint dstOffset);
-
/* Multiple Render Targets */
void drawBuffers(sequence<GLenum> buffers);
@@ -572,9 +479,104 @@ interface mixin WebGL2RenderingContextBase
void bindVertexArray(WebGLVertexArrayObject? array);
};
+interface mixin WebGL2RenderingContextOverloads
+{
+ // WebGL1:
+ void bufferData(GLenum target, GLsizeiptr size, GLenum usage);
+ void bufferData(GLenum target, [AllowShared] BufferSource? srcData, GLenum usage);
+ void bufferSubData(GLenum target, GLintptr dstByteOffset, [AllowShared] BufferSource srcData);
+ // WebGL2:
+ void bufferData(GLenum target, [AllowShared] ArrayBufferView srcData, GLenum usage, GLuint srcOffset,
+ optional GLuint length = 0);
+ void bufferSubData(GLenum target, GLintptr dstByteOffset, [AllowShared] ArrayBufferView srcData,
+ GLuint srcOffset, optional GLuint length = 0);
+
+ // WebGL1 legacy entrypoints:
+ void texImage2D(GLenum target, GLint level, GLint internalformat,
+ GLsizei width, GLsizei height, GLint border, GLenum format,
+ GLenum type, [AllowShared] ArrayBufferView? pixels);
+ void texImage2D(GLenum target, GLint level, GLint internalformat,
+ GLenum format, GLenum type, TexImageSource source); // May throw DOMException
+
+ void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
+ GLsizei width, GLsizei height,
+ GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
+ void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
+ GLenum format, GLenum type, TexImageSource source); // May throw DOMException
+
+ // WebGL2 entrypoints:
+ void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
+ GLint border, GLenum format, GLenum type, GLintptr pboOffset);
+ void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
+ GLint border, GLenum format, GLenum type,
+ TexImageSource source); // May throw DOMException
+ void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
+ GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
+ GLuint srcOffset);
+
+ void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
+ GLsizei height, GLenum format, GLenum type, GLintptr pboOffset);
+ void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
+ GLsizei height, GLenum format, GLenum type,
+ TexImageSource source); // May throw DOMException
+ void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
+ GLsizei height, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
+ GLuint srcOffset);
+
+ void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
+ GLsizei height, GLint border, GLsizei imageSize, GLintptr offset);
+ void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
+ GLsizei height, GLint border, [AllowShared] ArrayBufferView srcData,
+ optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0);
+
+ void compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
+ GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, GLintptr offset);
+ void compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
+ GLsizei width, GLsizei height, GLenum format,
+ [AllowShared] ArrayBufferView srcData,
+ optional GLuint srcOffset = 0,
+ optional GLuint srcLengthOverride = 0);
+
+ void uniform1fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+ void uniform2fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+ void uniform3fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+ void uniform4fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+
+ void uniform1iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+ void uniform2iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+ void uniform3iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+ void uniform4iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+
+ void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
+ void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
+ void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
+
+ /* Reading back pixels */
+ // WebGL1:
+ void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
+ [AllowShared] ArrayBufferView? dstData);
+ // WebGL2:
+ void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
+ GLintptr offset);
+ void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
+ [AllowShared] ArrayBufferView dstData, GLuint dstOffset);
+};
+
[Exposed=(Window,Worker)]
interface WebGL2RenderingContext
{
};
WebGL2RenderingContext includes WebGLRenderingContextBase;
WebGL2RenderingContext includes WebGL2RenderingContextBase;
+WebGL2RenderingContext includes WebGL2RenderingContextOverloads;
diff --git a/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl b/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl
index 26ebc9ca775..621f146108b 100644
--- a/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webrtc-stats.idl
@@ -145,6 +145,7 @@ dictionary RTCOutboundRtpStreamStats : RTCSentRtpStreamStats {
double averageRtcpInterval;
RTCQualityLimitationReason qualityLimitationReason;
record<DOMString, double> qualityLimitationDurations;
+ unsigned long qualityLimitationResolutionChanges;
record<USVString, unsigned long> perDscpPacketsSent;
unsigned long nackCount;
unsigned long firCount;
diff --git a/tests/wpt/web-platform-tests/interfaces/webxr.idl b/tests/wpt/web-platform-tests/interfaces/webxr.idl
index 3febf83ebe3..413fef85c87 100644
--- a/tests/wpt/web-platform-tests/interfaces/webxr.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webxr.idl
@@ -10,7 +10,7 @@ partial interface Navigator {
[SecureContext, Exposed=Window] interface XR : EventTarget {
// Methods
Promise<void> supportsSession(XRSessionMode mode);
- Promise<XRSession> requestSession(XRSessionMode mode, optional XRSessionInit options);
+ Promise<XRSession> requestSession(XRSessionMode mode, optional XRSessionInit options = {});
// Events
attribute EventHandler ondevicechange;
@@ -39,7 +39,7 @@ enum XRVisibilityState {
[SameObject] readonly attribute XRInputSourceArray inputSources;
// Methods
- void updateRenderState(optional XRRenderStateInit state);
+ void updateRenderState(optional XRRenderStateInit state = {});
Promise<XRReferenceSpace> requestReferenceSpace(XRReferenceSpaceType type);
long requestAnimationFrame(XRFrameRequestCallback callback);
@@ -123,7 +123,7 @@ enum XREye {
};
[SecureContext, Exposed=Window,
- Constructor(optional DOMPointInit position, optional DOMPointInit orientation)]
+ Constructor(optional DOMPointInit position = {}, optional DOMPointInit orientation = {})]
interface XRRigidTransform {
[SameObject] readonly attribute DOMPointReadOnly position;
[SameObject] readonly attribute DOMPointReadOnly orientation;
@@ -182,7 +182,7 @@ dictionary XRWebGLLayerInit {
[SecureContext, Exposed=Window, Constructor(XRSession session,
XRWebGLRenderingContext context,
- optional XRWebGLLayerInit layerInit)]
+ optional XRWebGLLayerInit layerInit = {})]
interface XRWebGLLayer {
// Attributes
readonly attribute boolean antialias;
diff --git a/tests/wpt/web-platform-tests/kv-storage/secure-context/import-maps.html b/tests/wpt/web-platform-tests/kv-storage/secure-context/import-maps.html
index 64301f03032..211b9e43b1f 100644
--- a/tests/wpt/web-platform-tests/kv-storage/secure-context/import-maps.html
+++ b/tests/wpt/web-platform-tests/kv-storage/secure-context/import-maps.html
@@ -15,7 +15,7 @@ test(() => {
<script type="importmap">
{
"imports": {
- "std:kv-storage": [
+ "./resources/dummy-module.js": [
"std:kv-storage",
"./resources/dummy-module.js"
]
@@ -25,7 +25,7 @@ test(() => {
<script type="module">
promise_test(async () => {
- const result = await import("std:kv-storage");
- assert_equals(namespaceObj.myExport, "not the real KV storage");
+ const result = await import("./resources/dummy-module.js");
+ assert_equals(result.myExport, "not the real KV storage");
});
</script>
diff --git a/tests/wpt/web-platform-tests/kv-storage/secure-context/import-statement.html b/tests/wpt/web-platform-tests/kv-storage/secure-context/import-statement.html
index db01152a4e1..71e14b04e31 100644
--- a/tests/wpt/web-platform-tests/kv-storage/secure-context/import-statement.html
+++ b/tests/wpt/web-platform-tests/kv-storage/secure-context/import-statement.html
@@ -13,13 +13,14 @@ test(() => {
assert_false(self.isSecureContext, "This test must run in a non-secure context");
}, "Prerequisite check");
-async_test(t => {
- window.addEventListener("error", t.step_func_done(errorEvent => {
- assert_equals(errorEvent.error.constructor, TypeError, "Must trigger a TypeError");
- }, { once: true }));
-});
+const t = async_test('Static import kv-storage in non-secure context');
+
+window.addEventListener("error", t.step_func_done(errorEvent => {
+ assert_equals(errorEvent.error.constructor, TypeError, "Must trigger a TypeError");
+}, { once: true }));
</script>
-<script type="module">
+<script type="module"
+ onerror="t.unreached_func('script error event should not be fired')()">
import "std:kv-storage";
</script>
diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/contracted-image.html b/tests/wpt/web-platform-tests/largest-contentful-paint/contracted-image.html
index e099a5e42f6..2d4a84bf35c 100644
--- a/tests/wpt/web-platform-tests/largest-contentful-paint/contracted-image.html
+++ b/tests/wpt/web-platform-tests/largest-contentful-paint/contracted-image.html
@@ -10,29 +10,21 @@
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
+<script src="resources/largest-contentful-paint-helpers.js"></script>
<script>
async_test(function (t) {
if (!window.LargestContentfulPaint) {
assert_unreached("LargestContentfulPaint is not implemented");
}
- let beforeRender = performance.now();
+ const beforeLoad = performance.now();
const observer = new PerformanceObserver(
t.step_func_done(function(entryList) {
assert_equals(entryList.getEntries().length, 1);
const entry = entryList.getEntries()[0];
- assert_equals(entry.entryType, 'largest-contentful-paint');
- assert_greater_than_equal(entry.renderTime, beforeRender,
- 'The rendering timestamp should occur after script starts running.');
- assert_greater_than_equal(performance.now(), entry.renderTime,
- 'The rendering timestamp should occur before the entry is dispatched to the observer.');
- assert_equals(entry.startTime, entry.renderTime, 'startTime should equal renderTime');
- assert_equals(entry.duration, 0);
+ const url = window.location.origin + '/images/black-rectangle.png';
// black-rectangle.png is 100 x 50. It occupies 50 x 50 so size will be bounded by the displayed size.
- assert_equals(entry.size, 2500);
- assert_equals(entry.id, 'image_id');
- const pathname = window.location.origin + '/images/black-rectangle.png';
- assert_equals(entry.url, pathname);
- assert_equals(entry.element, document.getElementById('image_id'));
+ const size = 50 * 50;
+ checkImage(entry, url, 'image_id', size, beforeLoad);
})
);
observer.observe({type: 'largest-contentful-paint', buffered: true});
diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/cross-origin-image.sub.html b/tests/wpt/web-platform-tests/largest-contentful-paint/cross-origin-image.sub.html
index 7669d464780..58e636e51b9 100644
--- a/tests/wpt/web-platform-tests/largest-contentful-paint/cross-origin-image.sub.html
+++ b/tests/wpt/web-platform-tests/largest-contentful-paint/cross-origin-image.sub.html
@@ -4,6 +4,7 @@
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
+<script src="resources/largest-contentful-paint-helpers.js"></script>
<script>
async_test(function (t) {
if (!window.LargestContentfulPaint) {
@@ -14,18 +15,10 @@
t.step_func_done(function(entryList) {
assert_equals(entryList.getEntries().length, 1);
const entry = entryList.getEntries()[0];
- assert_equals(entry.entryType, 'largest-contentful-paint');
- assert_equals(entry.renderTime, 0, 'The renderTime value should be 0 for a cross origin image.');
- assert_equals(entry.startTime, entry.loadTime, 'startTime should equal loadTime');
- assert_equals(entry.duration, 0);
+ const url = 'http://{{domains[www]}}:{{ports[http][1]}}/images/blue.png';
// blue.png is 133 x 106.
- assert_equals(entry.size, 14098);
- assert_equals(entry.id, 'image_id');
- const pathname = 'http://{{domains[www]}}:{{ports[http][1]}}/images/blue.png';
- assert_equals(entry.url, pathname);
- assert_greater_than_equal(entry.loadTime, beforeLoad);
- assert_less_than(entry.loadTime, performance.now());
- assert_equals(entry.element, document.getElementById('image_id'));
+ const size = 133 * 106;
+ checkImage(entry, url, 'image_id', size, beforeLoad, ['renderTimeIs0']);
})
);
observer.observe({type: 'largest-contentful-paint', buffered: true});
diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/expanded-image.html b/tests/wpt/web-platform-tests/largest-contentful-paint/expanded-image.html
index 9f64189eda6..6f7043dd8e4 100644
--- a/tests/wpt/web-platform-tests/largest-contentful-paint/expanded-image.html
+++ b/tests/wpt/web-platform-tests/largest-contentful-paint/expanded-image.html
@@ -10,29 +10,21 @@
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
+<script src="resources/largest-contentful-paint-helpers.js"></script>
<script>
async_test(function (t) {
if (!window.LargestContentfulPaint) {
assert_unreached("LargestContentfulPaint is not implemented");
}
- let beforeRender = performance.now();
+ const beforeLoad = performance.now();
const observer = new PerformanceObserver(
t.step_func_done(function(entryList) {
assert_equals(entryList.getEntries().length, 1);
const entry = entryList.getEntries()[0];
- assert_equals(entry.entryType, 'largest-contentful-paint');
- assert_greater_than_equal(entry.renderTime, beforeRender,
- 'The rendering timestamp should occur after script starts running.');
- assert_greater_than_equal(performance.now(), entry.renderTime,
- 'The rendering timestamp should occur before the entry is dispatched to the observer.');
- assert_equals(entry.startTime, entry.renderTime, 'startTime should equal renderTime');
- assert_equals(entry.duration, 0);
+ const url = window.location.origin + '/images/black-rectangle.png';
// black-rectangle.png is 100 x 50. It occupies 300 x 300 so size will be bounded by the intrinsic size.
- assert_equals(entry.size, 5000);
- assert_equals(entry.id, 'image_id');
- const pathname = window.location.origin + '/images/black-rectangle.png';
- assert_equals(entry.url, pathname);
- assert_equals(entry.element, document.getElementById('image_id'));
+ const size = 100 * 50;
+ checkImage(entry, url, 'image_id', size, beforeLoad);
})
);
observer.observe({type: 'largest-contentful-paint', buffered: true});
diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/first-letter-background.html b/tests/wpt/web-platform-tests/largest-contentful-paint/first-letter-background.html
index 19544c8edee..44d2a1a9680 100644
--- a/tests/wpt/web-platform-tests/largest-contentful-paint/first-letter-background.html
+++ b/tests/wpt/web-platform-tests/largest-contentful-paint/first-letter-background.html
@@ -9,35 +9,21 @@
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
-<script src="resources/element-timing-helpers.js"></script>
+<script src="resources/largest-contentful-paint-helpers.js"></script>
<script>
- let beforeRender = performance.now();
async_test(function (t) {
if (!window.LargestContentfulPaint) {
assert_unreached("LargestContentfulPaint is not implemented");
}
+ const beforeLoad = performance.now();
const observer = new PerformanceObserver(
t.step_func(function(entryList) {
entryList.getEntries().forEach(entry => {
// If we happen to get a text entry due to text happening before the image, return.
if (entry.url === '')
return;
- assert_equals(entry.entryType, 'largest-contentful-paint');
- assert_greater_than_equal(entry.renderTime, beforeRender,
- 'The rendering timestamp should occur after script starts running.');
- assert_greater_than_equal(performance.now(), entry.renderTime,
- 'The rendering timestamp should occur before the entry is dispatched to the observer.');
- assert_equals(entry.startTime, entry.renderTime, 'startTime should equal renderTime');
- assert_equals(entry.duration, 0);
- assert_greater_than_equal(entry.size, 0);
- assert_equals(entry.id, 'target');
- const pathname = window.location.origin + '/images/black-rectangle.png';
- assert_equals(entry.url, pathname);
- assert_greater_than(entry.loadTime, beforeRender,
- 'The load timestamp should occur after script starts running.');
- assert_less_than(entry.loadTime, entry.renderTime,
- 'The load timestamp should occur before the render timestamp.')
- assert_equals(entry.element, document.getElementById('target'));
+ const url = window.location.origin + '/images/black-rectangle.png';
+ checkImage(entry, url, 'target', 0, beforeLoad, ['sizeLowerBound']);
t.done();
})
}));
diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/image-TAO.sub.html b/tests/wpt/web-platform-tests/largest-contentful-paint/image-TAO.sub.html
index 9409fd8fc05..41c8c748619 100644
--- a/tests/wpt/web-platform-tests/largest-contentful-paint/image-TAO.sub.html
+++ b/tests/wpt/web-platform-tests/largest-contentful-paint/image-TAO.sub.html
@@ -4,7 +4,7 @@
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
-<script src="resources/element-timing-helpers.js"></script>
+<script src="resources/largest-contentful-paint-helpers.js"></script>
<div id='my_div'></div>
<script>
async_test(t => {
@@ -16,32 +16,31 @@
const valid_tao = ['wildcard', 'origin', 'multi', 'multi_wildcard', 'match_origin', 'match_wildcard'];
const invalid_tao = ['null', 'space', 'uppercase'];
const div = document.getElementById('my_div');
- let img_size = 20;
+ let img_length = 20;
function addImage(tao) {
const img = document.createElement('img');
img.src = remote_img + tao;
img.id = tao;
- img.height = img_size;
- img.width = img_size;
// Set increasing size so that largest-contentful-paint captures all of them.
- img_size += 1;
+ img_length++;
+ img.height = img_length;
+ img.width = img_length;
div.appendChild(img);
}
let img_count = 0;
const total_images = valid_tao.length + invalid_tao.length;
+ let beforeLoad;
new PerformanceObserver(
t.step_func(entryList => {
assert_equals(entryList.getEntries().length, 1);
const entry = entryList.getEntries()[0];
- assert_greater_than(entry.loadTime, 0);
const tao = entry.id;
- if (valid_tao.includes(tao))
- assert_greater_than(entry.renderTime, 0, 'Image with valid TAO should have renderTime');
- else if (invalid_tao.includes(tao))
- assert_equals(entry.renderTime, 0, 'Image with invalid TAO should not have renderTime');
- else
- assert_unreached('Should be in one of valid_tao OR invalid_tao');
+ const url = remote_img + tao;
+ const size = img_length * img_length;
+ let options = valid_tao.includes(tao) ? [] : ['renderTimeIs0'];
+ checkImage(entry, url, tao, size, beforeLoad, options);
img_count++;
+ beforeLoad = performance.now();
// Process valid TAO images first.
if (img_count < valid_tao.length)
addImage(valid_tao[img_count]);
@@ -55,6 +54,7 @@
).observe({type: 'largest-contentful-paint'});
// Add first image, the rest will be added on each observer callback.
addImage(valid_tao[0]);
+ beforeLoad = performance.now();
}, 'Cross-origin elements with valid TAO have correct renderTime, with invalid TAO have renderTime set to 0.');
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/image-src-change.html b/tests/wpt/web-platform-tests/largest-contentful-paint/image-src-change.html
index 84a49f7ea22..5ec860fa06f 100644
--- a/tests/wpt/web-platform-tests/largest-contentful-paint/image-src-change.html
+++ b/tests/wpt/web-platform-tests/largest-contentful-paint/image-src-change.html
@@ -4,44 +4,32 @@
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
+<script src="resources/largest-contentful-paint-helpers.js"></script>
<img src='/images/blue.png' id='image_id'/>
<script>
async_test(function (t) {
if (!window.LargestContentfulPaint) {
assert_unreached("LargestContentfulPaint is not implemented");
}
- let beforeRender = performance.now();
+ let beforeLoad = performance.now();
let firstCallback = true;
const observer = new PerformanceObserver(
- t.step_func_done(function(entryList) {
+ t.step_func(function(entryList) {
assert_equals(entryList.getEntries().length, 1);
const entry = entryList.getEntries()[0];
- assert_equals(entry.entryType, 'largest-contentful-paint');
- assert_greater_than_equal(entry.renderTime, beforeRender,
- 'The rendering timestamp should occur after script starts running.');
- assert_greater_than_equal(performance.now(), entry.renderTime,
- 'The rendering timestamp should occur before the entry is dispatched to the observer.');
- assert_equals(entry.startTime, entry.renderTime, 'startTime should equal renderTime');
- assert_equals(entry.duration, 0);
+ const url = window.location.origin + (firstCallback ? '/images/blue.png' : '/images/black-rectangle.png');
+ // blue.png is 133 by 106. black-rectangle.png is 100 x 50.
+ const size = firstCallback ? 133 * 106 : 100 * 50;
+ checkImage(entry, url, 'image_id', size, beforeLoad);
if (firstCallback) {
- // blue.png is 133 x 106.
- assert_equals(entry.size, 14098);
- assert_equals(entry.id, 'image_id');
- const pathname = window.location.origin + '/images/blue.png';
- assert_equals(entry.url, pathname);
-
// Set the src to trigger another entry.
const img = document.getElementById('image_id');
img.src = '/images/black-rectangle.png';
- beforeRender = performance.now();
+ beforeLoad = performance.now();
firstCallback =false;
- return;
+ } else {
+ t.done();
}
- // black-rectangle.png is 100 x 50.
- assert_equals(entry.size, 5000);
- assert_equals(entry.id, 'image_id');
- const pathname = window.location.origin + '/images/black-rectangle.png';
- assert_equals(entry.url, pathname);
})
);
observer.observe({type: 'largest-contentful-paint', buffered: true});
diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/invisible-images.html b/tests/wpt/web-platform-tests/largest-contentful-paint/invisible-images.html
index cd71f30ae45..d536f86dcf6 100644
--- a/tests/wpt/web-platform-tests/largest-contentful-paint/invisible-images.html
+++ b/tests/wpt/web-platform-tests/largest-contentful-paint/invisible-images.html
@@ -23,10 +23,16 @@
assert_unreached("LargestContentfulPaint is not implemented");
}
const observer = new PerformanceObserver(
- t.step_func_done(entryList => {
- // The images should not have caused an entry, so fail test.
- assert_unreached('Should not have received an entry! Received one with id '
- + entryList.getEntries()[0].id);
+ t.step_func(entryList => {
+ entryList.getEntries().forEach(entry => {
+ // May receive a text entry. Ignore that entry.
+ if (!entry.url) {
+ return;
+ }
+ // The images should not have caused an entry, so fail test.
+ assert_unreached('Should not have received an entry! Received one with id '
+ + entryList.getEntries()[0].id);
+ });
})
);
observer.observe({type: 'largest-contentful-paint', buffered: true});
diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/larger-image.html b/tests/wpt/web-platform-tests/largest-contentful-paint/larger-image.html
index 7ff38cf2be1..094c2096752 100644
--- a/tests/wpt/web-platform-tests/largest-contentful-paint/larger-image.html
+++ b/tests/wpt/web-platform-tests/largest-contentful-paint/larger-image.html
@@ -4,6 +4,7 @@
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
+<script src="resources/largest-contentful-paint-helpers.js"></script>
<!-- There is some text and some images. We care about blue.png being reported, as it is the largest. -->
<p>This is some text! :)</p>
<img src='/images/red.png' id='red'/>
@@ -15,7 +16,7 @@
if (!window.LargestContentfulPaint) {
assert_unreached("LargestContentfulPaint is not implemented");
}
- const beforeRender = performance.now();
+ const beforeLoad = performance.now();
const observer = new PerformanceObserver(
t.step_func(entryList => {
entryList.getEntries().forEach(entry => {
@@ -23,22 +24,10 @@
if (entry.id !== 'blue')
return;
- assert_equals(entry.entryType, 'largest-contentful-paint');
- assert_greater_than_equal(entry.renderTime, beforeRender,
- 'The rendering timestamp should occur after script starts running.');
- assert_greater_than_equal(performance.now(), entry.renderTime,
- 'The rendering timestamp should occur before the entry is dispatched to the observer.');
- assert_equals(entry.startTime, entry.renderTime, 'startTime should equal renderTime');
- assert_equals(entry.duration, 0);
- // blue.png is 133 x 106.
- assert_equals(entry.size, 133 * 106);
- assert_equals(entry.id, 'blue');
- assert_equals(entry.url, window.location.origin + '/images/blue.png');
- assert_greater_than(entry.loadTime, beforeRender,
- 'The load timestamp should occur after script starts running.');
- assert_less_than(entry.loadTime, entry.renderTime,
- 'The load timestamp should occur before the render timestamp.')
- assert_equals(entry.element, document.getElementById('blue'));
+ const url = window.location.origin + '/images/blue.png';
+ // blue.png is 133 by 106.
+ const size = 133 * 106;
+ checkImage(entry, url, 'blue', size, beforeLoad);
t.done();
})
})
diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/loadTime-after-appendChild.html b/tests/wpt/web-platform-tests/largest-contentful-paint/loadTime-after-appendChild.html
index 43ec9f6085d..0e40127b576 100644
--- a/tests/wpt/web-platform-tests/largest-contentful-paint/loadTime-after-appendChild.html
+++ b/tests/wpt/web-platform-tests/largest-contentful-paint/loadTime-after-appendChild.html
@@ -4,6 +4,7 @@
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
+<script src="resources/largest-contentful-paint-helpers.js"></script>
<script>
async_test(function (t) {
if (!window.LargestContentfulPaint) {
@@ -14,21 +15,16 @@
t.step_func_done(entryList => {
assert_equals(entryList.getEntries().length, 1);
const entry = entryList.getEntries()[0];
- assert_equals(entry.entryType, 'largest-contentful-paint');
- assert_equals(entry.startTime, entry.renderTime, 'startTime should equal renderTime');
- assert_equals(entry.duration, 0);
- assert_equals(entry.url, window.location.origin + '/images/black-rectangle.png');
- assert_greater_than(entry.renderTime, entry.loadTime,
- 'The image render time should occur after it is appended to the div.');
- assert_greater_than(entry.loadTime, beforeLoad,
- 'The image load timestamp should occur after script starts running.');
- assert_less_than(entry.renderTime, performance.now(),
- 'Image render time should be before the observer callback is executed.')
+ const url = window.location.origin + '/images/black-rectangle.png';
+ // blue.png is 100 by 50.
+ const size = 100 * 50;
+ checkImage(entry, url, 'image_id', size, beforeLoad);
})
);
observer.observe({type: 'largest-contentful-paint', buffered: true});
const img = document.createElement('img');
img.src = '/images/black-rectangle.png';
+ img.id = 'image_id';
t.step_timeout(() => {
beforeLoad = performance.now();
document.getElementById('image_div').appendChild(img);
diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/observe-after-untrusted-scroll.html b/tests/wpt/web-platform-tests/largest-contentful-paint/observe-after-untrusted-scroll.html
index b551e7632b5..1b2cd1d25b5 100644
--- a/tests/wpt/web-platform-tests/largest-contentful-paint/observe-after-untrusted-scroll.html
+++ b/tests/wpt/web-platform-tests/largest-contentful-paint/observe-after-untrusted-scroll.html
@@ -4,35 +4,22 @@
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
+<script src="resources/largest-contentful-paint-helpers.js"></script>
<script>
async_test(function (t) {
if (!window.LargestContentfulPaint) {
assert_unreached("LargestContentfulPaint is not implemented");
}
- const beforeRender = performance.now();
+ const beforeLoad = performance.now();
const observer = new PerformanceObserver(
t.step_func_done(function(entryList) {
assert_equals(entryList.getEntries().length, 1);
const entry = entryList.getEntries()[0];
- assert_equals(entry.entryType, 'largest-contentful-paint');
- assert_greater_than_equal(entry.renderTime, beforeRender,
- 'The rendering timestamp should occur after script starts running.');
- assert_greater_than_equal(performance.now(), entry.renderTime,
- 'The rendering timestamp should occur before the entry is dispatched to the observer.');
- assert_equals(entry.startTime, entry.renderTime, 'startTime should equal renderTime');
- assert_equals(entry.duration, 0);
- // blue.png is 133 x 106.
- assert_equals(entry.size, 14098);
- assert_equals(entry.id, 'image_id');
- // 25 is the length of "largest-contentful-paint/".
- const index = window.location.href.lastIndexOf('/') - 25;
- const pathname = window.location.href.substring(0, index) + '/images/blue.png';
- assert_equals(entry.url, pathname);
- assert_greater_than(entry.loadTime, beforeRender,
- 'The load timestamp should occur after script starts running.');
- assert_less_than(entry.loadTime, entry.renderTime,
- 'The load timestamp should occur before the render timestamp.')
- assert_equals(entry.element, document.getElementById('image_id'));
+
+ const url = window.location.origin + '/images/blue.png';
+ // blue.png is 133 by 106.
+ const size = 133 * 106;
+ checkImage(entry, url, 'image_id', size, beforeLoad);
})
);
observer.observe({type: 'largest-contentful-paint', buffered: true});
diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/observe-image.html b/tests/wpt/web-platform-tests/largest-contentful-paint/observe-image.html
index a9556ebaa60..5856795cac4 100644
--- a/tests/wpt/web-platform-tests/largest-contentful-paint/observe-image.html
+++ b/tests/wpt/web-platform-tests/largest-contentful-paint/observe-image.html
@@ -4,35 +4,21 @@
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
+<script src="resources/largest-contentful-paint-helpers.js"></script>
<script>
async_test(function (t) {
if (!window.LargestContentfulPaint) {
assert_unreached("LargestContentfulPaint is not implemented");
}
- const beforeRender = performance.now();
+ const beforeLoad = performance.now();
const observer = new PerformanceObserver(
t.step_func_done(function(entryList) {
assert_equals(entryList.getEntries().length, 1);
const entry = entryList.getEntries()[0];
- assert_equals(entry.entryType, 'largest-contentful-paint');
- assert_greater_than_equal(entry.renderTime, beforeRender,
- 'The rendering timestamp should occur after script starts running.');
- assert_greater_than_equal(performance.now(), entry.renderTime,
- 'The rendering timestamp should occur before the entry is dispatched to the observer.');
- assert_equals(entry.startTime, entry.renderTime, 'startTime should equal renderTime');
- assert_equals(entry.duration, 0);
- // blue.png is 133 x 106.
- assert_equals(entry.size, 14098);
- assert_equals(entry.id, 'image_id');
- // 25 is the length of "largest-contentful-paint/".
- const index = window.location.href.lastIndexOf('/') - 25;
- const pathname = window.location.href.substring(0, index) + '/images/blue.png';
- assert_equals(entry.url, pathname);
- assert_greater_than(entry.loadTime, beforeRender,
- 'The load timestamp should occur after script starts running.');
- assert_less_than(entry.loadTime, entry.renderTime,
- 'The load timestamp should occur before the render timestamp.')
- assert_equals(entry.element, document.getElementById('image_id'));
+ const url = window.location.origin + '/images/blue.png';
+ // blue.png is 133 by 106.
+ const size = 133 * 106;
+ checkImage(entry, url, 'image_id', size, beforeLoad);
})
);
observer.observe({type: 'largest-contentful-paint', buffered: true});
diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/repeated-image.html b/tests/wpt/web-platform-tests/largest-contentful-paint/repeated-image.html
index d25d4735c97..82d662d330a 100644
--- a/tests/wpt/web-platform-tests/largest-contentful-paint/repeated-image.html
+++ b/tests/wpt/web-platform-tests/largest-contentful-paint/repeated-image.html
@@ -10,47 +10,35 @@
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
+<script src="resources/largest-contentful-paint-helpers.js"></script>
<script>
async_test(function (t) {
if (!window.LargestContentfulPaint) {
assert_unreached("LargestContentfulPaint is not implemented");
}
- const beforeFirstLoad = performance.now();
+ let beforeLoad = performance.now();
let firstCallback = true;
- const path = window.location.origin + '/images/black-rectangle.png';
- let beforeSecondLoad;
+ const url = window.location.origin + '/images/black-rectangle.png';
const observer = new PerformanceObserver(
t.step_func(entryList => {
assert_equals(entryList.getEntries().length, 1);
const entry = entryList.getEntries()[0];
- assert_equals(entry.entryType, 'largest-contentful-paint');
- assert_equals(entry.startTime, entry.renderTime, 'startTime should equal renderTime');
- assert_equals(entry.duration, 0);
- assert_equals(entry.url, path);
- assert_less_than(entry.renderTime, performance.now(),
- 'Image render time should be before the observer callback is executed.')
+
+ // First image is shrunk to be 10 x 10. The second image is added at its natural size: 100 x 50.
+ const size = firstCallback ? 10 * 10 : 100 * 50;
+ const id = firstCallback ? 'image_id' : 'second_id';
+ checkImage(entry, url, id, size, beforeLoad);
if (firstCallback) {
- assert_equals(entry.id, 'image_id');
- assert_greater_than(entry.renderTime, entry.loadTime,
- 'The first image render time should occur after its load time.');
- assert_greater_than(entry.loadTime, beforeFirstLoad,
- 'The first image load timestamp should occur after script starts running.');
- // Image is shrunk to be 10 x 10.
- assert_equals(entry.size, 100);
const img = document.createElement('img');
img.src = '/images/black-rectangle.png';
- beforeSecondLoad = performance.now();
+ img.id = 'second_id';
+ beforeLoad = performance.now();
document.getElementById('image_div').appendChild(img);
firstCallback = false;
return;
+ } else {
+ t.done();
}
- // The second image is added at its natural size: 100 x 50.
- assert_equals(entry.size, 5000);
- assert_greater_than(entry.loadTime, beforeSecondLoad,
- 'The second image load time should occur after adding it to the document body.');
- assert_greater_than(entry.renderTime, entry.loadTime,
- 'The second image render time should occur after its load time.');
- t.done();
})
);
observer.observe({type: 'largest-contentful-paint', buffered: true});
diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/resources/largest-contentful-paint-helpers.js b/tests/wpt/web-platform-tests/largest-contentful-paint/resources/largest-contentful-paint-helpers.js
new file mode 100644
index 00000000000..0529e227b80
--- /dev/null
+++ b/tests/wpt/web-platform-tests/largest-contentful-paint/resources/largest-contentful-paint-helpers.js
@@ -0,0 +1,32 @@
+// Receives an image PerformanceElementTiming |entry| and checks |entry|'s attribute values.
+// The |timeLowerBound| parameter is a lower bound on the loadTime value of the entry.
+// The |options| parameter may contain some string values specifying the following:
+// * 'renderTimeIs0': the renderTime should be 0 (image does not pass Timing-Allow-Origin checks).
+// When not present, the renderTime should not be 0 (image passes the checks).
+// * 'sizeLowerBound': the |expectedSize| is only a lower bound on the size attribute value.
+// When not present, |expectedSize| must be exactly equal to the size attribute value.
+function checkImage(entry, expectedUrl, expectedID, expectedSize, timeLowerBound, options = []) {
+ assert_equals(entry.name, '');
+ assert_equals(entry.entryType, 'largest-contentful-paint');
+ assert_equals(entry.duration, 0);
+ assert_equals(entry.url, expectedUrl);
+ assert_equals(entry.id, expectedID);
+ assert_equals(entry.element, document.getElementById(expectedID));
+ if (options.includes('renderTimeIs0')) {
+ assert_equals(entry.renderTime, 0, 'renderTime should be 0');
+ assert_between_exclusive(entry.loadTime, timeLowerBound, performance.now(),
+ 'loadTime should be between the lower bound and the current time');
+ assert_equals(entry.startTime, entry.loadTime, 'startTime should equal loadTime');
+ } else {
+ assert_between_exclusive(entry.loadTime, timeLowerBound, entry.renderTime,
+ 'loadTime should occur between the lower bound and the renderTime');
+ assert_greater_than_equal(performance.now(), entry.renderTime,
+ 'renderTime should occur before the entry is dispatched to the observer.');
+ assert_equals(entry.startTime, entry.renderTime, 'startTime should equal renderTime');
+ }
+ if (options.includes('sizeLowerBound')) {
+ assert_greater_than(entry.size, expectedSize);
+ } else {
+ assert_equals(entry.size, expectedSize);
+ }
+} \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/text-with-display-style.html b/tests/wpt/web-platform-tests/largest-contentful-paint/text-with-display-style.html
new file mode 100644
index 00000000000..2f1f254d777
--- /dev/null
+++ b/tests/wpt/web-platform-tests/largest-contentful-paint/text-with-display-style.html
@@ -0,0 +1,77 @@
+<!DOCTYPE HTML>
+<meta charset=utf-8>
+<title>Largest Contentful Paint: observe text with display style.</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+#title {
+ display: flex;
+}
+</style>
+<h1 id='title'>I am a title!</h1>
+<script>
+ async_test(function (t) {
+ if (!window.LargestContentfulPaint) {
+ assert_unreached("LargestContentfulPaint is not implemented");
+ }
+ let beforeRender;
+ /* In this test, we first observe a header with style 'display: flex'.
+ * Once observed, we remove it and add a header with style 'display: grid'.
+ * And once that is observed, we remove it and add a header with style 'display: block'.
+ * At each step, we check the values of the entries received.
+ */
+ let observedFlex = false;
+ let observedGrid = false;
+ const observer = new PerformanceObserver(
+ t.step_func(function(entryList) {
+ assert_equals(entryList.getEntries().length, 1);
+ const entry = entryList.getEntries()[0];
+ assert_equals(entry.entryType, 'largest-contentful-paint');
+ assert_greater_than_equal(entry.renderTime, beforeRender);
+ assert_greater_than_equal(performance.now(), entry.renderTime);
+ assert_equals(entry.startTime, entry.renderTime, 'startTime should equal renderTime');
+ assert_equals(entry.duration, 0);
+ // TODO: find a good way to bound text size.
+ assert_greater_than_equal(entry.size, 500);
+ assert_equals(entry.url, '');
+ assert_equals(entry.loadTime, 0);
+ if (!observedFlex) {
+ observedFlex = true;
+ assert_equals(entry.id, 'title');
+ const title = document.getElementById('title');
+ assert_equals(entry.element, title);
+ // Remove 'display: flex' and add 'display: grid' text.
+ title.parentNode.removeChild(title);
+ const title2 = document.createElement('h1');
+ title2.id = 'title2';
+ title2.style = 'display: grid';
+ title2.innerHTML = 'I am a second title!';
+ document.body.appendChild(title2);
+ beforeRender = performance.now();
+ } else if (!observedGrid) {
+ observedGrid = true;
+ assert_equals(entry.id, 'title2');
+ const title2 = document.getElementById('title2');
+ assert_equals(entry.element, title2);
+ // Remove 'display: grid' and add 'display: block' text.
+ title2.parentNode.removeChild(title2);
+ const title3 = document.createElement('h1');
+ title3.id = 'title3';
+ title3.style = 'display: block';
+ title3.innerHTML = 'I am the third and last title!';
+ document.body.appendChild(title3);
+ beforeRender = performance.now();
+ } else {
+ assert_equals(entry.id, 'title3');
+ const title3 = document.getElementById('title3');
+ assert_equals(entry.element, title3);
+ t.done();
+ }
+ })
+ );
+ observer.observe({type: 'largest-contentful-paint', buffered: true});
+ beforeRender = performance.now();
+ }, 'Text with display style is observable.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/video-poster.html b/tests/wpt/web-platform-tests/largest-contentful-paint/video-poster.html
new file mode 100644
index 00000000000..9ad9c4cdfd0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/largest-contentful-paint/video-poster.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML>
+<meta charset=utf-8>
+<title>Largest Contentful Paint: observe video poster image</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/largest-contentful-paint-helpers.js"></script>
+<script>
+async_test(function (t) {
+ if (!window.LargestContentfulPaint) {
+ assert_unreached("LargestContentfulPaint is not implemented");
+ }
+ const beforeLoad = performance.now();
+ const observer = new PerformanceObserver(
+ t.step_func_done(function(entryList) {
+ assert_equals(entryList.getEntries().length, 1);
+ const entry = entryList.getEntries()[0];
+ const url = window.location.origin + '/images/blue.png';
+ // blue.png is 133 by 106.
+ const size = 133 * 106;
+ checkImage(entry, url, 'the_poster', size, beforeLoad);
+ })
+ );
+ observer.observe({type: 'largest-contentful-paint', buffered: true});
+}, "Able to observe a video's poster image.");
+</script>
+<video id='the_poster' src='/media/test.mp4' poster='/images/blue.png'/>
diff --git a/tests/wpt/web-platform-tests/longtask-timing/long-microtask.window.js b/tests/wpt/web-platform-tests/longtask-timing/long-microtask.window.js
new file mode 100644
index 00000000000..7b7d1848f8c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/longtask-timing/long-microtask.window.js
@@ -0,0 +1,29 @@
+async_test(function (t) {
+ if (typeof PerformanceLongTaskTiming === 'undefined') {
+ assert_unreached("Longtasks are not supported.");
+ t.done();
+ }
+ new PerformanceObserver(
+ t.step_func_done(entryList => {
+ const entries = entryList.getEntries();
+ assert_equals(entries.length, 1,
+ 'Exactly one entry is expected.');
+ const longtask = entries[0];
+ assert_equals(longtask.entryType, 'longtask');
+ assert_equals(longtask.name, 'self');
+ assert_greater_than(longtask.duration, 50);
+ assert_greater_than_equal(longtask.startTime, 0);
+ const currentTime = performance.now();
+ assert_less_than_equal(longtask.startTime, currentTime);
+ t.done();
+ })
+ ).observe({entryTypes: ['longtask']});
+
+ window.onload = () => {
+ /* Generate a slow microtask */
+ Promise.resolve().then(() => {
+ const begin = window.performance.now();
+ while (window.performance.now() < begin + 60);
+ });
+ };
+}, 'A short task followed by a long microtask is observable.');
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-001.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-001.html
index c7afa7a112a..c0c91dc23d1 100644
--- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-001.html
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-001.html
@@ -5,7 +5,7 @@
<title>Attribute mapping</title>
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#legacy-mathml-style-attributes">
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#attributes-common-to-html-and-mathml-elements">
-<meta name="assert" content="Verify that dir, mathcolor, mathbackground and mathsize are mapped to CSS">
+<meta name="assert" content="Verify that dir, mathcolor, mathbackground and mathsize are mapped to CSS but that deprecated MathML3 attributes are not.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/mathml/support/mathml-fragments.js"></script>
@@ -70,6 +70,23 @@
element.setAttribute("mathsize", "30Px");
assert_equals(style.getPropertyValue("font-size"), "30px", "case insensitive");
}, `mathsize on the ${tag} element is mapped to CSS font-size`);
+
+ test(function() {
+ var properties = ["background-color", "color", "fontfamily", "font-size", "font-style", "font-weight"];
+ var oldStyle = {};
+ properties.forEach(property => {
+ oldStyle[property] = style.getPropertyValue(property);
+ });
+ element.setAttribute("background", "red");
+ element.setAttribute("color", "blue");
+ element.setAttribute("fontfamily", "monospace");
+ element.setAttribute("fontsize", "50px");
+ element.setAttribute("fontstyle", "italic");
+ element.setAttribute("fontweight", "bold");
+ properties.forEach(property => {
+ assert_equals(style.getPropertyValue(property), oldStyle[property], `${property}`);
+ });
+ }, `deprecated MathML3 attributes on the ${tag} element are not mapped to CSS`);
});
done();
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/not-participating-to-parent-layout.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/not-participating-to-parent-layout.html
index 769449b97d4..1caebf1e630 100644
--- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/not-participating-to-parent-layout.html
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/not-participating-to-parent-layout.html
@@ -37,6 +37,13 @@
var elementContainer = div.firstElementChild;
var elementContainerWidth = elementContainer.getBoundingClientRect().width;
var element = FragmentHelper.element(elementContainer);
+ if (style === "display: contents" &&
+ !element.classList.contains("mathml-container")) {
+ // A "display: contents" MathML child is not participating to
+ // parent layout because its computed style is "display: none".
+ // If we cannot append a MathML child then skip that test.
+ return;
+ }
FragmentHelper.forceNonEmptyElement(element);
var allowInvalid = true;
var child = FragmentHelper.appendChild(element, allowInvalid);
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/writing-mode/writing-mode-001.tentative.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/writing-mode/writing-mode-001.tentative.html
deleted file mode 100644
index 642ee669651..00000000000
--- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/writing-mode/writing-mode-001.tentative.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>writing mode</title>
-<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#layout-algorithms">
-<meta name="assert" content="Verify CSS writing mode (writing-mode and directionproperties) for mrow.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/mathml/support/feature-detection.js"></script>
-<script src="/mathml/support/layout-comparison.js"></script>
-<script>
- var epsilon = 1;
-
- setup({ explicit_done: true });
- window.addEventListener("load", runTests);
-
- function runTests() {
- var reference = document.getElementById("horizontal-tb_ltr");
-
- // These tests are kept in a separate tentative.html file until it is
- // clear how to handle vertical math layout.
- // See https://github.com/mathml-refresh/mathml/issues/18
- ["vertical-lr_ltr",
- "vertical-lr_rtl",
- "vertical-rl_ltr",
- "vertical-rl_rtl"].forEach(id => {
- var element = document.getElementById(id);
-
- test(function() {
- var style = window.getComputedStyle(element);
- var writingMode = id.split("_");
- assert_equals(style.getPropertyValue("writing-mode"),
- writingMode[0], "writing-mode");
- assert_equals(style.getPropertyValue("direction"),
- writingMode[1], "direction");
- }, `Inheritance of CSS writing-mode and direction (id='${id}')`);
-
- test(function() {
- assert_true(MathMLFeatureDetection.has_mspace());
- compareLayout(element, reference, epsilon);
- }, `Layout of mrow (id='${id}')`);
- });
- done();
- }
-</script>
-</head>
-<body>
- <div id="log"></div>
- <p>
- <math>
- <mrow id="horizontal-tb_ltr">
- <mspace style="background: blue"
- width="20px" height="30px" depth="40px"></mspace>
- <mspace style="background: black"
- width="50px" depth="60px"></mspace>
- <mspace style="background: yellow"
- width="70px" height="80px"></mspace>
- </mrow>
- </math>
- </p>
- <p>
- <math style="writing-mode: vertical-lr;">
- <mrow id="vertical-lr_ltr">
- <mspace style="background: blue"
- width="20px" height="30px" depth="40px"></mspace>
- <mspace style="background: black"
- width="50px" depth="60px"></mspace>
- <mspace style="background: yellow"
- width="70px" height="80px"></mspace>
- </mrow>
- </math>
- </p>
- <p>
- <math style="writing-mode: vertical-lr; direction: rtl;">
- <mrow id="vertical-lr_rtl">
- <mspace style="background: blue"
- width="20px" height="30px" depth="40px"></mspace>
- <mspace style="background: black"
- width="50px" depth="60px"></mspace>
- <mspace style="background: yellow"
- width="70px" height="80px"></mspace>
- </mrow>
- </math>
- </p>
- <p>
- <math style="writing-mode: vertical-rl;">
- <mrow id="vertical-rl_ltr">
- <mspace style="background: blue"
- width="20px" height="30px" depth="40px"></mspace>
- <mspace style="background: black"
- width="50px" depth="60px"></mspace>
- <mspace style="background: yellow"
- width="70px" height="80px"></mspace>
- </mrow>
- </math>
- </p>
- <p>
- <math style="writing-mode: vertical-rl; direction: rtl;">
- <mrow id="vertical-rl_rtl">
- <mspace style="background: blue"
- width="20px" height="30px" depth="40px"></mspace>
- <mspace style="background: black"
- width="50px" depth="60px"></mspace>
- <mspace style="background: yellow"
- width="70px" height="80px"></mspace>
- </mrow>
- </math>
- </p>
-</body>
-</html>
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/writing-mode/writing-mode-002.tentative.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/writing-mode/writing-mode-002.tentative.html
deleted file mode 100644
index e86f03a4f02..00000000000
--- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/writing-mode/writing-mode-002.tentative.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>writing mode</title>
-<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#layout-algorithms">
-<meta name="assert" content="Verify CSS writing mode (writing-mode and direction properties) for mrow.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/mathml/support/feature-detection.js"></script>
-<script src="/mathml/support/layout-comparison.js"></script>
-<script src="/mathml/support/mathml-fragments.js"></script>
-<script>
- var epsilon = 1;
-
- setup({ explicit_done: true });
- window.addEventListener("load", runTests);
-
- function runTests() {
- for (tag in MathMLFragments) {
- if (tag == "annotation" || tag == "annotation-xml")
- continue; // These tags have display: none.
-
- // These tests are kept in a separate tentative.html file until it is
- // clear how to handle vertical math layout.
- // See https://github.com/mathml-refresh/mathml/issues/18
- ["vertical-lr_ltr",
- "vertical-lr_rtl",
- "vertical-rl_ltr",
- "vertical-rl_rtl"].forEach(id => {
- var writingMode = id.split("_");
- var writingModeString = `writing-mode: ${writingMode[0]}; direction: ${writingMode[1]};`;
-
- document.body.insertAdjacentHTML("beforeend", `<div>\
-<math>${MathMLFragments[tag]}</math>\
-<math>${MathMLFragments[tag]}</math>\
-</div>`);
- var div = document.body.lastElementChild;
-
- var styleMath = div.firstElementChild;
- styleMath.setAttribute("style", writingModeString);
- var styleElement = FragmentHelper.element(styleMath);
-
- var referenceMath = div.lastElementChild;
- var referenceElement = FragmentHelper.element(referenceMath);
-
- [styleMath, referenceMath].forEach(math => {
- Array.from(math.getElementsByClassName("mathml-container")).forEach(container => {
- container.insertAdjacentHTML("beforeend", "\
-<mspace style='background: blue'\
- width='20px' height='30px' depth='40px'></mspace>\
-<mspace style='background: black'\
- width='50px' depth='60px'></mspace>\
-<mspace style='background: yellow'\
- width='70px' height='80px'></mspace>");
- });
- Array.from(math.getElementsByClassName("foreign-container")).forEach(container => {
- container.insertAdjacentHTML("beforeend", "\
-<span style='display: inline-block; background: lightblue;\
- inline-size: 20px; block-size: 30px;\
- vertical-align: bottom;'></span>\
-<span style='display: inline-block; background: pink;\
- inline-size: 40px; block-size: 50px;\
- vertical-align: bottom;'></span>");
- });
- });
-
- test(function() {
- assert_true(MathMLFeatureDetection.has_mspace());
- var style = window.getComputedStyle(styleElement);
- assert_equals(style.getPropertyValue("writing-mode"),
- writingMode[0], "writing-mode");
- assert_equals(style.getPropertyValue("direction"),
- writingMode[1], "direction");
- compareLayout(styleElement, referenceElement, epsilon);
- }, `Layout of ${tag} (${writingModeString})`);
-
- div.style = "display: none;"; // Hide the div after testing.
- });
- }
- done();
- }
-</script>
-</head>
-<body>
- <div id="log"></div>
-</body>
-</html>
diff --git a/tests/wpt/web-platform-tests/permissions/interfaces.any.js b/tests/wpt/web-platform-tests/permissions/idlharness.any.js
index ff0a969bada..ff0a969bada 100644
--- a/tests/wpt/web-platform-tests/permissions/interfaces.any.js
+++ b/tests/wpt/web-platform-tests/permissions/idlharness.any.js
diff --git a/tests/wpt/web-platform-tests/pointerlock/interfaces.window.js b/tests/wpt/web-platform-tests/pointerlock/idlharness.window.js
index f176343a487..f176343a487 100644
--- a/tests/wpt/web-platform-tests/pointerlock/interfaces.window.js
+++ b/tests/wpt/web-platform-tests/pointerlock/idlharness.window.js
diff --git a/tests/wpt/web-platform-tests/resources/SVGAnimationTestCase-testharness.js b/tests/wpt/web-platform-tests/resources/SVGAnimationTestCase-testharness.js
index 59febda86d6..9ebaf680392 100644
--- a/tests/wpt/web-platform-tests/resources/SVGAnimationTestCase-testharness.js
+++ b/tests/wpt/web-platform-tests/resources/SVGAnimationTestCase-testharness.js
@@ -7,13 +7,14 @@
// Helper functions
const xlinkNS = "http://www.w3.org/1999/xlink"
-function expectFillColor(element, red, green, blue) {
+function expectFillColor(element, red, green, blue, message) {
let color = window.getComputedStyle(element, null).fill;
var re = new RegExp("rgba?\\(([^, ]*), ([^, ]*), ([^, ]*)(?:, )?([^, ]*)\\)");
rgb = re.exec(color);
- assert_approx_equals(Number(rgb[1]), red, 2.0);
- assert_approx_equals(Number(rgb[2]), green, 2.0);
- assert_approx_equals(Number(rgb[3]), blue, 2.0);
+
+ assert_approx_equals(Number(rgb[1]), red, 2.0, message);
+ assert_approx_equals(Number(rgb[2]), green, 2.0, message);
+ assert_approx_equals(Number(rgb[3]), blue, 2.0, message);
}
function expectColor(element, red, green, blue, property) {
diff --git a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
index bb6b0c1be55..b52ee3bf325 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
@@ -60,19 +60,17 @@ class ChromeXRTest {
}
simulateUserActivation(callback) {
- return new Promise(resolve => {
- let button = document.createElement('button');
- button.textContent = 'click to continue test';
- button.style.display = 'block';
- button.style.fontSize = '20px';
- button.style.padding = '10px';
- button.onclick = () => {
- resolve(callback());
- document.body.removeChild(button);
- };
- document.body.appendChild(button);
- test_driver.click(button);
- });
+ let button = document.createElement('button');
+ button.textContent = 'click to continue test';
+ button.style.display = 'block';
+ button.style.fontSize = '20px';
+ button.style.padding = '10px';
+ button.onclick = () => {
+ callback();
+ document.body.removeChild(button);
+ };
+ document.body.appendChild(button);
+ test_driver.click(button);
}
}
diff --git a/tests/wpt/web-platform-tests/resources/testdriver-actions.js b/tests/wpt/web-platform-tests/resources/testdriver-actions.js
index 43d8b1df00a..292fe8889f5 100644
--- a/tests/wpt/web-platform-tests/resources/testdriver-actions.js
+++ b/tests/wpt/web-platform-tests/resources/testdriver-actions.js
@@ -3,8 +3,10 @@
/**
* Builder for creating a sequence of actions
+ * The default tick duration is set to 16ms, which is one frame time based on
+ * 60Hz display.
*/
- function Actions() {
+ function Actions(defaultTickDuration=16) {
this.sourceTypes = new Map([["key", KeySource],
["pointer", PointerSource],
["none", GeneralSource]]);
@@ -19,6 +21,7 @@
}
this.createSource("none");
this.tickIdx = 0;
+ this.defaultTickDuration = defaultTickDuration;
}
Actions.prototype = {
@@ -40,7 +43,7 @@
let actions = [];
for (let [sourceType, sourceName] of this.sourceOrder) {
let source = this.sources.get(sourceType).get(sourceName);
- let serialized = source.serialize(this.tickIdx + 1);
+ let serialized = source.serialize(this.tickIdx + 1, this.defaultTickDuration);
if (serialized) {
serialized.id = sourceName;
actions.push(serialized);
@@ -278,17 +281,14 @@
}
GeneralSource.prototype = {
- serialize: function(tickCount) {
- if (!this.actions.size) {
- return undefined;
- }
+ serialize: function(tickCount, defaultTickDuration) {
let actions = [];
let data = {"type": "none", "actions": actions};
for (let i=0; i<tickCount; i++) {
if (this.actions.has(i)) {
actions.push(this.actions.get(i));
} else {
- actions.push({"type": "pause"});
+ actions.push({"type": "pause", duration: defaultTickDuration});
}
}
return data;
diff --git a/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment-target.html b/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment-target.html
index 724132fab29..fa229dd032f 100644
--- a/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment-target.html
+++ b/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment-target.html
@@ -16,7 +16,12 @@ function checkScroll() {
position: absolute;
top: 3000px;
}
+ #element {
+ position: absolute;
+ top: 2000px;
+ }
</style>
<body onload="checkScroll()">
+ <div id="element">Element</div>
<p id="text">This is a test page</p>
</body>
diff --git a/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment.html b/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment.html
index eaab1843706..db1b1ded306 100644
--- a/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment.html
+++ b/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment.html
@@ -18,6 +18,7 @@ let test_cases = [
{ fragment: '##targetText=this&targetText=test,page', expect_scroll: true },
{ fragment: '#pagestate##targetText=test', expect_scroll: true },
{ fragment: '#pagestate##targetText=nomatch', expect_scroll: false },
+ { fragment: '#element##targetText=nomatch', expect_scroll: true },
];
for (const test_case of test_cases) {
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/getregistrations.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/getregistrations.https.html
index 11da27036d0..3e48d5fe361 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/getregistrations.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/getregistrations.https.html
@@ -8,178 +8,122 @@
// Purge the existing registrations for the origin.
// getRegistrations() is used in order to avoid adding additional complexity
// e.g. adding an internal function.
-promise_test(function() {
- return navigator.serviceWorker.getRegistrations()
- .then(function(registrations) {
- return registrations.reduce(function(sequence, registration) {
- return sequence.then(function() {
- return registration.unregister();
- });
- }, Promise.resolve());
- })
- .then(function() {
- return navigator.serviceWorker.getRegistrations();
- })
- .then(function(value) {
- assert_array_equals(
- value,
- [],
- 'getRegistrations should resolve with an empty array.');
- });
+promise_test(async () => {
+ const registrations = await navigator.serviceWorker.getRegistrations();
+ await Promise.all(registrations.map(r => r.unregister()));
+ const value = await navigator.serviceWorker.getRegistrations();
+ assert_array_equals(
+ value, [],
+ 'getRegistrations should resolve with an empty array.');
}, 'registrations are not returned following unregister');
-promise_test(function(t) {
- var scope = 'resources/scope/getregistrations/normal';
- var script = 'resources/empty-worker.js';
- var registrations = [];
- return service_worker_unregister_and_register(t, script, scope)
- .then(function(r) {
- registrations.push(r);
- return navigator.serviceWorker.getRegistrations();
- })
- .then(function(value) {
- assert_array_equals(
- value,
- registrations,
- 'getRegistrations should resolve with array of registrations.');
- return service_worker_unregister(t, scope);
- });
- }, 'Register then getRegistrations');
+promise_test(async t => {
+ const scope = 'resources/scope/getregistrations/normal';
+ const script = 'resources/empty-worker.js';
+ const registrations = [
+ await service_worker_unregister_and_register(t, script, scope)];
+ t.add_cleanup(() => registrations[0].unregister());
+ const value = await navigator.serviceWorker.getRegistrations();
+ assert_array_equals(value, registrations,
+ 'getRegistrations should resolve with an array of registrations');
+}, 'Register then getRegistrations');
-promise_test(function(t) {
- var scope1 = 'resources/scope/getregistrations/scope1';
- var scope2 = 'resources/scope/getregistrations/scope2';
- var script = 'resources/empty-worker.js';
- var registrations = [];
- return service_worker_unregister_and_register(t, script, scope1)
- .then(function(r) {
- registrations.push(r);
- return service_worker_unregister_and_register(t, script, scope2);
- })
- .then(function(r) {
- registrations.push(r);
- return navigator.serviceWorker.getRegistrations();
- })
- .then(function(value) {
- assert_array_equals(
- value,
- registrations,
- 'getRegistrations should resolve with array of registrations.');
- return service_worker_unregister(t, scope1);
- })
- .then(function() {
- return service_worker_unregister(t, scope2);
- });
- }, 'Register multiple times then getRegistrations');
+promise_test(async t => {
+ const scope1 = 'resources/scope/getregistrations/scope1';
+ const scope2 = 'resources/scope/getregistrations/scope2';
+ const script = 'resources/empty-worker.js';
+ t.add_cleanup(() => service_worker_unregister(t, scope1));
+ t.add_cleanup(() => service_worker_unregister(t, scope2));
-promise_test(function(t) {
- var scope = 'resources/scope/getregistrations/register-unregister';
- var script = 'resources/empty-worker.js';
- return service_worker_unregister_and_register(t, script, scope)
- .then(function(registration) {
- return registration.unregister();
- })
- .then(function() {
- return navigator.serviceWorker.getRegistrations();
- })
- .then(function(value) {
- assert_array_equals(
- value,
- [],
- 'getRegistrations should resolve with an empty array.');
- });
- }, 'Register then Unregister then getRegistrations');
+ const registrations = [
+ await service_worker_unregister_and_register(t, script, scope1),
+ await service_worker_unregister_and_register(t, script, scope2)
+ ];
+ const value = await navigator.serviceWorker.getRegistrations();
+ assert_array_equals(value, registrations);
+}, 'Register multiple times then getRegistrations');
-promise_test(function(t) {
- var scope = 'resources/scope/getregistrations/register-unregister-controlled';
- var script = 'resources/empty-worker.js';
- var registrations;
- return service_worker_unregister_and_register(t, script, scope)
- .then(function(r) {
- registration = r;
- return wait_for_state(t, registration.installing, 'activated');
- })
- .then(function() {
- return with_iframe(scope);
- })
- .then(function(f) {
- t.add_cleanup(function() { f.remove(); });
- return registration.unregister();
- })
- .then(function() {
- return navigator.serviceWorker.getRegistrations();
- })
- .then(function(value) {
- assert_array_equals(
- value,
- [],
- 'getRegistrations should resolve with an empty array.');
- assert_equals(registration.installing, null);
- assert_equals(registration.waiting, null);
- assert_equals(registration.active.state, 'activated');
- });
- }, 'Register then Unregister with controlled frame then getRegistrations');
+promise_test(async t => {
+ const scope = 'resources/scope/getregistrations/register-unregister';
+ const script = 'resources/empty-worker.js';
+ const registration = await service_worker_unregister_and_register(t, script, scope);
+ await registration.unregister();
+ const value = await navigator.serviceWorker.getRegistrations();
+ assert_array_equals(
+ value, [], 'getRegistrations should resolve with an empty array.');
+}, 'Register then Unregister then getRegistrations');
-promise_test(function(t) {
- var host_info = get_host_info();
- // Rewrite the url to point to remote origin.
- var frame_same_origin_url = new URL("resources/frame-for-getregistrations.html", window.location);
- var frame_url = host_info['HTTPS_REMOTE_ORIGIN'] + frame_same_origin_url.pathname;
- var scope = 'resources/scope-for-getregistrations';
- var script = 'resources/empty-worker.js';
- var frame;
- var registrations = [];
+promise_test(async t => {
+ const scope = 'resources/scope/getregistrations/register-unregister-controlled';
+ const script = 'resources/empty-worker.js';
+ const registration = await service_worker_unregister_and_register(t, script, scope);
+ await wait_for_state(t, registration.installing, 'activated');
- // Loads an iframe and waits for 'ready' message from it to resolve promise.
- // Caller is responsible for removing frame.
- function with_iframe_ready(url) {
- return new Promise(function(resolve) {
- var frame = document.createElement('iframe');
- frame.src = url;
- window.addEventListener('message', function onMessage(e) {
- window.removeEventListener('message', onMessage);
- if (e.data == 'ready') {
- resolve(frame);
- }
- });
- document.body.appendChild(frame);
- });
- }
+ // Create a frame controlled by the service worker and unregister the
+ // worker.
+ const frame = await with_iframe(scope);
+ t.add_cleanup(() => frame.remove());
+ await registration.unregister();
- // We need this special frame loading function because the frame is going
- // to register it's own service worker and there is the possibility that that
- // register() finishes after the register() for the same domain later in the
- // test. So we have to wait until the cross origin register() is done, and not
- // just until the frame loads.
- return with_iframe_ready(frame_url)
- .then(function(f) {
- t.add_cleanup(function() { f.remove(); });
- frame = f;
- return service_worker_unregister_and_register(t, script, scope);
- })
- .then(function(r) {
- registrations.push(r);
- return navigator.serviceWorker.getRegistrations();
- })
- .then(function(value) {
- assert_array_equals(
- value,
- registrations,
- 'getRegistrations should only return same origin registrations.');
+ const value = await navigator.serviceWorker.getRegistrations();
+ assert_array_equals(
+ value, [],
+ 'getRegistrations should resolve with an empty array.');
+ assert_equals(registration.installing, null);
+ assert_equals(registration.waiting, null);
+ assert_equals(registration.active.state, 'activated');
+}, 'Register then Unregister with controlled frame then getRegistrations');
- var channel = new MessageChannel();
- var resolve;
- var p = new Promise(function(r) { resolve = r; });
+promise_test(async t => {
+ const host_info = get_host_info();
+ // Rewrite the url to point to remote origin.
+ const frame_same_origin_url = new URL("resources/frame-for-getregistrations.html", window.location);
+ const frame_url = host_info['HTTPS_REMOTE_ORIGIN'] + frame_same_origin_url.pathname;
+ const scope = 'resources/scope-for-getregistrations';
+ const script = 'resources/empty-worker.js';
- channel.port1.onmessage = function(e) {
- if (e.data == 'unregistered')
- resolve();
- };
- frame.contentWindow.postMessage('unregister', '*', [channel.port2]);
- return p;
- })
- .then(function() {
- return service_worker_unregister(t, scope);
- });
- }, 'getRegistrations promise resolves only with same origin registrations.');
+ // Loads an iframe and waits for 'ready' message from it to resolve promise.
+ // Caller is responsible for removing frame.
+ function with_iframe_ready(url) {
+ return new Promise(resolve => {
+ const frame = document.createElement('iframe');
+ frame.src = url;
+ window.addEventListener('message', function onMessage(e) {
+ window.removeEventListener('message', onMessage);
+ if (e.data == 'ready') {
+ resolve(frame);
+ }
+ });
+ document.body.appendChild(frame);
+ });
+ }
+
+ // We need this special frame loading function because the frame is going
+ // to register it's own service worker and there is the possibility that that
+ // register() finishes after the register() for the same domain later in the
+ // test. So we have to wait until the cross origin register() is done, and not
+ // just until the frame loads.
+ const frame = await with_iframe_ready(frame_url);
+ t.add_cleanup(async () => {
+ // Wait until the cross-origin worker is unregistered.
+ let resolve;
+ const channel = new MessageChannel();
+ channel.port1.onmessage = e => {
+ if (e.data == 'unregistered')
+ resolve();
+ };
+ frame.contentWindow.postMessage('unregister', '*', [channel.port2]);
+ await new Promise(r => { resolve = r; });
+
+ frame.remove();
+ });
+
+ const registrations = [
+ await service_worker_unregister_and_register(t, script, scope)];
+ t.add_cleanup(() => registrations[0].unregister());
+ const value = await navigator.serviceWorker.getRegistrations();
+ assert_array_equals(
+ value, registrations,
+ 'getRegistrations should only return same origin registrations.');
+}, 'getRegistrations promise resolves only with same origin registrations.');
</script>
diff --git a/tests/wpt/web-platform-tests/service-workers/specgen.json b/tests/wpt/web-platform-tests/service-workers/specgen.json
deleted file mode 100644
index 88c36ed04aa..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/specgen.json
+++ /dev/null
@@ -1,658 +0,0 @@
-{
- "sections": [
- {
- "href": "#introduction",
- "id": "introduction",
- "hash": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
- "secno": "1",
- "testable": false
- },
- {
- "href": "#about",
- "id": "about",
- "hash": "8d3cf149aa73cff52328509ebbaffd933e8fb6af",
- "secno": "1.1",
- "testable": false
- },
- {
- "href": "#dependencies",
- "id": "dependencies",
- "hash": "1355f2d7ec9bf4e617ee632c0db44f834c96435b",
- "secno": "1.2",
- "testable": false
- },
- {
- "href": "#motivations",
- "id": "motivations",
- "hash": "92d899bc1e63a170d2324638d16f580b97b4f4d6",
- "secno": "1.3",
- "testable": false
- },
- {
- "href": "#concepts",
- "id": "concepts",
- "hash": "589023372dc033b0a77be1cd01f54f5f8c3ebfa8",
- "secno": "2",
- "testable": false
- },
- {
- "href": "#document-context",
- "id": "document-context",
- "hash": "34feeb18dea978349a2f76e6b17c127123b3db74",
- "secno": "3",
- "testable": false
- },
- {
- "href": "#service-worker-obj",
- "id": "service-worker-obj",
- "hash": "6cbd0107199072ab86b36e72d08d5465b42e6da8",
- "secno": "3.1",
- "testPageHash": "8dbbc9aa4300f0203524f3e405dbf7ca462e7164",
- "testPagePath": "stub-3.1-service-worker-obj.html",
- "testable": true
- },
- {
- "href": "#service-worker-scope",
- "id": "service-worker-scope",
- "hash": "136f25ef227515a7be9b32c44967f68b34ad8924",
- "secno": "3.1.1",
- "testPageHash": "965a00b32d56192330aa9f6337072bb3633ad382",
- "testPagePath": "stub-3.1.1-service-worker-scope.html",
- "testable": true
- },
- {
- "href": "#service-worker-url",
- "id": "service-worker-url",
- "hash": "df66a1b4b3bfa3e7ab96fd491a6829fab1d18a88",
- "secno": "3.1.2",
- "testPageHash": "92f6aed1437bb39c5941b495ac6c5f342c025b38",
- "testPagePath": "stub-3.1.2-service-worker-url.html",
- "testable": true
- },
- {
- "href": "#service-worker-state",
- "id": "service-worker-state",
- "hash": "8f80f2b4cbb1c228867c9dd90c05cbecfc92dd77",
- "secno": "3.1.3",
- "testPageHash": "4aad1dc47572879fdc2c79a814ad21e1ef9a64ec",
- "testPagePath": "stub-3.1.3-service-worker-state.html",
- "testable": true
- },
- {
- "href": "#service-worker-on-state-change",
- "id": "service-worker-on-state-change",
- "hash": "0f8fd9d1431deacea72fe739f42992ab5a396bf2",
- "secno": "3.1.4",
- "testPageHash": "6bb309bccc1e7c74ade7fc4c6e400bafb60daceb",
- "testPagePath": "stub-3.1.4-service-worker-on-state-change.html",
- "testable": true
- },
- {
- "href": "#navigator-service-worker",
- "id": "navigator-service-worker",
- "hash": "22f1ebbafca6976d0f4814b0fbb8f173bf919f06",
- "secno": "3.2",
- "testPageHash": "6d597735816a09ec774150029ed5136198f52ab7",
- "testPagePath": "stub-3.2-navigator-service-worker.html",
- "testable": true
- },
- {
- "href": "#navigator-service-worker-installing",
- "id": "navigator-service-worker-installing",
- "hash": "9675c3cdf5ba4b4155284e06a19e4de631645509",
- "secno": "3.2.1",
- "testPageHash": "2c8e56e74c130104e395de46bad20fb5d3021d95",
- "testPagePath": "stub-3.2.1-navigator-service-worker-installing.html",
- "testable": true
- },
- {
- "href": "#navigator-service-worker-waiting",
- "id": "navigator-service-worker-waiting",
- "hash": "88b4db92cc49109e6a15ddebdd219690d9648e76",
- "secno": "3.2.2",
- "testPageHash": "1cf6ed58bf5ecf963fed8c3d9211b853dab564e2",
- "testPagePath": "stub-3.2.2-navigator-service-worker-waiting.html",
- "testable": true
- },
- {
- "href": "#navigator-service-worker-active",
- "id": "navigator-service-worker-active",
- "hash": "0da48e885c77da60d1837197780049904789e3cb",
- "secno": "3.2.3",
- "testPageHash": "f5dca8c6eb5f29a0f9a5f06e25861e7f3106cc67",
- "testPagePath": "stub-3.2.3-navigator-service-worker-active.html",
- "testable": true
- },
- {
- "href": "#navigator-service-worker-controller",
- "id": "navigator-service-worker-controller",
- "hash": "293433ccb7bb2a22d8d5a81e788892e071b25e65",
- "secno": "3.2.4",
- "testPageHash": "6452f431d0765d7aa3135d18fee43e6664dcbb12",
- "testPagePath": "stub-3.2.4-navigator-service-worker-controller.html",
- "testable": true
- },
- {
- "href": "#navigator-service-worker-ready",
- "id": "navigator-service-worker-ready",
- "hash": "6240fde8d7168beeb95f4f36aa9e143319b2061b",
- "secno": "3.2.5",
- "testPageHash": "ae4fd694c88bab72f338d97bf96b7d23e2e83e87",
- "testPagePath": "stub-3.2.5-navigator-service-worker-ready.html",
- "testable": true
- },
- {
- "href": "#navigator-service-worker-getAll",
- "id": "navigator-service-worker-getAll",
- "hash": "292ee3af2cc8fadc24302446809d04bf2e9811a5",
- "secno": "3.2.6",
- "testPageHash": "4096ae712cc3e753456fbe05bb4d0cfc4399d2c9",
- "testPagePath": "stub-3.2.6-navigator-service-worker-getAll.html",
- "testable": true
- },
- {
- "href": "#navigator-service-worker-register",
- "id": "navigator-service-worker-register",
- "hash": "c999dc5f67126c9f0f02b25fd943a34b48cff618",
- "secno": "3.2.7",
- "testPageHash": "bde900b97dbb08b053ff8115775ea3b79a124b6e",
- "testPagePath": "stub-3.2.7-navigator-service-worker-register.html",
- "testable": true
- },
- {
- "href": "#navigator-service-worker-unregister",
- "id": "navigator-service-worker-unregister",
- "hash": "fd196f926f181563855e4683cc995405c1e611d0",
- "secno": "3.2.8",
- "testPageHash": "dbd99a1dcbcb629431617790a305e840495049eb",
- "testPagePath": "stub-3.2.8-navigator-service-worker-unregister.html",
- "testable": true
- },
- {
- "href": "#navigator-service-worker-onupdatefound",
- "id": "navigator-service-worker-onupdatefound",
- "hash": "2bb5aabaca24a68f9e6b4c4443968178eb1ccfe8",
- "secno": "3.2.9",
- "testPageHash": "eef0c1c39577abefb3654a6e9917ff2da657871b",
- "testPagePath": "stub-3.2.9-navigator-service-worker-onupdatefound.html",
- "testable": true
- },
- {
- "href": "#navigator-service-worker-oncontrollerchange",
- "id": "navigator-service-worker-oncontrollerchange",
- "hash": "c89a4ffba10d9285e07c38c28718719d87053994",
- "secno": "3.2.10",
- "testPageHash": "35e0ce2b8f4527ebbd75d4dfa3436fd7f8c79792",
- "testPagePath": "stub-3.2.10-navigator-service-worker-oncontrollerchange.html",
- "testable": true
- },
- {
- "href": "#navigator-service-worker-onreloadpage",
- "id": "navigator-service-worker-onreloadpage",
- "hash": "424441910abf2e1bdc3db658fe46827f7abe60a4",
- "secno": "3.2.11",
- "testPageHash": "ae614de17e5f339b65f77cafa6e0f5625491abfb",
- "testPagePath": "stub-3.2.11-navigator-service-worker-onreloadpage.html",
- "testable": true
- },
- {
- "href": "#navigator-service-worker-onerror",
- "id": "navigator-service-worker-onerror",
- "hash": "710f7fcd2f5340147b9e030bc5932b8242cef828",
- "secno": "3.2.12",
- "testPageHash": "cd62779e27151d55f14ac6ab7aa41dcf723e0ac7",
- "testPagePath": "stub-3.2.12-navigator-service-worker-onerror.html",
- "testable": true
- },
- {
- "href": "#execution-context",
- "id": "execution-context",
- "hash": "ddf24f0adf58237e264c3c43cb7ab07af3013c9d",
- "secno": "4",
- "testable": false
- },
- {
- "href": "#service-worker-global-scope",
- "id": "service-worker-global-scope",
- "hash": "e6b8bb7f99c125f4226fc5b6c51cf03a7437f2ef",
- "secno": "4.1",
- "testPageHash": "2f596b6b07bcfb71c01d75f725eb52c84e9c69dd",
- "testPagePath": "stub-4.1-service-worker-global-scope.html",
- "testable": true
- },
- {
- "href": "#service-worker-global-scope-caches",
- "id": "service-worker-global-scope-caches",
- "hash": "43d3c9f441b3a7abd0d3a7f55d93faaceeb7d97d",
- "secno": "4.1.1",
- "testPageHash": "f19b91c887f6312688b66b1988147a599cd9470f",
- "testPagePath": "stub-4.1.1-service-worker-global-scope-caches.html",
- "testable": true
- },
- {
- "href": "#service-worker-global-scope-clients",
- "id": "service-worker-global-scope-clients",
- "hash": "cb83230107645229da9776ed0fc9f7bc6fcce747",
- "secno": "4.1.2",
- "testPageHash": "45b3aae572f7161748fa98e97b4f2b738c3dcfef",
- "testPagePath": "stub-4.1.2-service-worker-global-scope-clients.html",
- "testable": true
- },
- {
- "href": "#service-worker-global-scope-scope",
- "id": "service-worker-global-scope-scope",
- "hash": "08c808048b647aa9d4cc0b0a0f70b06ca89af4a3",
- "secno": "4.1.3",
- "testPageHash": "bfe7eaf8deb8de7d2ccfbba97640478b1c81d6c7",
- "testPagePath": "stub-4.1.3-service-worker-global-scope-scope.html",
- "testable": true
- },
- {
- "href": "#service-worker-global-scope-fetch",
- "id": "service-worker-global-scope-fetch",
- "hash": "b66133d8a2c67f9b10c274d5b05383ff76d2cd42",
- "secno": "4.1.4",
- "testPageHash": "2b1ffa915afddeb099dfff23f4ecf555b0710ed4",
- "testPagePath": "stub-4.1.4-service-worker-global-scope-fetch.html",
- "testable": true
- },
- {
- "href": "#service-worker-global-scope-update",
- "id": "service-worker-global-scope-update",
- "hash": "3ddf48cecb4d4a67a329248787dd220ce17f4eff",
- "secno": "4.1.5",
- "testPageHash": "15879bf45f460c0ab0c02793655096c1bca418a7",
- "testPagePath": "stub-4.1.5-service-worker-global-scope-update.html",
- "testable": true
- },
- {
- "href": "#service-worker-global-scope-unregister",
- "id": "service-worker-global-scope-unregister",
- "hash": "fff9ef2daa5689b38a17eeb9a6bd7071098ca778",
- "secno": "4.1.6",
- "testPageHash": "c4bf327228628b794db9c6f2eb17519e37cea6b9",
- "testPagePath": "stub-4.1.6-service-worker-global-scope-unregister.html",
- "testable": true
- },
- {
- "href": "#service-worker-global-scope-onmessage",
- "id": "service-worker-global-scope-onmessage",
- "hash": "bc8f6aed2d515dc7f6b0757afa02f37899082668",
- "secno": "4.1.7",
- "testPageHash": "9e6f2732d21871ec06e9541ea881baf962f7cdf4",
- "testPagePath": "stub-4.1.7-service-worker-global-scope-onmessage.html",
- "testable": true
- },
- {
- "href": "#client",
- "id": "client",
- "hash": "47a1c10cd9e4db9a5c86d9bcf80477f771ea954c",
- "secno": "4.2",
- "testPageHash": "21d74c1af0b3176b029c9b62b37fe73436e0f197",
- "testPagePath": "stub-4.2-client.html",
- "testable": true
- },
- {
- "href": "#service-worker-clients",
- "id": "service-worker-clients",
- "hash": "c2c6f4873f07b53705a46b2bd44ba10f84dd2b56",
- "secno": "4.3",
- "testPageHash": "9c0366e6cfd28caaeaf940bad2b3c7ace93037f6",
- "testPagePath": "stub-4.3-service-worker-clients.html",
- "testable": true
- },
- {
- "href": "#get-serviced-method",
- "id": "get-serviced-method",
- "hash": "299abaa21cf096e423edfa19755987986f742a1f",
- "secno": "4.3.1",
- "testPageHash": "efeb1c2dc8144c30e6628cb56b3e532531ee1e88",
- "testPagePath": "stub-4.3.1-get-serviced-method.html",
- "testable": true
- },
- {
- "href": "#reloadall-method",
- "id": "reloadall-method",
- "hash": "bb4d775d261e69cbeaf65c123e949c24cf542ae7",
- "secno": "4.3.2",
- "testPageHash": "d1a4dde873b77201b4de745d2083bf63549b0b8b",
- "testPagePath": "stub-4.3.2-reloadall-method.html",
- "testable": true
- },
- {
- "href": "#request-objects",
- "id": "request-objects",
- "hash": "65ae6c08f720a2eedb7b140f5635a5ac46ddadfc",
- "secno": "4.4",
- "testPageHash": "ec493c70e8a0d8d3eeb0ecaef59610aed97d298e",
- "testPagePath": "stub-4.4-request-objects.html",
- "testable": true
- },
- {
- "href": "#response-objects",
- "id": "response-objects",
- "hash": "2efbff63c70ab92f93e4acd021409b9df4776882",
- "secno": "4.5",
- "testPageHash": "8340b69d62f111f56095c5fe9047d9215fa7aefc",
- "testPagePath": "stub-4.5-response-objects.html",
- "testable": true
- },
- {
- "href": "#abstract-response",
- "id": "abstract-response",
- "hash": "bddc306a9892c0bca43e8b361c1ee22b87759e23",
- "secno": "4.5.1",
- "testable": false
- },
- {
- "href": "#response",
- "id": "response",
- "hash": "6471d25755bdab0d4f72413f9367b7bb36c53a6f",
- "secno": "4.5.2",
- "testPageHash": "346d63cc7eb8ee412f5f704ba241205c8d437540",
- "testPagePath": "stub-4.5.2-response.html",
- "testable": true
- },
- {
- "href": "#header",
- "id": "header",
- "hash": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
- "secno": "4.5.3",
- "testable": false
- },
- {
- "href": "#opaque-response",
- "id": "opaque-response",
- "hash": "df5431f4fbd26d81f2d4f567309c6a7a26dbfd4a",
- "secno": "4.5.4",
- "testPageHash": "85373f290cf594f0f09eb0a76bc6ef6299be595f",
- "testPagePath": "stub-4.5.4-opaque-response.html",
- "testable": true
- },
- {
- "href": "#cors-response",
- "id": "cors-response",
- "hash": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
- "secno": "4.5.5",
- "testable": false
- },
- {
- "href": "#cache-objects",
- "id": "cache-objects",
- "hash": "001d0dfb8fbcbcb6443d1be2b722c9a84d6fd95b",
- "secno": "4.6",
- "testPageHash": "c1ef341d15a8c76d015eef57842ed10e62c02927",
- "testPagePath": "stub-4.6-cache-objects.html",
- "testable": true
- },
- {
- "href": "#cache-lifetimes",
- "id": "cache-lifetimes",
- "hash": "7c73698ca9b686a0314ddf368bf8ad4ca6af392f",
- "secno": "4.6.1",
- "testPageHash": "f3524320a98f2fbdc5d711de82770957a7f5ec4b",
- "testPagePath": "stub-4.6.1-cache-lifetimes.html",
- "testable": true
- },
- {
- "href": "#cache",
- "id": "cache",
- "hash": "bf1fe844577ab57a60eb550be24335a3321ca2ee",
- "secno": "4.6.2",
- "testPageHash": "c55b7b05c8e2f4b65722e16cdbcd78ffdfe1e4bf",
- "testPagePath": "stub-4.6.2-cache.html",
- "testable": true
- },
- {
- "href": "#cache-storage",
- "id": "cache-storage",
- "hash": "9cdaac070f56e55d66a89cd4b6e669a04aa73b82",
- "secno": "4.6.3",
- "testPageHash": "ee6902f170d94cc1e3a4a00f4c90e7e19c4dff95",
- "testPagePath": "stub-4.6.3-cache-storage.html",
- "testable": true
- },
- {
- "href": "#events",
- "id": "events",
- "hash": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
- "secno": "4.7",
- "testable": false
- },
- {
- "href": "#install-phase-event",
- "id": "install-phase-event",
- "hash": "8495382b418adbbed436b2002ab0155a3a295ef2",
- "secno": "4.7.1",
- "testPageHash": "e48e98d51936bd57d21903615203f2b78d3f4b12",
- "testPagePath": "stub-4.7.1-install-phase-event.html",
- "testable": true
- },
- {
- "href": "#wait-until-method",
- "id": "wait-until-method",
- "hash": "295fb5d4932396fd13365ed2fe57aa672f1f2a56",
- "secno": "4.7.1.1",
- "testPageHash": "c3769e51852b8438a97c39c50fa62351a73c4ee6",
- "testPagePath": "stub-4.7.1.1-wait-until-method.html",
- "testable": true
- },
- {
- "href": "#install-event",
- "id": "install-event",
- "hash": "3a0f6da1771c22ab21ddc00729433a4d95ac6782",
- "secno": "4.7.2",
- "testPageHash": "9a103cc461eaca3da75db583ce08f13ecd2b1a98",
- "testPagePath": "stub-4.7.2-install-event.html",
- "testable": true
- },
- {
- "href": "#install-event-section",
- "id": "install-event-section",
- "hash": "4631577df2efc1a4350000461629bc1ca93dbd14",
- "secno": "4.7.2.1",
- "testPageHash": "32f54e74bef784d2f0ac772b44abeee06573062d",
- "testPagePath": "stub-4.7.2.1-install-event-section.html",
- "testable": true
- },
- {
- "href": "#replace-method",
- "id": "replace-method",
- "hash": "b9093b05204d09748311023b4c737ede02ff8115",
- "secno": "4.7.2.2",
- "testPageHash": "372bed923f8c35c4923634ae27fa121919ac0fec",
- "testPagePath": "stub-4.7.2.2-replace-method.html",
- "testable": true
- },
- {
- "href": "#activate-event",
- "id": "activate-event",
- "hash": "ac3d03aa0ed961fb1122850aeab92c302c55ecd0",
- "secno": "4.7.3",
- "testPageHash": "6241762ab1d6f430fa9b7cc8f02a00e6591c6bc6",
- "testPagePath": "stub-4.7.3-activate-event.html",
- "testable": true
- },
- {
- "href": "#fetch-event",
- "id": "fetch-event",
- "hash": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
- "secno": "4.7.4",
- "testable": false
- },
- {
- "href": "#fetch-event-section",
- "id": "fetch-event-section",
- "hash": "ae24fda9664a3bd7b7fe2a8712ac469c3ee7128e",
- "secno": "4.7.4.1",
- "testPageHash": "393fc7b65e9f5afd18da666b6b206ccd639397cd",
- "testPagePath": "stub-4.7.4.1-fetch-event-section.html",
- "testable": true
- },
- {
- "href": "#respond-with-method",
- "id": "respond-with-method",
- "hash": "7e4f010e2ec1ea0500b435cf599ba58942164457",
- "secno": "4.7.4.2",
- "testPageHash": "31e0acd058b9a5b722ae9f405b50bc94d31596b8",
- "testPagePath": "stub-4.7.4.2-respond-with-method.html",
- "testable": true
- },
- {
- "href": "#default-method",
- "id": "default-method",
- "hash": "4d6f8f93b2e10ab0e486dbf464ff107ec1a6aa4c",
- "secno": "4.7.4.3",
- "testPageHash": "34e015c973887e2b3bf8b6db62f75d5d417a43cc",
- "testPagePath": "stub-4.7.4.3-default-method.html",
- "testable": true
- },
- {
- "href": "#is-reload-attribute",
- "id": "is-reload-attribute",
- "hash": "6e1afd9e8940e9cd38aa7de1ed57e8c5b1a60e3d",
- "secno": "4.7.4.4",
- "testPageHash": "703a6469782d37be3c25e2214f897d1064acca47",
- "testPagePath": "stub-4.7.4.4-is-reload-attribute.html",
- "testable": true
- },
- {
- "href": "#security-considerations",
- "id": "security-considerations",
- "hash": "5b02b143172647dd7f74f0464dffa7ec7d0e8f94",
- "secno": "5",
- "testable": false
- },
- {
- "href": "#origin-relativity",
- "id": "origin-relativity",
- "hash": "72bbbd7d3d43a859af6ff9f19353210ddfcc26de",
- "secno": "5.1",
- "testPageHash": "1c92607dfac57b0f59654d059a4a67e0f984b84d",
- "testPagePath": "stub-5.1-origin-relativity.html",
- "testable": true
- },
- {
- "href": "#cross-origin-resources",
- "id": "cross-origin-resources",
- "hash": "6176879ecfb5ae769679ceef4ee1e8889be8df92",
- "secno": "5.2",
- "testPageHash": "bcf85ba278c70c086645c416cee729ce753bc528",
- "testPagePath": "stub-5.2-cross-origin-resources.html",
- "testable": true
- },
- {
- "href": "#storage-considerations",
- "id": "storage-considerations",
- "hash": "e101cee2062749b1a73086492377458251a5e875",
- "secno": "6",
- "testable": false
- },
- {
- "href": "#extensibility",
- "id": "extensibility",
- "hash": "ef1b382bb89c52e01edad421b02b237765a21ce7",
- "secno": "7",
- "testable": false
- },
- {
- "href": "#algorithms",
- "id": "algorithms",
- "hash": "d130247eab1d368efea646ff369e65f6c0c19481",
- "secno": "8",
- "testable": false
- },
- {
- "href": "#registration-algorithm",
- "id": "registration-algorithm",
- "hash": "b688d090671c08ca17ea7cadc561e6d471ee099e",
- "secno": "8.1",
- "testable": false
- },
- {
- "href": "#update-algorithm",
- "id": "update-algorithm",
- "hash": "679a19fef428affc83103c1eec0dbd3be40c4e2a",
- "secno": "8.2",
- "testable": false
- },
- {
- "href": "#soft-update-algorithm",
- "id": "soft-update-algorithm",
- "hash": "8eb103f5cd0e595ee5e25f075e8c6239211e482a",
- "secno": "8.3",
- "testable": false
- },
- {
- "href": "#installation-algorithm",
- "id": "installation-algorithm",
- "hash": "5874d9247d979009b67aedf964ae097837cfb3d9",
- "secno": "8.4",
- "testable": false
- },
- {
- "href": "#activation-algorithm",
- "id": "activation-algorithm",
- "hash": "648b34baf6e7c2096a842e6d367949117843108e",
- "secno": "8.5",
- "testable": false
- },
- {
- "href": "#on-fetch-request-algorithm",
- "id": "on-fetch-request-algorithm",
- "hash": "e1da43671071ec307f99cd781fc9b46353f3adfd",
- "secno": "8.6",
- "testable": false
- },
- {
- "href": "#on-document-unload-algorithm",
- "id": "on-document-unload-algorithm",
- "hash": "8a7196b5dd04ad4fb9b96e16a52f4f7ac1906763",
- "secno": "8.7",
- "testable": false
- },
- {
- "href": "#unregistration-algorithm",
- "id": "unregistration-algorithm",
- "hash": "0114db166d42211d0d7ab4b8e77de64a9fc97517",
- "secno": "8.8",
- "testable": false
- },
- {
- "href": "#update-state-algorithm",
- "id": "update-state-algorithm",
- "hash": "2ed8a1e7479f1a8ad038aa44ccdd5e4f6b65cf05",
- "secno": "8.9",
- "testable": false
- },
- {
- "href": "#scope-match-algorithm",
- "id": "scope-match-algorithm",
- "hash": "a2117fb34a8fa4ca3e832d9276477cfc1318dd1a",
- "secno": "8.10",
- "testable": false
- },
- {
- "href": "#get-registration-algorithm",
- "id": "get-registration-algorithm",
- "hash": "b20332db952ba8f4b7e5f65b740a18da4a199c2e",
- "secno": "8.11",
- "testable": false
- },
- {
- "href": "#get-newest-worker-algorithm",
- "id": "get-newest-worker-algorithm",
- "hash": "72dc1cbee8c98501931c411018fd1cad4376142b",
- "secno": "8.12",
- "testable": false
- },
- {
- "href": "#acknowledgements",
- "id": "acknowledgements",
- "hash": "6347067ca5a574f8cc80c76d95dee568042d059b",
- "secno": "9",
- "testable": false
- }
- ],
- "specUrl": "https://w3c.github.io/ServiceWorker/"
-} \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-3.1-service-worker-obj.html b/tests/wpt/web-platform-tests/service-workers/stub-3.1-service-worker-obj.html
deleted file mode 100644
index 99c2cbe8597..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-3.1-service-worker-obj.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: ServiceWorker</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#service-worker-obj">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- <script src=/resources/WebIDLParser.js></script>
- <script src=/resources/idlharness.js></script>
-
- </head>
- <body>
-
-<script type=text/plain id="idl_0">
-[Constructor()] // no-op constructor
-interface ServiceWorker : Worker {
- readonly attribute DOMString scope;
- readonly attribute DOMString url;
- readonly attribute ServiceWorkerState state;
-
- // event
- attribute EventHandler onstatechange;
-};
-
-enum ServiceWorkerState {
- "installing",
- "installed",
- "activating",
- "activated",
- "redundant"
-};
-</script>
-
-<!--
-The `ServiceWorker` interface represents the document-side view of a Service
-Worker. This object provides a no-op constructor. Callers should note that only
-`ServiceWorker` objects created by the user agent (see
-`navigator.serviceWorker.installing`, `navigator.serviceWorker.waiting`,
-`navigator.serviceWorker.active` and `navigator.serviceWorker.controller`) will
-provide meaningful functionality.
--->
-
-
- <script type=text/plain id="untested_idls">
- interface EventHandler {};
- interface Worker {};
- </script>
-
- <script>
- var idl_array = new IdlArray();
- idl_array.add_untested_idls(document.getElementById("untested_idls").textContent);
- idl_array.add_idls(document.getElementById("idl_0").textContent);
- idl_array.add_objects({
- ServiceWorker: ["throw new Error ('No object defined for the ServiceWorker interface')"],
- ServiceWorkerState: ["throw new Error ('No object defined for the ServiceWorkerState enum')"]
- });
- idl_array.test();
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-3.1.1-service-worker-scope.html b/tests/wpt/web-platform-tests/service-workers/stub-3.1.1-service-worker-scope.html
deleted file mode 100644
index 8c75c608297..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-3.1.1-service-worker-scope.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: scope</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#service-worker-scope">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-The `scope` of a `ServiceWorker` object reflects the [URL scope][1] of the
-associated Service Worker [registration][2]. The `scope` attribute must return
-the [serialization][3] of the URL representing the [URL scope][1] of the
-associated Service Worker [registration][2].
-
-For example, consider a document created by a navigation to
-`https://example.com/app.html` which [matches][4] via the following
-registration call which has been previously executed:
-// Script on the page https://example.com/app.html
-navigator.serviceWorker.register("/service_worker.js", { scope: "/*" });
-The value of `navigator.serviceWorker.controller.scope` will be
-`"https://example.com/*"`.
-
-
-
-[1]: #url-scope
-[2]: #registration
-[3]: http://url.spec.whatwg.org/#concept-url-serializer
-[4]: #on-fetch-request-algorithm
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section scope so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-3.1.2-service-worker-url.html b/tests/wpt/web-platform-tests/service-workers/stub-3.1.2-service-worker-url.html
deleted file mode 100644
index 5674df7fc8d..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-3.1.2-service-worker-url.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: url</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#service-worker-url">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-The `url` attribute must return the [serialization][1] of the URL of the script
-of the Service Worker, identified by its [URL scope][2], that is associated
-with the [ServiceWorkerGlobalScope][3] object. The `url` attribute is always an
-[absolute URL][4] corresponding to the script file which the Service Worker
-evaluates.
-
-In the example in section 3.1.1, the value of
-`navigator.serviceWorker.controller.url` will be
-`"https://example.com/service_worker.js"`.
-
-
-
-[1]: http://url.spec.whatwg.org/#concept-url-serializer
-[2]: #url-scope
-[3]: #service-worker-global-scope-interface
-[4]: http://url.spec.whatwg.org/#concept-absolute-url
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section url so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-3.1.3-service-worker-state.html b/tests/wpt/web-platform-tests/service-workers/stub-3.1.3-service-worker-state.html
deleted file mode 100644
index 8e729baf89f..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-3.1.3-service-worker-state.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: state</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#service-worker-state">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-The [ServiceWorker][1] object can be in several states. The `state` attribute
-must return the current state, which must be one of the following values
-defined in the [ServiceWorkerState][2] enumeration:
-
-`"installing"`:
- The Service Worker represented by the [ServiceWorker][1] object has entered
- and is running the steps in the [installation process][3]. During this
- state, `e.waitUntil(p)` can be called inside the `oninstall` event handler
- of the associcated [ServiceWorkerGloberScope][4] object to extend the life
- of the [installing worker][5] until the passed [Promise][6] resolves
- successfully. This is primarily used to ensure that the Service Worker is
- not active until all of the core caches are populated.
-`"installed"`:
- The Service Worker represented by the [ServiceWorker][1] object has
- completed the steps in the [installation process][3]. The Service Worker in
- this state is considered the [worker in waiting][7].
-`"activating"`:
- The Service Worker represented by the [ServiceWorker][1] object has entered
- and is running the steps in the [activation process][8]. During this state,
- `e.waitUntil(p)` can be called inside the `onactivate` event handler of the
- associated [ServiceWorkerGloberScope][9] object to extend the life of the
- activating [active worker][10] until the passed [Promise][6] resolves
- successfully. Note that no [functional events][11] are dispatched until the
- state becomes `"activated"`.
-`"activated"`:
- The Service Worker represented by the [ServiceWorker][1] object has
- completed the steps in the [activation process][8]. The Service Worker in
- this state is considered the [active worker][10] ready to [control][12] the
- documents in matching scope upon subsequence [navigation][13].
-`"redundant"`:
- A newly created Service Worker [registration][14] is replacing the current
- [registration][14] of the Service Worker.
-
-
-
-[1]: #service-worker-interface
-[2]: #service-worker-state-enum
-[3]: #installation-process
-[4]: #service-worker-glober-scope-interface
-[5]: #installing-worker
-[6]: http://goo.gl/3TobQS
-[7]: #worker-in-waiting
-[8]: #activation-process
-[9]: #service-worker-global-scope-interface
-[10]: #active-worker
-[11]: #functional-events
-[12]: #document-control
-[13]: http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#navigate
-[14]: #registration
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section state so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-3.1.4-service-worker-on-state-change.html b/tests/wpt/web-platform-tests/service-workers/stub-3.1.4-service-worker-on-state-change.html
deleted file mode 100644
index c87dce60163..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-3.1.4-service-worker-on-state-change.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: onstatechange</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#service-worker-on-state-change">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`onstatechange` is the [event handler][1] that must be supported as attribute
-by the `[ServiceWorker][2]` object. A `statechange` event using the
-`[Event][3]` interface is dispatched on `[ServiceWorker][2]` object when the
-`state` attribute of the `ServiceWorker` object is changed.
-
-[1]: http://goo.gl/rBfiz0
-[2]: #service-worker-interface
-[3]: http://goo.gl/Mzv7Dv
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section onstatechange so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-3.2-navigator-service-worker.html b/tests/wpt/web-platform-tests/service-workers/stub-3.2-navigator-service-worker.html
deleted file mode 100644
index d5b51475aa8..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-3.2-navigator-service-worker.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: navigator.serviceWorker</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#navigator-service-worker">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- <script src=/resources/WebIDLParser.js></script>
- <script src=/resources/idlharness.js></script>
-
- </head>
- <body>
-
-<!--
-The `serviceWorker` attribute of the [Navigator][1] interface must return an
-instance of the `ServiceWorkerContainer` interface, which provides access to
-registration, removal, upgrade, and communication with Service Workers that are
-(or will become) active for the current document. Communication with these
-workers is provided via standard [HTML5 messaging APIs][2], and [messaging
-occurs as per usual with Web Workers][3].
--->
-<script type=text/plain id="idl_0">
-partial interface Navigator {
- readonly attribute ServiceWorkerContainer serviceWorker;
-};
-
-interface ServiceWorkerContainer : EventTarget {
- [Unforgeable] readonly attribute ServiceWorker? installing;
- [Unforgeable] readonly attribute ServiceWorker? waiting;
- [Unforgeable] readonly attribute ServiceWorker? active;
- [Unforgeable] readonly attribute ServiceWorker? controller;
- readonly attribute Promise<ServiceWorker> ready;
-
- Promise<sequence<ServiceWorker>?> getAll();
- Promise<ServiceWorker> register(DOMString url, optional RegistrationOptionList options);
- Promise<any> unregister(DOMString? scope);
-
- // events
- attribute EventHandler onupdatefound;
- attribute EventHandler oncontrollerchange;
- attribute EventHandler onreloadpage;
- attribute EventHandler onerror;
-};
-
-dictionary RegistrationOptionList {
- DOMString scope = "/*";
-};
-
-interface ReloadPageEvent : Event {
- void waitUntil(Promise<any> f);
-};
-</script>
-
-<!--
-[1]: http://goo.gl/I7WAhg
-[2]: http://www.whatwg.org/specs/web-apps/current-work/multipage/web-messaging.html
-[3]: http://www.w3.org/TR/workers/#dom-worker-postmessage
--->
-
-
- <script type=text/plain id="untested_idls">
- interface ServiceWorker {};
- interface EventHandler {};
- interface EventTarget {};
- interface Event {};
- </script>
-
- <script>
- var idl_array = new IdlArray();
- idl_array.add_untested_idls(document.getElementById("untested_idls").textContent);
- idl_array.add_idls(document.getElementById("idl_0").textContent);
- idl_array.add_objects({
- Navigator: ["throw new Error ('No object defined for the Navigator interface')"],
- ServiceWorkerContainer: ["throw new Error ('No object defined for the ServiceWorkerContainer interface')"],
- RegistrationOptionList: ["throw new Error ('No object defined for the RegistrationOptionList dictionary')"],
- ReloadPageEvent: ["throw new Error ('No object defined for the ReloadPageEvent interface')"]
- });
- idl_array.test();
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-3.2.1-navigator-service-worker-installing.html b/tests/wpt/web-platform-tests/service-workers/stub-3.2.1-navigator-service-worker-installing.html
deleted file mode 100644
index 59e4f3d6a0d..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-3.2.1-navigator-service-worker-installing.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: installing</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#navigator-service-worker-installing">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`navigator.serviceWorker.installing` must return a [ServiceWorker][1] object
-representing the [installing worker][2] that is currently undergoing the
-installation process (from step 1 to step 7 of the [_Installation
-algorithm][3]) for the given [URL scope][4] in which the document may be
-[controlled][5] when the Service Worker becomes the [active worker][6].
-`navigator.serviceWorker.installing` returns `null` if no Service Worker
-[registration][7] is in the [installation process][8].
-
-[1]: #service-worker-interface
-[2]: #installing-worker
-[3]: #installation-algorithm
-[4]: #url-scope
-[5]: #document-control
-[6]: #active-worker
-[7]: #service-worker-registration-internal-interface
-[8]: #installation-process
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section installing so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-3.2.10-navigator-service-worker-oncontrollerchange.html b/tests/wpt/web-platform-tests/service-workers/stub-3.2.10-navigator-service-worker-oncontrollerchange.html
deleted file mode 100644
index 478860146dc..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-3.2.10-navigator-service-worker-oncontrollerchange.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: oncontrollerchange</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#navigator-service-worker-oncontrollerchange">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`navigator.serviceWorker.oncontrollerchange` is the [event handler][1] that
-must be supported as attribute by the `[ServiceWorkerContainer][2]` object. A
-`controllerchange` event using the `[Event][3]` interface is dispatched on
-`[ServiceWorkerContainer][2]` object (See step 7 of the [_Activation
-algorithm][4]) when the associated Service Worker [registration][5] for the
-document enters the [activation process][6]. When the [activation process][6]
-is triggered by `replace()` method call within the event handler of the
-`install` event, `navigator.serviceWorker.controller` immediately reflects the
-[active worker][7] as the Service Worker that [controls][8] the document.
-
-[1]: http://goo.gl/rBfiz0
-[2]: #service-worker-container-interface
-[3]: http://goo.gl/Mzv7Dv
-[4]: #activation-algorithm
-[5]: #registration
-[6]: #activation-process
-[7]: #active-worker
-[8]: #document-control
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section oncontrollerchange so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-3.2.11-navigator-service-worker-onreloadpage.html b/tests/wpt/web-platform-tests/service-workers/stub-3.2.11-navigator-service-worker-onreloadpage.html
deleted file mode 100644
index e2207db100a..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-3.2.11-navigator-service-worker-onreloadpage.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: onreloadpage</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#navigator-service-worker-onreloadpage">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`navigator.serviceWorker.onreloadpage` is the [event handler][1] that must be
-supported as attribute by the `[ServiceWorkerContainer][2]` object. An event
-named `reloadpage` using the `[ReloadPageEvent][3]` interface is dispatched on
-`[ServiceWorkerContainer][2]` object when the page reload is triggered by the
-`[self.clients.reloadAll()][4]` method call from the [active worker][5],
-represented by its associated [ServiceWorkerGlobalScope][6] object, for the
-document.
-
-[1]: http://goo.gl/rBfiz0
-[2]: #service-worker-container-interface
-[3]: #reload-page-event-interface
-[4]: #reloadall-method
-[5]: #active-worker
-[6]: #service-worker-global-scope-interface
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section onreloadpage so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-3.2.12-navigator-service-worker-onerror.html b/tests/wpt/web-platform-tests/service-workers/stub-3.2.12-navigator-service-worker-onerror.html
deleted file mode 100644
index 313f0bdfcd5..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-3.2.12-navigator-service-worker-onerror.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: onerror</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#navigator-service-worker-onerror">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`navigator.serviceWorker.onerror` is the [event handler][1] that must be
-supported as attribute by the `[ServiceWorkerContainer][2]` object. An event
-named `error` using the `[ErrorEvent][3]` interface is dispatched on
-`[ServiceWorkerContainer][2]` object for any error from the associated
-`[ServiceWorker][4]` objects.
-
-[1]: http://goo.gl/rBfiz0
-[2]: #service-worker-container-interface
-[3]: http://goo.gl/FKuWgu
-[4]: #service-worker-interface
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section onerror so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-3.2.2-navigator-service-worker-waiting.html b/tests/wpt/web-platform-tests/service-workers/stub-3.2.2-navigator-service-worker-waiting.html
deleted file mode 100644
index 663ce82f968..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-3.2.2-navigator-service-worker-waiting.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: waiting</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#navigator-service-worker-waiting">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`navigator.serviceWorker.waiting` must return a [ServiceWorker][1] object
-representing the waiting Service Worker that is considered the [worker in
-waiting][2] for the document. `navigator.serviceWorker.waiting` returns `null`
-if there is no [worker in waiting][2] for the document.
-
-[1]: #service-worker-interface
-[2]: #worker-in-waiting
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section waiting so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-3.2.3-navigator-service-worker-active.html b/tests/wpt/web-platform-tests/service-workers/stub-3.2.3-navigator-service-worker-active.html
deleted file mode 100644
index f7406f59012..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-3.2.3-navigator-service-worker-active.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: active</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#navigator-service-worker-active">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`navigator.serviceWorker.active` must return a [ServiceWorker][1] object
-representing the [active worker][2] that is currently undergoing or completed
-the activation process (from step 4 to step 9 of the [_Activation
-algorithm][3]) for the given [URL scope][4] in which the document is controlled
-(or to be controlled). `navigator.serviceWorker.active` returns `null` if no
-Service Worker [registration][5] is in the [activation process][6].
-
-[1]: #service-worker-interface
-[2]: #active-worker
-[3]: #activation-algorithm
-[4]: #url-scope
-[5]: #service-worker-registration-internal-interface
-[6]: #activation-process
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section active so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-3.2.4-navigator-service-worker-controller.html b/tests/wpt/web-platform-tests/service-workers/stub-3.2.4-navigator-service-worker-controller.html
deleted file mode 100644
index 1a26cce6d4e..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-3.2.4-navigator-service-worker-controller.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: controller</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#navigator-service-worker-controller">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`navigator.serviceWorker.controller` must return a [ServiceWorker][1] object
-representing the [active worker][2] that currently handles resource requests
-for the document. `navigator.serviceWorker.controller` returns `null` if the
-current document was not [created under a Service Worker][3] (See step 6-1 of
-[_OnFetchRequest][3] algorithm) or the request is a force refresh
-(shift+refresh).
-
-[1]: #service-worker-interface
-[2]: #active-worker
-[3]: #on-fetch-request-algorithm
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section controller so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-3.2.5-navigator-service-worker-ready.html b/tests/wpt/web-platform-tests/service-workers/stub-3.2.5-navigator-service-worker-ready.html
deleted file mode 100644
index 67a690ddc5b..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-3.2.5-navigator-service-worker-ready.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: ready</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#navigator-service-worker-ready">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`navigator.serviceWorker.ready` attribute must return the result of running
-these steps:
-
-1. Let `promise` be a newly-created [promise][1].
-2. Return `promise`.
-3. Run the following steps asynchronously:
- 1. Let `registration` be the result of running [_ScopeMatch
- algorithm][2] with document's url as its argument.
- 2. If `registration` is null, then:
- 1. Wait for the document to have a matching [registration][3].
- 3. If the [registration][3], represented by `registration`, for the
- document has an [active worker][4], then:
- 1. Resolve `promise` with the [ServiceWorker][5] object associated
- with the [active worker][4].
- 2. Abort these steps.
- 4. If the [registration][3], represented by `registration`, for the
- document has a [worker in waiting][6], then:
- 1. Resolve `promise` with the [ServiceWorker][5] object associated
- with the [worker in waiting][6].
- 2. Abort these steps.
- 5. Wait until the [registration][3], represented by `registration`,
- for the document acquires a [worker in waiting][6] through a new
- [installation process][7].
- 6. Resolve `promise` with the [ServiceWorker][5] object associated
- with the [worker in waiting][6].
-Note that `ready` attribute is desinged in a way that the returned [promise][1]
-will never reject. Instead, it waits until the [promise][1] resolves with a
-newly installed [worker in waiting][6]. Hence, the `state` of the acquired
-[`ServiceWorker`][8] object is either `installed`, `activating` or `activated`.
-
-
-
-[1]: http://goo.gl/3TobQS
-[2]: #scope-match-algorithm
-[3]: #registration
-[4]: #active-worker
-[5]: #service-worker-interface
-[6]: #worker-in-waiting
-[7]: #installation-process
-[8]: #service-worker
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section ready so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-3.2.6-navigator-service-worker-getAll.html b/tests/wpt/web-platform-tests/service-workers/stub-3.2.6-navigator-service-worker-getAll.html
deleted file mode 100644
index 3c2afe99cbb..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-3.2.6-navigator-service-worker-getAll.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: getAll()</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#navigator-service-worker-getAll">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`navigator.serviceWorker.getAll()` method must return a promise that resolves
-with the array of the ServiceWorker objects in `installing`, `installed`,
-`activating` and `activated` states.
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section getAll() so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-3.2.7-navigator-service-worker-register.html b/tests/wpt/web-platform-tests/service-workers/stub-3.2.7-navigator-service-worker-register.html
deleted file mode 100644
index df469de42af..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-3.2.7-navigator-service-worker-register.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: register()</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#navigator-service-worker-register">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`navigator.serviceWorker.register(url, options)` method must run the
-[Registration algorithm][1] passing `url` and `options`.`scope` as the
-arguments.
-
-[1]: #registration-algorithm
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section register() so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-3.2.8-navigator-service-worker-unregister.html b/tests/wpt/web-platform-tests/service-workers/stub-3.2.8-navigator-service-worker-unregister.html
deleted file mode 100644
index 6f1b43b6bde..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-3.2.8-navigator-service-worker-unregister.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: unregister()</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#navigator-service-worker-unregister">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`navigator.serviceWorker.unregister(scope)` method must run the [Unregistration
-algorithm][1] passing `scope` as the argument.
-
-[1]: #unregistration-algorithm
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section unregister() so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-3.2.9-navigator-service-worker-onupdatefound.html b/tests/wpt/web-platform-tests/service-workers/stub-3.2.9-navigator-service-worker-onupdatefound.html
deleted file mode 100644
index 7babe7c2456..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-3.2.9-navigator-service-worker-onupdatefound.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: onupdatefound</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#navigator-service-worker-onupdatefound">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`navigator.serviceWorker.onupdatefound` is the [event handler][1] that must be
-supported as attribute by the `[ServiceWorkerContainer][2]` object. An
-`updatefound` event using the `[Event][3]` interface is dispatched on
-`[ServiceWorkerContainer][2]` object (See step 4 of the [_Installation
-algorithm][4]) when the associated Service Worker [registration][5] for the
-document enters the [installation process][6] such that
-`navigator.serviceWorker.installing` becomes the new [installing worker][7].
-
-[1]: http://goo.gl/rBfiz0
-[2]: #service-worker-container-interface
-[3]: http://goo.gl/Mzv7Dv
-[4]: #installation-algorithm
-[5]: #registration
-[6]: #installation-process
-[7]: #installing-worker
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section onupdatefound so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.1-service-worker-global-scope.html b/tests/wpt/web-platform-tests/service-workers/stub-4.1-service-worker-global-scope.html
deleted file mode 100644
index c11feaca4c8..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.1-service-worker-global-scope.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: ServiceWorkerGlobalScope</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#service-worker-global-scope">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- <script src=/resources/WebIDLParser.js></script>
- <script src=/resources/idlharness.js></script>
-
- </head>
- <body>
-
-<script type=text/plain id="idl_0">
-[Global]
-interface ServiceWorkerGlobalScope : WorkerGlobalScope {
- readonly attribute CacheStorage caches;
- // A container for a list of window objects, identifiable by ID, that
- // correspond to windows (or workers) that are "controlled" by this SW
- readonly attribute ServiceWorkerClients clients;
- [Unforgeable] readonly attribute DOMString scope;
-
- Promise<any> fetch((Request or ScalarValueString) request);
-
- void update();
- void unregister();
-
- attribute EventHandler oninstall;
- attribute EventHandler onactivate;
- attribute EventHandler onfetch;
- attribute EventHandler onbeforeevicted;
- attribute EventHandler onevicted;
-
- // The event.source of these MessageEvents are instances of Client
- attribute EventHandler onmessage;
-
- // close() method inherited from WorkerGlobalScope is not exposed.
-};
-</script>
-
-<!--
-The `ServiceWorkerGlobalScope` interface represents the global execution
-context of a Service Worker. `ServiceWorkerGlobalScope` object provides
-generic, event-driven, time-limited script execution contexts that run at an
-origin. Once successfully [registered][1], a Service Worker is started, kept
-alive and killed by their relationship to events, not documents. Any type of
-synchronous requests MUST NOT be initiated inside of a Service Worker.
-
-[1]: #navigator-service-worker-register
--->
-
-
- <script type=text/plain id="untested_idls">
- interface CacheStorage {};
- interface ServiceWorkerClients {};
- interface Request {};
- interface ScalarValueString {};
- interface EventHandler {};
- interface WorkerGlobalScope {};
- </script>
-
- <script>
- var idl_array = new IdlArray();
- idl_array.add_untested_idls(document.getElementById("untested_idls").textContent);
- idl_array.add_idls(document.getElementById("idl_0").textContent);
- idl_array.add_objects({
- ServiceWorkerGlobalScope: ["throw new Error ('No object defined for the ServiceWorkerGlobalScope interface')"]
- });
- idl_array.test();
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.1.1-service-worker-global-scope-caches.html b/tests/wpt/web-platform-tests/service-workers/stub-4.1.1-service-worker-global-scope-caches.html
deleted file mode 100644
index f1fce5036a1..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.1.1-service-worker-global-scope-caches.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: caches</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#service-worker-global-scope-caches">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`self.caches` must return the `[CacheStorage][1]` object that is the global
-asynchronous map object for the `[ServiceWorkerGlobalScope][2]` execution
-context containing the cache objects keyed by the name of the caches. Caches
-are always enumerable via `self.caches` in insertion order (per [ECMAScript 6
-Map objects][3].)
-
-[1]: #cache-storage-interface
-[2]: #service-worker-global-scope-interface
-[3]: http://goo.gl/gNnDPO
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section caches so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.1.2-service-worker-global-scope-clients.html b/tests/wpt/web-platform-tests/service-workers/stub-4.1.2-service-worker-global-scope-clients.html
deleted file mode 100644
index cd5d28353a2..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.1.2-service-worker-global-scope-clients.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: clients</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#service-worker-global-scope-clients">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`self.clients` must return the `[ServiceWorkerClients][1]` object containing a
-list of client objects, identifiable by ID, that correspond to windows or
-workers that are [controlled][2] by this Service Worker.
-
-[1]: #service-worker-clients-interface
-[2]: #document-control
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section clients so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.1.3-service-worker-global-scope-scope.html b/tests/wpt/web-platform-tests/service-workers/stub-4.1.3-service-worker-global-scope-scope.html
deleted file mode 100644
index 7b6ce78fa90..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.1.3-service-worker-global-scope-scope.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: scope</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#service-worker-global-scope-scope">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-The `scope` attribute of a [ServiceWorkerGlobalScope][1] object reflects the
-[URL scope][2] of the associated Service Worker [registration][3]. The `scope`
-attribute must return the [serialization][4] of the URL representing the [URL
-scope][2] of the associated Service Worker [registration][3].
-
-[1]: #service-worker-global-scope-interface
-[2]: #url-scope
-[3]: #registration
-[4]: http://url.spec.whatwg.org/#concept-url-serializer
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section scope so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.1.4-service-worker-global-scope-fetch.html b/tests/wpt/web-platform-tests/service-workers/stub-4.1.4-service-worker-global-scope-fetch.html
deleted file mode 100644
index 98345471f3b..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.1.4-service-worker-global-scope-fetch.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: fetch(request)</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#service-worker-global-scope-fetch">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`self.fetch(request)` method must run these steps:
-
-1. Let `request` be a [request][1] represented by `request`.
-2. Set [`client`][2] of `request` to the [JavaScript global
- environment][3] represented by `self` object.
-3. Let `promise` be a newly-created [promise][4].
-4. Return `promise.`
-5. Run the following steps asynchronously:
- 1. Let `response` be the result of running [fetch algorithm][5] with
- `request` as its argument.
- 2. If `response` is a [network error][6], then:
- 1. Reject `promise` with a new [DOMException][7] whose name is
- "[NetworkError][8]".
- 3. Else,
- 1. Resolve `promise` with a new [Response][9] object associated
- with `response`.
-
-
-
-[1]: http://goo.gl/ucOuXl
-[2]: http://goo.gl/Oxj4xQ
-[3]: http://goo.gl/ifwwCC
-[4]: http://goo.gl/3TobQS
-[5]: http://goo.gl/fGMifs
-[6]: http://goo.gl/jprjjc
-[7]: http://goo.gl/A0U8qC
-[8]: http://goo.gl/lud5HB
-[9]: http://goo.gl/Deazjv
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section fetch(request) so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.1.5-service-worker-global-scope-update.html b/tests/wpt/web-platform-tests/service-workers/stub-4.1.5-service-worker-global-scope-update.html
deleted file mode 100644
index 26e255dd4a0..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.1.5-service-worker-global-scope-update.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: update()</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#service-worker-global-scope-update">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`update()` pings the server for an updated version of this script without
-consulting caches. `self.update()` method must run the [_SoftUpdate
-algorithm][1] passing its serviceWorkerRegistration object as the argument
-which is the result of running the [_GetRegistration algorithm][2] with
-`self.scope` as the argument. (This is conceptually the same operation that UA
-does maximum once per every 24 hours.)
-
-[1]: #soft-update-algorithm
-[2]: #get-registration-algorithm
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section update() so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.1.6-service-worker-global-scope-unregister.html b/tests/wpt/web-platform-tests/service-workers/stub-4.1.6-service-worker-global-scope-unregister.html
deleted file mode 100644
index de1d64a6e45..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.1.6-service-worker-global-scope-unregister.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: unregister()</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#service-worker-global-scope-unregister">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`self.unregister()` method must run the [Unregistration algorithm][1]
-implicitly passing `self.scope` as the argument.
-
-[1]: #unregistration-algorithm
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section unregister() so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.1.7-service-worker-global-scope-onmessage.html b/tests/wpt/web-platform-tests/service-workers/stub-4.1.7-service-worker-global-scope-onmessage.html
deleted file mode 100644
index b930439486e..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.1.7-service-worker-global-scope-onmessage.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: onmessage</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#service-worker-global-scope-onmessage">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`self.onmessage` is the [event handler][1] that must be supported as attribute
-by the `ServiceWorkerGlobalScope` object. `ServiceWorkerGlobalScope` objects
-act as if they had an implicit `[MessagePort][2]` associated with them. This
-port is part of a channel that is set up when the worker is created, but it is
-not exposed. This object must never be garbage collected before the
-`ServiceWorkerGlobalScope` object.
-
-All messages received by that port must immediately be retargeted at the
-`ServiceWorkerGlobalScope` object. That is, an event named `message` using the
-`[MessageEvent][3]` interface is dispatched on ServiceWorkerGlobalScope object.
-The `event.source` of these `[MessageEvent][3]`s are instances of `[Client][4]`.
-
-
-
-[1]: http://goo.gl/rBfiz0
-[2]: http://goo.gl/tHBrI6
-[3]: http://goo.gl/S5e0b6
-[4]: #client-interface
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section onmessage so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.2-client.html b/tests/wpt/web-platform-tests/service-workers/stub-4.2-client.html
deleted file mode 100644
index fda0e298f5e..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.2-client.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: Client</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#client">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- <script src=/resources/WebIDLParser.js></script>
- <script src=/resources/idlharness.js></script>
-
- </head>
- <body>
-
-<script type=text/plain id="idl_0">
-[Constructor()] // no-op constructor
-interface Client {
- readonly attribute unsigned long id;
- void postMessage(any message, DOMString targetOrigin,
- optional sequence<Transferable> transfer);
-};
-</script>
-
-<!--
-The `Client` interface represents the window or the worker (defined as client)
-that is [controlled][1] by the Service Worker. This object provides a no-op
-constructor. Callers should note that only `Client` objects created by the user
-agent (see [`this.clients.getServiced()`][2]) will provide meaningful
-functionality.
-
-The `id` of a `Client` identifies the specific client object from the list of
-client objects serviced by the Service Worker. The `postMessage(message,
-targetOrigin, transfer)` method of a `[Client][3]`, when called, causes a
-`[MessageEvent][4]` to be dispatched at the client object.
-
-
-
-[1]: #document-control
-[2]: #get-serviced-method
-[3]: #client-interface
-[4]: http://goo.gl/4SLWiH
--->
-
-
- <script type=text/plain id="untested_idls">
- interface Transferable {};
- </script>
-
- <script>
- var idl_array = new IdlArray();
- idl_array.add_untested_idls(document.getElementById("untested_idls").textContent);
- idl_array.add_idls(document.getElementById("idl_0").textContent);
- idl_array.add_objects({
- Client: ["throw new Error ('No object defined for the Client interface')"]
- });
- idl_array.test();
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.3-service-worker-clients.html b/tests/wpt/web-platform-tests/service-workers/stub-4.3-service-worker-clients.html
deleted file mode 100644
index 475df1952fb..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.3-service-worker-clients.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: ServiceWorkerClients</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#service-worker-clients">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- <script src=/resources/WebIDLParser.js></script>
- <script src=/resources/idlharness.js></script>
-
- </head>
- <body>
-
-<script type=text/plain id="idl_0">
-interface ServiceWorkerClients {
- // A list of client objects, identifiable by ID, that correspond to windows
- // (or workers) that are "controlled" by this SW
- Promise<sequence<Client>?> getServiced();
- Promise<any> reloadAll();
-};
-</script>
-
-<!--
-The `ServiceWorkerClients` interface represents a container for a list of
-`[Client][1]` objects.
-
-[1]: #client-interface
--->
-
-
- <script type=text/plain id="untested_idls">
- interface Client {};
- </script>
-
- <script>
- var idl_array = new IdlArray();
- idl_array.add_untested_idls(document.getElementById("untested_idls").textContent);
- idl_array.add_idls(document.getElementById("idl_0").textContent);
- idl_array.add_objects({
- ServiceWorkerClients: ["throw new Error ('No object defined for the ServiceWorkerClients interface')"]
- });
- idl_array.test();
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.3.1-get-serviced-method.html b/tests/wpt/web-platform-tests/service-workers/stub-4.3.1-get-serviced-method.html
deleted file mode 100644
index b3cd06fdf27..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.3.1-get-serviced-method.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: getServiced()</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#get-serviced-method">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-The `getServiced()` method of a `ServiceWorkerClients`, when called, returns a
-[Promise][1] that will resolve with a list of `[Client][2]` objects that are
-[controlled][3] by this Service Worker.
-
-[1]: http://goo.gl/3TobQS
-[2]: #client-interface
-[3]: #document-control
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section getServiced() so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.3.2-reloadall-method.html b/tests/wpt/web-platform-tests/service-workers/stub-4.3.2-reloadall-method.html
deleted file mode 100644
index c5a9dd45404..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.3.2-reloadall-method.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: reloadAll()</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#reloadall-method">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`reloadAll()` provides a mechanism for the worker to request synchronized
-re-fetch of all documents whose URLs match the registration's [URL scope][1].
-An event named `reloadpage` is dispatched on the `navigator.serviceWorker`
-object of each document. The in-document handlers may allow the event to
-continue, request an extension (via [`e.waitUntil()`][2]), or cancel the
-collective reload by calling [`e.preventDefault()`][3].
-
-[1]: #url-scope
-[2]: #wait-until-method
-[3]: http://goo.gl/2zH6ie
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section reloadAll() so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.4-request-objects.html b/tests/wpt/web-platform-tests/service-workers/stub-4.4-request-objects.html
deleted file mode 100644
index 2f471f80f60..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.4-request-objects.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: Request Objects</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#request-objects">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- <script src=/resources/WebIDLParser.js></script>
- <script src=/resources/idlharness.js></script>
-
- </head>
- <body>
-
-<script type=text/plain id="idl_0">
-[Constructor(optional RequestInit init)]
-interface Request {
- attribute unsigned long timeout;
- attribute DOMString url;
- attribute ByteString method;
- readonly attribute DOMString origin;
- readonly attribute Mode mode;
- attribute boolean synchronous;
- attribute boolean forcePreflight;
- attribute boolean omitCredentials;
- readonly attribute DOMString referrer;
- readonly attribute HeaderMap headers; // alternative: sequence<Header> headers;
- attribute any body;
-};
-
-dictionary RequestInit {
- unsigned long timeout = 0;
- DOMString url;
- boolean synchronous = false;
- boolean forcePreflight = false;
- boolean omitCredentials = false;
- ByteString method = "GET";
- HeaderMap headers;
- any body;
-};
-
-enum Mode {
- "same origin",
- "tainted cross-origin",
- "CORS",
- "CORS-with-forced-preflight"
-};
-
-[MapClass(DOMString, DOMString)]
-interface HeaderMap {
-};
-</script>
-
-
-
-
- <script>
- var idl_array = new IdlArray();
- idl_array.add_untested_idls(document.getElementById("untested_idls").textContent);
- idl_array.add_idls(document.getElementById("idl_0").textContent);
- idl_array.add_objects({
- Request: ["throw new Error ('No object defined for the Request interface')"],
- RequestInit: ["throw new Error ('No object defined for the RequestInit dictionary')"],
- Mode: ["throw new Error ('No object defined for the Mode enum')"],
- HeaderMap: ["throw new Error ('No object defined for the HeaderMap interface')"]
- });
- idl_array.test();
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.5-response-objects.html b/tests/wpt/web-platform-tests/service-workers/stub-4.5-response-objects.html
deleted file mode 100644
index 445982f51a3..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.5-response-objects.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: Response Objects</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#response-objects">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- <script src=/resources/WebIDLParser.js></script>
- <script src=/resources/idlharness.js></script>
-
- </head>
- <body>
-
-<!--
-`Response` objects model HTTP responses.
--->
-<script type=text/plain id="idl_0">
-[Constructor]
-interface AbstractResponse {
-};
-
-interface OpaqueResponse : AbstractResponse {
- readonly attribute unsigned short status;
- readonly attribute ByteString statusText;
- // Returns a filtered list of headers. See prose for details.
- readonly attribute HeaderMap headers;
- // No setter for headers
- readonly attribute DOMString url;
-};
-
-interface CORSResponse : Response {
- readonly attribute HeaderMap headers;
-};
-
-[Constructor(optional ResponseInit responseInitDict)]
-interface Response : AbstractResponse {
- attribute unsigned short status;
- attribute ByteString statusText;
- readonly attribute HeaderMap headers;
- attribute DOMString url;
- Promise<Blob> toBlob();
-};
-
-dictionary ResponseInit {
- unsigned short status = 200;
- ByteString statusText = "OK";
- HeaderMap headers;
-};
-</script>
-
-
-
- <script type=text/plain id="untested_idls">
- interface HeaderMap {};
- interface Blob {};
- </script>
-
- <script>
- var idl_array = new IdlArray();
- idl_array.add_untested_idls(document.getElementById("untested_idls").textContent);
- idl_array.add_idls(document.getElementById("idl_0").textContent);
- idl_array.add_objects({
- AbstractResponse: ["throw new Error ('No object defined for the AbstractResponse interface')"],
- OpaqueResponse: ["throw new Error ('No object defined for the OpaqueResponse interface')"],
- CORSResponse: ["throw new Error ('No object defined for the CORSResponse interface')"],
- Response: ["throw new Error ('No object defined for the Response interface')"],
- ResponseInit: ["throw new Error ('No object defined for the ResponseInit dictionary')"]
- });
- idl_array.test();
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.5.2-response.html b/tests/wpt/web-platform-tests/service-workers/stub-4.5.2-response.html
deleted file mode 100644
index fbc72f30ad7..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.5.2-response.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: Response</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#response">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`Response` objects are mutable and constructable. They model HTTP responses.
-The `fetch()` API returns this type for same-origin responses.
-
-It may be possible to set the `Location` header of a `Response` object to
-someplace not in the current origin but this is not a security issue.
-Cross-origin response bodies are opaque to script, and since only same-origin
-documents will encounter these responses, the only systems the Service Worker
-can "lie to" are same-origin (and therefore safe from the perspective of other
-origins).
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section Response so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.5.4-opaque-response.html b/tests/wpt/web-platform-tests/service-workers/stub-4.5.4-opaque-response.html
deleted file mode 100644
index a91306f4c3c..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.5.4-opaque-response.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: OpaqueResponse</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#opaque-response">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`OpaqueResponse` objects are immutable but constructable. The `fetch()` API
-returns this type for cross-origin responses.
-
-Their role is to encapsulate the security properties of the web platform. As
-such, their `body` attribute will always be `undefined` and the list of
-readable `headers` is heavily filtered.
-
-`OpaqueResponse` objects may be forwarded on to rendering documents in exactly
-the same way as mutable `Response` objects.
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section OpaqueResponse so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.6-cache-objects.html b/tests/wpt/web-platform-tests/service-workers/stub-4.6-cache-objects.html
deleted file mode 100644
index befd67cb378..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.6-cache-objects.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: Caches</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#cache-objects">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-To allow authors to fully manage their content caches for offline use, the
-`[ServiceWorkerGlobalScope][1]` execution context provides the caching methods
-largely conforming to [ECMAScript 6 Map objects][2] with additional convenience
-methods. A domain can have multiple, named `[Cache][3]` objects, whose contents
-are entirely under the control of scripts. Caches are not shared across
-domains, and they are completely isolated from the browser's HTTP cache.
-
-[1]: #service-worker-global-scope-interface
-[2]: http://goo.gl/gNnDPO
-[3]: #cache-interface
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section Caches so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.6.1-cache-lifetimes.html b/tests/wpt/web-platform-tests/service-workers/stub-4.6.1-cache-lifetimes.html
deleted file mode 100644
index f6c9ecbd191..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.6.1-cache-lifetimes.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: Understanding Cache Lifetimes</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#cache-lifetimes">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-The `[Cache][1]` instances are not part of the browser's HTTP cache. The
-`[Cache][1]` objects are exactly what authors have to manage themselves. The
-`[Cache][1]` objects do not get updated unless authors explicitly request them
-to be. The `[Cache][1]` objects do not expire unless authors delete the
-entries. The `[Cache][1]` objects do not disappear just because the Service
-Worker script is updated. That is, caches are not updated automatically.
-Updates must be manually managed. This implies that authors should version
-their caches by name and make sure to use the caches only from the version of
-the ServiceWorker that can safely operate on.
-
-[1]: #cache-interface
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section Understanding Cache Lifetimes so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.6.2-cache.html b/tests/wpt/web-platform-tests/service-workers/stub-4.6.2-cache.html
deleted file mode 100644
index 9270481d183..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.6.2-cache.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: Cache</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#cache">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- <script src=/resources/WebIDLParser.js></script>
- <script src=/resources/idlharness.js></script>
-
- </head>
- <body>
-
-<script type=text/plain id="idl_0">
-[Exposed=(Window,Worker)]
-interface Cache {
- Promise<Response> match(RequestInfo request, optional CacheQueryOptions options);
- Promise<sequence<Response>> matchAll(optional RequestInfo request, optional CacheQueryOptions options);
- Promise<void> add(RequestInfo request);
- Promise<void> addAll(sequence<RequestInfo> requests);
- Promise<void> put(RequestInfo request, Response response);
- Promise<boolean> delete(RequestInfo request, optional CacheQueryOptions options);
- Promise<sequence<Request>> keys(optional RequestInfo request, optional CacheQueryOptions options);
-};
-
-dictionary CacheQueryOptions {
- boolean ignoreSearch = false;
- boolean ignoreMethod = false;
- boolean ignoreVary = false;
- DOMString cacheName;
-};
-
-dictionary CacheBatchOperation {
- DOMString type;
- Request request;
- Response response;
- CacheQueryOptions options;
-};
-</script>
-
-
-
- <script type=text/plain id="untested_idls">
- interface AbstractResponse {};
- interface Request {};
- interface ScalarValueString {};
- </script>
-
- <script>
- var idl_array = new IdlArray();
- idl_array.add_untested_idls(document.getElementById("untested_idls").textContent);
- idl_array.add_idls(document.getElementById("idl_0").textContent);
- idl_array.add_objects({
- Cache: ["throw new Error ('No object defined for the Cache interface')"],
- QueryParams: ["throw new Error ('No object defined for the QueryParams dictionary')"],
- CacheIterationCallback: ["throw new Error ('No object defined for the CacheIterationCallback callback')"]
- });
- idl_array.test();
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.6.3-cache-storage.html b/tests/wpt/web-platform-tests/service-workers/stub-4.6.3-cache-storage.html
deleted file mode 100644
index 29666d837fc..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.6.3-cache-storage.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: CacheStorage</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#cache-storage">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- <script src=/resources/WebIDLParser.js></script>
- <script src=/resources/idlharness.js></script>
-
- </head>
- <body>
-
-<script type=text/plain id="idl_0">
-[Constructor(sequence<any> iterable)]
-interface CacheStorage {
- Promise<any> match(ScalarValueString url, optional DOMString cacheName);
- Promise<Cache> get(DOMString key);
- Promise<boolean> has(DOMString key);
- Promise<any> set(DOMString key, Cache val);
- Promise<any> clear();
- Promise<any> delete(DOMString key);
- void forEach(CacheStorageIterationCallback callback, optional object thisArg);
- Promise<sequence<any>> entries();
- Promise<sequence<DOMString>> keys();
- Promise<sequence<Cache>> values();
- Promise<unsigned long> size();
-};
-
-callback CacheStorageIterationCallback = void (Cache value, DOMString key, CacheStorage map);
-</script>
-
-<!--
-**Note**:[CacheStorage][1]interface is designed to largely conform
-to[ECMAScript 6 Map objects][2]but entirely async, and with additional
-convenience methods.
-
-[1]: #cache-storage-interface
-[2]: http://goo.gl/gNnDPO
--->
-
-
- <script type=text/plain id="untested_idls">
- interface ScalarValueString {};
- interface Cache {};
- </script>
-
- <script>
- var idl_array = new IdlArray();
- idl_array.add_untested_idls(document.getElementById("untested_idls").textContent);
- idl_array.add_idls(document.getElementById("idl_0").textContent);
- idl_array.add_objects({
- CacheStorage: ["throw new Error ('No object defined for the CacheStorage interface')"],
- CacheStorageIterationCallback: ["throw new Error ('No object defined for the CacheStorageIterationCallback callback')"]
- });
- idl_array.test();
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.7.1-install-phase-event.html b/tests/wpt/web-platform-tests/service-workers/stub-4.7.1-install-phase-event.html
deleted file mode 100644
index 8b7ab81c5ef..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.7.1-install-phase-event.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: InstallPhaseEvent</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#install-phase-event">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- <script src=/resources/WebIDLParser.js></script>
- <script src=/resources/idlharness.js></script>
-
- </head>
- <body>
-
-<script type=text/plain id="idl_0">
-interface InstallPhaseEvent : Event {
- Promise<any> waitUntil(Promise<any> f);
-};
-</script>
-
-<!--
-Service Workers have two [Lifecycle events][1], `[install][2]` and
-`[activate][3]`. Service Workers use the `[InstallPhaseEvent][4]` interface for
-`[activate][3]` event and the `[InstallEvent][5]` interface, which inherits
-from the `[InstallPhaseEvent][4]` interface, for `[install][2]` event.
-
-[1]: #lifecycle-events
-[2]: #install-event
-[3]: #activate-event
-[4]: #install-phase-event-interface
-[5]: #install-event-interface
--->
-
-
- <script type=text/plain id="untested_idls">
- interface Event {};
- </script>
-
- <script>
- var idl_array = new IdlArray();
- idl_array.add_untested_idls(document.getElementById("untested_idls").textContent);
- idl_array.add_idls(document.getElementById("idl_0").textContent);
- idl_array.add_objects({
- InstallPhaseEvent: ["throw new Error ('No object defined for the InstallPhaseEvent interface')"]
- });
- idl_array.test();
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.7.1.1-wait-until-method.html b/tests/wpt/web-platform-tests/service-workers/stub-4.7.1.1-wait-until-method.html
deleted file mode 100644
index 318318b1394..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.7.1.1-wait-until-method.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: event.waitUntil(f)</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#wait-until-method">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`event.waitUntil(f)` method, when called in `oninstall` or `onactivate`,
-extends the lifetime of the event. When called in `oninstall`, it delays
-treating the installing worker until the passed [Promise][1] resolves
-successfully. This is primarily used to ensure that a `ServiceWorker` is not
-active until all of the core caches it depends on are populated. When called in
-`onactivate`, it delays treating the activating worker until the passed
-[Promise][1] resolves successfully. This is primarily used to ensure that any
-[Functional events][2] are not dispatched to the `ServiceWorker` until it
-upgrades database schemas and deletes the outdated cache entries.
-
-[1]: http://goo.gl/3TobQS
-[2]: #functional-events
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section event.waitUntil(f) so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.7.2-install-event.html b/tests/wpt/web-platform-tests/service-workers/stub-4.7.2-install-event.html
deleted file mode 100644
index 77702ed0283..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.7.2-install-event.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: install Event</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#install-event">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-An event named `[install][1]` using the `[InstallEvent][2]` interface is
-dispatched on `ServiceWorkerGlobalScope` object when the state of the
-associated `ServiceWorker` changes its value to `installing`. (See step 3 of
-[_Installation algorithm][3])
-
-[1]: #install-event
-[2]: #install-event-interface
-[3]: #installation-algorithm
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section install Event so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.7.2.1-install-event-section.html b/tests/wpt/web-platform-tests/service-workers/stub-4.7.2.1-install-event-section.html
deleted file mode 100644
index d9b47e195af..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.7.2.1-install-event-section.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: InstallEvent</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#install-event-section">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- <script src=/resources/WebIDLParser.js></script>
- <script src=/resources/idlharness.js></script>
-
- </head>
- <body>
-
-<script type=text/plain id="idl_0">
-interface InstallEvent : InstallPhaseEvent {
- readonly attribute ServiceWorker? activeWorker;
- void replace();
-};
-</script>
-
-<!--
-Service Workers use the `[InstallEvent][1]` interface for `[install][2]` event.
-
-[1]: #install-event-interface
-[2]: #install-event
--->
-
-
- <script type=text/plain id="untested_idls">
- interface ServiceWorker {};
- interface InstallPhaseEvent {};
- </script>
-
- <script>
- var idl_array = new IdlArray();
- idl_array.add_untested_idls(document.getElementById("untested_idls").textContent);
- idl_array.add_idls(document.getElementById("idl_0").textContent);
- idl_array.add_objects({
- InstallEvent: ["throw new Error ('No object defined for the InstallEvent interface')"]
- });
- idl_array.test();
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.7.2.2-replace-method.html b/tests/wpt/web-platform-tests/service-workers/stub-4.7.2.2-replace-method.html
deleted file mode 100644
index 6981d3079c3..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.7.2.2-replace-method.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: event.replace()</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#replace-method">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`replace()` interacts with `waitUntil` method in the following way:
-
-- Successful installation can be delayed by `waitUntil`, perhaps by
- subsequent event handlers.
-- Replacement only happens upon successful installation
-- Therefore, replacement of the [active worker][1] (if any) is not
- immediate, however it may occur as soon as the end of the current turn.
-
-
-
-[1]: #navigator-service-worker-active
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section event.replace() so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.7.3-activate-event.html b/tests/wpt/web-platform-tests/service-workers/stub-4.7.3-activate-event.html
deleted file mode 100644
index 2a0162e5fd3..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.7.3-activate-event.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: activate Event</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#activate-event">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-An event named `[activate][1]` using the `[InstallPhaseEvent][2]` interface is
-dispatched on `ServiceWorkerGlobalScope` object when the state of the
-associated `ServiceWorker` changes its value to `activating`. (See step 6 of
-[_Activation algorithm][3])
-
-Service Workers use the `[InstallPhaseEvent][4]` interface for `[activate][1]`
-event.
-
-
-
-[1]: #activate-event
-[2]: #install-phase-event
-[3]: #activation-algorithm
-[4]: #install-phase-event-interface
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section activate Event so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.7.4.1-fetch-event-section.html b/tests/wpt/web-platform-tests/service-workers/stub-4.7.4.1-fetch-event-section.html
deleted file mode 100644
index ace71967bdf..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.7.4.1-fetch-event-section.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: FetchEvent</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#fetch-event-section">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- <script src=/resources/WebIDLParser.js></script>
- <script src=/resources/idlharness.js></script>
-
- </head>
- <body>
-
-<script type=text/plain id="idl_0">
-[Constructor]
-interface FetchEvent : Event {
- readonly attribute Request request;
- readonly attribute Client client; // The window issuing the request.
- readonly attribute Context context;
- readonly attribute boolean isReload;
-
- void respondWith(Promise<AbstractResponse> r);
- Promise<any> forwardTo(ScalarValueString url);
- Promise<any> default();
-};
-
-enum Context {
- "connect",
- "font",
- "img",
- "object",
- "script",
- "style",
- "worker",
- "popup",
- "child",
- "navigate"
-};
-</script>
-
-<!--
-Service Workers use the `[FetchEvent][1]` interface for `[fetch][2]` event.
-
-[1]: #fetch-event-interface
-[2]: #fetch-event
--->
-
-
- <script type=text/plain id="untested_idls">
- interface Request {};
- interface Client {};
- interface AbstractResponse {};
- interface ScalarValueString {};
- interface Event {};
- </script>
-
- <script>
- var idl_array = new IdlArray();
- idl_array.add_untested_idls(document.getElementById("untested_idls").textContent);
- idl_array.add_idls(document.getElementById("idl_0").textContent);
- idl_array.add_objects({
- FetchEvent: ["throw new Error ('No object defined for the FetchEvent interface')"],
- Context: ["throw new Error ('No object defined for the Context enum')"]
- });
- idl_array.test();
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.7.4.2-respond-with-method.html b/tests/wpt/web-platform-tests/service-workers/stub-4.7.4.2-respond-with-method.html
deleted file mode 100644
index 416b8ef517a..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.7.4.2-respond-with-method.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: event.respondWith(r)</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#respond-with-method">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`event.respondWith(r)` method must run the steps, from step 10 to step 15,
-defined in the [_OnFetchRequest algorithm][1].
-
-The `r` argument must resolve with a [AbstractResponse][2], else a
-[NetworkError][3] is thrown. If the request is a top-level navigation and the
-return value is a [OpaqueResponse][4] (an opaque response body), a
-[NetworkError][3] is thrown. The final URL of all successful (non
-network-error) responses is the [requested][5] URL. Renderer-side security
-checks about tainting for cross-origin content are tied to the transparency (or
-opacity) of the [Response][6] body, not URLs.
-
-
-
-[1]: #on-fetch-request-algorithm
-[2]: #abstract-response-interface
-[3]: http://w3c.github.io/dom/#networkerror
-[4]: #opaque-response-interface
-[5]: #request-objects
-[6]: #response-interface
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section event.respondWith(r) so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.7.4.3-default-method.html b/tests/wpt/web-platform-tests/service-workers/stub-4.7.4.3-default-method.html
deleted file mode 100644
index deff7ac4238..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.7.4.3-default-method.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: event.default()</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#default-method">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-`event.default()` method must run these steps:
-
-1. Let `promise` be a newly-created [promise][1].
-2. Return `promise.`
-3. Run the following steps asynchronously:
- 1. Let `request` be `event`'s `request`.
- 2. Set `request`'s [skip service worker flag][2].
- 3. Let `response` be the result of running [fetch algorithm][3] with
- `request` as its argument.
- 4. If `response` is a [network error][4], then:
- 1. Reject `promise` with a new [DOMException][5] whose name is
- "[NetworkError][6]".
- 5. Else,
- 1. Resolve `promise` with a new [Response][7] object associated
- with `response`.
-
-
-
-[1]: http://goo.gl/3TobQS
-[2]: http://goo.gl/gP7IWW
-[3]: http://goo.gl/fGMifs
-[4]: http://goo.gl/jprjjc
-[5]: http://goo.gl/A0U8qC
-[6]: http://goo.gl/lud5HB
-[7]: http://goo.gl/Deazjv
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section event.default() so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-4.7.4.4-is-reload-attribute.html b/tests/wpt/web-platform-tests/service-workers/stub-4.7.4.4-is-reload-attribute.html
deleted file mode 100644
index fffe5d5b29f..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-4.7.4.4-is-reload-attribute.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: event.isReload</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#is-reload-attribute">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-Returns true if `event` was dispatched with the user's intention for the page
-reload, and false otherwise. Pressing the refresh button should be considered a
-reload while clicking a link and pressing the back button should not. The
-behavior of the `Ctrl+l enter` is left to the implementations of the user
-agents.
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section event.isReload so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-5.1-origin-relativity.html b/tests/wpt/web-platform-tests/service-workers/stub-5.1-origin-relativity.html
deleted file mode 100644
index 469ce2975cd..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-5.1-origin-relativity.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: Origin Relativity</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#origin-relativity">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-One of the advanced concerns that major applications would encounter is whether
-they can be hosted from a CDN. By definition, these are servers in other
-places, often on other domains. Therefore, Service Workers cannot be hosted on
-CDNs. But they can include resources via [importScripts()][1]. The reason for
-this restriction is that Service Workers create the opportunity for a bad actor
-to turn a bad day into a bad eternity.
-
-[1]: http://goo.gl/Owcfs2
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section Origin Relativity so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/service-workers/stub-5.2-cross-origin-resources.html b/tests/wpt/web-platform-tests/service-workers/stub-5.2-cross-origin-resources.html
deleted file mode 100644
index 42c685b1d55..00000000000
--- a/tests/wpt/web-platform-tests/service-workers/stub-5.2-cross-origin-resources.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html>
-<html>
-<title>Service Workers: Cross-Origin Resources &amp; CORS</title>
- <head>
- <link rel="help" href="https://w3c.github.io/ServiceWorker/#cross-origin-resources">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-
- </head>
- <body>
-
-<!--
-
-Applications tend to cache items that come from a CDN or other domain. It is
-possible to request many of them directly using <script>, <img>, <video> and
-<link> elements. It would be hugely limiting if this sort of runtime
-collaboration broke when offline. Similarly, it is possible to XHR many sorts
-of off-domain resources when appropriate CORS headers are set.
-
-ServiceWorkers enable this by allowing `Cache`s to fetch and cache off-origin
-items. Some restrictions apply, however. First, unlike same-origin resources
-which are managed in the `Cache` as `[Promise][1]`s for `Response` instances,
-the objects stored are `[Promise][1]`s for `OpaqueResponse` instances.
-`OpaqueResponse` provides a much less expressive API than `Response`; the
-bodies and headers cannot be read or set, nor many of the other aspects of
-their content inspected. They can be passed to `respondWith()` and
-`forwardTo()` in the same manner as `Response`s, but cannot be meaningfully
-created programmatically. These limitations are necessary to preserve the
-security invariants of the platform. Allowing `Cache`s to store them allows
-applications to avoid re-architecting in most cases.
-
-
-
-[1]: http://goo.gl/3TobQS
-
--->
-
-
-
- <script>
- test(function() {
- // not_implemented();
- }, "There are no tests for section Cross-Origin Resources &amp; CORS so far.");
- </script>
-
- </body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/svg/animations/repeatn-remove-add-animation.html b/tests/wpt/web-platform-tests/svg/animations/repeatn-remove-add-animation.html
index f192d27dfbd..1715cd9d471 100644
--- a/tests/wpt/web-platform-tests/svg/animations/repeatn-remove-add-animation.html
+++ b/tests/wpt/web-platform-tests/svg/animations/repeatn-remove-add-animation.html
@@ -32,31 +32,31 @@ var epsilon = 1.0;
// Setup animation test
function sample1() {
- expectFillColor(rect1, 0, 255, 0);
- expectFillColor(rect2, 255, 0, 0);
- expectFillColor(rect3, 255, 0, 0);
- expectFillColor(rect4, 255, 0, 0);
+ expectFillColor(rect1, 0, 255, 0, "1.1");
+ expectFillColor(rect2, 255, 0, 0, "1.2");
+ expectFillColor(rect3, 255, 0, 0, "1.3");
+ expectFillColor(rect4, 255, 0, 0, "1.4");
}
function sample2() {
- expectFillColor(rect1, 0, 255, 0);
- expectFillColor(rect2, 0, 255, 0);
- expectFillColor(rect3, 255, 0, 0);
- expectFillColor(rect4, 255, 0, 0);
+ expectFillColor(rect1, 0, 255, 0, "2.1");
+ expectFillColor(rect2, 0, 255, 0, "2.2");
+ expectFillColor(rect3, 255, 0, 0, "2.3");
+ expectFillColor(rect4, 255, 0, 0, "2.4");
}
function sample3() {
- expectFillColor(rect1, 0, 255, 0);
- expectFillColor(rect2, 0, 255, 0);
- expectFillColor(rect3, 0, 255, 0);
- expectFillColor(rect4, 255, 0, 0);
+ expectFillColor(rect1, 0, 255, 0, "3.1");
+ expectFillColor(rect2, 0, 255, 0, "3.2");
+ expectFillColor(rect3, 0, 255, 0, "3.3");
+ expectFillColor(rect4, 255, 0, 0, "3.4");
}
function sample4() {
- expectFillColor(rect1, 0, 255, 0);
- expectFillColor(rect2, 0, 255, 0);
- expectFillColor(rect3, 0, 255, 0);
- expectFillColor(rect4, 0, 255, 0);
+ expectFillColor(rect1, 0, 255, 0, "4.1");
+ expectFillColor(rect2, 0, 255, 0, "4.2");
+ expectFillColor(rect3, 0, 255, 0, "4.3");
+ expectFillColor(rect4, 0, 255, 0, "4.4");
}
function recreate() {
@@ -81,15 +81,13 @@ smil_async_test((t) => {
const expectedValues = [
// [animationId, time, sampleCallback]
- ["anim", 0.0, sample1],
- ["anim", 0.001, sample1],
- ["anim", 2.0, sample1],
- ["anim", 2.001, sample2],
- ["anim", 4.0, sample2],
- ["anim", 4.001, sample3],
+ ["anim", 1.999, sample1],
+ ["anim", 2.000, sample2],
+ ["anim", 2.999, sample2],
+ ["anim", 4.000, sample3],
["anim", 5.0, recreate],
- ["anim", 6.0, sample3],
- ["anim", 6.001, sample4]
+ ["anim", 5.999, sample3],
+ ["anim", 6.000, sample4],
];
runAnimationTest(t, expectedValues);
@@ -97,4 +95,4 @@ smil_async_test((t) => {
window.animationStartsImmediately = true;
-</script> \ No newline at end of file
+</script>
diff --git a/tests/wpt/web-platform-tests/svg/animations/slider-switch.html b/tests/wpt/web-platform-tests/svg/animations/slider-switch.html
new file mode 100644
index 00000000000..1e14ae55165
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/animations/slider-switch.html
@@ -0,0 +1,41 @@
+<!doctype html>
+
+<title>Check correct event bases for onclick</title>
+<meta charset="utf-8">
+<link rel="help" href="https://svgwg.org/svg2-draft/single-page.html#interact-EventAttributes">
+<link rel="author" title="Edvard Thörnros" href="mailto:edvardt@opera.com">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<svg width="200" height="100">
+ <rect x="0" y="0" width="100" height="100" id="a" fill="#0AA">
+ <set begin="a.click" attributeName="display" to="none" fill="freeze"/>
+ <set begin="b.click" attributeName="display" to="block" fill="freeze"/>
+ </rect>
+ <rect x="100" y="0" width="100" height="100" id="b" display="none" fill="#A0A">
+ <set begin="a.click" attributeName="display" to="block" fill="freeze"/>
+ <set begin="b.click" attributeName="display" to="none" fill="freeze"/>
+ </rect>
+</svg>
+
+<script>
+ let retries = 3;
+ let a = document.querySelector("#a");
+ let b = document.querySelector("#b");
+ let t = async_test();
+ let interval = setInterval(t.step_func(function() {
+ retries--;
+ if (retries == 0) {
+ clearInterval(interval);
+ assert_equals(window.getComputedStyle(a).display, "block");
+ assert_equals(window.getComputedStyle(b).display, "none");
+ t.done();
+ return;
+ }
+ a.dispatchEvent(new Event("click"));
+ t.step_timeout(function() {
+ b.dispatchEvent(new Event("click"));
+ }, 20);
+ }), 20 * 2);
+</script>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html
index 5383b520bb4..bcec609d142 100644
--- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html
@@ -66,8 +66,8 @@ promise_test(async t => {
await animation.ready;
// If the current time was updated using the new playback rate it will jump
// back to 25s but if we correctly used the old playback rate the current time
- // will be > 50s.
- assert_greater_than(animation.currentTime, 50 * MS_PER_SEC);
+ // will be >= 50s.
+ assert_greater_than_equal(animation.currentTime, 50 * MS_PER_SEC);
}, 'A pause-pending animation maintains the current time when applying a'
+ ' pending playback rate');
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/timelines/document-timelines.html b/tests/wpt/web-platform-tests/web-animations/timing-model/timelines/document-timelines.html
index f45865ac7c0..4023bba5561 100644
--- a/tests/wpt/web-platform-tests/web-animations/timing-model/timelines/document-timelines.html
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/timelines/document-timelines.html
@@ -9,10 +9,6 @@
<script>
'use strict';
-function matchUnconditionalClamping(timestamp) {
- return parseFloat((Math.floor(timestamp / .02) * .02).toPrecision(8), 10);
-}
-
async_test(t => {
assert_greater_than_equal(document.timeline.currentTime, 0,
'The current time is initially is positive or zero');
@@ -32,7 +28,7 @@ async_test(t => {
// so we use requestAnimationFrame instead.
window.requestAnimationFrame(rafTime => {
t.step(() => {
- assert_equals(document.timeline.currentTime, matchUnconditionalClamping(rafTime),
+ assert_equals(document.timeline.currentTime, rafTime,
'The current time matches requestAnimationFrame time');
});
t.done();
diff --git a/tests/wpt/web-platform-tests/web-nfc/NFCReader.https.html b/tests/wpt/web-platform-tests/web-nfc/NFCReader.https.html
index 4488097d6eb..6fcb9b161dd 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NFCReader.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NFCReader.https.html
@@ -10,122 +10,125 @@
"use strict";
-function waitSyntaxErrorPromise(t, reader) {
+function waitSyntaxErrorPromise(t, scan_options) {
+ const reader = new NFCReader();
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
const promise = readerWatcher.wait_for("error").then(event => {
assert_equals(event.error.name, 'SyntaxError');
});
- // NFCReader#start() asynchronously dispatches the syntax error event.
- reader.start();
+ // NFCReader#scan() asynchronously dispatches the syntax error event.
+ reader.scan(scan_options);
return promise;
}
promise_test(async t => {
- const reader = new NFCReader({url: "www.a.com"});
- await waitSyntaxErrorPromise(t, reader);
-}, "Test that NFCReader.start fails if NFCReaderOptions.url is missing \
+ await waitSyntaxErrorPromise(t, {url: "www.a.com"});
+}, "Test that NFCReader.scan fails if NFCScanOptions.url is missing \
components.");
promise_test(async t => {
- const reader = new NFCReader({url: "invalid"});
- await waitSyntaxErrorPromise(t, reader);
-}, "Test that NFCReader.start fails if NFCReaderOptions.url is invalid.");
+ await waitSyntaxErrorPromise(t, {url: "invalid"});
+}, "Test that NFCReader.scan fails if NFCScanOptions.url is invalid.");
promise_test(async t => {
- const reader = new NFCReader({url: "http://a.com"});
- await waitSyntaxErrorPromise(t, reader);
-}, "Test that NFCReader.start fails if NFCReaderOptions.url has wrong \
+ await waitSyntaxErrorPromise(t, {url: "http://a.com"});
+}, "Test that NFCReader.scan fails if NFCScanOptions.url has wrong \
protocol.");
nfc_test(async (t, mockNFC) => {
const reader = new NFCReader();
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
- reader.start();
+ reader.scan();
mockNFC.setHWStatus(NFCHWStatus.DISABLED);
const event = await readerWatcher.wait_for("error");
assert_equals(event.error.name, 'NotReadableError');
-}, "NFCReader.start should fail if NFC HW is disabled.");
+}, "NFCReader.scan should fail if NFC HW is disabled.");
nfc_test(async (t, mockNFC) => {
const reader = new NFCReader();
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
- reader.start();
+ reader.scan();
mockNFC.setHWStatus(NFCHWStatus.NOT_SUPPORTED);
const event = await readerWatcher.wait_for("error");
assert_equals(event.error.name, 'NotSupportedError');
-}, "NFCReader.start should fail if NFC HW is not supported.");
+}, "NFCReader.scan should fail if NFC HW is not supported.");
nfc_test(async (t, mockNFC) => {
const reader = new NFCReader();
+ const controller = new AbortController();
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
mockNFC.setReadingMessage(createMessage([createTextRecord(test_text_data)]));
const promise = readerWatcher.wait_for("reading").then(event => {
assert_true(event instanceof NFCReadingEvent);
- reader.stop();
+ controller.abort();
});
- // NFCReader#start() asynchronously dispatches the reading event.
- reader.start();
+ // NFCReader#scan() asynchronously dispatches the reading event.
+ reader.scan({signal : controller.signal});
await promise;
}, "Test that nfc watch success if NFC HW is enabled.");
nfc_test(async (t, mockNFC) => {
- const reader = new NFCReader({url: "https://a.com"});
+ const reader = new NFCReader();
+ const controller = new AbortController();
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
mockNFC.setReadingMessage(createMessage([createTextRecord(test_text_data)]));
const promise = readerWatcher.wait_for("reading").then(event => {
assert_true(event instanceof NFCReadingEvent);
- reader.stop();
+ controller.abort();
});
- // NFCReader#start() asynchronously dispatches the reading event.
- reader.start();
+ // NFCReader#scan() asynchronously dispatches the reading event.
+ reader.scan({signal : controller.signal, url: "https://a.com"});
await promise;
-}, "Test that NFCReader.start succeeds if NFCReaderOptions.url is valid URL.");
+}, "Test that NFCReader.scan succeeds if NFCScanOptions.url is valid URL.");
nfc_test(async (t, mockNFC) => {
- const reader = new NFCReader({url: "https://a.com/*"});
+ const reader = new NFCReader();
+ const controller = new AbortController();
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
mockNFC.setReadingMessage(createMessage([createTextRecord(test_text_data)]));
const promise = readerWatcher.wait_for("reading").then(event => {
assert_true(event instanceof NFCReadingEvent);
- reader.stop();
+ controller.abort();
});
- // NFCReader#start() asynchronously dispatches the reading event.
- reader.start();
+ // NFCReader#scan() asynchronously dispatches the reading event.
+ reader.scan({signal : controller.signal, url: "https://a.com/*"});
await promise;
-}, "Test that NFCReader.start succeeds if NFCReaderOptions.url is valid URL \
+}, "Test that NFCReader.scan succeeds if NFCScanOptions.url is valid URL \
with '*' wildcard character in path.");
nfc_test(async (t, mockNFC) => {
- const reader = new NFCReader({url: "https://a.com/*/bar"});
+ const reader = new NFCReader();
+ const controller = new AbortController();
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
mockNFC.setReadingMessage(createMessage([createTextRecord(test_text_data)]));
const promise = readerWatcher.wait_for("reading").then(event => {
assert_true(event instanceof NFCReadingEvent);
- reader.stop();
+ controller.abort();
});
- // NFCReader#start() asynchronously dispatches the reading event.
- reader.start();
+ // NFCReader#scan() asynchronously dispatches the reading event.
+ reader.scan({signal : controller.signal, url: "https://a.com/*/bar"});
await promise;
-}, "Test that NFCReader.start succeeds if NFCReaderOptions.url is valid URL \
+}, "Test that NFCReader.scan succeeds if NFCScanOptions.url is valid URL \
with '*' wildcard character in the beginning of path component followed by \
subpath.");
nfc_test(async (t, mockNFC) => {
const reader = new NFCReader({url: ""});
+ const controller = new AbortController();
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
mockNFC.setReadingMessage(createMessage([createTextRecord(test_text_data)]));
const promise = readerWatcher.wait_for("reading").then(event => {
assert_true(event instanceof NFCReadingEvent);
- reader.stop();
+ controller.abort();
});
- // NFCReader#start() asynchronously dispatches the reading event.
- reader.start();
+ // NFCReader#scan() asynchronously dispatches the reading event.
+ reader.scan({signal : controller.signal, url: ""});
await promise;
-}, "Test that NFCReader.start succeeds if NFCReaderOptions.url is empty.");
+}, "Test that NFCReader.scan succeeds if NFCScanOptions.url is empty.");
</script>
diff --git a/tests/wpt/web-platform-tests/web-nfc/NFCReader_options.https.html b/tests/wpt/web-platform-tests/web-nfc/NFCReader_options.https.html
index ebda3859834..7c77045afb3 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NFCReader_options.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NFCReader_options.https.html
@@ -13,60 +13,60 @@
const NFCReaderOptionTests =
[
{
- desc: "Test that reading data succeed when NFCReaderOptions'" +
+ desc: "Test that reading data succeed when NFCScanOptions'" +
" recordType is set to 'empty'.",
- readOptions: {recordType: "empty"},
- unmatchedReadOptions: {recordType: "json"},
+ scanOptions: {recordType: "empty"},
+ unmatchedScanOptions: {recordType: "json"},
message: createMessage([createRecord('empty', '')])
},
{
- desc: "Test that reading data succeed when NFCReaderOptions'" +
+ desc: "Test that reading data succeed when NFCScanOptions'" +
" recordType is set to 'json'.",
- readOptions: {recordType: "json"},
- unmatchedReadOptions: {recordType: "url"},
+ scanOptions: {recordType: "json"},
+ unmatchedScanOptions: {recordType: "url"},
message: createMessage([createJsonRecord(test_json_data)])
},
{
- desc: "Test that reading data succeed when NFCReaderOptions'" +
+ desc: "Test that reading data succeed when NFCScanOptions'" +
" recordType is set to 'opaque'.",
- readOptions: {recordType: "opaque"},
- unmatchedReadOptions: {recordType: "json"},
+ scanOptions: {recordType: "opaque"},
+ unmatchedScanOptions: {recordType: "json"},
message: createMessage([createOpaqueRecord(test_buffer_data)])
},
{
- desc: "Test that reading data succeed when NFCReaderOptions'" +
+ desc: "Test that reading data succeed when NFCScanOptions'" +
" recordType is set to 'text'.",
- readOptions: {recordType: "text"},
- unmatchedReadOptions: {recordType: "json"},
+ scanOptions: {recordType: "text"},
+ unmatchedScanOptions: {recordType: "json"},
message: createMessage([createTextRecord(test_text_data)])
},
{
- desc: "Test that reading data succeed when NFCReaderOptions'" +
+ desc: "Test that reading data succeed when NFCScanOptions'" +
" recordType is set to 'url'.",
- readOptions: {recordType: "url"},
- unmatchedReadOptions: {recordType: "json"},
+ scanOptions: {recordType: "url"},
+ unmatchedScanOptions: {recordType: "json"},
message: createMessage([createUrlRecord(test_url_data)])
},
{
- desc: "Test that the url of NFCReaderOptions filters relevant data" +
+ desc: "Test that the url of NFCScanOptions filters relevant data" +
" sources correctly.",
- readOptions: {url: `${location.origin}/custom/path`},
- unmatchedReadOptions: {url: `${location.origin}/custom/invalid`},
+ scanOptions: {url: `${location.origin}/custom/path`},
+ unmatchedScanOptions: {url: `${location.origin}/custom/invalid`},
message: {url: `${location.origin}/custom/path/update`,
records: [createTextRecord(test_text_data)]}
},
{
- desc: "Test that the mediaType of NFCReaderOptions filters relevant data" +
+ desc: "Test that the mediaType of NFCScanOptions filters relevant data" +
" sources correctly.",
- readOptions: {mediaType: "application/octet-stream"},
- unmatchedReadOptions: {mediaType: "application/json"},
+ scanOptions: {mediaType: "application/octet-stream"},
+ unmatchedScanOptions: {mediaType: "application/json"},
message: createMessage([createOpaqueRecord(test_buffer_data)])
},
{
- desc: "Test that the compatibility of NFCReaderOptions filters relevant data" +
+ desc: "Test that the compatibility of NFCScanOptions filters relevant data" +
" sources correctly.",
- readOptions: {compatibility: "vendor"},
- unmatchedReadOptions: {compatibility: "nfc-forum"},
+ scanOptions: {compatibility: "vendor"},
+ unmatchedScanOptions: {compatibility: "nfc-forum"},
message: createMessage([createTextRecord(test_text_data)]),
}
];
@@ -75,43 +75,43 @@ const ReadMultiMessagesTests =
[
{
desc: "Test that filtering 'empty' record from different messages" +
- " correctly with NFCReaderOptions' recordType is set to 'empty'.",
- readOptions: {recordType: "empty"},
+ " correctly with NFCScanOptions' recordType is set to 'empty'.",
+ scanOptions: {recordType: "empty"},
message: createMessage([createRecord('empty', '')]),
unmatchedMessage: createMessage([createJsonRecord(test_json_data)]),
},
{
desc: "Test that filtering 'json' record from different messages" +
- " correctly with NFCReaderOptions' recordType is set to 'json'.",
- readOptions: {recordType: "json"},
+ " correctly with NFCScanOptions' recordType is set to 'json'.",
+ scanOptions: {recordType: "json"},
message: createMessage([createJsonRecord(test_json_data)]),
unmatchedMessage: createMessage([createUrlRecord(test_url_data)])
},
{
desc: "Test that filtering 'opaque' record from different messages" +
- " correctly with NFCReaderOptions' recordType is set to 'opaque'.",
- readOptions: {recordType: "opaque"},
+ " correctly with NFCScanOptions' recordType is set to 'opaque'.",
+ scanOptions: {recordType: "opaque"},
message: createMessage([createOpaqueRecord(test_buffer_data)]),
unmatchedMessage: createMessage([createJsonRecord(test_json_data)])
},
{
desc: "Test that filtering 'text' record from different messages" +
- " correctly with NFCReaderOptions' recordType is set to 'text'.",
- readOptions: {recordType: "text"},
+ " correctly with NFCScanOptions' recordType is set to 'text'.",
+ scanOptions: {recordType: "text"},
message: createMessage([createTextRecord(test_text_data)]),
unmatchedMessage: createMessage([createUrlRecord(test_url_data)])
},
{
desc: "Test that filtering 'url' record from different messages" +
- " correctly with NFCReaderOptions' recordType is set to 'url'.",
- readOptions: {recordType: "url"},
+ " correctly with NFCScanOptions' recordType is set to 'url'.",
+ scanOptions: {recordType: "url"},
message: createMessage([createUrlRecord(test_url_data)]),
unmatchedMessage: createMessage([createTextRecord(test_text_data)])
},
{
desc: "Test that filtering 'text' record from different messages" +
- " correctly with NFCReaderOptions' url set.",
- readOptions: {url: `${location.origin}/custom/path`},
+ " correctly with NFCScanOptions' url set.",
+ scanOptions: {url: `${location.origin}/custom/path`},
message: {url: `${location.origin}/custom/path/update`,
records: [createTextRecord(test_text_data)]},
unmatchedMessage: {url: `${location.origin}/custom/invalid`,
@@ -119,15 +119,15 @@ const ReadMultiMessagesTests =
},
{
desc: "Test that filtering 'opaque' record from different messages" +
- " correctly with NFCReaderOptions' mediaType set.",
- readOptions: {mediaType: "application/octet-stream"},
+ " correctly with NFCScanOptions' mediaType set.",
+ scanOptions: {mediaType: "application/octet-stream"},
message: createMessage([createOpaqueRecord(test_buffer_data)]),
unmatchedMessage: createMessage([createJsonRecord(test_json_data)])
},
{
desc: "Test that filtering 'text' record from different messages" +
- " correctly with NFCReaderOptions' compatibility set.",
- readOptions: {compatibility: "nfc-forum"},
+ " correctly with NFCScanOptions' compatibility set.",
+ scanOptions: {compatibility: "nfc-forum"},
message: createMessage([createTextRecord(test_text_data)]),
unmatchedMessage: createMessage([createJsonRecord(test_json_data)]),
unmatchedCompatibility: "vendor"
@@ -135,10 +135,10 @@ const ReadMultiMessagesTests =
];
for (let NFCReaderOptionTest of NFCReaderOptionTests) {
- testNFCReaderOptions(
+ testNFCScanOptions(
NFCReaderOptionTest.message,
- NFCReaderOptionTest.readOptions,
- NFCReaderOptionTest.unmatchedReadOptions,
+ NFCReaderOptionTest.scanOptions,
+ NFCReaderOptionTest.unmatchedScanOptions,
NFCReaderOptionTest.desc
);
}
@@ -151,7 +151,7 @@ for (let readMultiMessagesTest of ReadMultiMessagesTests) {
testReadingMultiMessages(
readMultiMessagesTest.message,
- readMultiMessagesTest.readOptions,
+ readMultiMessagesTest.scanOptions,
readMultiMessagesTest.unmatchedMessage,
unmatchedCompatibility,
readMultiMessagesTest.desc
diff --git a/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js b/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
index 02f348ddf27..f7ee7a4786e 100644
--- a/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
+++ b/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
@@ -172,42 +172,46 @@ function assertWebNDEFMessagesEqual(message, expectedMessage) {
}
}
-function testNFCReaderOptions(message, readOptions, unmatchedReadOptions, desc) {
+function testNFCScanOptions(message, scanOptions, unmatchedScanOptions, desc) {
nfc_test(async (t, mockNFC) => {
- const reader1 = new NFCReader(unmatchedReadOptions);
- const reader2 = new NFCReader(readOptions);
+ const reader1 = new NFCReader();
+ const reader2 = new NFCReader();
+ const controller = new AbortController();
- mockNFC.setReadingMessage(message, readOptions.compatibility);
+ mockNFC.setReadingMessage(message, scanOptions.compatibility);
// Reading from unmatched reader will not be triggered
reader1.onreading = t.unreached_func("reading event should not be fired.");
- reader1.start();
+ unmatchedScanOptions.signal = controller.signal;
+ reader1.scan(unmatchedScanOptions);
const readerWatcher = new EventWatcher(t, reader2, ["reading", "error"]);
const promise = readerWatcher.wait_for("reading").then(event => {
- reader1.stop();
- reader2.stop();
+ controller.abort();
assertWebNDEFMessagesEqual(event.message, new NDEFMessage(message));
});
- // NFCReader#start() asynchronously dispatches the onreading event.
- reader2.start();
+ // NFCReader#scan() asynchronously dispatches the onreading event.
+ scanOptions.signal = controller.signal;
+ reader2.scan(scanOptions);
await promise;
}, desc);
}
-function testReadingMultiMessages(message, readOptions, unmatchedMessage,
+function testReadingMultiMessages(message, scanOptions, unmatchedMessage,
unmatchedCompatibility, desc) {
nfc_test(async (t, mockNFC) => {
- const reader = new NFCReader(readOptions);
+ const reader = new NFCReader(scanOptions);
+ const controller = new AbortController();
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
const promise = readerWatcher.wait_for("reading").then(event => {
- reader.stop();
+ controller.abort();
assertWebNDEFMessagesEqual(event.message, new NDEFMessage(message));
});
- // NFCReader#start() asynchronously dispatches the onreading event.
- reader.start();
+ // NFCReader#scan() asynchronously dispatches the onreading event.
+ scanOptions.signal = controller.signal;
+ reader.scan(scanOptions);
// Unmatched message will not be read
mockNFC.setReadingMessage(unmatchedMessage, unmatchedCompatibility);