Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v5.7.0 #5394

Merged
merged 1 commit into from
Oct 10, 2024
Merged

Release v5.7.0 #5394

merged 1 commit into from
Oct 10, 2024

Conversation

owenatgov
Copy link
Contributor

New features

The Royal Arms has been updated

The Royal Arms in the GOV.UK footer has been updated to reflect the version introduced by King Charles III.

If your service does not use the image directly from the Frontend package, you should ensure the new image is being copied to your service’s image assets folder. By default this folder is located at /assets/images.

If you’re using Nunjucks, the asset path may have been changed by the assetPath global variable or assetsPath parameter on the header component.

Copy the govuk-crest.svg file from /dist/assets/images into your assets folder.

You can safely delete the old image files, named govuk-crest.png and govuk-crest@2x.png.

We introduced this change in pull request #5376: Update the Royal Arms graphic in footer (v5.x).

Components will not longer initialise twice on the same element

GOV.UK Frontend components now throw an error if they've already been initialised on the DOM Element they're receiving for initialisation.
This prevents components from being initialised more than once and therefore not working properly.

We introduced this change in pull request #5272: Prevent multiple initialisations of a single component instance

Respond to initialisation errors when using createAll and initAll

We've added a new onError option for createAll and initAll that lets you respond to initialisation errors.
The functions will continue catching errors and initialising components further down the page if one component fails to initialise,
but this option will let you react to a component failing to initialise. For example, to allow reporting to an error monitoring service.

We introduced this change in:

Check if GOV.UK Frontend is supported

We've added the isSupported function to let you check if GOV.UK Frontend is supported in the browser running your script.
GOV.UK Frontend components check this automatically, but you may want to use the isSupported function to avoid running some code when GOV.UK Frontend is not supported.

We introduced this change in pull request #5250: Add isSupported to all.mjs

Use our base component to build your own components

We've added a Component class to help you build your own components. It allows you to focus on your components' specific features by handling these shared behaviours across components:

  • checking that GOV.UK Frontend is supported
  • checking that the component is not already initialised on its root element
  • checking the type of the root element and storing it for access within the component as this.$root

We introduced this change in:

New brand colour

We've added a brand colour for the Serious Fraud Office in pull request #5389.

Fixes

We've made fixes to GOV.UK Frontend in the following pull requests:

@govuk-design-system-ci govuk-design-system-ci temporarily deployed to govuk-frontend-pr-5394 October 10, 2024 10:50 Inactive
Copy link

JavaScript changes to GitHub release

diff --git a/dist/govuk-frontend-5.6.0.min.js b/dist/govuk-frontend-5.7.0.min.js
index d3dafdc1d..c0ff5fe6d 100644
--- a/dist/govuk-frontend-5.6.0.min.js
+++ b/dist/govuk-frontend-5.7.0.min.js
@@ -1,183 +1,214 @@
-const version = "5.6.0";
+const version = "5.7.0";
 
-function normaliseString(e, t) {
-    const n = e ? e.trim() : "";
-    let i, s = null == t ? void 0 : t.type;
-    switch (s || (["true", "false"].includes(n) && (s = "boolean"), n.length > 0 && isFinite(Number(n)) && (s = "number")), s) {
+function normaliseString(t, e) {
+    const s = t ? t.trim() : "";
+    let n, i = null == e ? void 0 : e.type;
+    switch (i || (["true", "false"].includes(s) && (i = "boolean"), s.length > 0 && isFinite(Number(s)) && (i = "number")), i) {
         case "boolean":
-            i = "true" === n;
+            n = "true" === s;
             break;
         case "number":
-            i = Number(n);
+            n = Number(s);
             break;
         default:
-            i = e
+            n = t
     }
-    return i
+    return n
 }
 
-function mergeConfigs(...e) {
-    const t = {};
-    for (const n of e)
-        for (const e of Object.keys(n)) {
-            const i = t[e],
-                s = n[e];
-            isObject(i) && isObject(s) ? t[e] = mergeConfigs(i, s) : t[e] = s
+function mergeConfigs(...t) {
+    const e = {};
+    for (const s of t)
+        for (const t of Object.keys(s)) {
+            const n = e[t],
+                i = s[t];
+            isObject(n) && isObject(i) ? e[t] = mergeConfigs(n, i) : e[t] = i
         }
-    return t
+    return e
 }
 
-function extractConfigByNamespace(e, t, n) {
-    const i = e.schema.properties[n];
-    if ("object" !== (null == i ? void 0 : i.type)) return;
-    const s = {
-        [n]: {}
+function extractConfigByNamespace(Component, t, e) {
+    const s = Component.schema.properties[e];
+    if ("object" !== (null == s ? void 0 : s.type)) return;
+    const n = {
+        [e]: {}
     };
-    for (const [o, r] of Object.entries(t)) {
-        let e = s;
-        const t = o.split(".");
-        for (const [i, s] of t.entries()) "object" == typeof e && (i < t.length - 1 ? (isObject(e[s]) || (e[s] = {}), e = e[s]) : o !== n && (e[s] = normaliseString(r)))
+    for (const [i, o] of Object.entries(t)) {
+        let t = n;
+        const s = i.split(".");
+        for (const [n, r] of s.entries()) "object" == typeof t && (n < s.length - 1 ? (isObject(t[r]) || (t[r] = {}), t = t[r]) : i !== e && (t[r] = normaliseString(o)))
     }
-    return s[n]
+    return n[e]
 }
 
-function getFragmentFromUrl(e) {
-    if (e.includes("#")) return e.split("#").pop()
+function getFragmentFromUrl(t) {
+    if (t.includes("#")) return t.split("#").pop()
 }
 
-function getBreakpoint(e) {
-    const t = `--govuk-frontend-breakpoint-${e}`;
+function getBreakpoint(t) {
+    const e = `--govuk-frontend-breakpoint-${t}`;
     return {
-        property: t,
-        value: window.getComputedStyle(document.documentElement).getPropertyValue(t) || void 0
+        property: e,
+        value: window.getComputedStyle(document.documentElement).getPropertyValue(e) || void 0
     }
 }
 
-function setFocus(e, t = {}) {
-    var n;
-    const i = e.getAttribute("tabindex");
+function setFocus(t, e = {}) {
+    var s;
+    const n = t.getAttribute("tabindex");
 
     function onBlur() {
-        var n;
-        null == (n = t.onBlur) || n.call(e), i || e.removeAttribute("tabindex")
+        var s;
+        null == (s = e.onBlur) || s.call(t), n || t.removeAttribute("tabindex")
     }
-    i || e.setAttribute("tabindex", "-1"), e.addEventListener("focus", (function() {
-        e.addEventListener("blur", onBlur, {
+    n || t.setAttribute("tabindex", "-1"), t.addEventListener("focus", (function() {
+        t.addEventListener("blur", onBlur, {
             once: !0
         })
     }), {
         once: !0
-    }), null == (n = t.onBeforeFocus) || n.call(e), e.focus()
+    }), null == (s = e.onBeforeFocus) || s.call(t), t.focus()
 }
 
-function isSupported(e = document.body) {
-    return !!e && e.classList.contains("govuk-frontend-supported")
+function isSupported(t = document.body) {
+    return !!t && t.classList.contains("govuk-frontend-supported")
 }
 
-function isObject(e) {
-    return !!e && "object" == typeof e && ! function(e) {
-        return Array.isArray(e)
-    }(e)
+function isObject(t) {
+    return !!t && "object" == typeof t && ! function(t) {
+        return Array.isArray(t)
+    }(t)
 }
 
-function normaliseDataset(e, t) {
-    const n = {};
-    for (const [i, s] of Object.entries(e.schema.properties)) i in t && (n[i] = normaliseString(t[i], s)), "object" === (null == s ? void 0 : s.type) && (n[i] = extractConfigByNamespace(e, t, i));
-    return n
+function formatErrorMessage(Component, t) {
+    return `${Component.moduleName}: ${t}`
+}
+
+function normaliseDataset(Component, t) {
+    const e = {};
+    for (const [s, n] of Object.entries(Component.schema.properties)) s in t && (e[s] = normaliseString(t[s], n)), "object" === (null == n ? void 0 : n.type) && (e[s] = extractConfigByNamespace(Component, t, s));
+    return e
 }
 class GOVUKFrontendError extends Error {
-    constructor(...e) {
-        super(...e), this.name = "GOVUKFrontendError"
+    constructor(...t) {
+        super(...t), this.name = "GOVUKFrontendError"
     }
 }
 class SupportError extends GOVUKFrontendError {
-    constructor(e = document.body) {
-        const t = "noModule" in HTMLScriptElement.prototype ? 'GOV.UK Frontend initialised without `<body class="govuk-frontend-supported">` from template `<script>` snippet' : "GOV.UK Frontend is not supported in this browser";
-        super(e ? t : 'GOV.UK Frontend initialised without `<script type="module">`'), this.name = "SupportError"
+    constructor(t = document.body) {
+        const e = "noModule" in HTMLScriptElement.prototype ? 'GOV.UK Frontend initialised without `<body class="govuk-frontend-supported">` from template `<script>` snippet' : "GOV.UK Frontend is not supported in this browser";
+        super(t ? e : 'GOV.UK Frontend initialised without `<script type="module">`'), this.name = "SupportError"
     }
 }
 class ConfigError extends GOVUKFrontendError {
-    constructor(...e) {
-        super(...e), this.name = "ConfigError"
+    constructor(...t) {
+        super(...t), this.name = "ConfigError"
     }
 }
 class ElementError extends GOVUKFrontendError {
-    constructor(e) {
-        let t = "string" == typeof e ? e : "";
-        if ("object" == typeof e) {
+    constructor(t) {
+        let e = "string" == typeof t ? t : "";
+        if ("object" == typeof t) {
             const {
-                componentName: n,
-                identifier: i,
-                element: s,
+                component: s,
+                identifier: n,
+                element: i,
                 expectedType: o
-            } = e;
-            t = `${n}: ${i}`, t += s ? ` is not of type ${null!=o?o:"HTMLElement"}` : " not found"
+            } = t;
+            e = n, e += i ? ` is not of type ${null!=o?o:"HTMLElement"}` : " not found", e = formatErrorMessage(s, e)
         }
-        super(t), this.name = "ElementError"
+        super(e), this.name = "ElementError"
     }
 }
-class GOVUKFrontendComponent {
-    constructor() {
-        this.checkSupport()
+class InitError extends GOVUKFrontendError {
+    constructor(t) {
+        super("string" == typeof t ? t : formatErrorMessage(t, "Root element (`$root`) already initialised")), this.name = "InitError"
     }
-    checkSupport() {
+}
+class GOVUKFrontendComponent {
+    get $root() {
+        return this._$root
+    }
+    constructor(t) {
+        this._$root = void 0;
+        const e = this.constructor;
+        if ("string" != typeof e.moduleName) throw new InitError("`moduleName` not defined in component");
+        if (!(t instanceof e.elementType)) throw new ElementError({
+            element: t,
+            component: e,
+            identifier: "Root element (`$root`)",
+            expectedType: e.elementType.name
+        });
+        this._$root = t, e.checkSupport(), this.checkInitialised();
+        const s = e.moduleName;
+        this.$root.setAttribute(`data-${s}-init`, "")
+    }
+    checkInitialised() {
+        const t = this.constructor,
+            e = t.moduleName;
+        if (e && function(t, e) {
+                return t instanceof HTMLElement && t.hasAttribute(`data-${e}-init`)
+            }(this.$root, e)) throw new InitError(t)
+    }
+    static checkSupport() {
         if (!isSupported()) throw new SupportError
     }
 }
+GOVUKFrontendComponent.elementType = HTMLElement;
 class I18n {
-    constructor(e = {}, t = {}) {
-        var n;
-        this.translations = void 0, this.locale = void 0, this.translations = e, this.locale = null != (n = t.locale) ? n : document.documentElement.lang || "en"
-    }
-    t(e, t) {
-        if (!e) throw new Error("i18n: lookup key missing");
-        let n = this.translations[e];
-        if ("number" == typeof(null == t ? void 0 : t.count) && "object" == typeof n) {
-            const i = n[this.getPluralSuffix(e, t.count)];
-            i && (n = i)
+    constructor(t = {}, e = {}) {
+        var s;
+        this.translations = void 0, this.locale = void 0, this.translations = t, this.locale = null != (s = e.locale) ? s : document.documentElement.lang || "en"
+    }
+    t(t, e) {
+        if (!t) throw new Error("i18n: lookup key missing");
+        let s = this.translations[t];
+        if ("number" == typeof(null == e ? void 0 : e.count) && "object" == typeof s) {
+            const n = s[this.getPluralSuffix(t, e.count)];
+            n && (s = n)
         }
-        if ("string" == typeof n) {
-            if (n.match(/%{(.\S+)}/)) {
-                if (!t) throw new Error("i18n: cannot replace placeholders in string if no option data provided");
-                return this.replacePlaceholders(n, t)
+        if ("string" == typeof s) {
+            if (s.match(/%{(.\S+)}/)) {
+                if (!e) throw new Error("i18n: cannot replace placeholders in string if no option data provided");
+                return this.replacePlaceholders(s, e)
             }
-            return n
+            return s
         }
-        return e
-    }
-    replacePlaceholders(e, t) {
-        const n = Intl.NumberFormat.supportedLocalesOf(this.locale).length ? new Intl.NumberFormat(this.locale) : void 0;
-        return e.replace(/%{(.\S+)}/g, (function(e, i) {
-            if (Object.prototype.hasOwnProperty.call(t, i)) {
-                const e = t[i];
-                return !1 === e || "number" != typeof e && "string" != typeof e ? "" : "number" == typeof e ? n ? n.format(e) : `${e}` : e
+        return t
+    }
+    replacePlaceholders(t, e) {
+        const s = Intl.NumberFormat.supportedLocalesOf(this.locale).length ? new Intl.NumberFormat(this.locale) : void 0;
+        return t.replace(/%{(.\S+)}/g, (function(t, n) {
+            if (Object.prototype.hasOwnProperty.call(e, n)) {
+                const t = e[n];
+                return !1 === t || "number" != typeof t && "string" != typeof t ? "" : "number" == typeof t ? s ? s.format(t) : `${t}` : t
             }
-            throw new Error(`i18n: no data found to replace ${e} placeholder in string`)
+            throw new Error(`i18n: no data found to replace ${t} placeholder in string`)
         }))
     }
     hasIntlPluralRulesSupport() {
         return Boolean("PluralRules" in window.Intl && Intl.PluralRules.supportedLocalesOf(this.locale).length)
     }
-    getPluralSuffix(e, t) {
-        if (t = Number(t), !isFinite(t)) return "other";
-        const n = this.translations[e],
-            i = this.hasIntlPluralRulesSupport() ? new Intl.PluralRules(this.locale).select(t) : this.selectPluralFormUsingFallbackRules(t);
-        if ("object" == typeof n) {
-            if (i in n) return i;
-            if ("other" in n) return console.warn(`i18n: Missing plural form ".${i}" for "${this.locale}" locale. Falling back to ".other".`), "other"
+    getPluralSuffix(t, e) {
+        if (e = Number(e), !isFinite(e)) return "other";
+        const s = this.translations[t],
+            n = this.hasIntlPluralRulesSupport() ? new Intl.PluralRules(this.locale).select(e) : this.selectPluralFormUsingFallbackRules(e);
+        if ("object" == typeof s) {
+            if (n in s) return n;
+            if ("other" in s) return console.warn(`i18n: Missing plural form ".${n}" for "${this.locale}" locale. Falling back to ".other".`), "other"
         }
         throw new Error(`i18n: Plural form ".other" is required for "${this.locale}" locale`)
     }
-    selectPluralFormUsingFallbackRules(e) {
-        e = Math.abs(Math.floor(e));
-        const t = this.getPluralRulesForLocale();
-        return t ? I18n.pluralRules[t](e) : "other"
+    selectPluralFormUsingFallbackRules(t) {
+        t = Math.abs(Math.floor(t));
+        const e = this.getPluralRulesForLocale();
+        return e ? I18n.pluralRules[e](t) : "other"
     }
     getPluralRulesForLocale() {
-        const e = this.locale.split("-")[0];
-        for (const t in I18n.pluralRulesMap) {
-            const n = I18n.pluralRulesMap[t];
-            if (n.includes(this.locale) || n.includes(e)) return t
+        const t = this.locale.split("-")[0];
+        for (const e in I18n.pluralRulesMap) {
+            const s = I18n.pluralRulesMap[e];
+            if (s.includes(this.locale) || s.includes(t)) return e
         }
     }
 }
@@ -192,151 +223,146 @@ I18n.pluralRulesMap = {
     spanish: ["pt-PT", "it", "es"],
     welsh: ["cy"]
 }, I18n.pluralRules = {
-    arabic: e => 0 === e ? "zero" : 1 === e ? "one" : 2 === e ? "two" : e % 100 >= 3 && e % 100 <= 10 ? "few" : e % 100 >= 11 && e % 100 <= 99 ? "many" : "other",
+    arabic: t => 0 === t ? "zero" : 1 === t ? "one" : 2 === t ? "two" : t % 100 >= 3 && t % 100 <= 10 ? "few" : t % 100 >= 11 && t % 100 <= 99 ? "many" : "other",
     chinese: () => "other",
-    french: e => 0 === e || 1 === e ? "one" : "other",
-    german: e => 1 === e ? "one" : "other",
-    irish: e => 1 === e ? "one" : 2 === e ? "two" : e >= 3 && e <= 6 ? "few" : e >= 7 && e <= 10 ? "many" : "other",
-    russian(e) {
-        const t = e % 100,
-            n = t % 10;
-        return 1 === n && 11 !== t ? "one" : n >= 2 && n <= 4 && !(t >= 12 && t <= 14) ? "few" : 0 === n || n >= 5 && n <= 9 || t >= 11 && t <= 14 ? "many" : "other"
+    french: t => 0 === t || 1 === t ? "one" : "other",
+    german: t => 1 === t ? "one" : "other",
+    irish: t => 1 === t ? "one" : 2 === t ? "two" : t >= 3 && t <= 6 ? "few" : t >= 7 && t <= 10 ? "many" : "other",
+    russian(t) {
+        const e = t % 100,
+            s = e % 10;
+        return 1 === s && 11 !== e ? "one" : s >= 2 && s <= 4 && !(e >= 12 && e <= 14) ? "few" : 0 === s || s >= 5 && s <= 9 || e >= 11 && e <= 14 ? "many" : "other"
     },
-    scottish: e => 1 === e || 11 === e ? "one" : 2 === e || 12 === e ? "two" : e >= 3 && e <= 10 || e >= 13 && e <= 19 ? "few" : "other",
-    spanish: e => 1 === e ? "one" : e % 1e6 == 0 && 0 !== e ? "many" : "other",
-    welsh: e => 0 === e ? "zero" : 1 === e ? "one" : 2 === e ? "two" : 3 === e ? "few" : 6 === e ? "many" : "other"
+    scottish: t => 1 === t || 11 === t ? "one" : 2 === t || 12 === t ? "two" : t >= 3 && t <= 10 || t >= 13 && t <= 19 ? "few" : "other",
+    spanish: t => 1 === t ? "one" : t % 1e6 == 0 && 0 !== t ? "many" : "other",
+    welsh: t => 0 === t ? "zero" : 1 === t ? "one" : 2 === t ? "two" : 3 === t ? "few" : 6 === t ? "many" : "other"
 };
 class Accordion extends GOVUKFrontendComponent {
-    constructor(e, t = {}) {
-        if (super(), this.$module = void 0, this.config = void 0, this.i18n = void 0, this.controlsClass = "govuk-accordion__controls", this.showAllClass = "govuk-accordion__show-all", this.showAllTextClass = "govuk-accordion__show-all-text", this.sectionClass = "govuk-accordion__section", this.sectionExpandedClass = "govuk-accordion__section--expanded", this.sectionButtonClass = "govuk-accordion__section-button", this.sectionHeaderClass = "govuk-accordion__section-header", this.sectionHeadingClass = "govuk-accordion__section-heading", this.sectionHeadingDividerClass = "govuk-accordion__section-heading-divider", this.sectionHeadingTextClass = "govuk-accordion__section-heading-text", this.sectionHeadingTextFocusClass = "govuk-accordion__section-heading-text-focus", this.sectionShowHideToggleClass = "govuk-accordion__section-toggle", this.sectionShowHideToggleFocusClass = "govuk-accordion__section-toggle-focus", this.sectionShowHideTextClass = "govuk-accordion__section-toggle-text", this.upChevronIconClass = "govuk-accordion-nav__chevron", this.downChevronIconClass = "govuk-accordion-nav__chevron--down", this.sectionSummaryClass = "govuk-accordion__section-summary", this.sectionSummaryFocusClass = "govuk-accordion__section-summary-focus", this.sectionContentClass = "govuk-accordion__section-content", this.$sections = void 0, this.$showAllButton = null, this.$showAllIcon = null, this.$showAllText = null, !(e instanceof HTMLElement)) throw new ElementError({
-            componentName: "Accordion",
-            element: e,
-            identifier: "Root element (`$module`)"
-        });
-        this.$module = e, this.config = mergeConfigs(Accordion.defaults, t, normaliseDataset(Accordion, e.dataset)), this.i18n = new I18n(this.config.i18n);
-        const n = this.$module.querySelectorAll(`.${this.sectionClass}`);
-        if (!n.length) throw new ElementError({
-            componentName: "Accordion",
+    constructor(t, e = {}) {
+        super(t), this.config = void 0, this.i18n = void 0, this.controlsClass = "govuk-accordion__controls", this.showAllClass = "govuk-accordion__show-all", this.showAllTextClass = "govuk-accordion__show-all-text", this.sectionClass = "govuk-accordion__section", this.sectionExpandedClass = "govuk-accordion__section--expanded", this.sectionButtonClass = "govuk-accordion__section-button", this.sectionHeaderClass = "govuk-accordion__section-header", this.sectionHeadingClass = "govuk-accordion__section-heading", this.sectionHeadingDividerClass = "govuk-accordion__section-heading-divider", this.sectionHeadingTextClass = "govuk-accordion__section-heading-text", this.sectionHeadingTextFocusClass = "govuk-accordion__section-heading-text-focus", this.sectionShowHideToggleClass = "govuk-accordion__section-toggle", this.sectionShowHideToggleFocusClass = "govuk-accordion__section-toggle-focus", this.sectionShowHideTextClass = "govuk-accordion__section-toggle-text", this.upChevronIconClass = "govuk-accordion-nav__chevron", this.downChevronIconClass = "govuk-accordion-nav__chevron--down", this.sectionSummaryClass = "govuk-accordion__section-summary", this.sectionSummaryFocusClass = "govuk-accordion__section-summary-focus", this.sectionContentClass = "govuk-accordion__section-content", this.$sections = void 0, this.$showAllButton = null, this.$showAllIcon = null, this.$showAllText = null, this.config = mergeConfigs(Accordion.defaults, e, normaliseDataset(Accordion, this.$root.dataset)), this.i18n = new I18n(this.config.i18n);
+        const s = this.$root.querySelectorAll(`.${this.sectionClass}`);
+        if (!s.length) throw new ElementError({
+            component: Accordion,
             identifier: `Sections (\`<div class="${this.sectionClass}">\`)`
         });
-        this.$sections = n, this.initControls(), this.initSectionHeaders(), this.updateShowAllButton(this.areAllSectionsOpen())
+        this.$sections = s, this.initControls(), this.initSectionHeaders(), this.updateShowAllButton(this.areAllSectionsOpen())
     }
     initControls() {
         this.$showAllButton = document.createElement("button"), this.$showAllButton.setAttribute("type", "button"), this.$showAllButton.setAttribute("class", this.showAllClass), this.$showAllButton.setAttribute("aria-expanded", "false"), this.$showAllIcon = document.createElement("span"), this.$showAllIcon.classList.add(this.upChevronIconClass), this.$showAllButton.appendChild(this.$showAllIcon);
-        const e = document.createElement("div");
-        e.setAttribute("class", this.controlsClass), e.appendChild(this.$showAllButton), this.$module.insertBefore(e, this.$module.firstChild), this.$showAllText = document.createElement("span"), this.$showAllText.classList.add(this.showAllTextClass), this.$showAllButton.appendChild(this.$showAllText), this.$showAllButton.addEventListener("click", (() => this.onShowOrHideAllToggle())), "onbeforematch" in document && document.addEventListener("beforematch", (e => this.onBeforeMatch(e)))
+        const t = document.createElement("div");
+        t.setAttribute("class", this.controlsClass), t.appendChild(this.$showAllButton), this.$root.insertBefore(t, this.$root.firstChild), this.$showAllText = document.createElement("span"), this.$showAllText.classList.add(this.showAllTextClass), this.$showAllButton.appendChild(this.$showAllText), this.$showAllButton.addEventListener("click", (() => this.onShowOrHideAllToggle())), "onbeforematch" in document && document.addEventListener("beforematch", (t => this.onBeforeMatch(t)))
     }
     initSectionHeaders() {
-        this.$sections.forEach(((e, t) => {
-            const n = e.querySelector(`.${this.sectionHeaderClass}`);
-            if (!n) throw new ElementError({
-                componentName: "Accordion",
+        this.$sections.forEach(((t, e) => {
+            const s = t.querySelector(`.${this.sectionHeaderClass}`);
+            if (!s) throw new ElementError({
+                component: Accordion,
                 identifier: `Section headers (\`<div class="${this.sectionHeaderClass}">\`)`
             });
-            this.constructHeaderMarkup(n, t), this.setExpanded(this.isExpanded(e), e), n.addEventListener("click", (() => this.onSectionToggle(e))), this.setInitialState(e)
+            this.constructHeaderMarkup(s, e), this.setExpanded(this.isExpanded(t), t), s.addEventListener("click", (() => this.onSectionToggle(t))), this.setInitialState(t)
         }))
     }
-    constructHeaderMarkup(e, t) {
-        const n = e.querySelector(`.${this.sectionButtonClass}`),
-            i = e.querySelector(`.${this.sectionHeadingClass}`),
-            s = e.querySelector(`.${this.sectionSummaryClass}`);
-        if (!i) throw new ElementError({
-            componentName: "Accordion",
+    constructHeaderMarkup(t, e) {
+        const s = t.querySelector(`.${this.sectionButtonClass}`),
+            n = t.querySelector(`.${this.sectionHeadingClass}`),
+            i = t.querySelector(`.${this.sectionSummaryClass}`);
+        if (!n) throw new ElementError({
+            component: Accordion,
             identifier: `Section heading (\`.${this.sectionHeadingClass}\`)`
         });
-        if (!n) throw new ElementError({
-            componentName: "Accordion",
+        if (!s) throw new ElementError({
+            component: Accordion,
             identifier: `Section button placeholder (\`<span class="${this.sectionButtonClass}">\`)`
         });
         const o = document.createElement("button");
-        o.setAttribute("type", "button"), o.setAttribute("aria-controls", `${this.$module.id}-content-${t+1}`);
-        for (const d of Array.from(n.attributes)) "id" !== d.name && o.setAttribute(d.name, d.value);
+        o.setAttribute("type", "button"), o.setAttribute("aria-controls", `${this.$root.id}-content-${e+1}`);
+        for (const d of Array.from(s.attributes)) "id" !== d.name && o.setAttribute(d.name, d.value);
         const r = document.createElement("span");
-        r.classList.add(this.sectionHeadingTextClass), r.id = n.id;
+        r.classList.add(this.sectionHeadingTextClass), r.id = s.id;
         const a = document.createElement("span");
-        a.classList.add(this.sectionHeadingTextFocusClass), r.appendChild(a), Array.from(n.childNodes).forEach((e => a.appendChild(e)));
-        const l = document.createElement("span");
-        l.classList.add(this.sectionShowHideToggleClass), l.setAttribute("data-nosnippet", "");
+        a.classList.add(this.sectionHeadingTextFocusClass), r.appendChild(a), Array.from(s.childNodes).forEach((t => a.appendChild(t)));
         const c = document.createElement("span");
-        c.classList.add(this.sectionShowHideToggleFocusClass), l.appendChild(c);
+        c.classList.add(this.sectionShowHideToggleClass), c.setAttribute("data-nosnippet", "");
+        const l = document.createElement("span");
+        l.classList.add(this.sectionShowHideToggleFocusClass), c.appendChild(l);
         const h = document.createElement("span"),
             u = document.createElement("span");
-        if (u.classList.add(this.upChevronIconClass), c.appendChild(u), h.classList.add(this.sectionShowHideTextClass), c.appendChild(h), o.appendChild(r), o.appendChild(this.getButtonPunctuationEl()), s) {
-            const e = document.createElement("span"),
-                t = document.createElement("span");
-            t.classList.add(this.sectionSummaryFocusClass), e.appendChild(t);
-            for (const n of Array.from(s.attributes)) e.setAttribute(n.name, n.value);
-            Array.from(s.childNodes).forEach((e => t.appendChild(e))), s.remove(), o.appendChild(e), o.appendChild(this.getButtonPunctuationEl())
+        if (u.classList.add(this.upChevronIconClass), l.appendChild(u), h.classList.add(this.sectionShowHideTextClass), l.appendChild(h), o.appendChild(r), o.appendChild(this.getButtonPunctuationEl()), i) {
+            const t = document.createElement("span"),
+                e = document.createElement("span");
+            e.classList.add(this.sectionSummaryFocusClass), t.appendChild(e);
+            for (const s of Array.from(i.attributes)) t.setAttribute(s.name, s.value);
+            Array.from(i.childNodes).forEach((t => e.appendChild(t))), i.remove(), o.appendChild(t), o.appendChild(this.getButtonPunctuationEl())
         }
-        o.appendChild(l), i.removeChild(n), i.appendChild(o)
+        o.appendChild(c), n.removeChild(s), n.appendChild(o)
     }
-    onBeforeMatch(e) {
-        const t = e.target;
-        if (!(t instanceof Element)) return;
-        const n = t.closest(`.${this.sectionClass}`);
-        n && this.setExpanded(!0, n)
+    onBeforeMatch(t) {
+        const e = t.target;
+        if (!(e instanceof Element)) return;
+        const s = e.closest(`.${this.sectionClass}`);
+        s && this.setExpanded(!0, s)
     }
-    onSectionToggle(e) {
-        const t = !this.isExpanded(e);
-        this.setExpanded(t, e), this.storeState(e, t)
+    onSectionToggle(t) {
+        const e = !this.isExpanded(t);
+        this.setExpanded(e, t), this.storeState(t, e)
     }
     onShowOrHideAllToggle() {
-        const e = !this.areAllSectionsOpen();
-        this.$sections.forEach((t => {
-            this.setExpanded(e, t), this.storeState(t, e)
-        })), this.updateShowAllButton(e)
-    }
-    setExpanded(e, t) {
-        const n = t.querySelector(`.${this.upChevronIconClass}`),
-            i = t.querySelector(`.${this.sectionShowHideTextClass}`),
-            s = t.querySelector(`.${this.sectionButtonClass}`),
-            o = t.querySelector(`.${this.sectionContentClass}`);
+        const t = !this.areAllSectionsOpen();
+        this.$sections.forEach((e => {
+            this.setExpanded(t, e), this.storeState(e, t)
+        })), this.updateShowAllButton(t)
+    }
+    setExpanded(t, e) {
+        const s = e.querySelector(`.${this.upChevronIconClass}`),
+            n = e.querySelector(`.${this.sectionShowHideTextClass}`),
+            i = e.querySelector(`.${this.sectionButtonClass}`),
+            o = e.querySelector(`.${this.sectionContentClass}`);
         if (!o) throw new ElementError({
-            componentName: "Accordion",
+            component: Accordion,
             identifier: `Section content (\`<div class="${this.sectionContentClass}">\`)`
         });
-        if (!n || !i || !s) return;
-        const r = e ? this.i18n.t("hideSection") : this.i18n.t("showSection");
-        i.textContent = r, s.setAttribute("aria-expanded", `${e}`);
+        if (!s || !n || !i) return;
+        const r = t ? this.i18n.t("hideSection") : this.i18n.t("showSection");
+        n.textContent = r, i.setAttribute("aria-expanded", `${t}`);
         const a = [],
-            l = t.querySelector(`.${this.sectionHeadingTextClass}`);
-        l && a.push(`${l.textContent}`.trim());
-        const c = t.querySelector(`.${this.sectionSummaryClass}`);
+            c = e.querySelector(`.${this.sectionHeadingTextClass}`);
         c && a.push(`${c.textContent}`.trim());
-        const h = e ? this.i18n.t("hideSectionAriaLabel") : this.i18n.t("showSectionAriaLabel");
-        a.push(h), s.setAttribute("aria-label", a.join(" , ")), e ? (o.removeAttribute("hidden"), t.classList.add(this.sectionExpandedClass), n.classList.remove(this.downChevronIconClass)) : (o.setAttribute("hidden", "until-found"), t.classList.remove(this.sectionExpandedClass), n.classList.add(this.downChevronIconClass)), this.updateShowAllButton(this.areAllSectionsOpen())
+        const l = e.querySelector(`.${this.sectionSummaryClass}`);
+        l && a.push(`${l.textContent}`.trim());
+        const h = t ? this.i18n.t("hideSectionAriaLabel") : this.i18n.t("showSectionAriaLabel");
+        a.push(h), i.setAttribute("aria-label", a.join(" , ")), t ? (o.removeAttribute("hidden"), e.classList.add(this.sectionExpandedClass), s.classList.remove(this.downChevronIconClass)) : (o.setAttribute("hidden", "until-found"), e.classList.remove(this.sectionExpandedClass), s.classList.add(this.downChevronIconClass)), this.updateShowAllButton(this.areAllSectionsOpen())
     }
-    isExpanded(e) {
-        return e.classList.contains(this.sectionExpandedClass)
+    isExpanded(t) {
+        return t.classList.contains(this.sectionExpandedClass)
     }
     areAllSectionsOpen() {
-        return Array.from(this.$sections).every((e => this.isExpanded(e)))
+        return Array.from(this.$sections).every((t => this.isExpanded(t)))
     }
-    updateShowAllButton(e) {
-        this.$showAllButton && this.$showAllText && this.$showAllIcon && (this.$showAllButton.setAttribute("aria-expanded", e.toString()), this.$showAllText.textContent = e ? this.i18n.t("hideAllSections") : this.i18n.t("showAllSections"), this.$showAllIcon.classList.toggle(this.downChevronIconClass, !e))
+    updateShowAllButton(t) {
+        this.$showAllButton && this.$showAllText && this.$showAllIcon && (this.$showAllButton.setAttribute("aria-expanded", t.toString()), this.$showAllText.textContent = t ? this.i18n.t("hideAllSections") : this.i18n.t("showAllSections"), this.$showAllIcon.classList.toggle(this.downChevronIconClass, !t))
     }
-    getIdentifier(e) {
-        const t = e.querySelector(`.${this.sectionButtonClass}`);
-        return null == t ? void 0 : t.getAttribute("aria-controls")
+    getIdentifier(t) {
+        const e = t.querySelector(`.${this.sectionButtonClass}`);
+        return null == e ? void 0 : e.getAttribute("aria-controls")
     }
-    storeState(e, t) {
+    storeState(t, e) {
         if (!this.config.rememberExpanded) return;
-        const n = this.getIdentifier(e);
-        if (n) try {
-            window.sessionStorage.setItem(n, t.toString())
-        } catch (i) {}
+        const s = this.getIdentifier(t);
+        if (s) try {
+            window.sessionStorage.setItem(s, e.toString())
+        } catch (n) {}
     }
-    setInitialState(e) {
+    setInitialState(t) {
         if (!this.config.rememberExpanded) return;
-        const t = this.getIdentifier(e);
-        if (t) try {
-            const n = window.sessionStorage.getItem(t);
-            null !== n && this.setExpanded("true" === n, e)
-        } catch (n) {}
+        const e = this.getIdentifier(t);
+        if (e) try {
+            const s = window.sessionStorage.getItem(e);
+            null !== s && this.setExpanded("true" === s, t)
+        } catch (s) {}
     }
     getButtonPunctuationEl() {
-        const e = document.createElement("span");
-        return e.classList.add("govuk-visually-hidden", this.sectionHeadingDividerClass), e.textContent = ", ", e
+        const t = document.createElement("span");
+        return t.classList.add("govuk-visually-hidden", this.sectionHeadingDividerClass), t.textContent = ", ", t
     }
 }
 Accordion.moduleName = "govuk-accordion", Accordion.defaults = Object.freeze({
@@ -360,28 +386,23 @@ Accordion.moduleName = "govuk-accordion", Accordion.defaults = Object.freeze({
     }
 });
 class Button extends GOVUKFrontendComponent {
-    constructor(e, t = {}) {
-        if (super(), this.$module = void 0, this.config = void 0, this.debounceFormSubmitTimer = null, !(e instanceof HTMLElement)) throw new ElementError({
-            componentName: "Button",
-            element: e,
-            identifier: "Root element (`$module`)"
-        });
-        this.$module = e, this.config = mergeConfigs(Button.defaults, t, normaliseDataset(Button, e.dataset)), this.$module.addEventListener("keydown", (e => this.handleKeyDown(e))), this.$module.addEventListener("click", (e => this.debounce(e)))
+    constructor(t, e = {}) {
+        super(t), this.config = void 0, this.debounceFormSubmitTimer = null, this.config = mergeConfigs(Button.defaults, e, normaliseDataset(Button, this.$root.dataset)), this.$root.addEventListener("keydown", (t => this.handleKeyDown(t))), this.$root.addEventListener("click", (t => this.debounce(t)))
     }
-    handleKeyDown(e) {
-        const t = e.target;
-        " " === e.key && t instanceof HTMLElement && "button" === t.getAttribute("role") && (e.preventDefault(), t.click())
+    handleKeyDown(t) {
+        const e = t.target;
+        " " === t.key && e instanceof HTMLElement && "button" === e.getAttribute("role") && (t.preventDefault(), e.click())
     }
-    debounce(e) {
-        if (this.config.preventDoubleClick) return this.debounceFormSubmitTimer ? (e.preventDefault(), !1) : void(this.debounceFormSubmitTimer = window.setTimeout((() => {
+    debounce(t) {
+        if (this.config.preventDoubleClick) return this.debounceFormSubmitTimer ? (t.preventDefault(), !1) : void(this.debounceFormSubmitTimer = window.setTimeout((() => {
             this.debounceFormSubmitTimer = null
         }), 1e3))
     }
 }
 
-function closestAttributeValue(e, t) {
-    const n = e.closest(`[${t}]`);
-    return n ? n.getAttribute(t) : null
+function closestAttributeValue(t, e) {
+    const s = t.closest(`[${e}]`);
+    return s ? s.getAttribute(e) : null
 }
 Button.moduleName = "govuk-button", Button.defaults = Object.freeze({
     preventDoubleClick: !1
@@ -393,59 +414,55 @@ Button.moduleName = "govuk-button", Button.defaults = Object.freeze({
     }
 });
 class CharacterCount extends GOVUKFrontendComponent {
-    constructor(e, t = {}) {
-        var n, i;
-        if (super(), this.$module = void 0, this.$textarea = void 0, this.$visibleCountMessage = void 0, this.$screenReaderCountMessage = void 0, this.lastInputTimestamp = null, this.lastInputValue = "", this.valueChecker = null, this.config = void 0, this.i18n = void 0, this.maxLength = void 0, !(e instanceof HTMLElement)) throw new ElementError({
-            componentName: "Character count",
-            element: e,
-            identifier: "Root element (`$module`)"
-        });
-        const s = e.querySelector(".govuk-js-character-count");
-        if (!(s instanceof HTMLTextAreaElement || s instanceof HTMLInputElement)) throw new ElementError({
-            componentName: "Character count",
-            element: s,
+    constructor(t, e = {}) {
+        var s, n;
+        super(t), this.$textarea = void 0, this.$visibleCountMessage = void 0, this.$screenReaderCountMessage = void 0, this.lastInputTimestamp = null, this.lastInputValue = "", this.valueChecker = null, this.config = void 0, this.i18n = void 0, this.maxLength = void 0;
+        const i = this.$root.querySelector(".govuk-js-character-count");
+        if (!(i instanceof HTMLTextAreaElement || i instanceof HTMLInputElement)) throw new ElementError({
+            component: CharacterCount,
+            element: i,
             expectedType: "HTMLTextareaElement or HTMLInputElement",
             identifier: "Form field (`.govuk-js-character-count`)"
         });
-        const o = normaliseDataset(CharacterCount, e.dataset);
+        const o = normaliseDataset(CharacterCount, this.$root.dataset);
         let r = {};
         ("maxwords" in o || "maxlength" in o) && (r = {
             maxlength: void 0,
             maxwords: void 0
-        }), this.config = mergeConfigs(CharacterCount.defaults, t, r, o);
-        const a = function(e, t) {
-            const n = [];
-            for (const [i, s] of Object.entries(e)) {
-                const e = [];
-                if (Array.isArray(s)) {
+        }), this.config = mergeConfigs(CharacterCount.defaults, e, r, o);
+        const a = function(t, e) {
+            const s = [];
+            for (const [n, i] of Object.entries(t)) {
+                const t = [];
+                if (Array.isArray(i)) {
                     for (const {
-                            required: n,
-                            errorMessage: i
+                            required: s,
+                            errorMessage: n
                         }
-                        of s) n.every((e => !!t[e])) || e.push(i);
-                    "anyOf" !== i || s.length - e.length >= 1 || n.push(...e)
+                        of i) s.every((t => !!e[t])) || t.push(n);
+                    "anyOf" !== n || i.length - t.length >= 1 || s.push(...t)
                 }
             }
-            return n
+            return s
         }(CharacterCount.schema, this.config);
-        if (a[0]) throw new ConfigError(`Character count: ${a[0]}`);
+        if (a[0]) throw new ConfigError(formatErrorMessage(CharacterCount, a[0]));
         this.i18n = new I18n(this.config.i18n, {
-            locale: closestAttributeValue(e, "lang")
-        }), this.maxLength = null != (n = null != (i = this.config.maxwords) ? i : this.config.maxlength) ? n : 1 / 0, this.$module = e, this.$textarea = s;
-        const l = `${this.$textarea.id}-info`,
-            c = document.getElementById(l);
-        if (!c) throw new ElementError({
-            componentName: "Character count",
-            element: c,
-            identifier: `Count message (\`id="${l}"\`)`
+            locale: closestAttributeValue(this.$root, "lang")
+        }), this.maxLength = null != (s = null != (n = this.config.maxwords) ? n : this.config.maxlength) ? s : 1 / 0, this.$textarea = i;
+        const c = `${this.$textarea.id}-info`,
+            l = document.getElementById(c);
+        if (!l) throw new ElementError({
+            component: CharacterCount,
+            element: l,
+            identifier: `Count message (\`id="${c}"\`)`
         });
-        `${c.textContent}`.match(/^\s*$/) && (c.textContent = this.i18n.t("textareaDescription", {
+        `${l.textContent}`.match(/^\s*$/) && (l.textContent = this.i18n.t("textareaDescription", {
             count: this.maxLength
-        })), this.$textarea.insertAdjacentElement("afterend", c);
+        })), this.$textarea.insertAdjacentElement("afterend", l);
         const h = document.createElement("div");
-        h.className = "govuk-character-count__sr-status govuk-visually-hidden", h.setAttribute("aria-live", "polite"), this.$screenReaderCountMessage = h, c.insertAdjacentElement("afterend", h);
+        h.className = "govuk-character-count__sr-status govuk-visually-hidden", h.setAttribute("aria-live", "polite"), this.$screenReaderCountMessage = h, l.insertAdjacentElement("afterend", h);
         const u = document.createElement("div");
-        u.className = c.className, u.classList.add("govuk-character-count__status"), u.setAttribute("aria-hidden", "true"), this.$visibleCountMessage = u, c.insertAdjacentElement("afterend", u), c.classList.add("govuk-visually-hidden"), this.$textarea.removeAttribute("maxlength"), this.bindChangeEvents(), window.addEventListener("pageshow", (() => this.updateCountMessage())), this.updateCountMessage()
+        u.className = l.className, u.classList.add("govuk-character-count__status"), u.setAttribute("aria-hidden", "true"), this.$visibleCountMessage = u, l.insertAdjacentElement("afterend", u), l.classList.add("govuk-visually-hidden"), this.$textarea.removeAttribute("maxlength"), this.bindChangeEvents(), window.addEventListener("pageshow", (() => this.updateCountMessage())), this.updateCountMessage()
     }
     bindChangeEvents() {
         this.$textarea.addEventListener("keyup", (() => this.handleKeyUp())), this.$textarea.addEventListener("focus", (() => this.handleFocus())), this.$textarea.addEventListener("blur", (() => this.handleBlur()))
@@ -468,35 +485,35 @@ class CharacterCount extends GOVUKFrontendComponent {
         this.updateVisibleCountMessage(), this.updateScreenReaderCountMessage()
     }
     updateVisibleCountMessage() {
-        const e = this.maxLength - this.count(this.$textarea.value) < 0;
-        this.$visibleCountMessage.classList.toggle("govuk-character-count__message--disabled", !this.isOverThreshold()), this.$textarea.classList.toggle("govuk-textarea--error", e), this.$visibleCountMessage.classList.toggle("govuk-error-message", e), this.$visibleCountMessage.classList.toggle("govuk-hint", !e), this.$visibleCountMessage.textContent = this.getCountMessage()
+        const t = this.maxLength - this.count(this.$textarea.value) < 0;
+        this.$visibleCountMessage.classList.toggle("govuk-character-count__message--disabled", !this.isOverThreshold()), this.$textarea.classList.toggle("govuk-textarea--error", t), this.$visibleCountMessage.classList.toggle("govuk-error-message", t), this.$visibleCountMessage.classList.toggle("govuk-hint", !t), this.$visibleCountMessage.textContent = this.getCountMessage()
     }
     updateScreenReaderCountMessage() {
         this.isOverThreshold() ? this.$screenReaderCountMessage.removeAttribute("aria-hidden") : this.$screenReaderCountMessage.setAttribute("aria-hidden", "true"), this.$screenReaderCountMessage.textContent = this.getCountMessage()
     }
-    count(e) {
+    count(t) {
         if (this.config.maxwords) {
-            var t;
-            return (null != (t = e.match(/\S+/g)) ? t : []).length
+            var e;
+            return (null != (e = t.match(/\S+/g)) ? e : []).length
         }
-        return e.length
+        return t.length
     }
     getCountMessage() {
-        const e = this.maxLength - this.count(this.$textarea.value),
-            t = this.config.maxwords ? "words" : "characters";
-        return this.formatCountMessage(e, t)
-    }
-    formatCountMessage(e, t) {
-        if (0 === e) return this.i18n.t(`${t}AtLimit`);
-        const n = e < 0 ? "OverLimit" : "UnderLimit";
-        return this.i18n.t(`${t}${n}`, {
-            count: Math.abs(e)
+        const t = this.maxLength - this.count(this.$textarea.value),
+            e = this.config.maxwords ? "words" : "characters";
+        return this.formatCountMessage(t, e)
+    }
+    formatCountMessage(t, e) {
+        if (0 === t) return this.i18n.t(`${e}AtLimit`);
+        const s = t < 0 ? "OverLimit" : "UnderLimit";
+        return this.i18n.t(`${e}${s}`, {
+            count: Math.abs(t)
         })
     }
     isOverThreshold() {
         if (!this.config.threshold) return !0;
-        const e = this.count(this.$textarea.value);
-        return this.maxLength * this.config.threshold / 100 <= e
+        const t = this.count(this.$textarea.value);
+        return this.maxLength * this.config.threshold / 100 <= t
     }
 }
 CharacterCount.moduleName = "govuk-character-count", CharacterCount.defaults = Object.freeze({
@@ -548,98 +565,89 @@ CharacterCount.moduleName = "govuk-character-count", CharacterCount.defaults = O
     }]
 });
 class Checkboxes extends GOVUKFrontendComponent {
-    constructor(e) {
-        if (super(), this.$module = void 0, this.$inputs = void 0, !(e instanceof HTMLElement)) throw new ElementError({
-            componentName: "Checkboxes",
-            element: e,
-            identifier: "Root element (`$module`)"
-        });
-        const t = e.querySelectorAll('input[type="checkbox"]');
-        if (!t.length) throw new ElementError({
-            componentName: "Checkboxes",
+    constructor(t) {
+        super(t), this.$inputs = void 0;
+        const e = this.$root.querySelectorAll('input[type="checkbox"]');
+        if (!e.length) throw new ElementError({
+            component: Checkboxes,
             identifier: 'Form inputs (`<input type="checkbox">`)'
         });
-        this.$module = e, this.$inputs = t, this.$inputs.forEach((e => {
-            const t = e.getAttribute("data-aria-controls");
-            if (t) {
-                if (!document.getElementById(t)) throw new ElementError({
-                    componentName: "Checkboxes",
-                    identifier: `Conditional reveal (\`id="${t}"\`)`
+        this.$inputs = e, this.$inputs.forEach((t => {
+            const e = t.getAttribute("data-aria-controls");
+            if (e) {
+                if (!document.getElementById(e)) throw new ElementError({
+                    component: Checkboxes,
+                    identifier: `Conditional reveal (\`id="${e}"\`)`
                 });
-                e.setAttribute("aria-controls", t), e.removeAttribute("data-aria-controls")
+                t.setAttribute("aria-controls", e), t.removeAttribute("data-aria-controls")
             }
-        })), window.addEventListener("pageshow", (() => this.syncAllConditionalReveals())), this.syncAllConditionalReveals(), this.$module.addEventListener("click", (e => this.handleClick(e)))
+        })), window.addEventListener("pageshow", (() => this.syncAllConditionalReveals())), this.syncAllConditionalReveals(), this.$root.addEventListener("click", (t => this.handleClick(t)))
     }
     syncAllConditionalReveals() {
-        this.$inputs.forEach((e => this.syncConditionalRevealWithInputState(e)))
-    }
-    syncConditionalRevealWithInputState(e) {
-        const t = e.getAttribute("aria-controls");
-        if (!t) return;
-        const n = document.getElementById(t);
-        if (null != n && n.classList.contains("govuk-checkboxes__conditional")) {
-            const t = e.checked;
-            e.setAttribute("aria-expanded", t.toString()), n.classList.toggle("govuk-checkboxes__conditional--hidden", !t)
+        this.$inputs.forEach((t => this.syncConditionalRevealWithInputState(t)))
+    }
+    syncConditionalRevealWithInputState(t) {
+        const e = t.getAttribute("aria-controls");
+        if (!e) return;
+        const s = document.getElementById(e);
+        if (null != s && s.classList.contains("govuk-checkboxes__conditional")) {
+            const e = t.checked;
+            t.setAttribute("aria-expanded", e.toString()), s.classList.toggle("govuk-checkboxes__conditional--hidden", !e)
         }
     }
-    unCheckAllInputsExcept(e) {
-        document.querySelectorAll(`input[type="checkbox"][name="${e.name}"]`).forEach((t => {
-            e.form === t.form && t !== e && (t.checked = !1, this.syncConditionalRevealWithInputState(t))
+    unCheckAllInputsExcept(t) {
+        document.querySelectorAll(`input[type="checkbox"][name="${t.name}"]`).forEach((e => {
+            t.form === e.form && e !== t && (e.checked = !1, this.syncConditionalRevealWithInputState(e))
         }))
     }
-    unCheckExclusiveInputs(e) {
-        document.querySelectorAll(`input[data-behaviour="exclusive"][type="checkbox"][name="${e.name}"]`).forEach((t => {
-            e.form === t.form && (t.checked = !1, this.syncConditionalRevealWithInputState(t))
+    unCheckExclusiveInputs(t) {
+        document.querySelectorAll(`input[data-behaviour="exclusive"][type="checkbox"][name="${t.name}"]`).forEach((e => {
+            t.form === e.form && (e.checked = !1, this.syncConditionalRevealWithInputState(e))
         }))
     }
-    handleClick(e) {
-        const t = e.target;
-        if (!(t instanceof HTMLInputElement) || "checkbox" !== t.type) return;
-        if (t.getAttribute("aria-controls") && this.syncConditionalRevealWithInputState(t), !t.checked) return;
-        "exclusive" === t.getAttribute("data-behaviour") ? this.unCheckAllInputsExcept(t) : this.unCheckExclusiveInputs(t)
+    handleClick(t) {
+        const e = t.target;
+        if (!(e instanceof HTMLInputElement) || "checkbox" !== e.type) return;
+        if (e.getAttribute("aria-controls") && this.syncConditionalRevealWithInputState(e), !e.checked) return;
+        "exclusive" === e.getAttribute("data-behaviour") ? this.unCheckAllInputsExcept(e) : this.unCheckExclusiveInputs(e)
     }
 }
 Checkboxes.moduleName = "govuk-checkboxes";
 class ErrorSummary extends GOVUKFrontendComponent {
-    constructor(e, t = {}) {
-        if (super(), this.$module = void 0, this.config = void 0, !(e instanceof HTMLElement)) throw new ElementError({
-            componentName: "Error summary",
-            element: e,
-            identifier: "Root element (`$module`)"
-        });
-        this.$module = e, this.config = mergeConfigs(ErrorSummary.defaults, t, normaliseDataset(ErrorSummary, e.dataset)), this.config.disableAutoFocus || setFocus(this.$module), this.$module.addEventListener("click", (e => this.handleClick(e)))
-    }
-    handleClick(e) {
-        const t = e.target;
-        t && this.focusTarget(t) && e.preventDefault()
-    }
-    focusTarget(e) {
-        if (!(e instanceof HTMLAnchorElement)) return !1;
-        const t = getFragmentFromUrl(e.href);
-        if (!t) return !1;
-        const n = document.getElementById(t);
-        if (!n) return !1;
-        const i = this.getAssociatedLegendOrLabel(n);
-        return !!i && (i.scrollIntoView(), n.focus({
+    constructor(t, e = {}) {
+        super(t), this.config = void 0, this.config = mergeConfigs(ErrorSummary.defaults, e, normaliseDataset(ErrorSummary, this.$root.dataset)), this.config.disableAutoFocus || setFocus(this.$root), this.$root.addEventListener("click", (t => this.handleClick(t)))
+    }
+    handleClick(t) {
+        const e = t.target;
+        e && this.focusTarget(e) && t.preventDefault()
+    }
+    focusTarget(t) {
+        if (!(t instanceof HTMLAnchorElement)) return !1;
+        const e = getFragmentFromUrl(t.href);
+        if (!e) return !1;
+        const s = document.getElementById(e);
+        if (!s) return !1;
+        const n = this.getAssociatedLegendOrLabel(s);
+        return !!n && (n.scrollIntoView(), s.focus({
             preventScroll: !0
         }), !0)
     }
-    getAssociatedLegendOrLabel(e) {
-        var t;
-        const n = e.closest("fieldset");
-        if (n) {
-            const t = n.getElementsByTagName("legend");
-            if (t.length) {
-                const n = t[0];
-                if (e instanceof HTMLInputElement && ("checkbox" === e.type || "radio" === e.type)) return n;
-                const i = n.getBoundingClientRect().top,
-                    s = e.getBoundingClientRect();
-                if (s.height && window.innerHeight) {
-                    if (s.top + s.height - i < window.innerHeight / 2) return n
+    getAssociatedLegendOrLabel(t) {
+        var e;
+        const s = t.closest("fieldset");
+        if (s) {
+            const e = s.getElementsByTagName("legend");
+            if (e.length) {
+                const s = e[0];
+                if (t instanceof HTMLInputElement && ("checkbox" === t.type || "radio" === t.type)) return s;
+                const n = s.getBoundingClientRect().top,
+                    i = t.getBoundingClientRect();
+                if (i.height && window.innerHeight) {
+                    if (i.top + i.height - n < window.innerHeight / 2) return s
                 }
             }
         }
-        return null != (t = document.querySelector(`label[for='${e.getAttribute("id")}']`)) ? t : e.closest("label")
+        return null != (e = document.querySelector(`label[for='${t.getAttribute("id")}']`)) ? e : t.closest("label")
     }
 }
 ErrorSummary.moduleName = "govuk-error-summary", ErrorSummary.defaults = Object.freeze({
@@ -652,52 +660,48 @@ ErrorSummary.moduleName = "govuk-error-summary", ErrorSummary.defaults = Object.
     }
 });
 class ExitThisPage extends GOVUKFrontendComponent {
-    constructor(e, t = {}) {
-        if (super(), this.$module = void 0, this.config = void 0, this.i18n = void 0, this.$button = void 0, this.$skiplinkButton = null, this.$updateSpan = null, this.$indicatorContainer = null, this.$overlay = null, this.keypressCounter = 0, this.lastKeyWasModified = !1, this.timeoutTime = 5e3, this.keypressTimeoutId = null, this.timeoutMessageId = null, !(e instanceof HTMLElement)) throw new ElementError({
-            componentName: "Exit this page",
-            element: e,
-            identifier: "Root element (`$module`)"
-        });
-        const n = e.querySelector(".govuk-exit-this-page__button");
-        if (!(n instanceof HTMLAnchorElement)) throw new ElementError({
-            componentName: "Exit this page",
-            element: n,
+    constructor(t, e = {}) {
+        super(t), this.config = void 0, this.i18n = void 0, this.$button = void 0, this.$skiplinkButton = null, this.$updateSpan = null, this.$indicatorContainer = null, this.$overlay = null, this.keypressCounter = 0, this.lastKeyWasModified = !1, this.timeoutTime = 5e3, this.keypressTimeoutId = null, this.timeoutMessageId = null;
+        const s = this.$root.querySelector(".govuk-exit-this-page__button");
+        if (!(s instanceof HTMLAnchorElement)) throw new ElementError({
+            component: ExitThisPage,
+            element: s,
             expectedType: "HTMLAnchorElement",
             identifier: "Button (`.govuk-exit-this-page__button`)"
         });
-        this.config = mergeConfigs(ExitThisPage.defaults, t, normaliseDataset(ExitThisPage, e.dataset)), this.i18n = new I18n(this.config.i18n), this.$module = e, this.$button = n;
-        const i = document.querySelector(".govuk-js-exit-this-page-skiplink");
-        i instanceof HTMLAnchorElement && (this.$skiplinkButton = i), this.buildIndicator(), this.initUpdateSpan(), this.initButtonClickHandler(), "govukFrontendExitThisPageKeypress" in document.body.dataset || (document.addEventListener("keyup", this.handleKeypress.bind(this), !0), document.body.dataset.govukFrontendExitThisPageKeypress = "true"), window.addEventListener("pageshow", this.resetPage.bind(this))
+        this.config = mergeConfigs(ExitThisPage.defaults, e, normaliseDataset(ExitThisPage, this.$root.dataset)), this.i18n = new I18n(this.config.i18n), this.$button = s;
+        const n = document.querySelector(".govuk-js-exit-this-page-skiplink");
+        n instanceof HTMLAnchorElement && (this.$skiplinkButton = n), this.buildIndicator(), this.initUpdateSpan(), this.initButtonClickHandler(), "govukFrontendExitThisPageKeypress" in document.body.dataset || (document.addEventListener("keyup", this.handleKeypress.bind(this), !0), document.body.dataset.govukFrontendExitThisPageKeypress = "true"), window.addEventListener("pageshow", this.resetPage.bind(this))
     }
     initUpdateSpan() {
-        this.$updateSpan = document.createElement("span"), this.$updateSpan.setAttribute("role", "status"), this.$updateSpan.className = "govuk-visually-hidden", this.$module.appendChild(this.$updateSpan)
+        this.$updateSpan = document.createElement("span"), this.$updateSpan.setAttribute("role", "status"), this.$updateSpan.className = "govuk-visually-hidden", this.$root.appendChild(this.$updateSpan)
     }
     initButtonClickHandler() {
         this.$button.addEventListener("click", this.handleClick.bind(this)), this.$skiplinkButton && this.$skiplinkButton.addEventListener("click", this.handleClick.bind(this))
     }
     buildIndicator() {
         this.$indicatorContainer = document.createElement("div"), this.$indicatorContainer.className = "govuk-exit-this-page__indicator", this.$indicatorContainer.setAttribute("aria-hidden", "true");
-        for (let e = 0; e < 3; e++) {
-            const e = document.createElement("div");
-            e.className = "govuk-exit-this-page__indicator-light", this.$indicatorContainer.appendChild(e)
+        for (let t = 0; t < 3; t++) {
+            const t = document.createElement("div");
+            t.className = "govuk-exit-this-page__indicator-light", this.$indicatorContainer.appendChild(t)
         }
         this.$button.appendChild(this.$indicatorContainer)
     }
     updateIndicator() {
         if (!this.$indicatorContainer) return;
         this.$indicatorContainer.classList.toggle("govuk-exit-this-page__indicator--visible", this.keypressCounter > 0);
-        this.$indicatorContainer.querySelectorAll(".govuk-exit-this-page__indicator-light").forEach(((e, t) => {
-            e.classList.toggle("govuk-exit-this-page__indicator-light--on", t < this.keypressCounter)
+        this.$indicatorContainer.querySelectorAll(".govuk-exit-this-page__indicator-light").forEach(((t, e) => {
+            t.classList.toggle("govuk-exit-this-page__indicator-light--on", e < this.keypressCounter)
         }))
     }
     exitPage() {
         this.$updateSpan && (this.$updateSpan.textContent = "", document.body.classList.add("govuk-exit-this-page-hide-content"), this.$overlay = document.createElement("div"), this.$overlay.className = "govuk-exit-this-page-overlay", this.$overlay.setAttribute("role", "alert"), document.body.appendChild(this.$overlay), this.$overlay.textContent = this.i18n.t("activated"), window.location.href = this.$button.href)
     }
-    handleClick(e) {
-        e.preventDefault(), this.exitPage()
+    handleClick(t) {
+        t.preventDefault(), this.exitPage()
     }
-    handleKeypress(e) {
-        this.$updateSpan && ("Shift" !== e.key || this.lastKeyWasModified ? this.keypressTimeoutId && this.resetKeypressTimer() : (this.keypressCounter += 1, this.updateIndicator(), this.timeoutMessageId && (window.clearTimeout(this.timeoutMessageId), this.timeoutMessageId = null), this.keypressCounter >= 3 ? (this.keypressCounter = 0, this.keypressTimeoutId && (window.clearTimeout(this.keypressTimeoutId), this.keypressTimeoutId = null), this.exitPage()) : 1 === this.keypressCounter ? this.$updateSpan.textContent = this.i18n.t("pressTwoMoreTimes") : this.$updateSpan.textContent = this.i18n.t("pressOneMoreTime"), this.setKeypressTimer()), this.lastKeyWasModified = e.shiftKey)
+    handleKeypress(t) {
+        this.$updateSpan && ("Shift" !== t.key || this.lastKeyWasModified ? this.keypressTimeoutId && this.resetKeypressTimer() : (this.keypressCounter += 1, this.updateIndicator(), this.timeoutMessageId && (window.clearTimeout(this.timeoutMessageId), this.timeoutMessageId = null), this.keypressCounter >= 3 ? (this.keypressCounter = 0, this.keypressTimeoutId && (window.clearTimeout(this.keypressTimeoutId), this.keypressTimeoutId = null), this.exitPage()) : 1 === this.keypressCounter ? this.$updateSpan.textContent = this.i18n.t("pressTwoMoreTimes") : this.$updateSpan.textContent = this.i18n.t("pressOneMoreTime"), this.setKeypressTimer()), this.lastKeyWasModified = t.shiftKey)
     }
     setKeypressTimer() {
         this.keypressTimeoutId && window.clearTimeout(this.keypressTimeoutId), this.keypressTimeoutId = window.setTimeout(this.resetKeypressTimer.bind(this), this.timeoutTime)
@@ -705,9 +709,9 @@ class ExitThisPage extends GOVUKFrontendComponent {
     resetKeypressTimer() {
         if (!this.$updateSpan) return;
         this.keypressTimeoutId && (window.clearTimeout(this.keypressTimeoutId), this.keypressTimeoutId = null);
-        const e = this.$updateSpan;
-        this.keypressCounter = 0, e.textContent = this.i18n.t("timedOut"), this.timeoutMessageId = window.setTimeout((() => {
-            e.textContent = ""
+        const t = this.$updateSpan;
+        this.keypressCounter = 0, t.textContent = this.i18n.t("timedOut"), this.timeoutMessageId = window.setTimeout((() => {
+            t.textContent = ""
         }), this.timeoutTime), this.updateIndicator()
     }
     resetPage() {
@@ -729,35 +733,30 @@ ExitThisPage.moduleName = "govuk-exit-this-page", ExitThisPage.defaults = Object
     }
 });
 class Header extends GOVUKFrontendComponent {
-    constructor(e) {
-        if (super(), this.$module = void 0, this.$menuButton = void 0, this.$menu = void 0, this.menuIsOpen = !1, this.mql = null, !e) throw new ElementError({
-            componentName: "Header",
-            element: e,
-            identifier: "Root element (`$module`)"
-        });
-        this.$module = e;
-        const t = e.querySelector(".govuk-js-header-toggle");
-        if (!t) return this;
-        const n = t.getAttribute("aria-controls");
-        if (!n) throw new ElementError({
-            componentName: "Header",
+    constructor(t) {
+        super(t), this.$menuButton = void 0, this.$menu = void 0, this.menuIsOpen = !1, this.mql = null;
+        const e = this.$root.querySelector(".govuk-js-header-toggle");
+        if (!e) return this;
+        const s = e.getAttribute("aria-controls");
+        if (!s) throw new ElementError({
+            component: Header,
             identifier: 'Navigation button (`<button class="govuk-js-header-toggle">`) attribute (`aria-controls`)'
         });
-        const i = document.getElementById(n);
-        if (!i) throw new ElementError({
-            componentName: "Header",
-            element: i,
-            identifier: `Navigation (\`<ul id="${n}">\`)`
+        const n = document.getElementById(s);
+        if (!n) throw new ElementError({
+            component: Header,
+            element: n,
+            identifier: `Navigation (\`<ul id="${s}">\`)`
         });
-        this.$menu = i, this.$menuButton = t, this.setupResponsiveChecks(), this.$menuButton.addEventListener("click", (() => this.handleMenuButtonClick()))
+        this.$menu = n, this.$menuButton = e, this.setupResponsiveChecks(), this.$menuButton.addEventListener("click", (() => this.handleMenuButtonClick()))
     }
     setupResponsiveChecks() {
-        const e = getBreakpoint("desktop");
-        if (!e.value) throw new ElementError({
-            componentName: "Header",
-            identifier: `CSS custom property (\`${e.property}\`) on pseudo-class \`:root\``
+        const t = getBreakpoint("desktop");
+        if (!t.value) throw new ElementError({
+            component: Header,
+            identifier: `CSS custom property (\`${t.property}\`) on pseudo-class \`:root\``
         });
-        this.mql = window.matchMedia(`(min-width: ${e.value})`), "addEventListener" in this.mql ? this.mql.addEventListener("change", (() => this.checkMode())) : this.mql.addListener((() => this.checkMode())), this.checkMode()
+        this.mql = window.matchMedia(`(min-width: ${t.value})`), "addEventListener" in this.mql ? this.mql.addEventListener("change", (() => this.checkMode())) : this.mql.addListener((() => this.checkMode())), this.checkMode()
     }
     checkMode() {
         this.mql && this.$menu && this.$menuButton && (this.mql.matches ? (this.$menu.removeAttribute("hidden"), this.$menuButton.setAttribute("hidden", "")) : (this.$menuButton.removeAttribute("hidden"), this.$menuButton.setAttribute("aria-expanded", this.menuIsOpen.toString()), this.menuIsOpen ? this.$menu.removeAttribute("hidden") : this.$menu.setAttribute("hidden", "")))
@@ -768,13 +767,8 @@ class Header extends GOVUKFrontendComponent {
 }
 Header.moduleName = "govuk-header";
 class NotificationBanner extends GOVUKFrontendComponent {
-    constructor(e, t = {}) {
-        if (super(), this.$module = void 0, this.config = void 0, !(e instanceof HTMLElement)) throw new ElementError({
-            componentName: "Notification banner",
-            element: e,
-            identifier: "Root element (`$module`)"
-        });
-        this.$module = e, this.config = mergeConfigs(NotificationBanner.defaults, t, normaliseDataset(NotificationBanner, e.dataset)), "alert" !== this.$module.getAttribute("role") || this.config.disableAutoFocus || setFocus(this.$module)
+    constructor(t, e = {}) {
+        super(t), this.config = void 0, this.config = mergeConfigs(NotificationBanner.defaults, e, normaliseDataset(NotificationBanner, this.$root.dataset)), "alert" !== this.$root.getAttribute("role") || this.config.disableAutoFocus || setFocus(this.$root)
     }
 }
 NotificationBanner.moduleName = "govuk-notification-banner", NotificationBanner.defaults = Object.freeze({
@@ -787,38 +781,34 @@ NotificationBanner.moduleName = "govuk-notification-banner", NotificationBanner.
     }
 });
 class PasswordInput extends GOVUKFrontendComponent {
-    constructor(e, t = {}) {
-        if (super(), this.$module = void 0, this.config = void 0, this.i18n = void 0, this.$input = void 0, this.$showHideButton = void 0, this.$screenReaderStatusMessage = void 0, !(e instanceof HTMLElement)) throw new ElementError({
-            componentName: "Password input",
-            element: e,
-            identifier: "Root element (`$module`)"
-        });
-        const n = e.querySelector(".govuk-js-password-input-input");
-        if (!(n instanceof HTMLInputElement)) throw new ElementError({
-            componentName: "Password input",
-            element: n,
+    constructor(t, e = {}) {
+        super(t), this.config = void 0, this.i18n = void 0, this.$input = void 0, this.$showHideButton = void 0, this.$screenReaderStatusMessage = void 0;
+        const s = this.$root.querySelector(".govuk-js-password-input-input");
+        if (!(s instanceof HTMLInputElement)) throw new ElementError({
+            component: PasswordInput,
+            element: s,
             expectedType: "HTMLInputElement",
             identifier: "Form field (`.govuk-js-password-input-input`)"
         });
-        if ("password" !== n.type) throw new ElementError("Password input: Form field (`.govuk-js-password-input-input`) must be of type `password`.");
-        const i = e.querySelector(".govuk-js-password-input-toggle");
-        if (!(i instanceof HTMLButtonElement)) throw new ElementError({
-            componentName: "Password input",
-            element: i,
+        if ("password" !== s.type) throw new ElementError("Password input: Form field (`.govuk-js-password-input-input`) must be of type `password`.");
+        const n = this.$root.querySelector(".govuk-js-password-input-toggle");
+        if (!(n instanceof HTMLButtonElement)) throw new ElementError({
+            component: PasswordInput,
+            element: n,
             expectedType: "HTMLButtonElement",
             identifier: "Button (`.govuk-js-password-input-toggle`)"
         });
-        if ("button" !== i.type) throw new ElementError("Password input: Button (`.govuk-js-password-input-toggle`) must be of type `button`.");
-        this.$module = e, this.$input = n, this.$showHideButton = i, this.config = mergeConfigs(PasswordInput.defaults, t, normaliseDataset(PasswordInput, e.dataset)), this.i18n = new I18n(this.config.i18n, {
-            locale: closestAttributeValue(e, "lang")
+        if ("button" !== n.type) throw new ElementError("Password input: Button (`.govuk-js-password-input-toggle`) must be of type `button`.");
+        this.$input = s, this.$showHideButton = n, this.config = mergeConfigs(PasswordInput.defaults, e, normaliseDataset(PasswordInput, this.$root.dataset)), this.i18n = new I18n(this.config.i18n, {
+            locale: closestAttributeValue(this.$root, "lang")
         }), this.$showHideButton.removeAttribute("hidden");
-        const s = document.createElement("div");
-        s.className = "govuk-password-input__sr-status govuk-visually-hidden", s.setAttribute("aria-live", "polite"), this.$screenReaderStatusMessage = s, this.$input.insertAdjacentElement("afterend", s), this.$showHideButton.addEventListener("click", this.toggle.bind(this)), this.$input.form && this.$input.form.addEventListener("submit", (() => this.hide())), window.addEventListener("pageshow", (e => {
-            e.persisted && "password" !== this.$input.type && this.hide()
+        const i = document.createElement("div");
+        i.className = "govuk-password-input__sr-status govuk-visually-hidden", i.setAttribute("aria-live", "polite"), this.$screenReaderStatusMessage = i, this.$input.insertAdjacentElement("afterend", i), this.$showHideButton.addEventListener("click", this.toggle.bind(this)), this.$input.form && this.$input.form.addEventListener("submit", (() => this.hide())), window.addEventListener("pageshow", (t => {
+            t.persisted && "password" !== this.$input.type && this.hide()
         })), this.hide()
     }
-    toggle(e) {
-        e.preventDefault(), "password" !== this.$input.type ? this.hide() : this.show()
+    toggle(t) {
+        t.preventDefault(), "password" !== this.$input.type ? this.hide() : this.show()
     }
     show() {
         this.setType("text")
@@ -826,13 +816,13 @@ class PasswordInput extends GOVUKFrontendComponent {
     hide() {
         this.setType("password")
     }
-    setType(e) {
-        if (e === this.$input.type) return;
-        this.$input.setAttribute("type", e);
-        const t = "password" === e,
-            n = t ? "show" : "hide",
-            i = t ? "passwordHidden" : "passwordShown";
-        this.$showHideButton.innerText = this.i18n.t(`${n}Password`), this.$showHideButton.setAttribute("aria-label", this.i18n.t(`${n}PasswordAriaLabel`)), this.$screenReaderStatusMessage.innerText = this.i18n.t(`${i}Announcement`)
+    setType(t) {
+        if (t === this.$input.type) return;
+        this.$input.setAttribute("type", t);
+        const e = "password" === t,
+            s = e ? "show" : "hide",
+            n = e ? "passwordHidden" : "passwordShown";
+        this.$showHideButton.innerText = this.i18n.t(`${s}Password`), this.$showHideButton.setAttribute("aria-label", this.i18n.t(`${s}PasswordAriaLabel`)), this.$screenReaderStatusMessage.innerText = this.i18n.t(`${n}Announcement`)
     }
 }
 PasswordInput.moduleName = "govuk-password-input", PasswordInput.defaults = Object.freeze({
@@ -852,83 +842,74 @@ PasswordInput.moduleName = "govuk-password-input", PasswordInput.defaults = Obje
     }
 });
 class Radios extends GOVUKFrontendComponent {
-    constructor(e) {
-        if (super(), this.$module = void 0, this.$inputs = void 0, !(e instanceof HTMLElement)) throw new ElementError({
-            componentName: "Radios",
-            element: e,
-            identifier: "Root element (`$module`)"
-        });
-        const t = e.querySelectorAll('input[type="radio"]');
-        if (!t.length) throw new ElementError({
-            componentName: "Radios",
+    constructor(t) {
+        super(t), this.$inputs = void 0;
+        const e = this.$root.querySelectorAll('input[type="radio"]');
+        if (!e.length) throw new ElementError({
+            component: Radios,
             identifier: 'Form inputs (`<input type="radio">`)'
         });
-        this.$module = e, this.$inputs = t, this.$inputs.forEach((e => {
-            const t = e.getAttribute("data-aria-controls");
-            if (t) {
-                if (!document.getElementById(t)) throw new ElementError({
-                    componentName: "Radios",
-                    identifier: `Conditional reveal (\`id="${t}"\`)`
+        this.$inputs = e, this.$inputs.forEach((t => {
+            const e = t.getAttribute("data-aria-controls");
+            if (e) {
+                if (!document.getElementById(e)) throw new ElementError({
+                    component: Radios,
+                    identifier: `Conditional reveal (\`id="${e}"\`)`
                 });
-                e.setAttribute("aria-controls", t), e.removeAttribute("data-aria-controls")
+                t.setAttribute("aria-controls", e), t.removeAttribute("data-aria-controls")
             }
-        })), window.addEventListener("pageshow", (() => this.syncAllConditionalReveals())), this.syncAllConditionalReveals(), this.$module.addEventListener("click", (e => this.handleClick(e)))
+        })), window.addEventListener("pageshow", (() => this.syncAllConditionalReveals())), this.syncAllConditionalReveals(), this.$root.addEventListener("click", (t => this.handleClick(t)))
     }
     syncAllConditionalReveals() {
-        this.$inputs.forEach((e => this.syncConditionalRevealWithInputState(e)))
-    }
-    syncConditionalRevealWithInputState(e) {
-        const t = e.getAttribute("aria-controls");
-        if (!t) return;
-        const n = document.getElementById(t);
-        if (null != n && n.classList.contains("govuk-radios__conditional")) {
-            const t = e.checked;
-            e.setAttribute("aria-expanded", t.toString()), n.classList.toggle("govuk-radios__conditional--hidden", !t)
+        this.$inputs.forEach((t => this.syncConditionalRevealWithInputState(t)))
+    }
+    syncConditionalRevealWithInputState(t) {
+        const e = t.getAttribute("aria-controls");
+        if (!e) return;
+        const s = document.getElementById(e);
+        if (null != s && s.classList.contains("govuk-radios__conditional")) {
+            const e = t.checked;
+            t.setAttribute("aria-expanded", e.toString()), s.classList.toggle("govuk-radios__conditional--hidden", !e)
         }
     }
-    handleClick(e) {
-        const t = e.target;
-        if (!(t instanceof HTMLInputElement) || "radio" !== t.type) return;
-        const n = document.querySelectorAll('input[type="radio"][aria-controls]'),
-            i = t.form,
-            s = t.name;
-        n.forEach((e => {
-            const t = e.form === i;
-            e.name === s && t && this.syncConditionalRevealWithInputState(e)
+    handleClick(t) {
+        const e = t.target;
+        if (!(e instanceof HTMLInputElement) || "radio" !== e.type) return;
+        const s = document.querySelectorAll('input[type="radio"][aria-controls]'),
+            n = e.form,
+            i = e.name;
+        s.forEach((t => {
+            const e = t.form === n;
+            t.name === i && e && this.syncConditionalRevealWithInputState(t)
         }))
     }
 }
 Radios.moduleName = "govuk-radios";
 class ServiceNavigation extends GOVUKFrontendComponent {
-    constructor(e) {
-        if (super(), this.$module = void 0, this.$menuButton = void 0, this.$menu = void 0, this.menuIsOpen = !1, this.mql = null, !e) throw new ElementError({
-            componentName: "Service Navigation",
-            element: e,
-            identifier: "Root element (`$module`)"
-        });
-        this.$module = e;
-        const t = e.querySelector(".govuk-js-service-navigation-toggle");
-        if (!t) return this;
-        const n = t.getAttribute("aria-controls");
-        if (!n) throw new ElementError({
-            componentName: "Service Navigation",
+    constructor(t) {
+        super(t), this.$menuButton = void 0, this.$menu = void 0, this.menuIsOpen = !1, this.mql = null;
+        const e = this.$root.querySelector(".govuk-js-service-navigation-toggle");
+        if (!e) return this;
+        const s = e.getAttribute("aria-controls");
+        if (!s) throw new ElementError({
+            component: ServiceNavigation,
             identifier: 'Navigation button (`<button class="govuk-js-service-navigation-toggle">`) attribute (`aria-controls`)'
         });
-        const i = document.getElementById(n);
-        if (!i) throw new ElementError({
-            componentName: "Service Navigation",
-            element: i,
-            identifier: `Navigation (\`<ul id="${n}">\`)`
+        const n = document.getElementById(s);
+        if (!n) throw new ElementError({
+            component: ServiceNavigation,
+            element: n,
+            identifier: `Navigation (\`<ul id="${s}">\`)`
         });
-        this.$menu = i, this.$menuButton = t, this.setupResponsiveChecks(), this.$menuButton.addEventListener("click", (() => this.handleMenuButtonClick()))
+        this.$menu = n, this.$menuButton = e, this.setupResponsiveChecks(), this.$menuButton.addEventListener("click", (() => this.handleMenuButtonClick()))
     }
     setupResponsiveChecks() {
-        const e = getBreakpoint("tablet");
-        if (!e.value) throw new ElementError({
-            componentName: "Service Navigation",
-            identifier: `CSS custom property (\`${e.property}\`) on pseudo-class \`:root\``
+        const t = getBreakpoint("tablet");
+        if (!t.value) throw new ElementError({
+            component: ServiceNavigation,
+            identifier: `CSS custom property (\`${t.property}\`) on pseudo-class \`:root\``
         });
-        this.mql = window.matchMedia(`(min-width: ${e.value})`), "addEventListener" in this.mql ? this.mql.addEventListener("change", (() => this.checkMode())) : this.mql.addListener((() => this.checkMode())), this.checkMode()
+        this.mql = window.matchMedia(`(min-width: ${t.value})`), "addEventListener" in this.mql ? this.mql.addEventListener("change", (() => this.checkMode())) : this.mql.addListener((() => this.checkMode())), this.checkMode()
     }
     checkMode() {
         this.mql && this.$menu && this.$menuButton && (this.mql.matches ? (this.$menu.removeAttribute("hidden"), this.$menuButton.setAttribute("hidden", "")) : (this.$menuButton.removeAttribute("hidden"), this.$menuButton.setAttribute("aria-expanded", this.menuIsOpen.toString()), this.menuIsOpen ? this.$menu.removeAttribute("hidden") : this.$menu.setAttribute("hidden", "")))
@@ -939,33 +920,27 @@ class ServiceNavigation extends GOVUKFrontendComponent {
 }
 ServiceNavigation.moduleName = "govuk-service-navigation";
 class SkipLink extends GOVUKFrontendComponent {
-    constructor(e) {
-        var t;
-        if (super(), this.$module = void 0, !(e instanceof HTMLAnchorElement)) throw new ElementError({
-            componentName: "Skip link",
-            element: e,
-            expectedType: "HTMLAnchorElement",
-            identifier: "Root element (`$module`)"
-        });
-        this.$module = e;
-        const n = this.$module.hash,
-            i = null != (t = this.$module.getAttribute("href")) ? t : "";
-        let s;
+    constructor(t) {
+        var e;
+        super(t);
+        const s = this.$root.hash,
+            n = null != (e = this.$root.getAttribute("href")) ? e : "";
+        let i;
         try {
-            s = new window.URL(this.$module.href)
+            i = new window.URL(this.$root.href)
         } catch (a) {
-            throw new ElementError(`Skip link: Target link (\`href="${i}"\`) is invalid`)
+            throw new ElementError(`Skip link: Target link (\`href="${n}"\`) is invalid`)
         }
-        if (s.origin !== window.location.origin || s.pathname !== window.location.pathname) return;
-        const o = getFragmentFromUrl(n);
-        if (!o) throw new ElementError(`Skip link: Target link (\`href="${i}"\`) has no hash fragment`);
+        if (i.origin !== window.location.origin || i.pathname !== window.location.pathname) return;
+        const o = getFragmentFromUrl(s);
+        if (!o) throw new ElementError(`Skip link: Target link (\`href="${n}"\`) has no hash fragment`);
         const r = document.getElementById(o);
         if (!r) throw new ElementError({
-            componentName: "Skip link",
+            component: SkipLink,
             element: r,
             identifier: `Target content (\`id="${o}"\`)`
         });
-        this.$module.addEventListener("click", (() => setFocus(r, {
+        this.$root.addEventListener("click", (() => setFocus(r, {
             onBeforeFocus() {
                 r.classList.add("govuk-skip-link-focused-element")
             },
@@ -975,184 +950,196 @@ class SkipLink extends GOVUKFrontendComponent {
         })))
     }
 }
-SkipLink.moduleName = "govuk-skip-link";
+SkipLink.elementType = HTMLAnchorElement, SkipLink.moduleName = "govuk-skip-link";
 class Tabs extends GOVUKFrontendComponent {
-    constructor(e) {
-        if (super(), this.$module = void 0, this.$tabs = void 0, this.$tabList = void 0, this.$tabListItems = void 0, this.jsHiddenClass = "govuk-tabs__panel--hidden", this.changingHash = !1, this.boundTabClick = void 0, this.boundTabKeydown = void 0, this.boundOnHashChange = void 0, this.mql = null, !e) throw new ElementError({
-            componentName: "Tabs",
-            element: e,
-            identifier: "Root element (`$module`)"
-        });
-        const t = e.querySelectorAll("a.govuk-tabs__tab");
-        if (!t.length) throw new ElementError({
-            componentName: "Tabs",
+    constructor(t) {
+        super(t), this.$tabs = void 0, this.$tabList = void 0, this.$tabListItems = void 0, this.jsHiddenClass = "govuk-tabs__panel--hidden", this.changingHash = !1, this.boundTabClick = void 0, this.boundTabKeydown = void 0, this.boundOnHashChange = void 0, this.mql = null;
+        const e = this.$root.querySelectorAll("a.govuk-tabs__tab");
+        if (!e.length) throw new ElementError({
+            component: Tabs,
             identifier: 'Links (`<a class="govuk-tabs__tab">`)'
         });
-        this.$module = e, this.$tabs = t, this.boundTabClick = this.onTabClick.bind(this), this.boundTabKeydown = this.onTabKeydown.bind(this), this.boundOnHashChange = this.onHashChange.bind(this);
-        const n = this.$module.querySelector(".govuk-tabs__list"),
-            i = this.$module.querySelectorAll("li.govuk-tabs__list-item");
-        if (!n) throw new ElementError({
-            componentName: "Tabs",
+        this.$tabs = e, this.boundTabClick = this.onTabClick.bind(this), this.boundTabKeydown = this.onTabKeydown.bind(this), this.boundOnHashChange = this.onHashChange.bind(this);
+        const s = this.$root.querySelector(".govuk-tabs__list"),
+            n = this.$root.querySelectorAll("li.govuk-tabs__list-item");
+        if (!s) throw new ElementError({
+            component: Tabs,
             identifier: 'List (`<ul class="govuk-tabs__list">`)'
         });
-        if (!i.length) throw new ElementError({
-            componentName: "Tabs",
+        if (!n.length) throw new ElementError({
+            component: Tabs,
             identifier: 'List items (`<li class="govuk-tabs__list-item">`)'
         });
-        this.$tabList = n, this.$tabListItems = i, this.setupResponsiveChecks()
+        this.$tabList = s, this.$tabListItems = n, this.setupResponsiveChecks()
     }
     setupResponsiveChecks() {
-        const e = getBreakpoint("tablet");
-        if (!e.value) throw new ElementError({
-            componentName: "Tabs",
-            identifier: `CSS custom property (\`${e.property}\`) on pseudo-class \`:root\``
+        const t = getBreakpoint("tablet");
+        if (!t.value) throw new ElementError({
+            component: Tabs,
+            identifier: `CSS custom property (\`${t.property}\`) on pseudo-class \`:root\``
         });
-        this.mql = window.matchMedia(`(min-width: ${e.value})`), "addEventListener" in this.mql ? this.mql.addEventListener("change", (() => this.checkMode())) : this.mql.addListener((() => this.checkMode())), this.checkMode()
+        this.mql = window.matchMedia(`(min-width: ${t.value})`), "addEventListener" in this.mql ? this.mql.addEventListener("change", (() => this.checkMode())) : this.mql.addListener((() => this.checkMode())), this.checkMode()
     }
     checkMode() {
-        var e;
-        null != (e = this.mql) && e.matches ? this.setup() : this.teardown()
+        var t;
+        null != (t = this.mql) && t.matches ? this.setup() : this.teardown()
     }
     setup() {
-        var e;
-        this.$tabList.setAttribute("role", "tablist"), this.$tabListItems.forEach((e => {
-            e.setAttribute("role", "presentation")
-        })), this.$tabs.forEach((e => {
-            this.setAttributes(e), e.addEventListener("click", this.boundTabClick, !0), e.addEventListener("keydown", this.boundTabKeydown, !0), this.hideTab(e)
+        var t;
+        this.$tabList.setAttribute("role", "tablist"), this.$tabListItems.forEach((t => {
+            t.setAttribute("role", "presentation")
+        })), this.$tabs.forEach((t => {
+            this.setAttributes(t), t.addEventListener("click", this.boundTabClick, !0), t.addEventListener("keydown", this.boundTabKeydown, !0), this.hideTab(t)
         }));
-        const t = null != (e = this.getTab(window.location.hash)) ? e : this.$tabs[0];
-        this.showTab(t), window.addEventListener("hashchange", this.boundOnHashChange, !0)
+        const e = null != (t = this.getTab(window.location.hash)) ? t : this.$tabs[0];
+        this.showTab(e), window.addEventListener("hashchange", this.boundOnHashChange, !0)
     }
     teardown() {
-        this.$tabList.removeAttribute("role"), this.$tabListItems.forEach((e => {
-            e.removeAttribute("role")
-        })), this.$tabs.forEach((e => {
-            e.removeEventListener("click", this.boundTabClick, !0), e.removeEventListener("keydown", this.boundTabKeydown, !0), this.unsetAttributes(e)
+        this.$tabList.removeAttribute("role"), this.$tabListItems.forEach((t => {
+            t.removeAttribute("role")
+        })), this.$tabs.forEach((t => {
+            t.removeEventListener("click", this.boundTabClick, !0), t.removeEventListener("keydown", this.boundTabKeydown, !0), this.unsetAttributes(t)
         })), window.removeEventListener("hashchange", this.boundOnHashChange, !0)
     }
     onHashChange() {
-        const e = window.location.hash,
-            t = this.getTab(e);
-        if (!t) return;
+        const t = window.location.hash,
+            e = this.getTab(t);
+        if (!e) return;
         if (this.changingHash) return void(this.changingHash = !1);
-        const n = this.getCurrentTab();
-        n && (this.hideTab(n), this.showTab(t), t.focus())
-    }
-    hideTab(e) {
-        this.unhighlightTab(e), this.hidePanel(e)
-    }
-    showTab(e) {
-        this.highlightTab(e), this.showPanel(e)
-    }
-    getTab(e) {
-        return this.$module.querySelector(`a.govuk-tabs__tab[href="${e}"]`)
-    }
-    setAttributes(e) {
-        const t = getFragmentFromUrl(e.href);
-        if (!t) return;
-        e.setAttribute("id", `tab_${t}`), e.setAttribute("role", "tab"), e.setAttribute("aria-controls", t), e.setAttribute("aria-selected", "false"), e.setAttribute("tabindex", "-1");
-        const n = this.getPanel(e);
-        n && (n.setAttribute("role", "tabpanel"), n.setAttribute("aria-labelledby", e.id), n.classList.add(this.jsHiddenClass))
-    }
-    unsetAttributes(e) {
-        e.removeAttribute("id"), e.removeAttribute("role"), e.removeAttribute("aria-controls"), e.removeAttribute("aria-selected"), e.removeAttribute("tabindex");
-        const t = this.getPanel(e);
-        t && (t.removeAttribute("role"), t.removeAttribute("aria-labelledby"), t.classList.remove(this.jsHiddenClass))
-    }
-    onTabClick(e) {
-        const t = this.getCurrentTab(),
-            n = e.currentTarget;
-        t && n instanceof HTMLAnchorElement && (e.preventDefault(), this.hideTab(t), this.showTab(n), this.createHistoryEntry(n))
-    }
-    createHistoryEntry(e) {
-        const t = this.getPanel(e);
-        if (!t) return;
-        const n = t.id;
-        t.id = "", this.changingHash = !0, window.location.hash = n, t.id = n
-    }
-    onTabKeydown(e) {
-        switch (e.key) {
+        const s = this.getCurrentTab();
+        s && (this.hideTab(s), this.showTab(e), e.focus())
+    }
+    hideTab(t) {
+        this.unhighlightTab(t), this.hidePanel(t)
+    }
+    showTab(t) {
+        this.highlightTab(t), this.showPanel(t)
+    }
+    getTab(t) {
+        return this.$root.querySelector(`a.govuk-tabs__tab[href="${t}"]`)
+    }
+    setAttributes(t) {
+        const e = getFragmentFromUrl(t.href);
+        if (!e) return;
+        t.setAttribute("id", `tab_${e}`), t.setAttribute("role", "tab"), t.setAttribute("aria-controls", e), t.setAttribute("aria-selected", "false"), t.setAttribute("tabindex", "-1");
+        const s = this.getPanel(t);
+        s && (s.setAttribute("role", "tabpanel"), s.setAttribute("aria-labelledby", t.id), s.classList.add(this.jsHiddenClass))
+    }
+    unsetAttributes(t) {
+        t.removeAttribute("id"), t.removeAttribute("role"), t.removeAttribute("aria-controls"), t.removeAttribute("aria-selected"), t.removeAttribute("tabindex");
+        const e = this.getPanel(t);
+        e && (e.removeAttribute("role"), e.removeAttribute("aria-labelledby"), e.classList.remove(this.jsHiddenClass))
+    }
+    onTabClick(t) {
+        const e = this.getCurrentTab(),
+            s = t.currentTarget;
+        e && s instanceof HTMLAnchorElement && (t.preventDefault(), this.hideTab(e), this.showTab(s), this.createHistoryEntry(s))
+    }
+    createHistoryEntry(t) {
+        const e = this.getPanel(t);
+        if (!e) return;
+        const s = e.id;
+        e.id = "", this.changingHash = !0, window.location.hash = s, e.id = s
+    }
+    onTabKeydown(t) {
+        switch (t.key) {
             case "ArrowLeft":
             case "Left":
-                this.activatePreviousTab(), e.preventDefault();
+                this.activatePreviousTab(), t.preventDefault();
                 break;
             case "ArrowRight":
             case "Right":
-                this.activateNextTab(), e.preventDefault()
+                this.activateNextTab(), t.preventDefault()
         }
     }
     activateNextTab() {
-        const e = this.getCurrentTab();
-        if (null == e || !e.parentElement) return;
-        const t = e.parentElement.nextElementSibling;
-        if (!t) return;
-        const n = t.querySelector("a.govuk-tabs__tab");
-        n && (this.hideTab(e), this.showTab(n), n.focus(), this.createHistoryEntry(n))
+        const t = this.getCurrentTab();
+        if (null == t || !t.parentElement) return;
+        const e = t.parentElement.nextElementSibling;
+        if (!e) return;
+        const s = e.querySelector("a.govuk-tabs__tab");
+        s && (this.hideTab(t), this.showTab(s), s.focus(), this.createHistoryEntry(s))
     }
     activatePreviousTab() {
-        const e = this.getCurrentTab();
-        if (null == e || !e.parentElement) return;
-        const t = e.parentElement.previousElementSibling;
-        if (!t) return;
-        const n = t.querySelector("a.govuk-tabs__tab");
-        n && (this.hideTab(e), this.showTab(n), n.focus(), this.createHistoryEntry(n))
+        const t = this.getCurrentTab();
+        if (null == t || !t.parentElement) return;
+        const e = t.parentElement.previousElementSibling;
+        if (!e) return;
+        const s = e.querySelector("a.govuk-tabs__tab");
+        s && (this.hideTab(t), this.showTab(s), s.focus(), this.createHistoryEntry(s))
     }
-    getPanel(e) {
-        const t = getFragmentFromUrl(e.href);
-        return t ? this.$module.querySelector(`#${t}`) : null
+    getPanel(t) {
+        const e = getFragmentFromUrl(t.href);
+        return e ? this.$root.querySelector(`#${e}`) : null
     }
-    showPanel(e) {
-        const t = this.getPanel(e);
-        t && t.classList.remove(this.jsHiddenClass)
+    showPanel(t) {
+        const e = this.getPanel(t);
+        e && e.classList.remove(this.jsHiddenClass)
     }
-    hidePanel(e) {
-        const t = this.getPanel(e);
-        t && t.classList.add(this.jsHiddenClass)
+    hidePanel(t) {
+        const e = this.getPanel(t);
+        e && e.classList.add(this.jsHiddenClass)
     }
-    unhighlightTab(e) {
-        e.parentElement && (e.setAttribute("aria-selected", "false"), e.parentElement.classList.remove("govuk-tabs__list-item--selected"), e.setAttribute("tabindex", "-1"))
+    unhighlightTab(t) {
+        t.parentElement && (t.setAttribute("aria-selected", "false"), t.parentElement.classList.remove("govuk-tabs__list-item--selected"), t.setAttribute("tabindex", "-1"))
     }
-    highlightTab(e) {
-        e.parentElement && (e.setAttribute("aria-selected", "true"), e.parentElement.classList.add("govuk-tabs__list-item--selected"), e.setAttribute("tabindex", "0"))
+    highlightTab(t) {
+        t.parentElement && (t.setAttribute("aria-selected", "true"), t.parentElement.classList.add("govuk-tabs__list-item--selected"), t.setAttribute("tabindex", "0"))
     }
     getCurrentTab() {
-        return this.$module.querySelector(".govuk-tabs__list-item--selected a.govuk-tabs__tab")
+        return this.$root.querySelector(".govuk-tabs__list-item--selected a.govuk-tabs__tab")
     }
 }
 
-function initAll(e) {
-    var t;
-    if (e = void 0 !== e ? e : {}, !isSupported()) return void console.log(new SupportError);
-    const n = [
-            [Accordion, e.accordion],
-            [Button, e.button],
-            [CharacterCount, e.characterCount],
+function initAll(t) {
+    var e;
+    if (t = void 0 !== t ? t : {}, !isSupported()) return void(t.onError ? t.onError(new SupportError, {
+        config: t
+    }) : console.log(new SupportError));
+    const s = [
+            [Accordion, t.accordion],
+            [Button, t.button],
+            [CharacterCount, t.characterCount],
             [Checkboxes],
-            [ErrorSummary, e.errorSummary],
-            [ExitThisPage, e.exitThisPage],
+            [ErrorSummary, t.errorSummary],
+            [ExitThisPage, t.exitThisPage],
             [Header],
-            [NotificationBanner, e.notificationBanner],
-            [PasswordInput, e.passwordInput],
+            [NotificationBanner, t.notificationBanner],
+            [PasswordInput, t.passwordInput],
             [Radios],
             [ServiceNavigation],
             [SkipLink],
             [Tabs]
         ],
-        i = null != (t = e.scope) ? t : document;
-    n.forEach((([e, t]) => {
-        createAll(e, t, i)
+        n = {
+            scope: null != (e = t.scope) ? e : document,
+            onError: t.onError
+        };
+    s.forEach((([Component, t]) => {
+        createAll(Component, t, n)
     }))
 }
 
-function createAll(e, t, n = document) {
-    const i = n.querySelectorAll(`[data-module="${e.moduleName}"]`);
-    return Array.from(i).map((n => {
+function createAll(Component, t, e) {
+    let s, n = document;
+    var i;
+    "object" == typeof e && (n = null != (i = e.scope) ? i : n, s = e.onError);
+    "function" == typeof e && (s = e), e instanceof HTMLElement && (n = e);
+    const o = n.querySelectorAll(`[data-module="${Component.moduleName}"]`);
+    return isSupported() ? Array.from(o).map((e => {
         try {
-            return "defaults" in e && void 0 !== t ? new e(n, t) : new e(n)
-        } catch (i) {
-            return console.log(i), null
+            return void 0 !== t ? new Component(e, t) : new Component(e)
+        } catch (n) {
+            return s ? s(n, {
+                element: e,
+                component: Component,
+                config: t
+            }) : console.log(n), null
         }
-    })).filter(Boolean)
+    })).filter(Boolean) : (s ? s(new SupportError, {
+        component: Component,
+        config: t
+    }) : console.log(new SupportError), [])
 }
 Tabs.moduleName = "govuk-tabs";
 export {
@@ -1160,6 +1147,7 @@ export {
     Button,
     CharacterCount,
     Checkboxes,
+    GOVUKFrontendComponent as Component,
     ErrorSummary,
     ExitThisPage,
     Header,
@@ -1171,5 +1159,6 @@ export {
     Tabs,
     createAll,
     initAll,
+    isSupported,
     version
-}; //# sourceMappingURL=govuk-frontend-5.6.0.min.js.map
\ No newline at end of file
+}; //# sourceMappingURL=govuk-frontend-5.7.0.min.js.map
\ No newline at end of file

Action run for 9fb4b89

Copy link

Stylesheets changes to GitHub release

diff --git a/dist/govuk-frontend-5.6.0.min.css b/dist/govuk-frontend-5.7.0.min.css
index 6ffaf3b36..894d2f91a 100644
--- a/dist/govuk-frontend-5.6.0.min.css
+++ b/dist/govuk-frontend-5.7.0.min.css
@@ -1,7 +1,7 @@
 @charset "UTF-8";
 
 :root {
-    --govuk-frontend-version: "5.6.0";
+    --govuk-frontend-version: "5.7.0";
     --govuk-frontend-breakpoint-mobile: 20rem;
     --govuk-frontend-breakpoint-tablet: 40.0625rem;
     --govuk-frontend-breakpoint-desktop: 48.0625rem
@@ -2973,7 +2973,10 @@ screen and (forced-colors:active) {
 }
 
 .govuk-details__summary {
-    display: inline-block;
+    display: block
+}
+
+.govuk-details[open] .govuk-details__summary {
     margin-bottom: 5px
 }
 
@@ -3026,6 +3029,8 @@ screen and (forced-colors:active) {
 @supports not (-ms-ime-align:auto) {
     .govuk-details__summary {
         position: relative;
+        width: -webkit-fit-content;
+        width: fit-content;
         padding-left: 25px;
         color: #1d70b8;
         cursor: pointer
@@ -3534,14 +3539,15 @@ screen and (forced-colors:active) {
 }
 
 .govuk-footer__licence-description {
-    display: inline-block
+    display: inline-block;
+    text-wrap: balance
 }
 
 .govuk-footer__copyright-logo {
     display: inline-block;
     min-width: 125px;
     padding-top: 112px;
-    background-image: url(/assets/images/govuk-crest.png);
+    background-image: url(/assets/images/govuk-crest.svg);
     background-repeat: no-repeat;
     background-position: 50% 0;
     background-size: 125px 102px;
@@ -3549,14 +3555,6 @@ screen and (forced-colors:active) {
     white-space: nowrap
 }
 
-@media only screen and (-webkit-min-device-pixel-ratio:2),
-only screen and (min-resolution:192dpi),
-only screen and (min-resolution:2dppx) {
-    .govuk-footer__copyright-logo {
-        background-image: url(/assets/images/govuk-crest-2x.png)
-    }
-}
-
 .govuk-footer__inline-list {
     margin-top: 0;
     margin-bottom: 15px;
@@ -5309,7 +5307,7 @@ screen and (forced-colors:active) {
     font-size: 1rem;
     line-height: 1.25;
     display: inline-flex;
-    margin: 0 0 10px;
+    margin: 10px 0;
     padding: 0;
     border: 0;
     color: #1a65a6;
@@ -5379,6 +5377,10 @@ screen and (forced-colors:active) {
     display: none
 }
 
+.govuk-service-navigation__service-name+.govuk-service-navigation__wrapper .govuk-service-navigation__toggle {
+    margin-top: 0
+}
+
 .govuk-service-navigation__list {
     font-family: GDS Transport, arial, sans-serif;
     -webkit-font-smoothing: antialiased;
@@ -6385,6 +6387,7 @@ screen and (-ms-high-contrast:active) {
     font-size: 1rem;
     line-height: 1.25;
     margin-bottom: 20px;
+    font-weight: 700;
     position: relative;
     padding: 10px 0
 }
@@ -6416,7 +6419,6 @@ screen and (-ms-high-contrast:active) {
 }
 
 .govuk-warning-text__icon {
-    font-weight: 700;
     box-sizing: border-box;
     display: inline-block;
     position: absolute;
@@ -6454,7 +6456,8 @@ screen and (-ms-high-contrast:active) {
 .govuk-warning-text__text {
     color: #0b0c0c;
     display: block;
-    padding-left: 45px
+    padding-left: 45px;
+    font-weight: inherit
 }
 
 @media print {
@@ -7922,4 +7925,4 @@ screen and (-ms-high-contrast:active) {
     }
 }
 
-/*# sourceMappingURL=govuk-frontend-5.6.0.min.css.map */
\ No newline at end of file
+/*# sourceMappingURL=govuk-frontend-5.7.0.min.css.map */
\ No newline at end of file

Action run for 9fb4b89

Copy link

Other changes to GitHub release

diff --git a/dist/VERSION.txt b/dist/VERSION.txt
index 1bc788d3b..42cdd0b54 100644
--- a/dist/VERSION.txt
+++ b/dist/VERSION.txt
@@ -1 +1 @@
-5.6.0
+5.7.0
diff --git a/dist/assets/images/govuk-crest-2x.png b/dist/assets/images/govuk-crest-2x.png
deleted file mode 100644
index 78e751cc2..000000000
Binary files a/dist/assets/images/govuk-crest-2x.png and /dev/null differ
diff --git a/dist/assets/images/govuk-crest.png b/dist/assets/images/govuk-crest.png
deleted file mode 100644
index bed4efe41..000000000
Binary files a/dist/assets/images/govuk-crest.png and /dev/null differ
diff --git a/dist/assets/images/govuk-crest.svg b/dist/assets/images/govuk-crest.svg
new file mode 100644
index 000000000..db3e20ab9
--- /dev/null
+++ b/dist/assets/images/govuk-crest.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="125" height="102" fill="#6E777A"><path d="m108.76 55.62-.27-.03-.74-1.97c.35-.44.53-1.14 0-1.49-.72-.28-2.74-2.56-3.34-1.08-.26.09-1.86.18-1.98.47a17.72 17.72 0 0 1-1.9-3.9c.31-1.64 4.72-3.7 4.72-3.7s-1.25-1.78-1.75-2.79c-.22.5-.42.29-.9.5 2.44-4.3 2.96-9.97-.28-14.04-.33-.7-.18-1.63-.5-2.33-.56-.73-.95-2.18-1.95-2.33 0 1.28-.13 2.53.5 3.72.66.82-.92 1.53-1.4.87.93-.1 1.1-.29.77-.82-4.05-.9-6.3 1.92-10.17 2.36-.34 0-.64.12-.83.42-2.38 3.17 2.96 1.01 3.42 3.11-.89.73-1.01.25-1.85.04-1.2.05-2.36.42-.86 1.42-.92 1.43-.87 1.93-2.74 2.05.81 1.13.64 2.76.85 4.04-1.33.24-2.23.87-2.26 2.28-.6.13-1.24-.18-1.66.46-.84-.69-1.8-.81-2.8-.83-.48-.36-1.66-1.2-2.93-1.84l.71-2.62 2.06-1.3-1.08-2.15c2.39-8.11 3.16-8.57 4.37-8.74l.06-.23-4.4-1.4-.08.3c1.1.8 1.47 2.12.96 3.68-1.17-.5-1.84-1.61-1.72-2.6l-.29-.08-1.47 4.85.23.07c.58-.83 1.6-1.3 2.76-1.1-1.36 4.29-7.5 2.95-6.4-.7.78-1.5 2.27-.54 1.55 1.04 3.45-1.2 1.41-6.1-1.53-3.17.97-1.98 1.52-3.53.3-5.44-1.59 1.01-2 2.84-1.69 5.27-1.94-4.4-5.33.13-2.58 2.43-.5-3.27 3.58-1.11.82 1.52-2.63 1.84-5.86-.27-5.95-3.52 1.52.13 2.67 1.02 2.83 2.14h.28l.19-5.54-.35-.01c-.23 1.12-1.47 2.07-3.02 2.1.1-1.7 1.1-3.04 2.37-3.26v-.31h-6.46v.31c1.28.22 2.27 1.55 2.38 3.26-1.56-.03-2.8-.98-3.03-2.1l-.34.01.18 5.55.28-.01c.16-1.12 1.32-2.01 2.83-2.14-.09 3.24-3.32 5.36-5.95 3.52-2.75-2.63 1.32-4.79.82-1.52 2.76-2.3-.64-6.83-2.58-2.43.3-2.43-.1-4.26-1.69-5.27-1.22 1.91-.67 3.46.3 5.44-2.94-2.93-4.97 1.98-1.53 3.17-.71-1.58.77-2.54 1.55-1.04 1.1 3.65-5.04 4.99-6.4.7 1.17-.2 2.18.27 2.76 1.1l.24-.07-1.48-4.85-.3.08c.14.99-.53 2.1-1.71 2.6-.5-1.56-.15-2.89.97-3.69l-.08-.28-4.41 1.4.06.22c1.21.17 1.98.63 4.37 8.74l-1.08 2.15 2.06 1.3.65 2.37.02-.01c0 .03-.01.04-.02.01-5.94 2.75-4.59 4.61-9.15 4.08-.41.93-.8 1.86-1.72 2.5a6.64 6.64 0 0 0-1.67-3.56c-.42-.49-1 .05-1.63.1-1.24 2.67-2.1.26-4.28 1.65.09 1.25.28 2.49.97 3.64a7.83 7.83 0 0 1-4.04-1.3c-4.85 5.36-9.92 10.51-14.07 16.42-2.21 2.9-8.14 1.2-6.58-2.79.72-2.91 4.97-2.29 4.7.6 2.1-2.31.76-4.61-2.46-4.1 2.95-1.26 4.72 1.13 7.38-2.15-2.03.04-3.75-.6-5.78-.13 2.57-1.52 6.09.74 8.27-3.45-1.9.2-3.63.99-5.6 1.28 11.84-11.18.45-11.73 1.9-16.56-.93.78-1.46 1.56-1.03 2.6-2.66-1.1-6.59-.77-7.66-3.96-.26 4.54 1.75 4.22 5.22 5.15-1.6-.19-3.18-.2-4.68-.75.31 2.04 1.87 2.47 3.71 2.28-1.8.98-1.39 3.52.44 4.39-1.17-6.57 8.78-4.32 4.24 1.72-2.11 3.1-5.16 5.42-7.72 8.13-.49-.83-1-1.66-2.11-1.54 1.95 2.23-.25 4.66-.77 6.96-.75 2.84 1.79 5.26 4.5 5.6-1.08 1.27-1.16 2.4-.33 3.44.82-4.18 6.94-3.24 7.52-7.76.1-.53.36-.95.96-1.19-2.76 3.09 3.87 9.62-2.36 10.38-.89.03-1.1.95-.62 1.61-2.57-.13-3.28.84-3.67 3.25l3.25-.84c-1.12 2.9-3.66-.17-3.24 5 1.04-.49 2.02-1.01 2.97-1.6.92 2.9-4.67 1.65-.47 6.28a8.57 8.57 0 0 1 1.95-3.03c-.51 1.46-.4 3.15 1.26 3.8l.22-1.07h.13c.24.96.28 2.3 1.22 2.86.31.12.48.3.59.62.17.54.67.68 1.16.74.62.13.78-.56 1.23-.84.13.76 1.04.89 1.5 1.54.33-3.77-4.72-2.4-3.56-4.9.45 1.52 1.88 1.2 2.88 1.81.4.63 1.34 1.16 1.82.28l1.31.97c-.98-4.47-3.33-1.7-4.8-4.05 1.02.04 2.12 1.55 3.23.52.6.61 1.06 1.32 1.51 2.04a3.29 3.29 0 0 0-1.5-3.32c-1.28-.77-3.02.6-4.12-.95-1.5-1.83-1.45-4.4-.67-6.52.71-1.63 2.7-2.24 3.63-3.78-.26 1.36-.13 3.73 1.43 4.17-.38-2.53 1.44-4.81 1.81-7.26.48-.62.5-1.1.07-1.77-.78-1.26-.99-2.77-1.84-4.01-1.33-1.85-2.97-1.9-.26-3.84-1.64 2.53-.3 1.6 1.12 3.99.26-.8 1.47-1.85-.04-1.85-2.39-1.16 3.1-4.18 4.35-4.25 1.23-.1 2.94.04 3.87-1.16C32.56 55 32 54.83 33 53.7c-.67-.39-1.26-.85-1.38-1.71l-1.85.63c.6-.67 2.37-2.03 2.56-.52.04.84.89 1 1.55 1.2-.48.7-1.28 1.4-.55 2.2.5.54.82 1.54 1.61 1.67l.63-2.31c1.74 1.8-1.75 2.8 3.03 4.43a9.56 9.56 0 0 1-.2-2.93c2.3 1.9-1 3.1 4.3 3.72-.58-.7-.72-1.46-.94-2.24.89.15 1.6.98 2.17 1.61.55.83.95 1.28 2.2.47.06.15.07.34.18.43.56.42.33.93.32 1.49h.15c.74-.74.8-1.58.56-2.5-.5-1.74-2.65-.36-3.4-2.13 1 .68 2.02 1.08 3.13.5.62.59.88 1.01 1.18 1.83.5-1.87-.08-3.78-2.07-3.22-.62.22-.88.17-1.5-.37.92.32 1.54-.15 2.13-.57.13.17.2.35.29.36.56.03.92.36 1.27.77.19-1.6-1.42-2.9-3.04-2.49-.4 1.97-2.07.86-3.4.6-2.04-1.2-3.12-3.47-4.93-4.95a3.6 3.6 0 0 0-3.9-3.83c2-.87 4.39.84 4.54 2.91.08.85.6 1.39 1.14 2.02 6.79-13.5 28.69-17.04 41.26-8.47 1.07.98 2.23 1.77 3.34 2.8.44-1.3.18-2.83 2.12-2.05l.37-.24a1.84 1.84 0 0 1 1.58-2.4v.84c-.5.09-.9.57-.82 1.1.39-.09.74.42.53.75a1 1 0 0 0 1.16-.18l.96.08c-.44 1.04-1.97 1.4-2.84.63.17.23-.58 2.53-.6 2.8a.73.73 0 0 1-.75.54l.38.61c.55-.3 1.32-.28 1.25-1.05.1-.44-.18-2.46.45-2.28.25.77-.23 1.65.34 2.4 1.82-.44 1.02-2.06 3.22-2.48.88-.08 2.72-.5 3.19.36-1.92-.5-4.4.02-4.83 2.19-2 .46-3.68 1.88-5.8 1.88-1.7.09-2.15 2.1-2.22 3.48-.29 1.58-.37 3.22-1.08 4.69-.35.56-.06 1.2.13 1.72.65.34 1.11 2.56 1.2 3.36 0 1.45 2.51 1.93 3.54 2.84.28-1.82-3.2-1.3-2.71-3.85.62 1.69 1.97 2.03 3.45 2.86-.46-1.7-.6-4.53-3-4.18-.93-1.27.42-1.34-.01-2.86.69.21 1.01.45 1.2.87l-.7-.22c.08 1.08 1.02 1.33 1.75 2.07-.12-1.76-.28-2.87-1.94-3.73-.94-.85.14-2.81.08-3.99-.03-.34 2.22-1.45 2.56-1.35 1.67.21 3.41-.05 5.02.36 1.61.5.23-2.95 2.83-1.13-1.88-.55-.74 1.48-2.1 1.59-.94 0-1.75-.08-2.74-.12 3.42 7.52 10.99 5.32 13.07 12.03 1.74-1.52.56-1.5.07-3.09 3.94 2.6-3.66 5.6-.8 10.16-.19-.52 1.6-2.65 1.8-3.08.32-.48.88-.5 1.23-.16l.57-1.17c-1.06-.57.86-3.03 1-3.73.2-.42.65-.62 1-.45l.53-1.46c-1-.27-.25-2.67-.33-3.34-1.4-1.26-2.56-2.84-3.65-4.3l.67-.1c-.07.32.05.68.33.87.48.19 2.33 1.96 2.91 1.54l.3.78c-.47.12-.55.77-.56 1.21.25.2.52.4.76.62.03-.16.01-.87.15-.98.22.29.62.3.87.06.22.12-.06 1.67-.03 1.87.27.3.53.6.77.9-.1-.7.78-3.43-.44-3.57ZM88.93 30.25l.76-.08c-.5-.35-.02-.84.4-.5.98.76-1 2-1.16.58Zm-39.44 7.11-2.07-1.3 1.1-2.2 2.98 1.06-2 2.44Zm6.78-1.7c-3.25.66-3.93-2.88-.67-3.47 3.24-.65 3.93 2.89.67 3.47Zm7.34-.27-3.2-2.24 3.2-2.23 3.2 2.23-3.2 2.24Zm10.19-.99c-.38 2.27-5.5 1.29-5.01-.95.38-2.26 5.5-1.29 5 .95Zm1.92.52 3-1.05 1.09 2.18-2.08 1.31-2.01-2.44Zm24.64-10.39c.6.65.85 1.35.85 2.14-.57-.19-.81-.8-.85-2.14Zm-2.69 4.2c-.79.53-1.5 1.32-2.3.25l-.54.1c1.2-1.83 1.1-1.51 2.84-.36Zm-6.61 6.64c.53.19 1.03.46 1.56-.06-.51 0-.67-.36-.81-.7-.25-1.73 2.6-1.12 3.66-1 2.68 1.62 7.23.6 5.65-3.24 1.24.75.81 2.86-.13 3.68-2.47 1.32-4.82.32-7.29 2.92-.37-1.19-1.8-1.12-2.3.18l-1.05.05c-.08-.68.49-1.18.71-1.83Zm9.33 11.35-.33.42c-2.06-2.32-9-4.99-12-4.56l.05-.53-.02.02 1.14-.72-.98-.8c.01-.11-.62-4.02-.62-4.02l1.72-.05s-.61.7-.64 1.27c.1.07.18.17.24.29.34-.15.71-.86.71-.86l.16 2.32s-.47-.67-.82-.79a.56.56 0 0 1-.13.23c.5 1.53 2.76 1.62 2.77.3-.08-.67-.84-.56-.8.16-1.24-.98.44-2.53 1.12-.97-.08-.9 0-1.41.7-1.85.47.58.4 1.13-.1 2 1.52-1.4 2.1.98.67 1.33.7-1.25-1.31-.86-.57.45.67 1.02 2.3.87 2.88-.24a.62.62 0 0 1-.08-.21c-.58-.1-1.43.37-1.43.37l.8-2.13s.33.91.8 1.2c.1-.08.2-.14.32-.17.09-.56-.48-1.44-.48-1.44l2.64 1.01s-1.05.26-1.38.73c.06.1.1.21.11.33.55.1 1.44-.34 1.44-.34l-.94 2.07s-.28-.9-.77-1.2a.68.68 0 0 1-.21.1 1.64 1.64 0 0 0 1.92 2.07c1.46-.44.3-2.08-.1-.7-.78-1.21 1.34-2.54 1.44-.52.26-.97.6-1.41 1.36-1.53.2.79-.1 1.21-.82 1.8 1.64-.67 1.71 1.57.13 1.45.55-.5.07-1.08-.47-.63-.94.97.82 2.37 2.2 1.67 0-.08.03-.17.07-.25-.35-.23-1.16-.26-1.16-.26l1.7-1.24s-.21.75-.05 1.15c.13-.02.25 0 .37.04.37-.37.39-1.34.39-1.34l1.26 1.56s-3.17 1.45-3.73 1.87l-.88-.1.43 1.24h-.03Zm6.83 6.38c-.4-.03-.73.31-.6.74a.25.25 0 0 1-.11-.04l-1.86-1.26a.3.3 0 0 1-.09-.38c.35-.01.73-.2.68-.61.14.18 2.14 1.23 1.98 1.55Z"/><path d="M84.8 44.17c-.14-.17-.17-.4-.05-.59-.22-.04-.6 2.03-.67 2.15.15.14.28.28.4.43.2.05.53.16.6-.12l.48-1.83c-.22.2-.58.22-.75-.04ZM56.86 95.9c-5.24-2.05-9.06 2.98-4.78 3.83-4.7.2-3.79-6.35-5.73-5.96 1.7 1.81 1.7 5.2 3.27 6.13 3.16 1.33 6.44 1.54 9.83 1.39-1.7-1.5-2.12-3.39-2.59-5.39ZM72.9 99.66c4.27-.84.48-5.89-4.78-3.83-.47 2-.88 3.9-2.59 5.39 3.39.16 6.67-.06 9.83-1.4 1.57-.93 1.57-4.3 3.27-6.12-1.94-.4-1.03 6.16-5.73 5.96ZM107.3 59.02c0 .1.04.2.1.26.24-.2.62-.12.79.12.27-.08.18-.92.24-1.12-.31-.33-.64-.65-.98-.94l-.14 1.68ZM106 65.25c.02-.24 1.34-2.4 1-2.59a.58.58 0 0 1-.62-.3c-.32-.14-1.16 2.22-1.3 2.37.41-.26.95.17.8.65a.3.3 0 0 0 .11-.13Z"/><path d="M121 55.27c-1.1.33-1.55 1.24-1.96 2.26-2.76-4.26-8.01-7.2-8.81-12.41.61-4.17 6.2-3.22 5.06 1.13 2.9-1.54 1.5-4.4-1.23-4.91 2.97.23 4.58 2.7 6.6-1.41-1.74.63-4.41.18-5.33.05 3.69-.5 5.7-.47 5.58-5-1.25 2.72-4.73 2.77-7.26 3.65.16-1.2-.22-1.95-1.2-2.34 1 6.63-11.7 4.47 2.25 18.77-1.7-.94-3.7-.62-5.36-1.66 1.3 3.44 3.48 2.84 6.33 4.04-3.06-.01-4.01 2.94-1.75 4.36-.59-2.28 2.58-3.85 4.17-2.07 3.62 4.6-3 11-8.89-.54.05.64-.4 1.21-1.03 1.02l-.66 1.82c1.34.5-.72 3.07-.87 3.81-.23.5-.75.64-1.14.37l-.65 1.34c.81.74-1.38 2.83-1.63 3.49-.25.37-.7.5-1.03.3l-.23.48.08.1c1.49 1.74 2.17 3.08 1.77 4.93 1.2-1.02 1.75-3.86.78-5.4 1.1 1.12 2.67 1.93 3.3 3.37a7.94 7.94 0 0 1-1.65 7.28c-.76.75-.56 1.15-.66 2.08-.5 1.48-2.28 1.6-2.96 2.85-.47 1.1-1.25 2-1.59 3.14 2.03-.31 1.68-3.1 3.6-3.68-.78 1.18-1.53 2.24-2.06 3.6 1.6-.41 4.61-.84 4.1-3.07-.37-1.03.64-1.71.59-2.7 1.26-.44.97-.95 1.58-1.93.28.6.29 1.1.26 1.74l-.37-.76c-.9 1.2-.15 2.38-.27 3.67 4.41-3.92-1.45-3.89 3.13-12.56 1.05-1.73-3-1.54-3.3-5.44-.28-1.69 1.22-3.07 1.53-4.68 1.77 3.1 7.93 3 7.1 6.97 1.23-.93 1.18-2.62.69-3.9 6.36-2.26 1.34-8.05 3.39-12.16Z"/><path d="M102.07 70.19c.14.06.26.16.31.3a.3.3 0 0 0 .29-.13c.05-.15 1.62-2.19 1.44-2.33-.17-.05-.33-.17-.39-.35-.15-.14-.36-.21-.51 0-.06.26-1.8 2.22-1.36 2.46.08 0 .15.02.22.05ZM101.15 70.6l.08.13.02-.06-.1-.08ZM39.6 79.41c.64.12 1.34.24 1.96-.04l-2.89-4.86c-1.7 2.08-4.67.81-6.54-.47-1.51-1.1 1.76-2.83.71-6.52 1.46 2.33-1.2 4.34 2.9 5.65-1.18-1.74-1.02-4-1.46-5.99-.06-.34-.23-.68.05-1.03.14-.48.17-1.12-.48-1.2-4.58-2.6-3.66-1.33-8.11-1.93-1.1 1.9 1.23 3.61.86 5.48-.33.92 1.08.88 1.06 1.77.31 1.4.16 3.34-1.45 3.88-.8.48-.16 1.49.54 1.72-1.42 2.53-.33 2.94 1.84 4.2.01-.97.03-1.83.44-2.66 3 1.97-1.47 2.3 4.46 4.68-.6-.98-.58-2.05-.67-3.03l1.66.38c.65 2.72 2.13 2.96 4.75 2.72-.94-.92-1.2-2.12-1.88-3.08.79.27 1.57-.27 2.25.33ZM93.03 64.27c-.8.13-1 .47-.84 1.26-.91 1.93-.93 4.28-2.48 5.91 3.33-.93 2.6-2.17 3.4-4.67-.17 3.39.01 3.34 1.25 5.67-2.56 1.78-6.75.28-8.15 3.74.39.45.9 0 1.41.12-.33.4-.47.87-1 1.22l.26-.75c-.96-.32-1.75 1.85-2.47 2.55 6.85-1.36-.82-3.35 12.67-4.9 2.38-1.12-2.25-2.86 2.43-5.8.41-1.6.66-3.25 1.55-4.7.2-.47-.13-1.14-.56-1.47-2.06 1.43-3.03-.88-7.47 1.82ZM23.91 36.42l.1-1.36-1.52-.26a2.1 2.1 0 0 1 1.98-.34c-.52 2.18.41 3.72 2.78 3.85.72-1.07 1.36-1.23 2.07-.48-3.12-.32-.8 2.94.79 1.84.42-.6 1.77-1.14 1.38-2-2.48-1.78-2.3.86-2.77-3.56l-.31-.03c-.23.84-1.07 1.5-1.75.7-.24-.27-.44-.51-.83-.58 1.7-1.34 3.71.6 3.59-2.55 1.89 2.34 2.05-.26 3.92-.3-.09 1.86-.47 1.71-2.09 1.6.53.4 2.54 2.4 1.37 2.58-.49-1.24-1.31-2.45-2.7-2.7-1.13 1.11-.58 2.36-.4 3.64 1-.34 1.85-.98 2.9-.9.36 1.03-1.3 1.6-.36 2.6 1.61.27 3.36.28 2.85-1.98-.53-.31-1.05-.52-1.6.05.03-.88.9-1.03 1.58-.86 1.48-1.57.99-3.64-.61-4.9.42-.61.87-1.04 1.63-1.19-.25.53-.8.73-.92 1.21L36 31.73c.86-.37 1.08-1.7.48-3.06-1.06.27-2.92 1.14-2.92 1.14-.9-.34-.52.1-.39.54-2.9.52-5.76 1.28-8.07 3.19-.41.3-.6.12-.74-.46-.27-.42-.4.3-.44.48 0 0-1.75.42-2.5 1.06.53.88 1.29 2.26 2.5 1.8Z"/><path d="M35.32 35.55c.27 1.3-.1 2.39-.96 3.41 1.29 2.3 3.48 4.03 4.45 6.5 2.16-3.99-.15-5.33-3.12-7.52 1.9.68 3.83 1.33 4.89 3.12.22-3.42-1.31-5.13-4.67-5.66l.03-.14c1.4-.07 2.8-.06 4.1.78-.34-1.06-1.21-2.63-2.48-2.5.45-.94.45-1.56-.01-2.13-.22.66-.64 1.07-1.33 1.1a4.09 4.09 0 0 1-.9 3.04ZM24.64 43.35c.4.96.99 2.07 1.97 2.47-.5-1.89.78-3.53 1.38-5.24.01 3.94-2.24 6.07 3.2 7.51-1.45-2.31-.49-5.12-1.4-7.5-.88-.5-1.87-.62-2.46-1.35-.16-.34-.46-.47-.78-.53-1.02-.22-1.97-.56-2.48-1.4-.75.23-1.2.2-1.89-.08-.06.84.66 1.68 1.61 1.36-.76 1.1-.34 2.09-.06 3.22a5.64 5.64 0 0 1 2.32-2.39c-.72 1.21-2 2.43-1.41 3.94ZM46.52 83.51c.74-.68-.26-1.07-.65-1.6-6.58-6.05-9.03-13.92-8.45-22.67l-.69-.34a27.66 27.66 0 0 0 9.8 24.61ZM105.23 33.13c-.62 1.19 1.19 1.68 1.2 2.81l-1.33-1.05c-.57 2.2 2.06 2.92 2.87 4.66 1.06-3.22.49-5.18-2.73-6.42ZM32.99 42.63c-1.75.1-1.5-2.07-2-3.28l-.86.97 1.1 3.69.8-.56c1.2.85 2.32.27 2.72-1.06.36.09.69.24.95-.02l-1.68-3.43c-.35.07-.68-.42-1.1-.03.4 1.07 1.84 3.22.07 3.72ZM104.9 27.73l-.03.14-1.67-.09c.62 1.95 2.9 1.01 4.35 1.9-.83-1.57-1.43-3.1-3.35-3.4.2-.92-.05-1.8-.63-2.15 0 .82-.33 1.41-1.09 1.72-.37 1.62 1.34 1.54 2.42 1.88ZM104.4 38.96l-.13.02c-.4 1.73.81 3.24 1.57 4.7 1.31-2.3 1.26-4.93-.84-6.76-.64 1.22.25 2.4.57 3.56l-.13.05-1.04-1.57ZM103.92 29.24c.75 1.77 1.95 1.35 2.73 2.5-.66-.2-1.23-.4-1.8-.58-.03 1.89 2.36 2.08 3.69 2.8-.22-3.04-1.71-4.2-4.62-4.72ZM97.01 26.05c.82 0 2 .52 2.68.05.01-2.57-3.16-2.23-4.96-2.29.54.97 1.22 1.92 2.28 2.24ZM88 62.7l-2.05-.15.07.91c.41.1.76.2 1.14.28.11 2.12-1.07 2.16-2.66 1.27-.48 2.69 3.9 2.42 3.5-2.3ZM86.49 54.14c-2.42 2.92-2.44 3.35 1.24 4.6l-.08-.8a7.35 7.35 0 0 1-2.07-.9l1.34-1.64-.43-1.26ZM75.24 43.48l1.11-.09c.39-1.43-.43-1.58-1.42-2.35-.4 1.18-1.45 1.76-2.05 2.76a2.5 2.5 0 0 0 2.08-1.12l.28.8ZM80.8 49.96c.34-.94 2.16-3.26 1.18-3.99-.45.27-1.4.16-1.3.86-.02 1.03-.01 2.06-.01 3.09l.12.04ZM98.87 23.63l.11-.16c-1.02-1.44-1.46-1.73-3.26-1.74.03 1.74 1.86 1.75 3.15 1.9ZM94.26 19.3c-.07 1.24.98 1.95 2.7 1.86-.44-1.25-1.34-1.92-2.7-1.85ZM90.2 32.13c-1.4-.65-2.55.17-3.97-.13.4 1.94 2.74.53 3.98.13ZM92.9 17.34c.36 1.24.85 1.5 2.14 1.33-.41-1.02-1.08-1.43-2.15-1.33ZM93.59 16.7c-.5-1.06-.76-1.2-1.82-1.09.44 1.05 1.07 1.44 1.82 1.09ZM87.13 51.13l1 1.69c1.3 0 .2-1.07-.1-1.53-.17-.18-.54-.18-.81-.27l-.09.11ZM83.4 52.62c.66-.38 1.34-.67 1.94-1.14l-.4-.56c-.57.55-1.9.73-1.55 1.7ZM92.01 14.98c.19-.67-.78-1.57-1.47-1.3.09.75.88 1.4 1.47 1.3ZM77.16 52.33ZM26.88 26.49c.36-.34-.19-.88-.53-.54-.36.33.18.88.53.54ZM27.35 27.47c.36-.33-.18-.88-.53-.54-.36.34.18.88.53.54Z"/><path d="m24.87 23.04-.86.06.45 1.12.6-.7.12.05.08 1.49c.16 1.3 2.16.5 1.36-.55l-.96-1.13a.43.43 0 0 0 .05-.11l.92.1-.45-1.12-.66.54a.5.5 0 0 0-.11-.05l-.08-1.07-1.1.43.69.83a.48.48 0 0 0-.05.11ZM22.42 28.86c.55.01.56-.85.01-.85-.55-.01-.56.85-.01.85ZM22.33 29.96c.55.02.56-.85 0-.84-.54-.02-.55.84 0 .84ZM24.1 26.2c.56 0 .57-.85.02-.85-.55-.01-.56.84-.01.84ZM22.77 27.85c.56.02.57-.84.01-.84-.54-.01-.56.85 0 .84ZM27.95 28.9c-.03-.42.28-1.25.28-1.25l-1.75.69s.8.4 1.08.72c-.37.13-.73.2-1.24-.04l.68 1.34c.15-.6.46-.94.7-.99.73 1.12-1.1 2.35-1.9 1.4-.22-.4.05-.84.52-.5-.07-.83-.8-.83-1.02-.22.02-.85-.2-1.36-1.1-1.61-.23.85.06 1.36.92 1.72-.5-.06-1.02.41-.36 1.01 0-.53.46-.6.7-.23.4.99-.78 1.37-1.75.37.22-.08.44-.05.75.02l-.92-1.15c.05.4.02.7-.07.88-.2-.23-.26-.43-.34-.87l-.7.61a8.22 8.22 0 0 1 2.34 2.38c1.22-1.2 6.16-3.23 8.06-3.17a8.09 8.09 0 0 1 .05-3.33l-.93.04c.25.38.34.56.35.86a1.78 1.78 0 0 1-.66-.6l.13 1.47c.18-.26.32-.44.53-.53 0 1.39-1.12 1.91-1.53.93-.07-.43.3-.7.67-.31.07-.89-.64-.87-.95-.5.37-.84.22-1.41-.54-1.87-.48.8-.28 1.32.33 1.92-.6-.3-1.12.2-.6.85.11-.56.61-.43.72.01.1 1.24-2.1 1.58-2.33.27.2-.12.67-.08 1.18.26l-.43-1.44c-.21.52-.51.71-.87.87ZM51.05 74.28l2.07 1.17c-1.65 1.99 1.31 2.84 1.15.91 1.1.47 5.45 1.79 3.7-.78-5.7.19-8.6-5.73-5.45-10.26 1.92.87 8.66-2.37 8.1.93.35.36.45.4 1.25.4 1.95-4.44-4.76-3.12-7.17-2.6-2.15.63-4.12-2.48-6.02-.77-.75.66-.26 2.13.76 2.18.9.02 1.17-1.22.36-1.6 1.77-.6.92 2.22.28 2.94-2.03-1.04-2.37 2.2-.36 1.35.09.58.12 1.15-.02 1.7-2.2-.47-1.61 2.65.03 1.4.47.44.7 1.13.75 1.8-2.2.3-.44 3.1.58 1.23Z"/><path d="m57.42 77.66-.3-.1c-.16.4-.4 1.16-.03 1.41l1.85.79L61.3 78l.64-9.41-.7.05c-.19.02-1.48 10.88-2.15 10.24.13-.72 1.7-10.24 1.7-10.24l-.7-.1-.08.5-2.62-3.4-.34.16 2.8 3.65-.18.65c-.26-.17-2.96-3.88-3.23-4.23l-.55-.04 3.64 4.7-.2.63-4.08-5.31h-.52l4.42 5.76-.23.83-4.86-6.53-.64.01 5.37 7.02-.2.65-5.92-7.67-.1.6s5.51 7.18 5.85 7.65c-.28.88-.06.96.33 1.69.2.82-.36 2.09-1.34 1.79Z"/><path d="m57.98 74.67-5.68-7.45s-.1.36-.16.51l5.44 7.13.4-.19ZM52.29 69.74c1.3 1.64 2.6 3.32 3.87 4.98.2.02.55.1.55.1l-4.63-6.08s-.08.62.2 1ZM62.18 66.97c-.63-.05-1.3-.18-1.9-.24-1.2 1.03.14 1.62 1.03 1.54.77.2 1.79-.8.87-1.3ZM61.99 93.54c-.19.84 1.15 1.11 1.31.26.19-.84-1.15-1.1-1.31-.26ZM63.2 88.49c.22-1.04-1.44-1.38-1.64-.33-.23 1.04 1.43 1.38 1.63.33ZM57.53 85.7c.23-1.03-1.43-1.37-1.63-.32-.23 1.04 1.43 1.38 1.63.33ZM66.64 95.91c-.67 3.76-2.48 5.46-4.1 5.46-1.6 0-3.42-1.7-4.1-5.46.21.19.41.44.64.74l.35.45.5-.3c.2-.13.41-.24.6-.31-.21.43-.29.95-.18 1.48a2.28 2.28 0 0 0 2.2 1.93c1.08 0 1.98-.8 2.2-1.93.1-.53.02-1.05-.2-1.48.2.07.4.18.61.3l.5.31.35-.45c.23-.3.42-.55.63-.74m.79-1.02c-.95.1-1.43.72-1.93 1.37a3.22 3.22 0 0 0-1.57-.54c-.3 0-.57.08-.82.27 1.73.68 1.11 3.27-.57 3.27-1.68 0-2.3-2.59-.57-3.27-.24-.2-.52-.27-.82-.27a3.2 3.2 0 0 0-1.57.54c-.5-.65-.98-1.28-1.93-1.37.52 4.74 2.7 7.11 4.89 7.11 2.18 0 4.37-2.37 4.89-7.11ZM51.8 82.46c.73-.86-1.81-1.98-2.18-2.46-.3-.18-.68-.14-.88.12-.72.82 1.77 1.96 2.11 2.42.31.24.74.2.96-.08Z"/><path d="M51.48 84.3c2.8 0 2.44-4.4-.32-3.93 1.28.69 2.4 2.5.4 3.03-.75.15-1.52-.65-2.07-1.04.02 1.07.9 1.94 2 1.94Z"/><path d="M47.5 85.03c.61 1.16 4.22 4.31 5.2 2.82-1.76-.88-4.74-3.05-3.6-5.82-2.59-1.57-.3-4.08 1.72-1.95 2.14-1.31 4.53-.37 6.65 1.08.76-1.62-2.94-2.75-3.8-3.23-1.08-.36-4.51.4-5.66.46-.78.1-1.34.79-1.27 1.56.17.83.14 4.42.76 5.08ZM79.27 22.87l1.6.5a19.58 19.58 0 0 0-12.7-10.61c-.14.36-.26.76-.37 1.17 4.88 1.22 9 4.5 11.47 8.94ZM46.36 23.38l1.6-.5a18.3 18.3 0 0 1 11.47-8.95c-.12-.41-.24-.8-.38-1.17a19.58 19.58 0 0 0-12.7 10.62ZM75.62 14.87c1.14.02 1.14-1.75 0-1.74-1.14-.01-1.14 1.76 0 1.74ZM71.6 12.6c1.13.02 1.13-1.75 0-1.74-1.15-.01-1.15 1.76 0 1.74ZM69.4 11.82c1.15.01 1.15-1.76 0-1.74-1.13-.02-1.13 1.75 0 1.74ZM73.67 13.62c1.14.02 1.14-1.75 0-1.73-1.14-.02-1.14 1.75 0 1.73ZM77.42 16.32c1.14.02 1.14-1.76 0-1.74-1.13-.02-1.13 1.76 0 1.74ZM81.98 22.85c-.02 1.13 1.78 1.13 1.76 0 .02-1.12-1.78-1.12-1.76 0ZM80.92 20.81c-.02 1.13 1.77 1.13 1.76 0 .01-1.13-1.78-1.13-1.76 0ZM79.06 17.95c1.14.01 1.14-1.76 0-1.74-1.14-.02-1.14 1.75 0 1.74ZM79.65 18.87c-.02 1.13 1.77 1.13 1.76 0 .01-1.12-1.78-1.12-1.76 0ZM51.6 14.87c1.14.02 1.14-1.75 0-1.74-1.14-.01-1.14 1.76 0 1.74ZM49.8 16.32c1.14.02 1.14-1.76 0-1.74-1.14-.02-1.14 1.76 0 1.74ZM44.36 23.72c1.14.02 1.14-1.75 0-1.73-1.14-.02-1.14 1.75 0 1.73ZM53.55 13.62c1.14.02 1.14-1.75 0-1.73-1.13-.02-1.13 1.75 0 1.73ZM46.7 19.74c1.14.02 1.14-1.75 0-1.73-1.14-.02-1.14 1.75 0 1.73ZM45.43 21.68c1.14.02 1.14-1.76 0-1.74-1.14-.02-1.14 1.76 0 1.74ZM57.82 11.82c1.14.01 1.14-1.76 0-1.74-1.14-.02-1.14 1.75 0 1.74ZM48.16 17.95c1.14.01 1.14-1.76 0-1.74-1.14-.02-1.14 1.75 0 1.74ZM55.63 12.6c1.14.02 1.14-1.75 0-1.74-1.14-.01-1.14 1.76 0 1.74ZM65.12 20.68h1.17c0-3.67.54-6.85 1.5-8.95.33-.67-.75-1.17-1.06-.48-1.4 3.03-1.6 7.2-1.6 9.43ZM60.93 20.68h1.17c0-2.23-.21-6.4-1.61-9.43-.31-.69-1.4-.2-1.07.48.97 2.1 1.5 5.28 1.5 8.95ZM63.61 20.66c1.24.02 1.24-1.9 0-1.88-1.23-.02-1.23 1.9 0 1.88ZM63.61 18.3c1.24.02 1.24-1.9 0-1.88-1.23-.02-1.23 1.9 0 1.88ZM63.61 15.94c1.24.02 1.24-1.9 0-1.88-1.23-.02-1.23 1.9 0 1.88ZM62.94 13.64c.4-.21.94-.21 1.35 0 1.36-2.08-2.72-2.08-1.35 0Z"/><path d="M64.37 11.66c1.06-1.96-2.58-1.95-1.51 0a1.52 1.52 0 0 1 1.5 0Z"/><path d="M63.04 3.73c-.16 1.2-.8 2.13-1.59 2.28v.3H63a1.1 1.1 0 0 0-.2.2c-2.75.6-3.03 4.76-.4 5.74-1.03-.99-.24-2.87 1.21-2.82 1.45-.05 2.24 1.83 1.21 2.82 2.64-.98 2.35-5.14-.4-5.75a.97.97 0 0 0-.2-.19h1.55v-.3c-.8-.15-1.43-1.08-1.58-2.28 1.21.15 2.16.78 2.3 1.56h.31V1.02h-.3c-.15.78-1.1 1.41-2.31 1.57.15-1.2.79-2.14 1.58-2.28V0h-4.32v.3c.8.15 1.43 1.08 1.59 2.29-1.22-.16-2.16-.79-2.3-1.57h-.32v4.27h.31c.15-.78 1.09-1.41 2.3-1.56ZM101.14 70.59h.01l-.28-.49c.03.2.12.38.27.49ZM100.42 72.4c-1.22-.76-1.9 2.59-2.35 3.16-.22.49-.03 1.02.42 1.17l-.9 1.85c-.48-.08-.9.29-.9.84.18.72-.55 3.85.74 3.89v.86c-3.1.56-2.64 5.39.55 5.31 3.17.08 3.66-4.71.6-5.3v-.83c.48.08.9-.28.9-.84-.17-.7.49-3.71-.65-3.87l.69-1.41c1.16.62 1.84-2.64 2.28-3.2.2-.45.05-.97-.36-1.14l.52-1.06c-.14-.2-.44-.64-.73-1.1l-.81 1.67Zm-.58 14.4c-.75 4.3-6.34.04-2.34-1.78.19.42.82.44 1 .02.78.22 1.34.93 1.34 1.76Zm-1.27-4.4c.08-.62-.73-.96-1.05-.44.09-.23-.22-2.57.22-2.57.18.13.42.16.62.01.14.03.24.16.24.32v2.53l-.03.15Zm2.36-8.53c-.14.15-1 2.6-1.3 2.5-.11-.2-.38-.33-.61-.26-.13-.06-.18-.24-.11-.4.16-.17.97-2.67 1.34-2.5.1.24.4.4.64.33.07.08.09.21.03.33ZM38.28 66.98l.27 1.05 4.85-.6-.24-.94c-.24-.05-3.26.5-3.26.5s2.87-3.32 2.8-3.71l-4.9.55.1.83 2.88-.4s-2.39 2.67-2.5 2.72ZM40 73.13c2.35 2.22 6.03-1.33 3.6-3.61-2.34-2.25-6.08 1.33-3.6 3.61Zm.28-2.47c1.03-1.85 4.45-.75 3.03 1.35-1.06 1.79-4.42.78-3.03-1.35ZM43.26 78.37l.82 1.12a11.23 11.23 0 0 1 3.94-2.83l-.82-1.12a5.73 5.73 0 0 1-1.55 1.4l-1.26-1.72c.53-.4 1.23-.9 1.82-1.03l-.82-1.12a11.23 11.23 0 0 1-3.94 2.82l.82 1.12a5.7 5.7 0 0 1 1.55-1.38l1.25 1.72c-.53.39-1.22.88-1.81 1.02ZM42.8 61.64l.06-1.02c-1.38.26-3.61.25-4.99-.01l-.07 1.02c1.39-.25 3.62-.25 5 .01ZM77.96 82.36c2.97-1.29 2.3-4.2-1.04-2.87-1.4-.4.37-1.8 1.3-1.5l.02-.01-.7-.82c-1.05.45-2.73 1.85-1.84 3.04.62.78 1.87-.05 2.69-.04 1.36.24-.1 1.64-.94 1.56l-.02.02M86.09 72.17l.84-2.82c-.43.03-4.28-1.08-4.62-1.33l-.8 2.68.8.68.02-.01c-.06-.62.03-1.32.25-2.09l1.47.42c-.15.42-.4 1.38-.6 1.63l.72.1.47-1.56 1.4.4c-.17.52-.4.93-.7 1.22l.75.68ZM84.14 75.93l.46-.87-3.8-2.52-.42.79c.15.18 2.62 1.63 2.62 1.63s-4.08.53-4.27.84l3.8 2.58.44-.64-2.28-1.46s3.34-.38 3.45-.35ZM73.66 85.15l2.64-1.52c-.34-.25-2.4-3.58-2.47-3.99l-2.5 1.44.1 1.02h.02c.4-.5.96-.94 1.68-1.36l.78 1.27c-.41.2-1.28.74-1.61.79l.46.56 1.46-.84.75 1.2c-.5.28-.95.42-1.38.44l.07.99ZM44.19 52.1c-.8-.62-1.8.48-2.6.66-1.38.08-.3-1.61.54-1.73V51l-.66-.49c-1.24.63-2.19 3.3-.18 3.36.43.02 1.52-.73 1.88-.81.94-.18.64 1.08.08 1.38.28-.02.57-.05.84.02.53-.73.86-1.8.1-2.37ZM45.16 50.66c-2.2-.14-2.66-3.9 0-3.34v-.91c-3.45-.2-3.4 5.22 0 5.1v-.85ZM50.64 43.99h1.52l-1.04-1.64c.53-.3 1.65-.75 2.15-.72l-1.2-.9-3.67 2.17.42 1.4h.02c.3-.57.74-1.04 1.23-1.3l.56.99ZM61.37 43.36l.01.02c-.73.58-1.67.34-2.45-.07-2.3 1.27-4.76-1.71-2.93-3.62 1.94-2.28 5.77.3 3.92 2.82.6.46 1.09.74 1.45.85Zm-2.8-.73c1.84-.71.24-3.53-1.39-2.86-1.82.69-.25 3.53 1.39 2.86ZM62.06 41.34c-.01-.78.1-2.16-.24-2.83h1.64c-.27.72-.74 4.06.66 3.9.55 0 1.1-.38 1.08-.95-.02-.8.1-2.27-.24-2.96h1.64a9.8 9.8 0 0 0 0 4.72H65.2c.03-.1.05-.25.05-.47-1.42 1-3.33.5-3.2-1.41ZM68.99 43.66c.29-1.16.7-3.13 1.35-4.11l-1.27-.42c.01 1.24-.66 3.18-1.09 4.37l1.01.16ZM76.74 59.37h.8V46.62h-11.9v12.75h11.1ZM72.19 59ZM71 59Zm6.15-6.56Zm-11.1 1.12v.12c.02-.24.41-.06.22.1l.06.06c.4.05.45-.54.05-.56v-.01l.48-.2v-.15l-.48-.2v-.02c.4-.02.34-.6-.05-.56l-.06.06c.2.17-.2.34-.22.1v.15-5.07h.4V47h4.42c.25.04.04.37-.12.2l-.06.06c-.05.38.6.4.6.02l.24.47h.15l.22-.47c0 .39.65.36.6-.02l-.05-.06c-.16.17-.37-.16-.12-.2h4.42v.38h.4c-.04-.09.16 6.22-.21 4.82l-.06-.06c-.4-.04-.45.54-.05.57l-.48.22v.14l.48.2v.01c-.4.02-.34.6.05.56l.06-.06c.37-1.43.17 5.02.21 4.84h-.4V59h-4.42c-.25-.04-.05-.38.12-.2l.06-.06c.05-.38-.59-.42-.6-.04h-.01l-.23-.45h-.15l-.22.45h-.01c-.02-.38-.64-.34-.6.04l.06.05c.17-.17.37.17.11.2h-4.4v-.37h-.41v-5.06Z"/><path d="M79.3 59.86c.01-.26-.29-.46-.54-.37v.06c-.48 2.1-.25-6.56-.29-6.24l.44.18v-1.01l-.44.18v-6.39c.07-.32.57-.04.3.16v.06c.59.19.76-.75.12-.76l.4-.68-.1-.1s-.7.4-.71.39c-.01-.58-1-.44-.82.13h.06c.21-.26.52.2.18.26h-5.95l.18-.4h-1.08l.19.4H65.3c-.36-.05-.06-.52.16-.27h.06c.2-.56-.81-.7-.82-.12l-.72-.38-.1.09.4.68c-.63 0-.46.95.14.76v-.06c.46-2.1.24 6.52.28 6.22l-.42-.17v1l.42-.16c-.04-.16.18 8.28-.28 6.23v-.06c-.6-.18-.77.75-.14.76l-.4.68.1.1c.01 0 .71-.4.72-.39 0 .59 1.01.44.82-.12h-.06c-.1.13-.34.06-.34-.1 0-.09.07-.16.16-.17h5.96l-.19.4h1.08l-.19-.4h5.95c.09.01.16.08.16.17 0 .16-.24.23-.34.1h-.06c-.19.56.81.7.82.12l.71.38.1-.09-.4-.68c.23 0 .42-.17.42-.39Zm-7.2-13.74h5.96v13.75H65.12V46.13h6.98ZM77.13 53.68v.01ZM77.13 52.3ZM66.06 53.7v-.02.01ZM66.06 52.3ZM23.05 29.52l.28-.23a3.93 3.93 0 0 1 1.58-2.87 3.77 3.77 0 0 0-.18-.23 4.24 4.24 0 0 0-1.68 3.33ZM25.84 27.87l.27-.1a5.81 5.81 0 0 0-1.15-2c-.13-.13-.34.07-.21.2.4.4.79 1.07 1.09 1.9ZM23.35 26.94c.55.01.56-.85 0-.85-.54 0-.56.85 0 .85ZM31.47 25.12c-.38.4-1.01-.19-.62-.58.37-.4 1 .2.62.58ZM32.32 25.83c-.38.4-1-.2-.61-.59.37-.4 1 .2.61.59ZM28.36 24.45c-.38.4-1-.2-.62-.59.38-.4 1 .2.62.59ZM30.5 24.67c-.38.4-1.01-.2-.62-.59.37-.4 1 .2.62.59ZM31.5 26.03l-.36.04a4 4 0 0 0-3.18-.9l-.04-.29c1.26-.2 2.57.23 3.59 1.15ZM28.28 26.84l-.25.14a5.8 5.8 0 0 1-.64-2.22c0-.19.29-.2.29-.02 0 .56.22 1.31.6 2.1ZM29.43 24.43c-.38.4-1-.19-.62-.58.38-.4 1.01.2.62.58ZM75.3 69.76c1.23-.02 4.1-1.36 2.02-2.48-1.17-.2-2.33.37-3.45.63-4.52 1.78-1.87-.4-4.67-.16.94 2.37 3.33 1.15 5.12.6.06.26-.27.32-.23.58l1.74-.36c.25-1.16 2.4-1.17 1.41 0-2.47 1.06-5.39.86-7.97 1.59-1.73 4.48-4.74 1.43-4.71 2.72-.68.06-.67.7.02.65.02 1.3 3.35-.2 3.97-.6l.43-.9c1.01.48 1.73-.96 2.6-1.22.88-.17 2.02-1.02 2.77-.24.83.91 2.07-.47 2.8.44-.27.71.09.4.21.84 0 .4.66.4.67 0 0-.18.02-.29.2-.36.37-.56-.42-1.17-.7-1.64-.6-.58-1.62.53-2.23-.09Z"/><path d="M64.13 67.79c.2.07.13.3.22.42 1.07.07 2.13-.2 3.2-.34.8 0 .78-.7 1.37-.8 1.41.08 2.3-1.16 3.63-1.36 1.07-.3 2.51-.7 3.46.05.23.25.56.3.9.24.45-.08 1-.18 1.23.34l-.26.27.16.32c.22-.01.25.16.34.3.12.2.4.2.45 0 .05-.25.31-.12.4-.34.03-.64-.1-1.45-.76-1.77-.32-.3-1.6.31-1.63-.31.95.21 2.76-1.01 1.51-1.8-2.11-.5-4.43.52-6.58.76-.84.19-.42-1.18-2.29-.8 1.2 2.47 3.8.72 5.8.7.02.22-.38.2-.28.48.58-.18 1.58.13 1.91-.45.18-.7 1.68-.53 1.24.28-1.12.7-2.8.38-4.12.53-1.61.13-3.37.17-4.89.73-.3.93-.71 1.88-1.8 2.1-.75-.72-1.85.14-2.66-.6-.26.05-.31.2-.42.4-.4.16-.53.38-.12.65ZM76.04 74.3c-2.12-.26-1.8 1.18-2.84.84.19-.23.7-.36.54-.7-1.55.66-3.18 1.14-4.72 1.83-.79.83-.53 2.47-2.3 2.62-.06.86-1.28 1.44-2.03 1.05-.3.28-.17.36-.12.62-.26.23-.6.75-.05.75.17-.04.3-.3.48-.21l-.04.35c.15 0 .35.04.4-.02.24-.3.59-.05.86-.29.91-.6 2.21-1.16 2.14-2.42 1.6-.7 2.54-3.27 4.63-2.37 1.04.56 1.32-1.1 2.25-1.14.26.61.38.56.72.36.58.44.48-.26.71-.58.03-.32-.3-.69-.63-.68Z"/><path d="M66.48 64.23c-.34.95 0 2.21.9 2.74a2.48 2.48 0 0 0 1.32-2.88c.24-.2.54-.3.45-.65-.16-.38-.77-.1-.92-.54-.39-.52-.9-.1-1.2.25-.24.03-.47-.09-.69.02-.22.4.4.65.14 1.06ZM66.21 77.55c1 2.36 2.5-.64 2.12-1.91.69-.56.5-.9-.33-.95-.3-.62-.93-.68-1.36-.16-.16.19-.38.12-.58.14-.43.2-.2.66.18.76-.2.72-.31 1.43-.03 2.13ZM68.95 68.81c-.2-.11-.44-.12-.65-.1-.36-.91-1-.57-1.51-.02-.77-.3-.66.38-.25.75-.38.93-.12 2.32.88 2.72 1.06-.44 1.35-1.7 1.28-2.73.33-.05.6-.42.25-.62ZM76.52 71.9c-1.9-.63-4.87 3.44-6.13 2.24-.3-.66-1.24-.58-1.83-.4.7.5 1.1 1.62 2.18 1.25 1.21-.23 2.17-1.2 3.22-1.65.03.35-.33.5-.48.83.72-.23 1.37-.43 1.9-.88-.09-1.97 2.76-.6.03.62.49.01.82.23 1.15-.17.63-.55.66-1.35-.04-1.85ZM72.22 76.46c-.56.13-1.11.18-1.46.74l.42.55c-.27.68-.95.57-1.6.6l.14.47c-.27.15-.38.39-.32.72l.24.08c.18-.22.5-.44.58-.03a4.57 4.57 0 0 0 2.76-2.15 2.03 2.03 0 0 1-.76-.98Z"/><path d="M70.69 72.4c-.25 0-.3.31-.13.46.16.18.33-.02.52.03l.01.28c1.02.06 2.55-.84 3.1-1.65l-.64-.97c-.55.18-1.18.16-1.5.66l.56.59c-.38.2-.8.55-1.21.22-.17-.15-.63-.08-.51.2.01.05-.01.1-.02.16l-.18.02ZM66.37 78.52c-.38-.73-.97-1.39-1.24-2.15.33-.47.18-1.06-.45-.68-.15-.32-.39-.38-.68-.3-.08.2-.13.4.1.55l-.01.1-.2.06c-.16.4.24.63.38.94.44.7 1.09 2.35 2.1 1.48ZM66.37 66.55c-.06-1-1.23-1.65-.88-2.66.1-.19.07-.41-.13-.56a.73.73 0 0 1-.6-.08c-.44-.21-.5.27-.46.58l-.29.13c.3.86 1.22 3.03 2.36 2.59ZM64.1 69.96c.43.65.55 1.69 1.29 2.06.33 0 .85.3 1.05-.09-.22-.77-1.19-1.22-1.05-2.1.05-.21-.03-.42-.2-.6-.38.1-1.16-.73-.88.27-.23.08-.37.24-.2.46ZM47.32 49.85c.16.01.32-.17.49 0l-.05.25c1.03.45 2.17-.05 3.2-.33.4-.12.63-.53 1.07-.52 1.06.08 1.66-.8 2.57-1.05 1.12-.22 2.26-.4 3.4-.37 1.32 1.78 1.56.27 2.74.87l-.1.53.3.1c-.11.44.55.7.64.14.02-.07-.02-.15.08-.17.7-.37-.38-2.21-1.12-1.73-.38.18-.88.35-1.18-.1.66-.26 1.47-.2 1.91-.8.34-.4.3-1.2-.33-1.42-1.65-.45-3.4.37-5.06.52-3.13.84-.9-.67-3.38-.65.89 2.51 3.56.9 5.41.71-.13.3-.44.4-.56.67.66-.12 1.52.12 2-.38.26-.69 1.92-.77 1.52.17-1.56 1.51-6.45.1-8.63 1.06-.33.99-.9 1.64-1.86 1.91-.77-.48-1.13.07-1.9-.15-.22-.23-.44-.5-.78-.24v.36c-.36-.1-.78.4-.38.63Z"/><path d="M50.03 46.02c-.58 1.04-.4 1.99.28 2.87 1.28.04 1.8-1.7 1.6-2.74l.39-.27-.1-.38-.65-.03c-.47-.6-.75-.6-1.3-.07-.25-.1-.46-.03-.63.19.09.19.21.33.41.43ZM56.3 48.27c-.06.29.2.42.26.64-.35.22-.72.24-1.09.28-.19-.19-.27-.53-.6-.43-.2.04-.09.24-.23.32-.25-.02-.39.1-.43.35l.35.2c-.28 1.31 3.34-.05 3.87-.44-.17-.3-.4-.5-.47-.84-.15-.58-1.22-.1-1.66-.09ZM49.53 48.43c-.04-.46-.16-1-.52-1.32-.41-.42-.55-1-.13-1.44-.2-.2-.49-.04-.7-.32-.25-.3-.41.05-.47.36-.74.1-.32.35-.15.73.24.68 1.11 2.3 1.97 1.99ZM60.45 53.33c-.38.18-.89.35-1.18-.1.65-.26 1.47-.2 1.92-.8.34-.41.3-1.22-.34-1.44-1.66-.46-3.42.38-5.1.52-3.15.85-.9-.67-3.4-.66.9 2.54 3.58.91 5.45.73-.13.3-.44.4-.57.68.66-.13 1.53.12 2.03-.39.25-.7 1.92-.78 1.53.17-1.58 1.52-6.51.1-8.7 1.07-.34 1-.92 1.65-1.88 1.92-.67-.4-1.02-.07-1.6-.1.03.2.09.37.13.55.05.19.07.37.08.56.67-.07 1.34-.32 1.96-.49.41-.12.64-.53 1.1-.52 1.06.07 1.67-.81 2.58-1.07a16.9 16.9 0 0 1 3.44-.37c1.32 1.8 1.56.27 2.75.88l-.1.53.3.1c-.1.45.56.71.65.15.01-.07-.02-.16.08-.17.71-.38-.38-2.23-1.13-1.75Z"/><path d="M49.86 51.76c-.59 1.06-.42 2.01.28 2.9 1.29.04 1.82-1.7 1.6-2.77.14-.09.27-.17.4-.27l-.1-.38-.66-.03c-.46-.6-.75-.6-1.3-.07-.26-.1-.47-.03-.64.2.1.18.21.33.41.42ZM56.17 54.03c-.05.3.22.42.27.66-.35.22-.73.23-1.1.28-.19-.2-.27-.54-.6-.44-.2.05-.1.25-.24.33-.25-.02-.4.1-.43.34l.35.21c-.28 1.32 3.37-.05 3.9-.45-.17-.3-.4-.5-.47-.84-.15-.58-1.23-.1-1.68-.09ZM49.35 54.2c-.04-.47-.16-1.01-.53-1.33-.41-.43-.54-1-.12-1.46-.21-.2-.5-.04-.7-.32-.27-.3-.42.05-.49.36-.74.11-.31.35-.14.74.24.68 1.12 2.3 1.98 2ZM60.58 58.73c-.38.18-.88.35-1.18-.1.65-.27 1.47-.2 1.92-.81.33-.4.3-1.21-.34-1.43-1.66-.45-3.41.38-5.1.52-3.14.85-.9-.67-3.4-.65.9 2.53 3.59.9 5.45.72-.13.3-.44.4-.56.67.66-.12 1.53.12 2.02-.38.25-.7 1.92-.78 1.53.17-1.57 1.52-6.5.1-8.7 1.07-.32.99-.9 1.65-1.86 1.92-.79-.48-1.14.06-1.93-.15l-.23-.24a.15.15 0 0 1-.06-.04.48.48 0 0 0-.1-.05l.02.04c.01.45-.1.9-.28 1.31 1.02.4 2.14-.09 3.15-.36.4-.12.64-.53 1.09-.52 1.06.08 1.67-.8 2.58-1.06 1.13-.21 2.28-.39 3.43-.37 1.32 1.79 1.56.27 2.75.88l-.1.52.3.11c-.1.45.56.7.65.14.01-.07-.02-.16.08-.17.7-.38-.38-2.23-1.13-1.74Z"/><path d="M50 57.16c-.58 1.06-.41 2 .28 2.9 1.3.04 1.82-1.7 1.6-2.77.14-.09.27-.17.4-.27l-.1-.38-.65-.03c-.47-.6-.75-.6-1.31-.07-.26-.1-.47-.03-.64.2.1.18.22.33.42.42ZM56.3 59.43c-.05.3.22.42.27.65-.35.22-.72.24-1.09.28-.2-.19-.27-.53-.61-.43-.2.04-.09.24-.23.32-.25-.02-.4.1-.43.35l.35.2c-.28 1.32 3.36-.05 3.9-.44-.18-.3-.4-.5-.47-.85-.15-.58-1.23-.1-1.68-.08ZM48.97 58.26a1.56 1.56 0 0 1-.2-.25c-.03.24.1.51.06.74-.04.19-.09.46-.14.63.3.3.47.33.8.21-.04-.46-.15-1-.52-1.33ZM67.88 48.96c.28.18.5 1 .67 1.12.32.42 1 1.55 1.66 1.32v-.02c.2-.08.38-.65.4-.73-.01-.02-.12-.12-.25-.22-.62-.53-1-1.06-1-1.55-.04-.16.35-.38.32-.53-.02-.56-.49.07-.67-.02-.1-.16-.45-.62-.67-.4-.13.06.03.4-.07.47-.05.07-.08.08-.23.07-.5 0-.57.3-.16.5Z"/><path d="M70.54 52.75c.17-.17.67-.65.73-.76.05-.11.07-.11.42-.14.97-.14 1.46-.53 1.74-1.56.13-.31-.04-.98-.24-1.13-.08-.05-.11-.15-.06-.19.18-.02.55-.17.62-.38-.1-.2-.36-.05-.7-.16-.25-.11-.92-.32-1.2-.17-.18.23-1.32.25-1.11.59l.12.4.52.07v.37l-.48.1c-.31.45.73.48 1 .14.19-.22.48-.25.47-.01-.14.3-.64.44-.93.59-.44.07-.55.92-.89 1.2-.95.17-1.29.15-2.23-.6-.34-.4-.61-.1-.35.2-.17.06-1.04-.43-.65.4l.06.08c-.43.61.21.4.57.6.77.3 1.6.52 2.6.36Z"/><path d="m73.59 52.15.4.83s.86.38.98.5c.49.35.4 1.32-.03 1.21-.72-.29-1.15-1.3-1.65-1.92-.13-.1-.47-1.11-.7-.85-2.96.65.54 1.4 0 2.5-.1.15-.43.9-.3 1.02.25.3.8.53 1.1.91.48.47.05 1-.55.57-.34-.25-.74.11-.4.45.03.06-.2.16-.24.19-.35.48.23.45.54.21.17-.08 0 .42.29.34.54-.12 1.37-.39 1.52-1.23.34-.76-.44-.64-.63-1.31-.2-.28-.21-1.29.21-.92.4.5.92.77 1.4.34.44-.42.04-1.42-.19-1.86-.43-.89-.92-1.74-.89-2.8.6-.7 1.3.56 1.72-1.4-1.4.09-2.78 1.02-2.09 2.58.43.88.34.81-.5.65Z"/><path d="M71.33 53.82c-.74-.04-1.3-.1-1.1.77.04.21.12.85.25 1 .05.08.04.17-.03.22-.3.17-1.43-.29-1.3-.67 0-.31-.31-.39-.4-.16-.06.1-.14.1-.25-.03-.21-.3-.5.1-.38.33.04.09-.01.18-.12.2-.31.13-.3.55.14.56.94.44 1.76.88 2.86.73h-.02c1.2-.09.59-.31.53-1.14-.2-.88 1.33-1.47-.18-1.81ZM72.46 66.5c-.08-.07-.28 0-.3.06 0 .4-.42.28-.55.56.08.16.2.3.39.28.23-.02.2.26.42.27.98-.44 2.16-.33 3-1.1-.32-.26-.4-.62-.46-1-.57.04-1.13-.04-1.62.22-.05.26.13.4.26.62-.4.17-.76.26-1.14.09Z"/><path d="M88.26 55.51c-.4-.82-1.3-5.44-2.6-4.44 5.96 11.02 1.98 25.52-8.37 32.5-3.03 1.81-6.8 4.83-10.4 2.82 2.32-8.95 13.44-5.17 15.85-22.22-.3-.14-.4-.23-.68-.28a29.17 29.17 0 0 1-1.85 6.87c.96-2.54.35-10.48.53-10.92-.1-.13-.2-.18-.53-.58.06.96 0 1.3 0 2.58H63.35V44.43H79.9v9.82a6 6 0 0 0 .1.7c.24-.37.26-.35.42-.47V43.92H45.7l-.03 8.9h.51v-8.4h16.66v17.42H46.77c-.05.05.01-.28-.04-.23 0-.05-.11.27-.11.23h-.45V60.5l-.5-.02c-.38 1.3.72 12.23 2.53 14.15-3.62-3.48-4.76-9.65-4.08-14.3 0 0-.34-.26-.71-.6-1.14 6.56 1.36 13.02 6 17.7.4.44.85-.02 1.34-.15-.1-.1-.31-.27-.46-.47l.46.47-.25-.7c-3.65-2.76-4.25-10.63-4.32-14.23h16.65s0 21.83-.02 21.88c-3.54-.17-5.94-3.98-9.36-4.02 4.92 2.88 13.9 9.83 19.58 6.78l.08.1c-.6.74-2.7 2.14-3.64 1.78-1.54-.92-3.93.76-2.83 2.47.14.2.22.37.06.64-6.14-.57-11.66-4.2-16.83-7.31l-.09.1c1.98 2.65 9.06 5.94 9.06 5.94v3.94l.75.5v-4.27c1.86.63 5.62 1.8 5.62 1.8l.01 2.66.72-.45-.04-2 1-.27a1.3 1.3 0 0 0 .97-1.41.75.75 0 0 1-.42-.87c.15-.78 1.1-.8 1.49-.33.77.34 1.52-.57 2.28-.79 1.07-.64 2.38-1.2 2.88-2.42.1-.3.26-.5.52-.64a27.42 27.42 0 0 0 6-4.3c7.52-6.29 10.14-17.1 7.64-26.35Zm-24.91 6.83H80.2c1.38 12.76-6.18 17.03-16.86 21.48V62.34Zm.3 22.8a6.99 6.99 0 0 1 3.56-1.79l-1.26 2.8-2.3-1.02ZM26.02 92.14c-.38-.23-.86-.3-1.42-.21.12.84.43 2.41.67 3.23 1.6-.23 2.07-2.2.75-3.02Z"/><path d="M47.7 86.35c-9.55.01-19.06 4.05-28.6 4.05-1.15 0-2.3-.06-3.45-.2 2.96 2.32 2.76 6.96 7.06 6.96l.58-.03c5.85-.62 11.66-2.25 17.42-3.15.99-.15 5.75-1.3 8.54-1.3 1 0 1.76.14 1.98.55.3.54-1.6 2.12-1.6 2.18-.01.02 0 .03.02.03.18 0 1.23-.6 2.02-1.11 3.11-2.22-3.41-7.98-3.97-7.98Zm-20.1 7.84c-.52 1.22-2.07 1.5-3.29 1.71.06-.38-.68-3.91-.9-4.24 2.1-.89 5.1-.02 4.19 2.53Zm1.23.74a9.99 9.99 0 0 0-.91-4.24l1.22-.26a10 10 0 0 0 .9 4.24l-1.21.26Zm4.69-1-2.5.54c.05-.37-.76-3.84-.97-4.16l2.63-.57-.21.87c-.37-.1-.8-.1-1.28 0l.3 1.25 1.45-.32.23.62c-.29-.05-1.16.17-1.56.23l.3 1.32c.72-.16 1.31-.4 1.78-.71h.01l-.18.92Zm2.56-.4c-1.82.05-2.09-2.53-2.51-3.8l.88-.16c.42 1.1.3 3.7 2.18 3.35 1.36-.6.26-2.73.12-3.76l.87-.12c.33 1.7 1.11 4.67-1.54 4.5Zm7.24-1.28-2.5.57c.05-.37-.79-3.83-1-4.15l2.63-.6-.2.88c-.37-.1-.8-.1-1.29 0l.3 1.26 1.46-.33.24.6c-.29-.04-1.16.18-1.56.26l.31 1.3c.72-.15 1.31-.4 1.78-.72l.01.01-.18.92Zm2.63-4.2.72 3.58-.84.15-.73-3.57c-.52.09-.8.09-1.5.39l-.02-.8 3.6-.46.25.68a5.68 5.68 0 0 0-1.48.02ZM91.93 90.33c-.2.8-.52 2.28-.62 3.08 1.87.4 2.45-2.7.62-3.08ZM99.27 91.6c-1.43-.36-1.9 2.6-.7 3.07 1.45.34 1.9-2.6.7-3.08ZM95.52 91.04l-.44 1.57c1.22.22 1.75-1.37.44-1.57ZM84.04 88.8c-1.5-.4-2.07 2.65-.82 3.17 1.53.4 2.08-2.64.82-3.17Z"/><path d="M105.4 90.38c-1.19 0-2.33-.02-2.88-.07-6.3-.6-12.52-2.38-18.8-3.37-1.81-.28-3.3-.55-4.58-.55-2.67 0-4.48 1.15-6.63 5.67-.91 1.73 2.15 3.37 2.83 3.44-2.52-2.13-1.64-2.76.34-2.76 2.75 0 7.62 1.2 8.57 1.33 5.75.9 11.57 2.53 17.42 3.15l.59.03c4.3 0 4.09-4.64 7.05-6.95-.53.04-2.27.08-3.9.08Zm-23.67-2.5c-.14.13-.65 3.67-.62 4.01l-.96-.18c.17-.3.4-2.77.4-2.77l-1.65 2.53-.97-2.86s-.39 2.06-.4 2.72l-.95-.13c.3-.48.9-4.12.9-4.12l.97.18c.03.2.76 2.66.76 2.66s1.3-2.15 1.38-2.26l1.14.2v.02Zm3.53 3.13c-.86 2.9-4.24 1.31-3.24-1.27.86-2.81 4.24-1.33 3.24 1.27Zm3.33 2.54c-.3-.07-1.89-3.28-1.89-3.28s-.39 2.5-.49 2.67l-.72-.1.83-3.93.8.1c0 .11 1.27 2.76 1.27 2.76l.46-2.34.62.17-.88 3.95Zm3.77.34c-.57.2-1.39-.02-1.98-.14l.8-4.04c2.65-.17 3.74 3.22 1.18 4.18Zm4.7-1.86c-.12.46-.46.77-1.02.94.24.8.39 1.06.8 1.93v.02l-.65-.1a7.54 7.54 0 0 1-1.18-1.8c-.14.5-.28 1.13-.22 1.58l-1.1-.16c.2-.31 1.06-3.62 1.03-3.97.94.12 2.64.29 2.34 1.56Zm2.1 3.2c-2.44.45-2.43-3.6-.48-4.17 2.43-.51 2.44 3.61.47 4.17Zm2.52-2.37c-.1.71-.43 2.18-.3 2.86l-.95-.14c.42-1.06.7-2.85.64-3.98l.95.13c-.16.32-.27.7-.34 1.13Zm2.25-.18s-.56 3.11-.53 3.38l-.94-.17c-.02.02.58-2.73.73-3.33a2 2 0 0 0-1.1.1h-.01l.38-.78 2.56.45.18.87a3.4 3.4 0 0 0-1.27-.52Z"/></svg>
\ No newline at end of file

Action run for 9fb4b89

Copy link

📋 Stats

File sizes

File Size
dist/govuk-frontend-development.min.css 118.41 KiB
dist/govuk-frontend-development.min.js 42.93 KiB
packages/govuk-frontend/dist/govuk/all.bundle.js 91.34 KiB
packages/govuk-frontend/dist/govuk/all.bundle.mjs 85.77 KiB
packages/govuk-frontend/dist/govuk/all.mjs 1.18 KiB
packages/govuk-frontend/dist/govuk/govuk-frontend-component.mjs 1.74 KiB
packages/govuk-frontend/dist/govuk/govuk-frontend.min.css 118.4 KiB
packages/govuk-frontend/dist/govuk/govuk-frontend.min.js 42.92 KiB
packages/govuk-frontend/dist/govuk/i18n.mjs 5.55 KiB
packages/govuk-frontend/dist/govuk/init.mjs 6.85 KiB

Modules

File Size (bundled) Size (minified)
all.mjs 81.9 KiB 40.37 KiB
accordion.mjs 25.46 KiB 12.93 KiB
button.mjs 7.96 KiB 3.31 KiB
character-count.mjs 24.39 KiB 10.5 KiB
checkboxes.mjs 7.81 KiB 3.42 KiB
error-summary.mjs 9.87 KiB 4.07 KiB
exit-this-page.mjs 19.08 KiB 9.86 KiB
header.mjs 6.46 KiB 3.22 KiB
notification-banner.mjs 8.24 KiB 3.23 KiB
password-input.mjs 17.13 KiB 7.86 KiB
radios.mjs 6.81 KiB 2.98 KiB
service-navigation.mjs 6.44 KiB 3.26 KiB
skip-link.mjs 6.4 KiB 2.76 KiB
tabs.mjs 12.04 KiB 6.67 KiB

View stats and visualisations on the review app


Action run for 9fb4b89

Copy link
Member

@romaricpascal romaricpascal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Diff looks OK ⛵

@owenatgov owenatgov merged commit 663748a into main Oct 10, 2024
52 checks passed
@owenatgov owenatgov deleted the release-5.7.0 branch October 10, 2024 10:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants