From b68eb4accb51bb328fe437453673aaa4c317ca84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=88=9A=28noham=29=C2=B2?= <100566912+NohamR@users.noreply.github.com> Date: Sat, 17 Jan 2026 14:46:26 +0100 Subject: [PATCH] Add 26.2 versioned JS files and move 15.7 files --- {html => 15.7/html}/Reader.html | 0 {js => 15.7/js}/forms/AutomaticPasswords.js | 0 {js => 15.7/js}/forms/FormMetadata.js | 0 .../js}/forms/FormMetadataClassification.js | 0 .../js}/layout/WebContentLayoutAnalyzer.js | 0 {js => 15.7/js}/metadata/MetadataExtractor.js | 0 {js => 15.7/js}/reader/Reader.js | 0 {js => 15.7/js}/reader/ReaderArticleFinder.js | 0 {js => 15.7/js}/reader/ReaderSharedUI.js | 0 .../js}/reader/ReaderSharedUINormalWorld.js | 0 {js => 15.7/js}/schema/SchemaDataExtractor.js | 0 .../js}/schema/SchemaOrgMarkupChecker.js | 0 {js => 15.7/js}/search/OpenSearchURLFinder.js | 0 {js => 15.7/js}/translation/Translation.js | 0 {js => 15.7/js}/utilities/NodePath.js | 0 ...geInliningOrDiscardingExternalResources.js | 0 26.2/js/forms/AutomaticPasswords.js | 30 + 26.2/js/forms/FormMetadata.js | 5188 ++++++++++ 26.2/js/forms/FormMetadataClassification.js | 674 ++ .../FormMetadataContactsAutoFillMappings.js | 9051 +++++++++++++++++ 26.2/js/forms/FormMetadataJSController.js | 617 ++ 26.2/js/forms/FormMetadataUtilities.js | 42 + 26.2/js/forms/PasswordRulesParserJS.js | 374 + 26.2/js/layout/WebContentLayoutAnalyzer.js | 71 + 26.2/js/metadata/MetadataExtractor.js | 104 + 26.2/js/reader/Reader.js | 23 + 26.2/js/reader/ReaderArticleFinder.js | 5092 ++++++++++ 26.2/js/reader/ReaderShared.js | 28 + 26.2/js/reader/ReaderSharedUI.js | 2678 +++++ 26.2/js/reader/ReaderSharedUINormalWorld.js | 37 + 26.2/js/schema/SchemaDataExtractor.js | 249 + 26.2/js/schema/SchemaOrgMarkupChecker.js | 20 + 26.2/js/search/OpenSearchURLFinder.js | 22 + .../search/QuickWebsiteSearchURLDetector.js | 189 + 26.2/js/translation/Translation.js | 5 + 26.2/js/utilities/NodePath.js | 749 ++ ...geInliningOrDiscardingExternalResources.js | 145 + DEV.md | 45 + README.md | 14 +- 39 files changed, 25445 insertions(+), 2 deletions(-) rename {html => 15.7/html}/Reader.html (100%) rename {js => 15.7/js}/forms/AutomaticPasswords.js (100%) rename {js => 15.7/js}/forms/FormMetadata.js (100%) rename {js => 15.7/js}/forms/FormMetadataClassification.js (100%) rename {js => 15.7/js}/layout/WebContentLayoutAnalyzer.js (100%) rename {js => 15.7/js}/metadata/MetadataExtractor.js (100%) rename {js => 15.7/js}/reader/Reader.js (100%) rename {js => 15.7/js}/reader/ReaderArticleFinder.js (100%) rename {js => 15.7/js}/reader/ReaderSharedUI.js (100%) rename {js => 15.7/js}/reader/ReaderSharedUINormalWorld.js (100%) rename {js => 15.7/js}/schema/SchemaDataExtractor.js (100%) rename {js => 15.7/js}/schema/SchemaOrgMarkupChecker.js (100%) rename {js => 15.7/js}/search/OpenSearchURLFinder.js (100%) rename {js => 15.7/js}/translation/Translation.js (100%) rename {js => 15.7/js}/utilities/NodePath.js (100%) rename {js => 15.7/js}/utilities/SavePageInliningOrDiscardingExternalResources.js (100%) create mode 100644 26.2/js/forms/AutomaticPasswords.js create mode 100644 26.2/js/forms/FormMetadata.js create mode 100644 26.2/js/forms/FormMetadataClassification.js create mode 100644 26.2/js/forms/FormMetadataContactsAutoFillMappings.js create mode 100644 26.2/js/forms/FormMetadataJSController.js create mode 100644 26.2/js/forms/FormMetadataUtilities.js create mode 100644 26.2/js/forms/PasswordRulesParserJS.js create mode 100644 26.2/js/layout/WebContentLayoutAnalyzer.js create mode 100644 26.2/js/metadata/MetadataExtractor.js create mode 100644 26.2/js/reader/Reader.js create mode 100644 26.2/js/reader/ReaderArticleFinder.js create mode 100644 26.2/js/reader/ReaderShared.js create mode 100644 26.2/js/reader/ReaderSharedUI.js create mode 100644 26.2/js/reader/ReaderSharedUINormalWorld.js create mode 100644 26.2/js/schema/SchemaDataExtractor.js create mode 100644 26.2/js/schema/SchemaOrgMarkupChecker.js create mode 100644 26.2/js/search/OpenSearchURLFinder.js create mode 100644 26.2/js/search/QuickWebsiteSearchURLDetector.js create mode 100644 26.2/js/translation/Translation.js create mode 100644 26.2/js/utilities/NodePath.js create mode 100644 26.2/js/utilities/SavePageInliningOrDiscardingExternalResources.js diff --git a/html/Reader.html b/15.7/html/Reader.html similarity index 100% rename from html/Reader.html rename to 15.7/html/Reader.html diff --git a/js/forms/AutomaticPasswords.js b/15.7/js/forms/AutomaticPasswords.js similarity index 100% rename from js/forms/AutomaticPasswords.js rename to 15.7/js/forms/AutomaticPasswords.js diff --git a/js/forms/FormMetadata.js b/15.7/js/forms/FormMetadata.js similarity index 100% rename from js/forms/FormMetadata.js rename to 15.7/js/forms/FormMetadata.js diff --git a/js/forms/FormMetadataClassification.js b/15.7/js/forms/FormMetadataClassification.js similarity index 100% rename from js/forms/FormMetadataClassification.js rename to 15.7/js/forms/FormMetadataClassification.js diff --git a/js/layout/WebContentLayoutAnalyzer.js b/15.7/js/layout/WebContentLayoutAnalyzer.js similarity index 100% rename from js/layout/WebContentLayoutAnalyzer.js rename to 15.7/js/layout/WebContentLayoutAnalyzer.js diff --git a/js/metadata/MetadataExtractor.js b/15.7/js/metadata/MetadataExtractor.js similarity index 100% rename from js/metadata/MetadataExtractor.js rename to 15.7/js/metadata/MetadataExtractor.js diff --git a/js/reader/Reader.js b/15.7/js/reader/Reader.js similarity index 100% rename from js/reader/Reader.js rename to 15.7/js/reader/Reader.js diff --git a/js/reader/ReaderArticleFinder.js b/15.7/js/reader/ReaderArticleFinder.js similarity index 100% rename from js/reader/ReaderArticleFinder.js rename to 15.7/js/reader/ReaderArticleFinder.js diff --git a/js/reader/ReaderSharedUI.js b/15.7/js/reader/ReaderSharedUI.js similarity index 100% rename from js/reader/ReaderSharedUI.js rename to 15.7/js/reader/ReaderSharedUI.js diff --git a/js/reader/ReaderSharedUINormalWorld.js b/15.7/js/reader/ReaderSharedUINormalWorld.js similarity index 100% rename from js/reader/ReaderSharedUINormalWorld.js rename to 15.7/js/reader/ReaderSharedUINormalWorld.js diff --git a/js/schema/SchemaDataExtractor.js b/15.7/js/schema/SchemaDataExtractor.js similarity index 100% rename from js/schema/SchemaDataExtractor.js rename to 15.7/js/schema/SchemaDataExtractor.js diff --git a/js/schema/SchemaOrgMarkupChecker.js b/15.7/js/schema/SchemaOrgMarkupChecker.js similarity index 100% rename from js/schema/SchemaOrgMarkupChecker.js rename to 15.7/js/schema/SchemaOrgMarkupChecker.js diff --git a/js/search/OpenSearchURLFinder.js b/15.7/js/search/OpenSearchURLFinder.js similarity index 100% rename from js/search/OpenSearchURLFinder.js rename to 15.7/js/search/OpenSearchURLFinder.js diff --git a/js/translation/Translation.js b/15.7/js/translation/Translation.js similarity index 100% rename from js/translation/Translation.js rename to 15.7/js/translation/Translation.js diff --git a/js/utilities/NodePath.js b/15.7/js/utilities/NodePath.js similarity index 100% rename from js/utilities/NodePath.js rename to 15.7/js/utilities/NodePath.js diff --git a/js/utilities/SavePageInliningOrDiscardingExternalResources.js b/15.7/js/utilities/SavePageInliningOrDiscardingExternalResources.js similarity index 100% rename from js/utilities/SavePageInliningOrDiscardingExternalResources.js rename to 15.7/js/utilities/SavePageInliningOrDiscardingExternalResources.js diff --git a/26.2/js/forms/AutomaticPasswords.js b/26.2/js/forms/AutomaticPasswords.js new file mode 100644 index 0000000..20ce5fa --- /dev/null +++ b/26.2/js/forms/AutomaticPasswords.js @@ -0,0 +1,30 @@ +//# sourceURL=__InjectedScript_AutomaticPasswords.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +"use strict"; +class AutomaticPasswords { + removeAutomaticPasswordElements(t, e, o) { + for (let e of t) + FormMetadataJS.removeAutomaticStrongPasswordFromPasswordElement(e); + if (!o) return; + let r = document.activeElement, + a = e ? FormMetadataJS.formControlWithUniqueID(e) : null; + (a && a.blur(), a && a === r && a.focus()); + } + blurControlWithID(t) { + let e = t ? FormMetadataJS.formControlWithUniqueID(t) : null; + e && e.blur(); + } + setStrongPasswordElementViewableIfAppropriate(t, e) { + for (let o of t) { + let t = FormMetadataJS.formControlWithUniqueID(o); + if (!t) return; + if ("text" === t.type) + return ( + FormMetadataJSController.setInputElementAutoFilledAndViewable(t, !1), + void FormMetadataJSController.setInputElementAutofilled(t, !1) + ); + FormMetadataJSController.setInputElementAutoFilledAndViewable(t, e); + } + } +} +var AutomaticPasswordsJS = new AutomaticPasswords(); diff --git a/26.2/js/forms/FormMetadata.js b/26.2/js/forms/FormMetadata.js new file mode 100644 index 0000000..5635bfb --- /dev/null +++ b/26.2/js/forms/FormMetadata.js @@ -0,0 +1,5188 @@ +//# sourceURL=__InjectedScript_FormMetadata.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +"use strict"; +function addPasswordRequirementsToFormMetadata(e) { + if ( + e.AutoFillFormType != WBSAutoFillFormTypeNewAccount && + e.AutoFillFormType != WBSAutoFillFormTypeChangePassword + ) + return ((e.PasswordRules = null), void (e.PasswordRequirements = null)); + const t = e.PasswordElementUniqueID, + r = e.ConfirmPasswordElementUniqueID; + let n = !!t?.length, + o = !!r?.length; + if (!n && !o) + return ((e.PasswordRules = null), void (e.PasswordRequirements = null)); + let i = null, + l = null; + for (const a of e.FormControls) { + if (!n && !o) break; + const e = a.ControlUniqueID; + e && + (n && e === t + ? ((i = a), (n = !1)) + : o && e === r && ((l = a), (o = !1))); + } + let a, + s = null, + u = null; + if (i?.ControlPasswordRules) { + const e = parsePasswordRules(i?.ControlPasswordRules, !1); + s = new PasswordRuleSet(e); + } + if (l?.ControlPasswordRules) { + const e = parsePasswordRules(l?.ControlPasswordRules, !1); + u = new PasswordRuleSet(e); + } + s && u ? ((a = s.copy()), a.merge(u)) : (a = s || u); + let c = i?.ControlMaxLength ?? 0, + d = i?.ControlMinLength ?? 0; + const h = l?.ControlMaxLength ?? 0, + m = l?.ControlMinLength ?? 0; + ((c = c < h ? c : h), (d = d > m ? d : m)); + const F = { passwordRuleSet: a, minLength: d, maxLength: c }, + f = {}; + (i && + ((f.passwordFieldPasswordRules = i.ControlPasswordRules), + (f.passwordFieldMinLength = i.ControlMinLength), + (f.passwordFieldMaxLength = i.ControlMaxLength)), + l && + ((f.confirmPasswordFieldPasswordRules = l.ControlPasswordRules), + (f.confirmPasswordFieldMinLength = l.ControlMinLength), + (f.confirmPasswordFieldMaxLength = l.ControlMaxLength)), + (e.PasswordRules = f), + (e.PasswordRequirements = F)); +} +function regularExpressionForDomainMatching(e) { + return new RegExp("(^|.)" + e.replaceAll(".", "\\.") + "$"); +} +function userIsOnDomain(e) { + let t = cachedUserIsOnDomain[e]; + return ( + void 0 !== t || + ((t = regularExpressionForDomainMatching(e).test( + document.location.hostname, + )), + (cachedUserIsOnDomain[e] = t)), + t + ); +} +function legacyPlaceholderInfoForInputElement(e) { + if ("text" !== e.type) return null; + if (doctypeLooksLikeHTML5) return null; + var t = e.value.trim(); + if (!t) return null; + for (var r = !1, n = !0, o = e.attributes, i = o.length, l = 0; l < i; ++l) { + var a = o[l]; + if (t === a.value.trim() && ((r = !0), "value" !== a.name.toLowerCase())) { + n = !1; + break; + } + } + return r ? { Text: t, AttributeMatchedWasValue: n } : null; +} +function placeholderInfoForElement(e) { + var t = e.getAttribute("placeholder"); + if (t) return { Text: t, AttributeMatchedWasValue: !1 }; + var r = e.getAttribute("data-placeholder"); + return r && r.length + ? { Text: r, AttributeMatchedWasValue: !1 } + : isInputElement(e) + ? legacyPlaceholderInfoForInputElement(e) + : null; +} +function sharedPrefixLength(e, t) { + for (var r = 0, n = 0, o = e.length; n < o && e[n] === t[n]; ++n) r++; + return r; +} +function rowContainingLabelAboveRow(e) { + for ( + var t = e.getBoundingClientRect(), r = e.previousElementSibling; + r instanceof HTMLTableRowElement; + r = r.previousElementSibling + ) { + if (r.querySelector("input, select, textarea")) return null; + var n = r.getBoundingClientRect(); + if (t.top - n.bottom > t.height / 2) return null; + if (r.innerText.match(/\S/)) return r; + } + return null; +} +function cellVisuallyAbove(e) { + let t = e.parentElementIncludingShadowDOMHost(); + if (!(t && t instanceof HTMLTableRowElement)) return null; + var r = rowContainingLabelAboveRow(t); + if (!r) return null; + for ( + var n = e.getBoundingClientRect(), + o = r.children, + i = o.length, + l = null, + a = 0, + s = 0; + s < i; + ++s + ) { + var u = o[s], + c = u.getBoundingClientRect(), + d = Math.min(c.right, n.right) - Math.max(c.left, n.left); + (!l || d > a) && ((a = d), (l = u)); + } + return l; +} +function couldBeFormSubmissionControl(e) { + if (e instanceof HTMLButtonElement) return !0; + if (e instanceof HTMLInputElement) { + var t = e.type; + return "submit" === t || "image" === t; + } + return !1; +} +function elementsInFormPiercingShadowDOM(e) { + e.elements; + return queryAllBySelector( + e, + "button, fieldset, input:not([type='image']), object, output, select, textarea", + ); +} +function isInputElement(e) { + return e instanceof HTMLInputElement; +} +function isDateTimeInputElement(e) { + return !!isInputElement(e) && DateTimeInputTypes.includes(e.type); +} +function isRadioButtonElement(e) { + return !!isInputElement(e) && "radio" === e.type; +} +function isSelectElement(e) { + return e instanceof HTMLSelectElement; +} +function anchorWithURLString(e) { + var t = document.createElement("a"); + return ((t.href = e), t); +} +function pathComponentsForLocation(e) { + var t = e.pathname.substring(1).split("/"); + return (t[t.length - 1] || t.pop(), t); +} +function lastPathComponentFromAnchor(e) { + var t = pathComponentsForLocation(e); + return t.length ? t[t.length - 1] : null; +} +function lastPathComponentForURLString(e) { + return lastPathComponentFromAnchor(anchorWithURLString(e)); +} +function urlEncode(e) { + return encodeURIComponent(e).replace(/%20/g, "+"); +} +function isCheckboxOrRadioButtonInDefaultState(e) { + return e.checked === e.defaultChecked; +} +function isSelectInDefaultState(e) { + for (var t = e.options, r = t.length, n = 0; n < r; ++n) { + var o = t[n]; + if (o.selected !== o.defaultSelected) { + if (o.defaultSelected) return !1; + if (e.multiple || n) return !1; + } + } + return !0; +} +function formActionAsAnchorElement(e, t) { + if (!(e instanceof HTMLFormElement)) return null; + let r = e.getAttribute("action"); + if (!r && t) return null; + var n = document.createElement("a"); + return ((n.href = r || ""), n); +} +function createTextInputEvent(e) { + let t = document.createEvent("TextEvent"); + return (t.initTextEvent("textInput", !0, !0, null, e), t); +} +function createMouseOrPointerEventAtPoint(e, t) { + const r = { + bubbles: !0, + cancelable: !0, + screenX: t.x, + screenY: t.y, + clientX: t.x, + clientY: t.y, + button: 0, + detail: 1, + }; + switch (e) { + case "mousedown": + case "mouseup": + return new MouseEvent(e, { ...r, buttons: "mousedown" === e ? 1 : 0 }); + case "pointerdown": + case "pointerup": + case "click": + const t = "pointerdown" === e; + return new PointerEvent(e, { + ...r, + buttons: t ? 1 : 0, + pointerType: "mouse", + isPrimary: !0, + pressure: t ? 0.5 : 0, + altitudeAngle: Math.PI / 2, + }); + } +} +function dispatchEventsSimulatingClickOnElement(e) { + const t = e.getBoundingClientRect().centerPoint(); + e.dispatchEvent(createMouseOrPointerEventAtPoint("pointerdown", t)) && + e.dispatchEvent(createMouseOrPointerEventAtPoint("mousedown", t)) && + e.dispatchEvent(createMouseOrPointerEventAtPoint("pointerup", t)) && + e.dispatchEvent(createMouseOrPointerEventAtPoint("mouseup", t)) && + e.dispatchEvent(createMouseOrPointerEventAtPoint("pointerdown", t)); +} +function createCustomEventThatBubbles(e) { + return new CustomEvent(e, { bubbles: !0 }); +} +function formControlHasBeenClassifiedInAnInterestingWay(e) { + return ( + e.ControlIsActiveElement || + e.ControlIsSecureTextField || + e.ControlLooksLikePasswordCredentialField || + e.ControlLooksLikeCreditCardNumberField || + e.ControlLooksLikeCreditCardSecurityCodeField || + e.ControlLooksLikeCreditCardCardholderField || + e.ControlLooksLikeCreditCardTypeField || + e.AddressBookLabel || + e.ControlLooksLikeDayField || + e.ControlLooksLikeMonthField || + e.ControlLooksLikeYearField || + e.ControlLooksLikeOneTimeCodeField || + e.ControlLooksLikeCreditCardCompositeExpirationDateField || + e.ControlLooksLikeEIDField || + e.ControlLooksLikeIMEIField + ); +} +function isValidUsernameOrEmail(e) { + const t = /^[a-z_][a-z0-9_.]{2,30}$/i, + r = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/i; + return ( + !(!e || e.length < 3 || "true" === e || "false" === e) && + (t.test(e) || r.test(e)) + ); +} +function selectorForElement(e) { + let t = e.localName, + r = e.getAttribute("id"); + r && (t += `#${r}`); + let n = e.classList, + o = n.length; + for (let e = 0; e < o; e++) t += "." + n[e]; + return t; +} +function controlSeemsToBeSingleCharacterFieldPartOfSingleLogicalEntity(e) { + function t(e) { + let t = e.height / e.width; + return 0.95 <= t && t <= 1.05; + } + const r = 4, + n = 8; + let o = e.getBoundingClientRect(); + if (!t(o)) return !1; + let i = siblingsIncludingSelfForElement(e), + l = i.length; + if (l < r || l > n) return !1; + for (let t = 0; t < l; ++t) { + let r = i[t]; + if (e === r) continue; + let n = r.getBoundingClientRect(); + if (o.top !== n.top || o.width !== n.width || o.height !== n.height) + return !1; + } + return !0; +} +async function yieldToEventLoop(e = 0) { + await new Promise((t) => { + setTimeout(t, e); + }); +} +async function yieldToEventLoopAfterAnimationFrameAndDelay(e = 0) { + (await Promise.all([ + yieldToEventLoop(e), + new Promise((e) => { + requestAnimationFrame(e); + }), + ]), + await yieldToEventLoop()); +} +async function yieldUntilDocumentIsFocusedOrTimeout(e) { + if (document.hasFocus()) return; + const t = new AbortController(); + (await Promise.race([ + yieldToEventLoop(e), + new Promise((e) => { + window.addEventListener("focus", e, { + once: !0, + passive: !0, + signal: t.signal, + }); + }), + ]), + t.abort(null)); +} +function hasOwnProperties(e) { + return Object.getOwnPropertyNames(e).length > 0; +} +function defaultOptionForSelectElement(e) { + for (var t = e.options, r = t.length, n = 0; n < r; ++n) { + var o = t[n]; + if (o.defaultSelected) return o; + } + return t[0]; +} +function selectElementOptionsSequenceAnalysis(e, t) { + for ( + var r = e.options, n = r.length, o = 0, i = -1, l = -1, a = 0, s = 0; + s < n; + ++s + ) { + var u = r[s], + c = parseInt(u[t]); + isFiniteNumber(c) + ? -1 === l + ? ((l = c), (a = 1)) + : c === l + 1 && ((l = c), a++) + : (a >= o && ((o = a), (i = l)), (l = -1), (a = 0)); + } + return ( + a >= o && ((o = a), (i = l)), + { lengthOfLongestSequence: o, lastNumberInSequence: i } + ); +} +function isElementPositionedToBeEffectivelyInvisible(e) { + var t = !1; + for (let r = e; r; r = r.parentElementIncludingShadowDOMHost()) + if ("fixed" === getComputedStyle(r).position) { + t = !0; + break; + } + var r, + n, + o, + i = e.getBoundingClientRect(); + if (t) ((r = i), (n = window.innerWidth), (o = window.innerHeight)); + else { + var l = window.scrollY, + a = window.scrollX; + ((r = { + top: i.top + l, + right: i.right + a, + bottom: i.bottom + l, + left: i.left + a, + width: i.width, + height: i.height, + }), + (n = document.documentElement.scrollWidth), + (o = Math.max( + document.documentElement.scrollHeight, + window.innerHeight, + ))); + } + return r.top >= o || r.right <= 0 || r.bottom <= 0 || r.left >= n; +} +function rectIsWithinDocumentViewport(e) { + return ( + e.right >= 0 && + e.bottom >= 0 && + e.left <= window.innerWidth && + e.top <= window.innerHeight + ); +} +function isCredentialElementUniqueID(e, t) { + return ( + t === e.UsernameElementUniqueID || + t === e.PasswordElementUniqueID || + t === e.ConfirmPasswordElementUniqueID || + t === e.OldPasswordElementUniqueID + ); +} +function autocompleteTokens(e) { + const t = ["autocomplete", "autocompletetype", "x-autocompletetype"]; + let r = []; + for (const n of t) + e.hasAttribute(n) && r.push(e.getAttribute(n).trim().toLowerCase()); + if (!r.length) return null; + let n = r + .join(" ") + .split(/\s+/) + .filter(function (e) { + return e.length && "off" !== e && "on" !== e; + }); + return n.length ? n : null; +} +function elementIDOrAutocompleteTokensHasToken(e, t, r) { + return !!e.id?.includes(r) || !!t?.includes(r); +} +function controlAppearsToBePartOfPhotoTaggingInterface(e) { + const t = /photo.*tag/i; + for ( + let r = e.parentElementIncludingShadowDOMHost(); + r; + r = r.parentElementIncludingShadowDOMHost() + ) + if (t.test(r.className)) return !0; + return !1; +} +function levenshteinDistance(e, t) { + for ( + var r = e.length, n = t.length, o = new Array(r + 1), i = 0; + i < r + 1; + ++i + ) + ((o[i] = new Array(n + 1)), (o[i][0] = i)); + for (var l = 0; l < n + 1; ++l) o[0][l] = l; + for (l = 1; l < n + 1; ++l) + for (i = 1; i < r + 1; ++i) + if (e[i - 1] === t[l - 1]) o[i][l] = o[i - 1][l - 1]; + else { + var a = o[i - 1][l] + 1, + s = o[i][l - 1] + 1, + u = o[i - 1][l - 1] + 1; + o[i][l] = Math.min(a, s, u); + } + return o[r][n]; +} +function stringSimilarity(e, t) { + var r = Math.max(e.length, t.length); + return r ? (r - levenshteinDistance(e, t)) / r : 0; +} +function stripCommonPrefix(e, t) { + const r = e.length, + n = t.length, + o = r < n ? r : n; + let i = 0; + for (; i < o && e[i] === t[i]; ) i++; + return [e.slice(i), t.slice(i)]; +} +function articleTitleAndSiteNameFromTitleString(e, t) { + const r = [" - ", " \u2013 ", " \u2014 ", ": ", " | ", " \xbb "], + n = r.length, + o = 0.6; + for ( + var i, + l, + a = e.replace(/^(www|m|secure)\./, ""), + s = a.replace(/\.(com|info|net|org|edu|gov)$/, "").toLowerCase(), + u = 0; + u < n; + ++u + ) { + var c = t.split(r[u]); + if (2 === c.length) { + var d = c[0].trim(), + h = c[1].trim(), + m = d.toLowerCase(), + F = h.toLowerCase(), + f = Math.max(stringSimilarity(m, a), stringSimilarity(m, s)), + g = Math.max(stringSimilarity(F, a), stringSimilarity(F, s)), + p = Math.max(f, g); + (!l || p > l) && + ((l = p), + (i = + f > g + ? { siteName: d, articleTitle: h } + : { siteName: h, articleTitle: d })); + } + } + return i && l >= o ? i : null; +} +function documentTitleWithoutHostNamePrefix() { + const e = document.title, + t = articleTitleAndSiteNameFromTitleString(window.location.host, e); + return t ? t.articleTitle : e; +} +function querySelectorAllIncludingWithinShadowRoots(e, t) { + let r = []; + for (let n of e.querySelectorAll("*")) + if (n.shadowRoot) { + let e = querySelectorAllIncludingWithinShadowRoots(n.shadowRoot, t); + e.length && (r = r.concat(e)); + } else n.matches(t) && r.push(n); + return r; +} +function queryAllBySelector(e, t) { + try { + return window.collectMatchingElementsInFlatTree + ? window.collectMatchingElementsInFlatTree(e, t) + : querySelectorAllIncludingWithinShadowRoots(e, t); + } catch (e) { + return []; + } +} +function getElementByID(e) { + let t = queryAllBySelector(document, `[id='${e}']`); + return t.length ? t[0] : null; +} +function siblingsIncludingSelfForElement(e) { + let t = e.parentElement; + if (t) return t.children; + let r = e; + for (; r.previousElementSibling; ) r = r.previousElementSibling; + let n = [], + o = r; + for (; o; ) (n.push(o), (o = o.nextElementSibling)); + return n; +} +function regularExpressionFromUntrustedPatternAttributeString(e) { + if ((e.startsWith("/") && e.endsWith("/") && (e = e.slice(1, -1)), !e.length)) + return null; + try { + return (new RegExp(e, "v"), new RegExp("^(?:" + e + ")$", "v")); + } catch (e) { + return null; + } +} +function regularExpressionsFromStrings(e) { + return e.map((e) => new RegExp(e)); +} +function stringsMatchAnyRegularExpressions(e, t) { + for (let r of t) for (let t of e) if (r.test(t.toLowerCase())) return !0; + return !1; +} +function pathFromAnchorWithoutLeadingSlash(e) { + let t = /\/(.*)/.exec(e.pathname); + return t && 2 === t.length ? t[1] : null; +} +function innermostActiveElement() { + let e = document.activeElement, + t = e; + for (; t; ) ((t = t?.shadowRoot?.activeElement), t && (e = t)); + return e; +} +function elementAppearsToContinueCaptchaWidget(e) { + return !!e.querySelector( + "iframe[title*=captcha i], input[type=hidden][name*=recaptcha]", + ); +} +function isFiniteNumber(e) { + return "number" == typeof e && isFinite(e); +} +const WBSAutoFillFormTypeUndetermined = 0, + WBSAutoFillFormTypeAutoFillableStandard = 1, + WBSAutoFillFormTypeNonAutoFillable = 2, + WBSAutoFillFormTypeAutoFillableLogin = 3, + WBSAutoFillFormTypeNewAccount = 4, + WBSAutoFillFormTypeChangePassword = 5, + WBSFormMetadataRequestNormal = 0, + WBSFormMetadataRequestPreFill = 1, + WBSFormMetadataRequestTesting = 2, + WBSFormMetadataRequestTextChange = 3, + WBSFormMetadataRequestCollectMetadataFromDebugMenu = 4, + WBSPasswordCharacterClassTypeASCIIPrintable = 0, + WBSPasswordCharacterClassTypeDigit = 1, + WBSPasswordCharacterClassTypeLower = 2, + WBSPasswordCharacterClassTypeUpper = 3, + WBSPasswordCharacterClassTypeSpecial = 4, + WBSPasswordCharacterClassTypeUnicode = 5, + WBSPasswordCharacterClassTypeCustom = 6, + ShouldStopAfterFirstMatch = { CollectAllMatches: 0, StopAfterFirstMatch: 1 }, + ForceNonFormElementAsLogicalBackingElement = { No: !1, Yes: !0 }, + LogicalFormCreationIsProvisional = { No: !1, Yes: !0 }, + MatchCriteria = { Property: 0, Category: 1, Literal: 2 }, + PageScanCharactersSearchedThreshold = 500, + PageScanMaxCharactersSearched = 600, + MaximumNumberOfCharactersToCollectForLanguageIdentification = 300, + MinValueForMaxLengthAttributeToTreatAsPasswordField = 4, + UsernameCandidateScoreForPlainTextField = 1, + UsernameCandidateScoreForPlainTextFieldDirectlyBeforePasswordField = 2, + UsernameCandidateScoreForEmailLabeledFieldBelowPasswordField = 3, + UsernameCandidateScoreForUsernameLabeledFieldBelowPasswordField = 4, + UsernameCandidateScoreForEmailLabeledFieldAbovePasswordField = 5, + UsernameCandidateScoreForUsernameLabeledFieldAbovePasswordField = 6, + UsernameCandidateScoreBonusForVisibleElement = 0.5, + UsernameCandidateScorePenaltyForReadOnlyElement = 0.5, + UsernameCandidateScorePenaltyForMatchingNonUsernameFieldLabelPattern = 2, + UsernameCandidateScorePenaltyForMatchingSearchFieldLabelPattern = 1.5, + UsernameCandidateScorePenaltyForAnonymousElement = 1, + LowestScoreForUsernameFieldCandidate = + UsernameCandidateScoreForPlainTextField, + LowestScoreForLabeledUsernameFieldCandidate = + UsernameCandidateScoreForEmailLabeledFieldBelowPasswordField, + MaxLengthForFieldAboveWhichToTreatPotentialOneTimeCodeFieldAsRequiringHigherScrutiny = 10, + DateTimeInputTypes = ["date", "datetime-local", "month", "time", "week"], + DateTimeInputTypeFormats = { + date: "yyyy-MM-dd", + "datetime-local": "yyyy-MM-dd'T'hh:mm", + month: "yyyy-MM", + time: "hh:mm", + week: "yyyy-'W'ww", + }, + numberOfConsecutiveElementsWithoutSuccessfulPageScanAfterWhichPageScanIsAbandoned = 40, + insertTextInputType = "insertText"; +class KeyInfo { + static BackspaceKeyInfo = new KeyInfo("\b", "\b", null, "Backspace", { + uiEventKey: "Backspace", + }); + static #e = { bubbles: !0, cancelable: !0 }; + static #t = { + ...KeyInfo.#e, + keyCode: 16, + which: 16, + key: "Shift", + code: "ShiftRight", + location: KeyboardEvent.DOM_KEY_LOCATION_RIGHT, + }; + #r; + #n; + #o; + #i; + #l; + #a; + #s; + #u; + constructor( + e, + t, + r, + n, + { uiEventKey: o, useShiftedCharacterForLegacyKeyCode: i } = {}, + ) { + ((this.#r = e), + (this.#n = t), + (this.#o = r), + (this.#u = e === r), + (this.#i = n), + (this.#l = o ?? e), + (this.#s = i ? r.codePointAt(0) : t.codePointAt(0)), + (this.#a = e.codePointAt(0))); + } + get isShifted() { + return this.#u; + } + keyEvent(e) { + switch (e) { + case "keydown": + case "keyup": + return new KeyboardEvent(e, { + ...KeyInfo.#e, + charCode: 0, + keyCode: this.#s, + which: this.#s, + shiftKey: this.#u, + key: this.#l, + code: this.#i, + location: KeyboardEvent.DOM_KEY_LOCATION_STANDARD, + }); + case "keypress": + return new KeyboardEvent(e, { + ...KeyInfo.#e, + charCode: this.#a, + keyCode: this.#a, + which: this.#a, + shiftKey: this.#u, + key: this.#l, + code: this.#i, + location: KeyboardEvent.DOM_KEY_LOCATION_STANDARD, + }); + } + } + static forCharacter(e) { + switch (e) { + case "a": + case "A": + return new KeyInfo(e, "a", "A", "KeyA", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "b": + case "B": + return new KeyInfo(e, "b", "B", "KeyB", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "c": + case "C": + return new KeyInfo(e, "c", "C", "KeyC", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "d": + case "D": + return new KeyInfo(e, "d", "D", "KeyD", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "e": + case "E": + return new KeyInfo(e, "e", "E", "KeyE", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "f": + case "F": + return new KeyInfo(e, "f", "F", "KeyF", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "g": + case "G": + return new KeyInfo(e, "g", "G", "KeyG", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "h": + case "H": + return new KeyInfo(e, "h", "H", "KeyH", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "i": + case "I": + return new KeyInfo(e, "i", "I", "KeyI", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "j": + case "J": + return new KeyInfo(e, "j", "J", "KeyJ", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "k": + case "K": + return new KeyInfo(e, "k", "K", "KeyK", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "l": + case "L": + return new KeyInfo(e, "l", "L", "KeyL", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "m": + case "M": + return new KeyInfo(e, "m", "M", "KeyM", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "n": + case "N": + return new KeyInfo(e, "n", "N", "KeyN", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "o": + case "O": + return new KeyInfo(e, "o", "O", "KeyO", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "p": + case "P": + return new KeyInfo(e, "p", "P", "KeyP", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "q": + case "Q": + return new KeyInfo(e, "q", "Q", "KeyQ", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "r": + case "R": + return new KeyInfo(e, "r", "R", "KeyR", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "s": + case "S": + return new KeyInfo(e, "s", "S", "KeyS", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "t": + case "T": + return new KeyInfo(e, "t", "T", "KeyT", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "u": + case "U": + return new KeyInfo(e, "u", "U", "KeyU", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "v": + case "V": + return new KeyInfo(e, "v", "V", "KeyV", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "w": + case "W": + return new KeyInfo(e, "w", "W", "KeyW", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "x": + case "X": + return new KeyInfo(e, "x", "X", "KeyX", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "y": + case "Y": + return new KeyInfo(e, "y", "Y", "KeyY", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "z": + case "Z": + return new KeyInfo(e, "z", "Z", "KeyZ", { + useShiftedCharacterForLegacyKeyCode: !0, + }); + case "0": + case ")": + return new KeyInfo(e, "0", ")", "Digit0", {}); + case "1": + case "!": + return new KeyInfo(e, "1", "!", "Digit1", {}); + case "2": + case "@": + return new KeyInfo(e, "2", "@", "Digit2", {}); + case "3": + case "#": + return new KeyInfo(e, "3", "#", "Digit3", {}); + case "4": + case "$": + return new KeyInfo(e, "4", "$", "Digit4", {}); + case "5": + case "%": + return new KeyInfo(e, "5", "%", "Digit5", {}); + case "6": + case "^": + return new KeyInfo(e, "6", "^", "Digit6", {}); + case "7": + case "&": + return new KeyInfo(e, "7", "&", "Digit7", {}); + case "8": + case "*": + return new KeyInfo(e, "8", "*", "Digit8", {}); + case "9": + case "(": + return new KeyInfo(e, "9", "(", "Digit9", {}); + case ";": + case ":": + return new KeyInfo(e, ";", ":", "Semicolon", {}); + case "=": + case "+": + return new KeyInfo(e, "=", "+", "Equal", {}); + case ",": + case "<": + return new KeyInfo(e, ",", "<", "Comma", {}); + case "-": + case "_": + return new KeyInfo(e, "-", "_", "Minus", {}); + case ".": + case ">": + return new KeyInfo(e, ".", ">", "Period", {}); + case "/": + case "?": + return new KeyInfo(e, "/", "?", "Slash", {}); + case "`": + case "~": + return new KeyInfo(e, "`", "~", "Backquote", {}); + case "[": + case "{": + return new KeyInfo(e, "[", "{", "BracketLeft", {}); + case "\\": + case "|": + return new KeyInfo(e, "\\", "|", "Backslash", {}); + case "]": + case "}": + return new KeyInfo(e, "]", "}", "BracketRight", {}); + case "'": + case '"': + return new KeyInfo(e, "'", '"', "Quote", {}); + case " ": + return new KeyInfo(e, " ", null, "Space", {}); + case "\t": + return new KeyInfo(e, "\t", null, "Tab", { uiEventKey: "Tab" }); + case "\n": + return new KeyInfo(e, "\n", null, "Enter", { uiEventKey: "Enter" }); + } + return new KeyInfo(e, e.toLowerCase(), e.toUpperCase(), "Unidentified"); + } + static shiftKeyEvent(e) { + switch (e) { + case "keydown": + return new KeyboardEvent(e, { ...KeyInfo.#t, shiftKey: !0 }); + case "keyup": + return new KeyboardEvent(e, KeyInfo.#t); + } + } +} +class PasswordRule { + standardCharacter = 0; + customCharacters = ""; + static asciiPrintableBit = 1 << WBSPasswordCharacterClassTypeASCIIPrintable; + static digitBit = 1 << WBSPasswordCharacterClassTypeDigit; + static lowercaseBit = 1 << WBSPasswordCharacterClassTypeLower; + static uppercaseBit = 1 << WBSPasswordCharacterClassTypeUpper; + static specialCharacterBit = 1 << WBSPasswordCharacterClassTypeSpecial; + static unicodeBit = 1 << WBSPasswordCharacterClassTypeUnicode; + copy() { + const e = new PasswordRule(); + return ( + (e.standardCharacter = this.standardCharacter), + (e.customCharacters = this.customCharacters), + e + ); + } + intersection(e) { + ((this.standardCharacter &= e.standardCharacter), + (this.customCharacters = [ + ...new Set([...this.customCharacters]).intersection( + new Set([...e.customCharacters]), + ), + ].join("")), + this.#c()); + } + union(e) { + ((this.standardCharacter |= e.standardCharacter), + (this.customCharacters = [ + ...new Set(this.customCharacters + e.customCharacters), + ].join("")), + this.#c()); + } + addAllowedCharacterClass(e) { + if (e instanceof NamedCharacterClass) + switch (e.name) { + case Identifier.ASCII_PRINTABLE: + this.standardCharacter = PasswordRule.asciiPrintableBit; + break; + case Identifier.UNICODE: + this.standardCharacter = PasswordRule.unicodeBit; + break; + case Identifier.DIGIT: + this.standardCharacter |= PasswordRule.digitBit; + break; + case Identifier.LOWER: + this.standardCharacter |= PasswordRule.lowercaseBit; + break; + case Identifier.UPPER: + this.standardCharacter |= PasswordRule.uppercaseBit; + break; + case Identifier.SPECIAL: + this.standardCharacter |= PasswordRule.specialCharacterBit; + } + else + e instanceof CustomCharacterClass && + (this.customCharacters = [ + ...new Set([...this.customCharacters, ...e.characters]), + ].join("")); + ((this.customCharacters = [...new Set([...this.customCharacters])].join( + "", + )), + this.#c()); + } + #c() { + if (this.standardCharacter & PasswordRule.asciiPrintableBit) + return ( + (this.standardCharacter = PasswordRule.asciiPrintableBit), + void (this.customCharacters = "") + ); + if (this.standardCharacter & PasswordRule.unicodeBit) + return ( + (this.standardCharacter = PasswordRule.unicodeBit), + void (this.customCharacters = "") + ); + if (0 === this.customCharacters.length) return; + const e = new Set(this.customCharacters); + if (this.standardCharacter & PasswordRule.digitBit) + for (const t of "0123456789") e.delete(t); + if (this.standardCharacter & PasswordRule.lowercaseBit) + for (const t of "abcdefghijklmnopqrstuvwxyz") e.delete(t); + if (this.standardCharacter & PasswordRule.uppercaseBit) + for (const t of "ABCDEFGHIJKLMNOPQRSTUVWXYZ") e.delete(t); + this.customCharacters = [...e].join(""); + } +} +class PasswordRuleSet { + allowedRule = null; + requiredRules = null; + maxConsecutiveRule = null; + minLengthRule = null; + maxLengthRule = null; + constructor(e) { + for (const t of e) + switch (t.name) { + case RuleName.ALLOWED: + this.#d(t); + break; + case RuleName.REQUIRED: + this.#h(t); + break; + case RuleName.MAX_CONSECUTIVE: + this.#m(t); + break; + case RuleName.MIN_LENGTH: + this.#F(t); + break; + case RuleName.MAX_LENGTH: + this.#f(t); + } + this.#c(); + } + copy() { + const e = new PasswordRuleSet([]); + return ( + null !== this.allowedRule && (e.allowedRule = this.allowedRule.copy()), + null !== this.requiredRules && + (e.requiredRules = this.requiredRules.map((e) => e.copy())), + (e.maxConsecutiveRule = this.maxConsecutiveRule), + (e.minLengthRule = this.minLengthRule), + (e.maxLengthRule = this.maxLengthRule), + e + ); + } + merge(e) { + (this.#g(e), this.#p(e), this.#C(e), this.#y(e), this.#b(e), this.#c()); + } + #g(e) { + null !== e.allowedRule && + (null === this.allowedRule + ? (this.allowedRule = e.allowedRule.copy()) + : this.allowedRule.intersection(e.allowedRule)); + } + #p(e) { + if (null !== e.requiredRules) { + null === this.requiredRules && (this.requiredRules = []); + for (const t of e.requiredRules) this.requiredRules.push(t.copy()); + } + } + #C(e) { + null !== e.maxConsecutiveRule && + (null !== this.maxConsecutiveRule + ? (this.maxConsecutiveRule = Math.min( + this.maxConsecutiveRule, + e.maxConsecutiveRule, + )) + : (this.maxConsecutiveRule = e.maxConsecutiveRule)); + } + #y(e) { + null !== e.minLengthRule && + (null !== this.minLengthRule + ? (this.minLengthRule = Math.max(this.minLengthRule, e.minLengthRule)) + : (this.minLengthRule = e.minLengthRule)); + } + #b(e) { + null !== e.maxLengthRule && + (null !== this.maxLengthRule + ? (this.maxLengthRule = Math.min(this.maxLengthRule, e.maxLengthRule)) + : (this.maxLengthRule = e.maxLengthRule)); + } + #h(e) { + null === this.requiredRules && (this.requiredRules = []); + const t = new PasswordRule(); + for (const r of e.value) t.addAllowedCharacterClass(r); + this.requiredRules.push(t); + } + #d(e) { + this.allowedRule || (this.allowedRule = new PasswordRule()); + for (const t of e.value) this.allowedRule.addAllowedCharacterClass(t); + } + #m(e) { + (null === this.maxConsecutiveRule && (this.maxConsecutiveRule = 1 / 0), + (this.maxConsecutiveRule = Math.min(this.maxConsecutiveRule, e.value))); + } + #F(e) { + (null === this.minLengthRule && (this.minLengthRule = 0), + (this.minLengthRule = Math.max(this.minLengthRule, e.value))); + } + #f(e) { + (null === this.minLengthRule && (this.minLengthRule = 1 / 0), + (this.maxLengthRule = Math.min(this.maxLengthRule, e.value))); + } + #c() { + if (null !== this.requiredRules) { + null === this.allowedRule && (this.allowedRule = new PasswordRule()); + for (const e of this.requiredRules) this.allowedRule.union(e); + } + } +} +var mapOfFormTypeToProducerOfAssociatedKeywords = (function () { + var e = {}; + return ( + (e[WBSAutoFillFormTypeNewAccount] = function () { + return FormMetadataJSController.mapOfKeywordsIndicatingNewAccountFormTypeToScoreForMatching; + }), + (e[WBSAutoFillFormTypeAutoFillableLogin] = function () { + return FormMetadataJSController.mapOfKeywordsIndicatingLoginFormTypeToScoreForMatching; + }), + (e[WBSAutoFillFormTypeChangePassword] = function () { + return FormMetadataJSController.mapOfKeywordsIndicatingChangePasswordFormTypeToScoreForMatching; + }), + e + ); + })(), + visibilityCacheGeneration = 0; +let doctypeLooksLikeHTML5 = + "html" === document.doctype?.name && + "" === document.doctype?.publicId && + "" === document.doctype?.systemId; +((console.autofillDebugLog = function () { + FormMetadataJSController.isDebugConsoleLoggingEnabled; +}), + (Element.prototype.traversePreviousElement = function () { + for (var e = this.previousElementSibling; e && e.lastElementChild; ) + e = e.lastElementChild; + return e || this.parentElement; + }), + (Node.prototype.traversePreviousNode = function (e) { + if (this) { + var t = this.previousSibling; + if (e(t)) return null; + for (; t && t.lastChild; ) if (e((t = t.lastChild))) return null; + return t || this.parentNode; + } + }), + (Node.prototype.traverseNextNode = function (e) { + if (this) { + var t = this.firstChild; + if (t) return t; + if (e && this === e) return null; + if ((t = this.nextSibling)) return t; + for ( + t = this; + t && !t.nextSibling && (!e || !t.parentNode || t.parentNode !== e); + ) + t = t.parentNode; + return t ? t.nextSibling : null; + } + }), + (Node.prototype.isVisible = function () { + let e = this; + if (e._isVisible === visibilityCacheGeneration) return !0; + if (e._isVisible === -visibilityCacheGeneration) return !1; + let t = e instanceof Element ? e : e.parentElementIncludingShadowDOMHost(), + r = getComputedStyle(t, null); + if ( + ((e._isVisible = -visibilityCacheGeneration), + "none" === r.display || "visible" !== r.visibility) + ) + return !1; + let n = 0 === parseFloat(r.opacity) ? 6 : 2; + var o = t.getBoundingClientRect(); + return ( + !(o.width < n) && + !(o.height < n) && + ((e._isVisible = visibilityCacheGeneration), !0) + ); + }), + Object.defineProperty(Array.prototype, "joinFirstItems", { + value(e, t) { + t > this.length && (t = this.length); + for (var r = "", n = 0; n < t; ++n) (n > 0 && (r += e), (r += this[n])); + return r; + }, + }), + (DOMRect.prototype.isZeroRect = function () { + return !(this.top || this.right || this.bottom || this.left); + }), + (DOMRect.prototype.centerPoint = function () { + return { + x: Math.round(this.x + this.width / 2), + y: Math.round(this.y + this.height / 2), + }; + }), + (DOMRect.prototype.distanceToRect = function (e) { + function t(e) { + function t(e, t) { + return Math.pow(e.x - t.x, 2) + Math.pow(e.y - t.y, 2); + } + var r = e[0], + n = e[1]; + return (r[0].x >= n[0].x && r[0].x < n[1].x) || + (n[0].x >= r[0].x && n[0].x < r[1].x) + ? Math.abs(r[0].y - n[0].y) + : (r[0].y >= n[0].y && r[0].y < n[1].y) || + (n[0].y >= r[0].y && n[0].y < r[1].y) + ? Math.abs(r[0].x - n[0].x) + : Math.sqrt(Math.min(t(r[0], n[1]), t(r[1], n[0]))); + } + var r = [ + { x: this.left, y: this.top }, + { x: this.right, y: this.top }, + ], + n = [ + { x: this.right, y: this.top }, + { x: this.right, y: this.bottom }, + ], + o = [ + { x: this.left, y: this.bottom }, + { x: this.right, y: this.bottom }, + ], + i = [ + { x: this.left, y: this.top }, + { x: this.left, y: this.bottom }, + ], + l = [ + { x: e.left, y: e.top }, + { x: e.right, y: e.top }, + ], + a = [ + { x: e.right, y: e.top }, + { x: e.right, y: e.bottom }, + ], + s = [ + { x: e.left, y: e.bottom }, + { x: e.right, y: e.bottom }, + ], + u = [ + { x: e.left, y: e.top }, + { x: e.left, y: e.bottom }, + ], + c = [ + [i, u], + [i, a], + [r, l], + [r, s], + [n, u], + [n, a], + [o, l], + [o, s], + ].map(t); + return Math.min.apply(Math, c); + }), + (Node.prototype.parentElementIncludingShadowDOMHost = function () { + let e = this.parentElement; + if (e) return e; + let t = this.getRootNode(); + return t && t.host ? t.host : null; + }), + (Node.prototype.allAncestorsAndSelfIncludingShadowDOMHosts = function () { + let e = [], + t = this; + for (; t; ) (e.push(t), (t = t.parentElementIncludingShadowDOMHost())); + return e; + }), + (HTMLElement.prototype.closestCommonAncestor = function (e) { + let t = this.parentElement; + for (; t; ) { + if (t.contains(e)) return t; + t = t.parentElement; + } + let r = this.allAncestorsAndSelfIncludingShadowDOMHosts().reverse(), + n = e.allAncestorsAndSelfIncludingShadowDOMHosts().reverse(), + o = Math.min(r.length, n.length), + i = null; + for (let e = 0; e < o; ++e) { + if (!(r[e] === n[e])) break; + i = r[e]; + } + return i || null; + }), + (Element.prototype.isHiddenFromAccessibilityTree = function () { + const e = 2; + for ( + let r = 0, n = this; + r <= e && n; + ++r, n = n.parentElementIncludingShadowDOMHost() + ) { + var t = n.getAttribute("aria-hidden"); + if (t && "true" === t.toLowerCase()) return !0; + } + return !1; + }), + (HTMLElement.prototype._setAutofillButtonType = function (e) { + const t = this.autofillButtonType; + e !== t && + ((this._lastAutofillButtonType = t), (this.autofillButtonType = e)); + }), + (HTMLElement.prototype.isDisabledOrReadOnly = function () { + return this.disabled || this.readOnly; + }), + (HTMLElement.prototype.shouldFocusDuringFilling = function () { + return !isRadioButtonElement(this) && !isSelectElement(this); + }), + (HTMLFormElement.prototype.isVisible = function () { + if (Node.prototype.isVisible.call(this)) return !0; + for (var e = this.elements, t = e.length, r = 0; r < t; ++r) + if (e[r].isVisible()) return !0; + return !1; + })); +let cachedUserIsOnDomain = {}; +class LogicalForm { + #A; + #w = !1; + constructor(e, t, r) { + let n = e.length; + var o = e[0].form, + i = o; + let l = e[0], + a = e[n - 1]; + ((!t && i) || (i = 1 === n ? l : l.closestCommonAncestor(a)), + (o && o.contains(a)) || (o = i)); + let s = i.closest('*[role~="dialog"]'); + s && (i = s); + let u = l._provisionalLogicalFormUniqueIDForFirstControlInLogicalForm; + (u || + ((u = FormMetadataJSController.nextFormUniqueID), + (l._provisionalLogicalFormUniqueIDForFirstControlInLogicalForm = u)), + (this._formUniqueID = u), + (this._metadata = {}), + (this._weakControls = Array.prototype.map.call(e, (e) => new WeakRef(e))), + (this._weakFormElement = new WeakRef(o)), + (this._weakBackingElement = new WeakRef(i)), + (this.#A = new MutationObserver(this.#E.bind(this))), + r || this.markElementsAsPartOfLogicalForm()); + } + get elements() { + return this._weakControls.flatMap((e) => e.deref() ?? []); + } + get formElement() { + return this._weakFormElement.deref(); + } + get backingElement() { + return this._weakBackingElement.deref(); + } + get formUniqueID() { + return this._formUniqueID; + } + get metadata() { + return this._metadata; + } + set metadata(e) { + ((this._metadata = e), this.#_()); + } + containsControl(e) { + return e.hasOwnProperty("_logicalFormUniqueID") + ? e._logicalFormUniqueID === this.formUniqueID + : e.form === this.formElement; + } + radioButtonsWithName(e) { + let t = queryAllBySelector(document.documentElement, `*[name="${e}"]`); + return Array.prototype.filter.call( + t, + function (e) { + return ( + (e.form === this.formElement || this.formElement?.contains(e)) && + isRadioButtonElement(e) + ); + }, + this, + ); + } + annotate(e) { + let t = this.formElement; + if (t) { + var r = t._annotations; + if (r) { + for (var n in e) { + var o = e[n]; + o ? (r[n] = o) : delete r[n]; + } + hasOwnProperties(r) || delete t._annotations; + } else t._annotations = e; + } + } + markElementsAsPartOfLogicalForm() { + let e = this._weakControls.length; + for (let t = 0; t < e; t++) { + let r = this._weakControls[t].deref(); + r && + ((r._logicalFormUniqueID = this.formUniqueID), + t + 1 < e && + (r._weakNextControlInLogicalForm = this._weakControls[t + 1]), + t > 0 && + (r._weakPreviousControlInLogicalForm = this._weakControls[t - 1])); + } + } + get hasVisibleControls() { + return ( + this.formElement.isVisible() && + this._weakControls.some((e) => e.deref()?.isVisible()) + ); + } + get annotations() { + return this.formElement?._annotations; + } + get isAnnotated() { + return !!this.annotations; + } + get passwordControls() { + const e = this.metadata; + return e + ? Object.fromEntries( + [ + e.PasswordElementUniqueID, + e.ConfirmPasswordElementUniqueID, + e.OldPasswordElementUniqueID, + ] + .map((e) => { + if (!e) return null; + const t = FormMetadataJS.formControlWithUniqueID(e); + return t ? [e, t] : null; + }) + .filter((e) => !!e), + ) + : []; + } + #_() { + Object.values(this.passwordControls).forEach((e) => { + e.addEventListener( + "input", + () => { + this.#w || + (this.#A.observe(document, { + subtree: !0, + childList: !0, + attributes: !0, + }), + (this.#w = !0)); + }, + { once: !0, passive: !0 }, + ); + }); + } + #E(e) { + const t = this.metadata, + r = this.passwordControls; + for (const n of e) { + (n.target, n.type, n.addedNodes); + const e = n.removedNodes; + if (e.length) { + let n = new Set(); + for (const t of e) { + for (const [e, o] of Object.entries(r)) + n.has(o) || (t.contains(o) && n.add(e)); + if (r.size === n.size) break; + } + if (n.size) { + const e = t.FormControls.filter((e) => n.has(e.ControlUniqueID)); + FormMetadataJSController.logicalFormObservedChangeIndicatingFormSubmission( + t, + e, + ); + } + } + } + } +} +class LogicalFormCache { + constructor() { + ((this._logicalFormsByUniqueID = new Map()), (this._allLogicalForms = [])); + } + get size() { + return this._logicalFormsByUniqueID.size; + } + removeUnparentedLogicalFormsFromCache() { + let e = new Set(); + for (let t of this._allLogicalForms) t.formElement?.isConnected || e.add(t); + for (let t of e) this._logicalFormsByUniqueID.delete(t.formUniqueID); + this._allLogicalForms = Array.from(this._logicalFormsByUniqueID.values()); + } + logicalFormForControl(e) { + for (let t of this._allLogicalForms) if (t.containsControl(e)) return t; + return null; + } + allForms() { + return this._allLogicalForms.slice(); + } + cachedForms() { + return Array.from(this._logicalFormsByUniqueID.values()); + } + addOrUpdate(e) { + (this._logicalFormsByUniqueID.set(e.formUniqueID, e), + this._allLogicalForms.push(e)); + } + clearCacheAndAdd(e) { + (this._logicalFormsByUniqueID.clear(), (this._allLogicalForms = [])); + for (let t of e) this.addOrUpdate(t); + } + logicalFormWithUniqueID(e) { + return this._logicalFormsByUniqueID.get(e); + } + get numberOfVisibleFormsWithVisibleElements() { + return this.cachedForms().reduce( + (e, t) => (t.hasVisibleControls ? e + 1 : e), + 0, + ); + } +} +class FormMetadata { + canUseTextInputEventsToFill = !0; + #T = null; + constructor() { + ((this._logicalFormsCache = new LogicalFormCache()), + (this._elementsWithGeneratedPasswords = []), + (this._generatedPasswords = []), + (this._controlUniqueIDToWeakControlMap = new Map()), + (this._mapOfFormTypeToExtraScoreProducer = (function () { + let e = {}; + return ( + (e[WBSAutoFillFormTypeNewAccount] = function () { + return 0; + }), + (e[WBSAutoFillFormTypeAutoFillableLogin] = function (e) { + const t = 2, + r = function (e) { + return ( + "checkbox" === e.type && + FormMetadataJS._labelsForElement(e).some( + (e) => + /(remember|keep) me/i.test(e.innerText.trim()) && + e.isVisible(), + ) + ); + }; + return 1 === e.elements.filter((e) => r(e)).length ? t : 0; + }), + (e[WBSAutoFillFormTypeChangePassword] = function () { + return 0; + }), + e + ); + })()), + (this._requiredFormatForDateTimeInput = DateTimeInputTypes.reduce( + function (e, t) { + let r = document.createElement("input"); + r.type = t; + let n = "a"; + return ( + (r.value = n), + (e[t] = "" === r.value ? DateTimeInputTypeFormats[t] : ""), + e + ); + }, + {}, + ))); + } + get _labels() { + null === this.#T && + (this.#T = Array.from(queryAllBySelector(document, "label")).map( + (e) => new WeakRef(e), + )); + const e = []; + for (const t of this.#T) { + const r = t.deref(); + r && e.push(r); + } + return e; + } + _getTagName(e) { + var t = e.tagName; + return "string" == typeof t || "string" == typeof (t = e.nodeName) + ? t + : void 0; + } + _getNameOrId(e) { + return e.name && e.name.length ? e.name : e.id; + } + controlUniqueID(e) { + if (e._controlUniqueID) return e._controlUniqueID; + var t = "ControlID-" + FormMetadataJSController.nextControlUniqueID; + e._controlUniqueID = t; + this._controlUniqueIDToWeakControlMap.get(t); + return ( + this._controlUniqueIDToWeakControlMap.set(t, new WeakRef(e)), + e._controlUniqueID + ); + } + _searchForLabelsAboveCell(e, t) { + var r = window.getComputedStyle(t, null); + if (!r || "table-cell" !== r.getPropertyValue("display")) return null; + var n = cellVisuallyAbove(t); + if (!n) return null; + for (var o = 0, i = n.firstChild; i; i = i.traverseNextNode(n)) + if (i.nodeType == Node.TEXT_NODE && i.isVisible()) { + var l = i.nodeValue, + a = e.searchReverse(l); + if (a) + return { + Distance: o, + Match: a[0], + Property: a[1], + Category: a[2], + ParentProperty: a[3], + }; + o += l.length; + } + return null; + } + _collectStringFromNodeForPageScan(e, t, r) { + var n = e.nodeValue, + o = n.length; + return ( + r + o > PageScanMaxCharactersSearched && + ((n = n.substr(-(PageScanCharactersSearchedThreshold - r))), + (o = PageScanCharactersSearchedThreshold - r)), + (n = n.trim()).length && t.push(n), + r + ); + } + _dataForComputingMatchFromPageScanBeforeElement(e, t) { + function r(e) { + return e && e.nodeType == Node.ELEMENT_NODE && e.matches("nav"); + } + var n, + o = [], + i = 0; + let l = this._logicalFormsCache.logicalFormForControl(e); + if (!l) return [[], null]; + var a = l.formElement, + s = a && a.isVisible(); + t || (t = a); + for ( + var u = e.traversePreviousNode(r); + u && i < PageScanCharactersSearchedThreshold; + u = u.traversePreviousNode(r) + ) { + var c = u.localName; + if (u === t) break; + if (this._isRenderedFormControl(u)) { + if (u.isVisible() || !s) break; + } else { + if (this._isLabelElement(u) && u.isVisible()) break; + if ("td" !== c || n) { + if ("tr" === c && n) break; + if ("ul" === c || "ol" === c || "dl" === c) break; + if ("li" === c) { + if (!u.parentNode.contains(e)) break; + } else + u.nodeType == Node.TEXT_NODE && + u.isVisible() && + (i += this._collectStringFromNodeForPageScan(u, o, i)); + } else n = u; + } + } + return [o, n]; + } + _matchFromPageScanBeforeElement(e, t, r) { + var n = this._pageScanContext + ? this._pageScanContext.backwardScanCache + : null, + o = this._pageScanDataForElementWithCacheAndDataProducer( + t, + n, + this._dataForComputingMatchFromPageScanBeforeElement.bind(this), + r, + ), + i = o[0], + l = this._matchFromPatternMatcherAndStringsFromPageScan(e, i); + if (l) return l; + var a = o[1]; + if (a) { + var s = this._searchForLabelsAboveCell(e, a); + if (s) return ((s.IsInCellAbove = !0), s); + } + return null; + } + _isElementFollowedByForgotUserNameOrEmailOrFederatedSignInAffordance(e, t) { + (this._forgotUserNameRegularExpressions || + (this._forgotUserNameRegularExpressions = regularExpressionsFromStrings( + FormMetadataJSController.regularExpressionsForForgotUserNameAffordance, + )), + this._forgotEmailRegularExpressions || + (this._forgotEmailRegularExpressions = regularExpressionsFromStrings( + FormMetadataJSController.regularExpressionsForForgotEmailAffordance, + ))); + let r = this._stringsToEvaluateToDetermineIfElementIsFollowedByAffordance( + e, + t, + ); + if ( + stringsMatchAnyRegularExpressions( + r, + this._forgotUserNameRegularExpressions, + ) + ) + return !0; + if ( + stringsMatchAnyRegularExpressions(r, this._forgotEmailRegularExpressions) + ) + return !0; + let n = this._cachedFederatedSignInAffordancePatternMatcher(); + for (let e of r) if (this._matchPatternAgainstString(n, e)) return !0; + return !1; + } + _isElementFollowedByForgotPasswordAffordance(e, t) { + return ( + this._forgotPasswordRegularExpressions || + (this._forgotPasswordRegularExpressions = regularExpressionsFromStrings( + FormMetadataJSController.regularExpressionsForForgotPasswordAffordance, + )), + stringsMatchAnyRegularExpressions( + this._stringsToEvaluateToDetermineIfElementIsFollowedByAffordance(e, t), + this._forgotPasswordRegularExpressions, + ) + ); + } + _numberOfForgotUserNameEmailOrPasswordAffordancesFollowingElement(e, t) { + (this._forgotEmailRegularExpressions || + (this._forgotEmailRegularExpressions = regularExpressionsFromStrings( + FormMetadataJSController.regularExpressionsForForgotEmailAffordance, + )), + this._forgotPasswordRegularExpressions || + (this._forgotPasswordRegularExpressions = regularExpressionsFromStrings( + FormMetadataJSController.regularExpressionsForForgotPasswordAffordance, + )), + this._forgotUserNameRegularExpressions || + (this._forgotUserNameRegularExpressions = regularExpressionsFromStrings( + FormMetadataJSController.regularExpressionsForForgotUserNameAffordance, + ))); + let r = this._stringsToEvaluateToDetermineIfElementIsFollowedByAffordance( + e, + t, + ), + n = 0; + return ( + stringsMatchAnyRegularExpressions( + r, + this._forgotUserNameRegularExpressions, + ) && n++, + stringsMatchAnyRegularExpressions( + r, + this._forgotEmailRegularExpressions, + ) && n++, + stringsMatchAnyRegularExpressions( + r, + this._forgotPasswordRegularExpressions, + ) && n++, + n + ); + } + _stringsToEvaluateToDetermineIfElementIsFollowedByAffordance(e, t) { + let r = this._dataForComputingMatchFromPageScanAfterElement(e, "A"); + if (!r.length) { + const t = e.traverseNextNode(); + if (t) { + let e = t; + t instanceof Node && (e = t.parentElementIncludingShadowDOMHost()); + const n = e.querySelector("a:not(svg a)"); + if (n) { + const e = n.innerText; + e?.length && r.push(e); + const t = pathFromAnchorWithoutLeadingSlash(n); + t?.length && r.push(t); + } + } + } + if (!r.length) { + for (let n of queryAllBySelector(t, "a:not(svg a)")) { + if (e.compareDocumentPosition(n) & Node.DOCUMENT_POSITION_FOLLOWING) { + const e = n.innerText; + e?.length && r.push(e); + const t = pathFromAnchorWithoutLeadingSlash(n); + t?.length && r.push(t); + } + } + for (let n of queryAllBySelector(t, "button")) { + if (e.compareDocumentPosition(n) & Node.DOCUMENT_POSITION_FOLLOWING) { + const e = n.innerText; + e.length && r.push(e); + } + } + } + const n = e._weakNextControlInLogicalForm?.deref(); + if (n && "button" === n.type) { + const e = n.innerText; + e.length && r.push(e); + } + return r; + } + _shouldDetectStandaloneUserNameFields() { + return "https://discord.com/channels/@me" !== window.location.href; + } + _dataForComputingMatchFromPageScanAfterElement(e, t, r) { + var n = [], + o = 0, + i = this._logicalFormsCache.logicalFormForControl(e); + if (!i) return []; + var l = i.formElement, + a = l && l.isVisible(); + let s = void 0 !== t; + r || (r = l); + for ( + var u = e.traverseNextNode(); + u && o < PageScanCharactersSearchedThreshold; + u = u.traverseNextNode() + ) { + var c = u.localName; + if (u === r) { + var d = this._pageScanContext; + d && !o && (d.forwardScanIsFutile = !0); + break; + } + if (this._isRenderedFormControl(u)) { + if (u.isVisible() || !a) break; + } else { + if (this._isLabelElement(u) && u.isVisible()) break; + if ("tr" === c) break; + if ("ul" === c || "ol" === c || "dl" === c) break; + if (u.nodeType == Node.TEXT_NODE && u.isVisible()) { + if (void 0 !== t && (!u.parentNode || u.parentNode.tagName !== t)) + continue; + if (((o += this._collectStringFromNodeForPageScan(u, n, o)), s)) + break; + } + } + } + return n; + } + _matchFromPageScanAfterElement(e, t, r) { + var n = this._pageScanContext + ? this._pageScanContext.forwardScanCache + : null, + o = this._pageScanDataForElementWithCacheAndDataProducer( + t, + n, + this._dataForComputingMatchFromPageScanAfterElement.bind(this), + r, + ); + return this._matchFromPatternMatcherAndStringsFromPageScan(e, o); + } + _pageScanDataForElementWithCacheAndDataProducer(e, t, r, n) { + if (!t) return r(e, n); + if ((o = t.get(e))) return o; + var o = r(e, n); + return (t.set(e, o), o); + } + _matchFromPatternMatcherAndStringsFromPageScan(e, t) { + for (var r = t.length, n = 0, o = 0; o < r; ++o) { + var i = t[o]; + n += i.length; + var l = e.searchReverse(i); + if (l) + return { + Distance: n, + Match: l[0], + Property: l[1], + Category: l[2], + ParentProperty: l[3], + }; + } + return null; + } + _matchPatternAgainstString(e, t) { + if (!t) return null; + var r = t.replace(/[\d_.-]/g, " "); + return ( + (r = r.replace(/[a-z][A-Z]/g, function (e) { + return e[0] + " " + e[1]; + })), + e.longestMatch(r) + ); + } + _controlsAreAllButtons(e) { + for (var t = e.length, r = 0; r < t; ++r) { + if (!(e[r] instanceof HTMLButtonElement)) return !1; + } + return !0; + } + _createLogicalFormsForControls(e, t, r) { + if (this._controlsAreAllButtons(e)) return []; + let n, + o, + i = e.map(function (e) { + return e.getBoundingClientRect(); + }), + l = e.length, + a = 0; + i[0].isZeroRect() ? ((n = 0), (o = null)) : ((n = 1), (o = i[0])); + for (let d = 1; d < l; ++d) { + let h = i[d]; + if (!h.isZeroRect()) { + if (o) { + let m = o.distanceToRect(h); + m && (++n, (a += m)); + } + o = h; + } + } + if (1 === n) { + function F(e) { + return e.closest("header, footer, aside"); + } + let f = [], + g = 0; + for (; g < l; ) { + let p = [e[g]], + C = F(e[g]); + for (let y = g + 1; y < l; ++y) { + let b = e[y]; + if (C !== F(e[y])) break; + p.push(b); + } + (f.push(new LogicalForm(p, t, r)), (g += p.length)); + } + return f; + } + let s = n ? a / n : 0, + u = [], + c = 0; + for (; c < l; ) { + let A = [e[c]], + w = !1, + E = i[c].isZeroRect() ? null : i[c]; + for (let _ = c + 1; _ < l; ++_) { + let T = e[_], + S = i[_]; + if (!S.isZeroRect()) { + if (w) { + if (E && E.distanceToRect(S) > s) break; + } else w = couldBeFormSubmissionControl(T); + E = S; + } + A.push(T); + } + (u.push(new LogicalForm(A, t, r)), (c += A.length)); + } + return u; + } + _formLooksLikeAspnetForm(e) { + const t = 3; + var r = 0; + ("aspnetForm" === e.getAttribute("id") && ++r, + "aspnetForm" === e.getAttribute("name") && ++r); + for ( + var n = queryAllBySelector(e, "input"), o = 0, i = n.length; + o < i; + ++o + ) { + var l = n[o], + a = l.getAttribute("id"), + s = l.getAttribute("name"); + (/ctl\d\d_/.test(a) && ++r, + /ctl\d\d\$/.test(s) && ++r, + "hidden" === l.getAttribute("type") && + (("__VIEWSTATE" === s && "__VIEWSTATE" === a) || + ("__EVENTTARGET" === s && "__EVENTTARGET" === a) || + ("__EVENTARGUMENT" === s && "__EVENTARGUMENT" === a) || + ("__LASTFOCUS" === s && "__LASTFOCUS" === a)) && + ++r); + } + for ( + var u = queryAllBySelector(document, "script"), c = u.length, d = 0; + d < c; + ++d + ) { + var h = anchorWithURLString(u[d].src); + if (h.host === window.location.host) { + var m = lastPathComponentFromAnchor(h); + ("WebResource.axd" !== m && "ScriptResource.axd" !== m) || ++r; + } + } + return r >= t; + } + _anchorLooksLikeSubmitButton(e) { + return ( + !( + !e.classList.contains("button") || + !/submit/i.test(e.getAttribute("action")) + ) || /submit|button/i.test(e.getAttribute("id")) + ); + } + _visibleInputAndSelectElementsInForm(e) { + let t = queryAllBySelector(e, "input:not([type='hidden']), select"), + r = []; + for (var n = 0, o = t.length; n < o; ++n) { + let e = t[n]; + e.isVisible() && r.push(e); + } + return r; + } + _elementsActingAsButtonsInForm(e) { + let t = Array.prototype.slice.call( + queryAllBySelector(e, "input[type='submit'], input[type='image']"), + ), + r = queryAllBySelector(e, "a"); + for (var n = 0, o = r.length; n < o; ++n) { + let e = r[n]; + this._anchorLooksLikeSubmitButton(e) && e.isVisible() && t.push(e); + } + return t; + } + _logicalFormsForAspnetForm(e) { + function t(e) { + var r = e.length; + if (r <= 1) + a.push( + new LogicalForm(e, ForceNonFormElementAsLogicalBackingElement.Yes), + ); + else { + var n = r - 1, + o = e[n]; + if (e[0].closestCommonAncestor(o) instanceof HTMLTableRowElement) { + for (var i = 0; i < n; ++i) { + if (!(e[i].closestCommonAncestor(o) instanceof HTMLTableRowElement)) + return (t(e.slice(0, i)), void t(e.slice(i))); + } + a.push( + new LogicalForm(e, ForceNonFormElementAsLogicalBackingElement.Yes), + ); + } else + a.push( + new LogicalForm(e, ForceNonFormElementAsLogicalBackingElement.Yes), + ); + } + } + for ( + var r = this._visibleInputAndSelectElementsInForm(e), + n = r.length, + o = this._elementsActingAsButtonsInForm(e), + i = o.length, + l = 0; + l < i; + ++l + ) { + (s = o[l]).getAttribute("id") && + (s._aspNetIDComponents = s.getAttribute("id").split("_")); + } + o.sort(function (e, t) { + var r = e._aspNetIDComponents || []; + return (t._aspNetIDComponents || []).length - r.length; + }); + var a = []; + for (l = 0; l < i; ++l) { + var s, + u = (s = o[l])._aspNetIDComponents; + if (u) { + var c = u.length; + if (!(c < 2)) { + for ( + var d = u.joinFirstItems("_", c - 1) + "_", h = [], m = n - 1; + m >= 0; + --m + ) { + var F = r[m], + f = F.getAttribute("id"); + f && f.startsWith(d) && (h.push(F), r.splice(m, 1)); + } + if ((h.length && t(h.reverse()), !(n = r.length))) break; + } + } + } + return (n && t(r), a); + } + _logicalFormsInPage(e, t) { + let r = []; + const n = document.querySelector("form form"); + let o = {}, + i = n ? document.forms : queryAllBySelector(document, "form"); + const l = 400, + a = (e) => (e.length <= l ? e : Array.from(e).slice(0, l)), + s = (e, t, r) => { + let n = queryAllBySelector(e, t); + return n.length <= l ? n : a(queryAllBySelector(e, r)); + }; + let u = 0, + c = i.length, + d = new Set(); + for (var h = 0; h < c; ++h) { + let l = i[h], + c = n + ? a(l.elements) + : s( + l, + "input, select, textarea, button, fieldset", + "input, select, textarea, button[type='submit'], fieldset", + ); + for (let e of c) d.add(e); + if (c.length) { + if ((u++, e && u >= e)) return r; + if (t) { + let e = [l.method, l.name, l.action, l.className].join("|"), + r = o[e] || 0; + if (r > t) continue; + o[e] = r + 1; + } + this._formLooksLikeAspnetForm(l) + ? (r = r.concat(this._logicalFormsForAspnetForm(l))) + : r.push(new LogicalForm(c)); + } + } + let m = [], + F = s( + document, + "input, select, textarea, button", + "input, select, textarea, button[type='submit']", + ), + f = F.length; + for (let e = 0; e < f; ++e) { + let t = F[e]; + if (d.has(t)) { + if (!m.length) continue; + ((r = r.concat(this._createLogicalFormsForControls(m))), (m = [])); + } else + (this._isRenderedFormControl(t) || autocompleteTokens(t)) && m.push(t); + } + m.length && (r = r.concat(this._createLogicalFormsForControls(m))); + let g = r.length; + for (h = 0; h < g - 1; ++h) { + let e = r[h], + t = e.backingElement, + n = t.getBoundingClientRect(), + o = r[h + 1], + i = o.backingElement, + l = i.getBoundingClientRect(); + const a = 40; + if ( + t.nextElementSibling === i && + t.action === i.action && + n.height && + l.height && + n.x === l.x && + n.width === l.width && + n.bottom + a >= l.top + ) { + let t = e.elements, + n = + 1 === + t.filter(function (e) { + return e.isVisible(); + }).length, + i = t.includes(function (e) { + return e.matches("input[type=submit], button") && e.isVisible(); + }); + if (n && !i) { + let e = t.concat(o.elements), + n = this._createLogicalFormsForControls( + e, + ForceNonFormElementAsLogicalBackingElement.Yes, + LogicalFormCreationIsProvisional.Yes, + ); + if (1 === n.length) { + let e = n[0]; + (e.markElementsAsPartOfLogicalForm(), r.splice(h, 2, e), g--); + } + } + } + } + return r; + } + _matchPatternAgainstElement(e, t, r) { + function n(e, t) { + if (!e) return null; + var n = r[t], + o = sharedPrefixLength(n, e[t]); + return o ? n.substr(o) : null; + } + function o(e, t) { + if (!t) return null; + const r = t.text; + if (/^-.+-$/.test(r)) return r; + if (!t.value.length && r.length) { + const n = e.options, + o = n.length; + let i = !0; + for (let e = 0; e < o; ++e) { + const r = n[e]; + if (r !== t && !r.value.length) { + i = !1; + break; + } + } + if (i) return r; + } + return null; + } + this._logicalFormsCache.logicalFormForControl(r); + var i = r._weakPreviousControlInLogicalForm?.deref(), + l = r._weakNextControlInLogicalForm?.deref(); + const a = ["name", "id"], + s = a.length; + for (var u = new Array(s), c = new Array(s), d = 0; d < s; ++d) { + var h = a[d]; + ((u[d] = n(i, h)), (c[d] = n(l, h))); + } + const m = t.length; + for (var F = 0; F < m; ++F) { + var f, + g = t[F]; + for ( + d = 0; + d < s && + !(f = this._matchPatternAgainstString(g, u[d])) && + !(f = this._matchPatternAgainstString(g, c[d])) && + !(f = this._matchPatternAgainstString(g, r[a[d]])); + ++d + ); + const n = isSelectElement(r); + if (!f && n) { + const e = n ? defaultOptionForSelectElement(r) : null, + t = n ? r.options[0] : null; + let i = o(r, e); + (i || e === t || (i = o(r, t)), + (f = this._matchPatternAgainstString(g, i))); + } + f && + e.push({ + FoundByPageScan: !1, + Match: f[0].toLowerCase(), + Property: f[1], + Category: f[2], + ParentProperty: f[3], + Priority: F, + }); + } + } + _labelsForElement(e) { + if (e._cachedLabels) return e._cachedLabels; + e._cachedLabels = []; + let t = e.getAttribute("aria-labelledby"); + if (t && t.length) { + let n = t.split(" "); + for (var r = 0; r < n.length; r++) { + let t = getElementByID(n[r]); + t && e._cachedLabels.push(t); + } + } + if (e._cachedLabels.length) return e._cachedLabels; + let n = function (e) { + return e.replace(/[^a-zA-Z0-9]+/g, ""); + }; + for (let t of [e.getAttribute("id"), e.getAttribute("name")]) { + if (!t || !t.length) continue; + let r = [], + o = e.form; + for (let i of this._labels) { + if (o === i.closest("form")) { + let o = i.getAttribute("for"); + if (o === t) e._cachedLabels.push(i); + else if (o) { + let e = n(o); + e.length > 0 && e === n(t) && r.push(i); + } + } + } + if ( + (0 === e._cachedLabels.length && + 1 === r.length && + (e._cachedLabels = r), + e._cachedLabels.length) + ) + return e._cachedLabels; + } + let o = this._logicalFormsCache.logicalFormForControl(e)?.formElement; + for ( + let t = e.parentElementIncludingShadowDOMHost(); + t && t !== o; + t = t.parentElementIncludingShadowDOMHost() + ) + if (this._isLabelElement(t)) { + e._cachedLabels.push(t); + break; + } + return e._cachedLabels; + } + _matchesForElement(e, t, r = !1) { + function n(e, r) { + for (var n = 0; n < l; ++n) { + var o = t[n].searchReverse(e); + if ( + o && + (i.push({ + FoundByPageScan: !1, + Match: o[0].toLowerCase(), + Property: o[1], + Category: o[2], + ParentProperty: o[3], + Priority: n, + }), + r === ShouldStopAfterFirstMatch.StopAfterFirstMatch) + ) + return; + } + } + function o(e, t) { + return e && + e.Match.length && + (!t || + (!e.IsInCellAbove && t.IsInCellAbove) || + (e.IsInCellAbove == t.IsInCellAbove && e.Distance < t.Distance)) + ? { + FoundByPageScan: !0, + Match: y.Match.toLowerCase(), + Property: y.Property, + Category: y.Category, + ParentProperty: y.ParentProperty, + Priority: w, + } + : t; + } + var i = [], + l = t.length; + this._matchPatternAgainstElement(i, t, e); + for (var a = !1, s = this._labelsForElement(e), u = 0; u < s.length; ++u) { + var c = s[u].innerText; + c && ((a = !0), n(c, ShouldStopAfterFirstMatch.StopAfterFirstMatch)); + } + let d = placeholderInfoForElement(e); + d && + !d.AttributeMatchedWasValue && + n(d.Text, ShouldStopAfterFirstMatch.StopAfterFirstMatch); + var h = e.getAttribute("title"); + h && n(h, ShouldStopAfterFirstMatch.StopAfterFirstMatch); + var m = + this._labelForElementIfElementAndLabelAreOnlyElementsOfTheirKindAmongSiblingElements( + e, + ); + m?.innerText.length && + ((a = !0), n(m.innerText, ShouldStopAfterFirstMatch.CollectAllMatches)); + let F = this._ariaLabelForElementOrParentOfElement(e); + F && n(F, ShouldStopAfterFirstMatch.StopAfterFirstMatch); + var f = e.getAttribute("formcontrolname"); + f && f.length && n(f, ShouldStopAfterFirstMatch.StopAfterFirstMatch); + var g = this._pageScanContext, + p = !0, + C = !1; + if ( + (g && + (g.shouldUsePageScan && (p = g.shouldUsePageScan()), + g.reportPageScanUsedSuccessfully && (C = !0)), + !p) + ) + return i; + if (a) return (C && g.reportPageScanUsedSuccessfully(!1), i); + if (!0 === r) return i; + for (var y, b = null, A = null, w = 0; w < l; ++w) + ((b = o((y = this._matchFromPageScanBeforeElement(t[w], e)), b)), + (g && g.forwardScanIsFutile) || + (A = o((y = this._matchFromPageScanAfterElement(t[w], e)), A))); + var E = !1; + if ((b && (i.push(b), (E = !0)), A)) + for (var _ = 0, T = i.length; _ < T; ++_) { + var S = i[_]; + if (A.Priority === S.Priority) { + (i.push(A), (E = !0)); + break; + } + } + return ( + C && g.reportPageScanUsedSuccessfully(E), + i.length && + d && + d.AttributeMatchedWasValue && + n(d.Text, ShouldStopAfterFirstMatch.StopAfterFirstMatch), + i + ); + } + _bestMatchFromMatches(e, t, r) { + function n(e, t) { + for (var r = e.length, n = {}, o = 0; o < r; ++o) { + var i, + l = e[o]; + switch (t) { + case MatchCriteria.Property: + i = l.Property || l.Match; + break; + case MatchCriteria.Category: + i = l.Category || l.Match; + break; + case MatchCriteria.Literal: + i = l.Match; + } + n[i] + ? (n[i].Frequency += 1) + : (n[i] = { Frequency: 1, FirstMatchObject: l }); + } + var a = []; + for (var s in n) a.push(n[s]); + var u = a.sort(function (e, t) { + return t.Frequency - e.Frequency; + }), + c = u.length; + if (c <= 1) return null; + if (t === MatchCriteria.Property) + for (o = 0; o < c; ++o) { + if (u[o].FirstMatchObject.ParentProperty in n) + return u[o].FirstMatchObject; + } + return u[0].Frequency > u[1].Frequency ? u[0].FirstMatchObject : void 0; + } + var o = e.length; + if (0 === o) return null; + if (1 === o) return e[0]; + var i = n(e, MatchCriteria.Property); + return ( + i || + ((i = n(e, MatchCriteria.Category)) + ? i + : e.sort(function (e, t) { + return e.Priority - t.Priority; + })[0]) + ); + } + _bestMatchForElement(e, t, r = !1) { + if (!e) return null; + var n = this._matchesForElement(e, t, r); + return this._bestMatchFromMatches(n, e, t); + } + _labelForElementIfElementAndLabelAreOnlyElementsOfTheirKindAmongSiblingElements( + e, + ) { + for ( + var t = null, + r = e.tagName, + n = siblingsIncludingSelfForElement(e), + o = n.length, + i = 0; + i < o; + ++i + ) { + var l = n[i]; + if (e !== l) { + if (r === l.tagName) return null; + if (this._isLabelElement(l)) { + if (t) return null; + t = l; + } + } + } + return t; + } + _ariaLabelForElementOrParentOfElement(e) { + var t = e; + let r = 3; + for (var n = 0; n < r && t; ++n) { + let e = t.getAttribute("aria-label"); + if (e && !t.isHiddenFromAccessibilityTree()) return e; + t = t.parentElementIncludingShadowDOMHost(); + } + return null; + } + _cachedOneTimeCodePatternMatcher() { + return this._cachedPatternMatchers( + "oneTimeCodeFieldLabelPatternMatchers", + )[0]; + } + _cachedLoginFormTypePatternMatcher() { + return this._cachedPatternMatchers("loginFormTypePatternMatchers")[0]; + } + _cachedFederatedSignInAffordancePatternMatcher() { + return this._cachedPatternMatchers( + "federatedSignInAffordancePatternMatchers", + )[0]; + } + _cachedPatternMatchers(e) { + let t = "_" + e, + r = this[t]; + return (r || ((this[t] = FormMetadataJSController[e]), (r = this[t])), r); + } + _cachedElementPatternMatch(e, t, r) { + var n = t + "_wasVisible", + o = e[n]; + if (!0 === o) return e[t]; + var i = e.isVisible(); + if (o === i) return e[t]; + e[n] = i; + let l = this._cachedPatternMatchers(r); + return ((e[t] = this._bestMatchForElement(e, l)), e[t]); + } + _isLabeledUsernameField(e) { + return ( + !!this._isAutoFillableTextField(e) && + null !== + this._cachedElementPatternMatch( + e, + "_usernameFieldPatternMatch", + "usernameFieldLabelPatternMatchers", + ) + ); + } + _isLabeledLoginField(e) { + return ( + !!this._isAutoFillableTextField(e) && + null !== + this._cachedElementPatternMatch( + e, + "_loginFieldPatternMatch", + "loginFormTypePatternMatchers", + ) + ); + } + _isLabeledSignUpField(e) { + return ( + !!this._isAutoFillableTextField(e) && + null !== + this._cachedElementPatternMatch( + e, + "_signUpFieldPatternMatch", + "newAccountFormTypePatternMatchers", + ) + ); + } + _isLabeledEmailField(e) { + return ( + !!this._isAutoFillableTextField(e) && + ("email" === e.type || + null !== + this._cachedElementPatternMatch( + e, + "_emailFieldPatternMatch", + "emailFieldLabelPatternMatchers", + )) + ); + } + _addressBookLabelForElement(e) { + if ( + !this._isAutoFillableTextField(e) && + !this._isAutoFillableSelectElement(e) && + !this._isAutoFillableTextAreaElement(e) + ) + return null; + var t = this._cachedElementPatternMatch( + e, + "_addressBookPatternMatch", + "addressBookFieldLabelPatternMatchers", + ); + return t ? t.Match : null; + } + _elementDisallowsAutocomplete(e) { + var t = e.getAttribute("autocomplete"); + return t && "off" === t.toLowerCase(); + } + _isTextArea(e) { + return e instanceof HTMLTextAreaElement; + } + _isLabelElement(e) { + return e instanceof HTMLLabelElement; + } + _isRenderedFormControl(e) { + var t = e.localName; + if (!t) return !1; + return ( + t in + { + button: !0, + isindex: !0, + fieldset: !0, + legend: !0, + meter: !0, + optgroup: !0, + option: !0, + progress: !0, + select: !0, + textarea: !0, + } || + (e instanceof HTMLInputElement && + (!!this._isElementAHiddenUsername(e) || !e.type || "hidden" !== e.type)) + ); + } + _isEditablePlainTextField(e) { + return ( + !!isInputElement(e) && + !e.disabled && + !e.readOnly && + (!e.type || "text" === e.type) + ); + } + _isTextField(e) { + if (this._isTextArea(e)) return !0; + if (!isInputElement(e)) return !1; + const t = { + date: !0, + "datetime-local": !0, + email: !0, + isindex: !0, + month: !0, + number: !0, + password: !0, + search: !0, + tel: !0, + telephone: !0, + text: !0, + time: !0, + url: !0, + week: !0, + }; + var r = e.type; + return !r || r in t; + } + _isAutofocusedTextField(e) { + return !!this._isTextField(e) && !0 === e.autofocus; + } + _isAutoFilledTextField(e) { + return !!this._isTextField(e) && e.matches(":-webkit-autofill"); + } + _isSecureTextField(e) { + if (!isInputElement(e)) return !1; + if (e._wasPreviouslySecureTextField) return !0; + try { + if (e.matches(":-webkit-autofill-strong-password")) + return ((e._wasPreviouslySecureTextField = !0), !0); + } catch (e) {} + const t = getComputedStyle(e, null).getPropertyValue( + "-webkit-text-security", + ), + r = e.type; + if ("none" !== t || "password" === r) + return ((e._wasPreviouslySecureTextField = !0), !0); + if (r && "text" !== r) return !1; + if (userIsOnDomain("ninehours.co.jp")) { + let t = e.name; + if ("guestPassword" === t || "guestPasswordConfirm" === t) return !0; + } + const n = e._weakNextControlInLogicalForm?.deref(); + return ( + !(!n || !this._looksLikeShowHidePasswordButton(n)) && + !!this._matchesPasswordFieldLabelPattern(e) && + !this._isLabeledUsernameField(e) && + ((e._wasPreviouslySecureTextField = !0), !0) + ); + } + _isVerticalWritingMode(e) { + const t = getComputedStyle(e).writingMode; + return !("horizontal-tb" === t || "horizontal-bt" === t); + } + _looksLikePasswordCredentialField(e, t) { + if (!this._isSecureTextField(e)) return !1; + var r = e.getAttribute("maxlength"); + return ( + !( + r && parseInt(r) < MinValueForMaxLengthAttributeToTreatAsPasswordField + ) && + null === + this._cachedElementPatternMatch( + e, + "_nonAccountPasswordSecureTextEntryFieldPatternMatch", + "nonAccountPasswordSecureTextEntryFieldLabelPatternMatchers", + ) + ); + } + _looksLikeShowHidePasswordButton(e) { + return ( + !(!this._isCustomFormButton(e) && !this._isCheckboxInputElement(e)) && + !!this._cachedElementPatternMatch( + e, + "_showHideButtonPatternMatch", + "showHideButtonLabelPatternMatchers", + ) + ); + } + _isAutoFillable(e) { + return !e.disabled && !e.readOnly; + } + _isAutoFillableSelectElement(e) { + return this._isAutoFillable(e) && isSelectElement(e); + } + _isAutoFillableTextAreaElement(e) { + return this._isAutoFillable(e) && this._isTextArea(e); + } + _isAutoFillableTextField(e) { + return this._isAutoFillable(e) && this._isTextField(e); + } + _looksLikeCreditCardNumberField(e, t) { + if (!this._isAutoFillableTextField(e)) return !1; + let r = e.pattern; + if (r) { + let e = regularExpressionFromUntrustedPatternAttributeString(r); + if (e && (e.test("a") || e.test("A"))) return !1; + } + if ( + this._cachedElementPatternMatch( + e, + "_nonCreditCardNumberPatternMatch", + "nonCreditCardCardNumberFieldLabelPatternMatchers", + ) + ) + return !1; + if ( + this._matchesCreditCardCompositeExpirationDateFieldLabelPatternMatchers(e) + ) + return !1; + if (elementIDOrAutocompleteTokensHasToken(e, t, "cc-number")) return !0; + const n = e.placeholder; + let o = new RegExp("[0-9]{4}[ -][0-9]{4}[ -][0-9]{4}[ -][0-9]{4}"); + if (n && o.test(n)) return !0; + let i = e.getAttribute("data-val-regex-pattern"); + if (i) { + let e = regularExpressionFromUntrustedPatternAttributeString(i); + if (e && !e.test("12345")) return !1; + } + return ( + null !== + this._cachedElementPatternMatch( + e, + "_creditCardNumberPatternMatch", + "creditCardNumberFieldLabelPatternMatchers", + ) + ); + } + _looksLikeCreditCardSecurityCodeField(e, t) { + if (!this._isAutoFillableTextField(e)) return !1; + if (elementIDOrAutocompleteTokensHasToken(e, t, "cc-csc")) return !0; + let r = e.getAttribute("pattern"); + if (r) { + let e = regularExpressionFromUntrustedPatternAttributeString(r); + if (e && !e.test("123") && !e.test("1234")) return !1; + } + return ( + null !== + this._cachedElementPatternMatch( + e, + "_creditCardSecurityCodePatternMatch", + "creditCardSecurityCodeFieldLabelPatternMatchers", + ) + ); + } + _looksLikeCreditCardCardholderField(e, t) { + return ( + !!this._isEditablePlainTextField(e) && + (!!elementIDOrAutocompleteTokensHasToken(e, t, "cc-name") || + null !== + this._cachedElementPatternMatch( + e, + "_creditCardCardholderPatternMatch", + "creditCardCardholderFieldLabelPatternMatchers", + )) + ); + } + _looksLikeCreditCardCompositeExpirationDateField(e, t) { + return ( + !(!this._isAutoFillableTextField(e) || this._isSecureTextField(e)) && + (!!elementIDOrAutocompleteTokensHasToken(e, t, "cc-exp") || + this._matchesCreditCardCompositeExpirationDateFieldLabelPatternMatchers( + e, + )) + ); + } + _matchesCreditCardCompositeExpirationDateFieldLabelPatternMatchers(e) { + return ( + null !== + this._cachedElementPatternMatch( + e, + "_creditCardCompositeExpirationDateFieldPatternMatch", + "creditCardCompositeExpirationDateFieldLabelPatternMatchers", + ) + ); + } + _looksLikeCreditCardTypeField(e, t) { + return ( + !(!isSelectElement(e) && !isRadioButtonElement(e)) && + (!!elementIDOrAutocompleteTokensHasToken(e, t, "cc-type") || + null !== + this._cachedElementPatternMatch( + e, + "_creditCardTypePatternMatch", + "creditCardTypeFieldLabelPatternMatchers", + )) + ); + } + _looksLikeEIDField(e, t) { + return !!elementIDOrAutocompleteTokensHasToken(e, t, "device-eid"); + } + _looksLikeIMEIField(e, t) { + return !!elementIDOrAutocompleteTokensHasToken(e, t, "device-imei"); + } + _looksLikeDayField(e) { + return ( + !( + !this._isAutoFillableTextField(e) && + !this._isAutoFillableSelectElement(e) + ) && + null !== + this._cachedElementPatternMatch( + e, + "_dayFieldPatternMatch", + "dayFieldLabelPatternMatchers", + ) + ); + } + _looksLikeMonthField(e, t) { + if ( + !this._isAutoFillableTextField(e) && + !this._isAutoFillableSelectElement(e) + ) + return !1; + if (elementIDOrAutocompleteTokensHasToken(e, t, "cc-exp-month")) return !0; + if ( + null !== + this._cachedElementPatternMatch( + e, + "_monthFieldPatternMatch", + "monthFieldLabelPatternMatchers", + ) + ) + return !0; + if ("select" !== this._getTagName(e).toLowerCase()) return !1; + var r = e.options.length; + if (12 === r || 13 === r) + for ( + var n = [ + selectElementOptionsSequenceAnalysis(e, "text"), + selectElementOptionsSequenceAnalysis(e, "value"), + ], + o = n.length, + i = 0; + i < o; + i++ + ) { + var l = n[i], + a = l.lengthOfLongestSequence, + s = l.lastNumberInSequence; + if (a >= 11 && 12 === s) return !0; + } + return !1; + } + _looksLikeYearField(e, t) { + if ( + !this._isAutoFillableTextField(e) && + !this._isAutoFillableSelectElement(e) + ) + return !1; + if (elementIDOrAutocompleteTokensHasToken(e, t, "cc-exp-year")) return !0; + if ( + null !== + this._cachedElementPatternMatch( + e, + "_yearFieldPatternMatch", + "yearFieldLabelPatternMatchers", + ) + ) + return !0; + if ("select" !== this._getTagName(e).toLowerCase()) return !1; + var r = selectElementOptionsSequenceAnalysis(e, "text"), + n = r.lengthOfLongestSequence, + o = r.lastNumberInSequence; + const i = 3; + return n >= e.options.length - i && 1e3 < o && o < 3e3; + } + _looksLikeOneTimeCodeField(e, t, r, n, o, i, l) { + if ( + !this._isAutoFillableTextField(e) && + !this._isAutoFillableSelectElement(e) + ) + return !1; + if (elementIDOrAutocompleteTokensHasToken(e, t, "one-time-code")) return !0; + const a = e.type; + if ("password" === a) { + if (/^(.+\.)?chase\.com\.?$/.test(document.location.hostname)) return !1; + if (this._matchesPasswordFieldLabelPattern(e)) return !1; + } + if ( + /^(.+\.)?amazon\.(com|ae|com\.au|com\.br|ca|fr|de|in|it|com\.mx|nl|es|com\.tr|co\.uk|sa|sg|se|pl)\.?$/.test( + document.location.hostname, + ) + ) { + const t = /claim|promo/i; + if (t.test(e.id) || t.test(e.name)) return !1; + } + if ( + null !== + this._cachedElementPatternMatch( + e, + "_oneTimeCodePatternMatch", + "oneTimeCodeFieldLabelPatternMatchers", + ) + ) + return !0; + const s = e.getAttribute("maxlength"), + u = s ? parseInt(s) : void 0; + if ( + isFiniteNumber(u) && + u > + MaxLengthForFieldAboveWhichToTreatPotentialOneTimeCodeFieldAsRequiringHigherScrutiny + ) { + if (!i) return !1; + if ( + l.ControlLooksLikeIgnoredDataTypeField || + l.ControlLooksLikeCreditCardCardholderField || + l.ControlLooksLikeCreditCardNumberField || + l.ControlLooksLikeCreditCardSecurityCodeField || + l.ControlLooksLikeCreditCardTypeField || + l.AddressBookLabel + ) + return !1; + } + let c = e.pattern; + if (c) { + let e = regularExpressionFromUntrustedPatternAttributeString(c); + if ( + e && + (e.test("1234") || e.test("123456") || e.test("12345678")) && + !e.test("a") && + !e.test("A") + ) + return !0; + } + const d = "number" === a || "tel" === a; + if (1 === u) { + if (d || r || n) return !0; + const t = this._cachedOneTimeCodePatternMatcher(), + o = e.closest("fieldset"), + i = o?.querySelector("legend"); + if (i) { + if ( + e === (o ? Array.from(queryAllBySelector(o, "input")) : [])[0] && + this._matchPatternAgainstString(t, i.innerText) + ) + return !0; + } + for (let t of [o, e.parentElement, e.closest('*[role~="dialog"]')]) { + if (!t) continue; + const r = Array.from(queryAllBySelector(t, "input")), + n = r.length; + if (n >= 5 && n <= 8) { + if (e === r[0] && r.every((e) => 1 === parseInt(e.maxLength))) + return !0; + } + } + } + const h = + null !== + this._cachedElementPatternMatch( + e, + "_weakOneTimeCodePatternMatch", + "weakOneTimeCodeFieldLabelPatternMatchers", + ); + if (d && h) return !0; + const m = e.placeholder; + if (m && h && /^[#]+$/.test(m.replace(/ /g, ""))) return !0; + const F = (function () { + if (isFiniteNumber(u)) return u; + const e = m?.length; + return e && e < 10 && m === m[0].repeat(e) ? e : void 0; + })(); + if ((4 === F || 6 === F) && h) return !0; + if (7 === u && m && /\d{3} \d{3}/.test(m)) return !0; + if (this._isAutofocusedTextField(e)) { + if (h) return !0; + if ("0" === e.min && "9" === e.max) return !0; + } + if (i) { + if (h) { + if ( + !( + null !== + this._cachedElementPatternMatch( + e, + "_codeButNotOneTimeCodeFieldLabelsPatternMatch", + "codeButNotOneTimeCodeFieldLabelsPatternMatchers", + ) + ) && + !this._matchSearchFieldLabelPattern(e) + ) { + let t = !0; + for ( + let r = e.traversePreviousElement(); + r; + r = r.traversePreviousElement() + ) + if (isInputElement(r) && r.isVisible()) { + t = !1; + break; + } + if (t) return !0; + } + } + let t = 0; + (h && t++, r && t++, n && t++, o && t++, (4 !== F && 6 !== F) || t++); + const i = this._cachedOneTimeCodePatternMatcher(), + l = this._logicalFormsCache.logicalFormForControl(e); + if (l) { + const e = l.backingElement; + if (e) { + let r = !1; + for (let n of Array.from( + querySelectorAllIncludingWithinShadowRoots(e, "h1, h2, h3"), + )) { + let e = n.innerText.trim(); + if (e.length) { + this._matchPatternAgainstString(i, e) && ((r = !0), t++); + break; + } + } + if (!r) { + const r = e.closest("section")?.querySelector("h1, h2, h3"); + r && this._matchPatternAgainstString(i, r.innerText) && t++; + } + this._matchPatternAgainstString(i, e.getAttribute("id")) && t++; + } + } + const a = e.dataset.valRequired; + if ( + ("string" == typeof a && this._matchPatternAgainstString(i, a) && t++, + t >= 2) + ) + return !0; + const s = function (e) { + if (this._matchPatternAgainstString(i, e)) return !0; + const t = e.replaceAll("-", " "); + return e !== t && this._matchPatternAgainstString(i, t); + }.bind(this), + u = window.location.protocol, + c = "http:" === u || "https:" === u, + d = lastPathComponentFromAnchor(window.location); + if (c && d && s(d)) return !0; + { + const e = document.querySelector("link[rel=canonical]"), + t = e ? lastPathComponentForURLString(e.href) : null; + if (t && s(t)) return !0; + } + if (this._matchFromPageScanBeforeElement(i, e, document.body)) return !0; + } + return !1; + } + _looksLikeIgnoredDataTypeField(e, t) { + return ( + !!this._isAutoFillableTextField(e) && + !t?.length && + null !== + this._cachedElementPatternMatch( + e, + "_ignoredDataTypePatternMatch", + "ignoredDataTypeFieldLabelPatternMatchers", + ) + ); + } + _collectTextSample(e) { + if (!e) return ""; + var t, + r = "", + n = e; + do { + ((t = (r = n.innerText.replace(/\s+/g, " ").trim()).length), + (n = n.parentElementIncludingShadowDOMHost())); + } while ( + t < MaximumNumberOfCharactersToCollectForLanguageIdentification && + n + ); + return ( + t > MaximumNumberOfCharactersToCollectForLanguageIdentification && + (r = r.substr( + 0, + MaximumNumberOfCharactersToCollectForLanguageIdentification, + )), + r + ); + } + _explicitMaxLength(e) { + var t = e.getAttribute("maxlength"); + return t ? parseInt(t) : void 0; + } + _explicitMinLength(e) { + let t = e.getAttribute("minlength"); + return t ? parseInt(t) : void 0; + } + _heuristicallyDeterminedMaxLength(e) { + const t = 20; + if ("password" !== e.type) return null; + const r = e.getAttribute("data-ng-maxlength"); + if (r) { + const e = parseInt(r, 10); + if (isFiniteNumber(e)) return e; + } + const n = e.getAttribute("ng-pattern"); + if (!n) return null; + if (!n.startsWith("/") || !n.endsWith("/")) return null; + let o = regularExpressionFromUntrustedPatternAttributeString(n); + if (!o) return null; + let i, + l = "a1Abbb", + a = !1; + for (; l.length <= t; ) { + let e = o.test(l); + if (a && !e) return i; + (e && ((a = !0), (i = l.length)), (l += "b")); + } + return null; + } + _collectControlMetadata(e, t, r, n, o, i, l, a) { + var s = { + ControlTagName: this._getTagName(e), + ControlFieldName: this._getNameOrId(e), + ControlUniqueID: this.controlUniqueID(e), + }; + (e === innermostActiveElement() && (s.ControlIsActiveElement = !0), + this._isAutoFilledTextField(e) && (s.ControlIsAutoFilledTextField = !0), + e.disabled && (s.ControlIsDisabled = !0), + e.readOnly && (s.ControlIsReadOnly = !0), + this._isTextField(e) && (s.ControlIsTextField = !0), + this._isSecureTextField(e) && (s.ControlIsSecureTextField = !0), + this._isLabeledUsernameField(e) && (s.ControlIsLabeledUsernameField = !0), + this._elementDisallowsAutocomplete(e) && (s.DisallowsAutocomplete = !0), + this._isAutofocusedTextField(e) && (s.ControlIsAutofocusedTextField = !0), + (s.ControlAutoFillButtonType = e.autofillButtonType), + (s.ControlLastAutoFillButtonType = e._lastAutofillButtonType)); + const u = e.className; + u && u.length && (s.ControlFieldClass = u); + const c = e.id; + c && c.length && (s.ControlFieldID = c); + const d = e.value; + d && (s.ControlValue = d); + const h = this._associatedUsernameForControl(e); + h && (s.ControlAssociatedUsername = h); + const m = e.maxLength; + if (-1 !== m) s.ControlMaxLength = m; + else { + const t = this._heuristicallyDeterminedMaxLength(e); + t && (s.ControlMaxLength = t); + } + const F = this._explicitMinLength(e); + F && F > 0 && (s.ControlMinLength = F); + const f = e.size; + (f > 0 && (s.ControlSize = f), + e.isVisible() && (s.IsVisible = !0), + isDateTimeInputElement(e) && + (s.ControlRequiredFormatForDateTimeInput = + this._requiredFormatForDateTimeInput[e.type])); + var g = autocompleteTokens(e); + (g && + ((s.AutocompleteTokens = g), + -1 !== g.indexOf("username") + ? (s.ControlClaimsToBeUsernameViaAutocompleteAttribute = !0) + : -1 !== g.indexOf("current-password") + ? (s.ControlClaimsToBeCurrentPasswordViaAutocompleteAttribute = !0) + : -1 !== g.indexOf("new-password") && + (s.ControlClaimsToBeNewPasswordViaAutocompleteAttribute = !0)), + this._looksLikePasswordCredentialField(e) && + ((s.ControlLooksLikePasswordCredentialField = !0), + this._collectExtraControlMetadata(e, s), + s.IsVisible && + !r && + (s.IsVisible = !isElementPositionedToBeEffectivelyInvisible(e)))); + let p = t === WBSFormMetadataRequestPreFill, + C = s.ControlIsActiveElement || !p; + if (C) { + const t = this._collectSelectElementInfo(e); + (t && (s.SelectElementInfo = t), + this._isVerticalWritingMode(e) && + (s.ControlIsVerticalWritingMode = !0)); + var y = placeholderInfoForElement(e); + y && !y.AttributeMatchedWasValue && (s.ControlPlaceholder = y.Text); + var b = e.getAttribute("type"); + b && (s.ControlType = b); + } + if ( + (this._looksLikeIgnoredDataTypeField(e, g) + ? (s.ControlLooksLikeIgnoredDataTypeField = !0) + : this._looksLikeCreditCardCardholderField(e, g) + ? (s.ControlLooksLikeCreditCardCardholderField = !0) + : this._looksLikeCreditCardNumberField(e, g) + ? (s.ControlLooksLikeCreditCardNumberField = !0) + : this._looksLikeCreditCardSecurityCodeField(e, g) + ? (s.ControlLooksLikeCreditCardSecurityCodeField = !0) + : this._looksLikeCreditCardTypeField(e, g) && + (s.ControlLooksLikeCreditCardTypeField = !0), + C && + (this._looksLikeMonthField(e, g) + ? (s.ControlLooksLikeMonthField = !0) + : this._looksLikeYearField(e, g) + ? (s.ControlLooksLikeYearField = !0) + : this._looksLikeDayField(e) + ? (s.ControlLooksLikeDayField = !0) + : !s.ControlLooksLikeCreditCardSecurityCodeField && + this._looksLikeCreditCardCompositeExpirationDateField(e, g) && + (s.ControlLooksLikeCreditCardCompositeExpirationDateField = + !0)), + p || + (this._looksLikeEIDField(e, g) + ? (s.ControlLooksLikeEIDField = !0) + : this._looksLikeIMEIField(e, g) && + (s.ControlLooksLikeIMEIField = !0)), + p || + s.ControlLooksLikeIgnoredDataTypeField || + s.ControlIsSecureTextField || + s.ControlLooksLikeCreditCardNumberField || + s.ControlLooksLikeCreditCardSecurityCodeField || + s.ControlLooksLikeCreditCardTypeField || + s.ControlLooksLikeCreditCardCompositeExpirationDateField || + s.ControlLooksLikeEIDField || + s.ControlLooksLikeIMEIField || + (s.AddressBookLabel = this._addressBookLabelForElement(e)), + s.ControlIsActiveElement || t === WBSFormMetadataRequestTesting || a) + ) { + let t = l && s.IsVisible; + this._looksLikeOneTimeCodeField(e, g, n, o, i, t, s) && + (s.ControlLooksLikeOneTimeCodeField = !0); + } + return ( + t === WBSFormMetadataRequestTesting && + globalThis.WAS && + (s.ControlNodePath = WAS.NodePath.fromNode(e)?.objectRepresentation), + s + ); + } + _usesGeneratedPassword(e) { + for ( + var t = !1, r = this._elementsWithGeneratedPasswords.length, n = 0; + n < r; + ++n + ) { + var o = this._elementsWithGeneratedPasswords[n]; + if (e.containsControl(o)) { + if (o.value !== this._generatedPasswords[n]) return !1; + t = !0; + } + } + return t; + } + _associatedUsernameForControl(e) { + return this._isAutoFillableTextField(e) + ? e.getAttribute("data-username") + : null; + } + _collectSelectElementInfo(e) { + if (!this._isAutoFillableSelectElement(e)) return null; + if (!e.options.length) return null; + for (var t = [], r = e.options, n = r.length, o = 0; o < n; ++o) { + var i = r[o]; + i.disabled || + ((i.label || i.text) && t.push([o, i.label ? i.label : i.text])); + } + return t.length ? t : null; + } + _stringsToInspectForDeterminingFormType(e) { + let t = [], + r = e.formElement, + n = r.getAttribute("id"), + o = r.getAttribute("name"); + (n && t.push(n), o && t.push(o)); + let i = queryAllBySelector(r, "legend"); + 1 === i.length && t.push(i[0].innerText); + const l = 0.8; + if ( + 1 === this._logicalFormsCache.numberOfVisibleFormsWithVisibleElements && + r.isVisible() && + !r.ownerDocument.defaultView.frameElement && + r.getBoundingClientRect().top < l * document.documentElement.clientHeight + ) { + let e = documentTitleWithoutHostNamePrefix(); + e && t.push(e); + const r = lastPathComponentFromAnchor(window.location); + r && r.length && t.push(r); + } + let a = []; + if (r.isVisible()) { + const e = function (e, t) { + return ( + (t.left <= e.left && + e.right <= t.right && + e.distanceToRect(t) < 100) || + (e.left - t.left == t.right - e.right && e.distanceToRect(t) < 200) + ); + }; + let n = r.getBoundingClientRect(), + o = !1, + i = new Set(); + for ( + let l = 0, a = r; + l <= 2 && a; + ++l, a = a.parentElementIncludingShadowDOMHost() + ) { + let r = Array.prototype.slice.call( + queryAllBySelector( + a, + "h1, h2, h3, [class*='header' i], [class*='heading' i]", + ), + ), + l = [[], [], [], []]; + for (const e of r) { + let t = e.tagName; + "H1" === t + ? l[0].push(e) + : "H2" === t + ? l[1].push(e) + : "H3" === t + ? l[2].push(e) + : l[3].push(e); + } + let s = !0; + for (const r of l) { + let l = r.length; + if (0 === l) { + s = !1; + continue; + } + if (l > 1) break; + let a = r[0]; + if (!a.isVisible()) break; + e(a.getBoundingClientRect(), n) && + (i.add(a), t.push(a.innerText), (o = !0)); + break; + } + if (s) break; + } + const l = 100; + for ( + let a = r.traversePreviousElement(), s = 0; + a && s < l; + a = a.traversePreviousElement(), s++ + ) + if (!i.has(a) && a.matches("h1, h2, h3")) { + const r = a.previousElementSibling; + if (r && r.matches("h1, h2, h3")) break; + e(a.getBoundingClientRect(), n) && (t.push(a.innerText), (o = !0)); + break; + } + if (!o) { + let r = queryAllBySelector(document.documentElement, "h1"); + if (1 === r.length) { + let o = r[0]; + e(o.getBoundingClientRect(), n) && t.push(o.innerText); + } + } + for ( + let e = 0, t = r; + e <= 2 && t; + ++e, t = t.parentElementIncludingShadowDOMHost() + ) { + let e = Array.prototype.slice + .call( + queryAllBySelector( + t, + 'button, input[type=submit], a[class~="button"]', + ), + ) + .filter(function (e) { + if (!e.isVisible()) return !1; + let t = e.getBoundingClientRect(); + return ( + t.top > n.bottom && + !r.contains(e) && + n.left <= t.left && + t.right <= n.right && + t.distanceToRect(n) < 100 + ); + }); + if (e.length) { + a = e; + break; + } + } + } + let s = !1, + u = [], + c = this._elementsActingAsButtonsInForm(r), + d = [...new Set(e.elements.concat(a, c))]; + for (const e of d) { + if (!e.matches("a")) { + const t = e.type; + if (("password" === t && (s = !0), "submit" !== t && "button" !== t)) + continue; + } + s && + (e.isVisible() + ? this._addInterestingStringsForButton(e, t) + : u.push(e)); + } + if (0 === t.length) + for (const e of u) this._addInterestingStringsForButton(e, t); + return t; + } + _addInterestingStringsForButton(e, t) { + const r = e.getAttribute("id"); + r && t.push(r); + const n = e.getAttribute("value"); + n && t.push(n); + const o = e.innerText; + o && o.length > 0 && t.push(o); + } + _autoFillFormTypeOfTypesUsingKeywordMatching(e, t, r, n) { + for (var o = t.length, i = [], l = 0; l < o; ++l) { + var a = (0, mapOfFormTypeToProducerOfAssociatedKeywords[t[l]])(); + i.push(a); + } + var s = this._stringsToInspectForDeterminingFormType(e), + u = this._regularExpressionsIndicatingNonAutoFillableFormType; + u || + ((u = regularExpressionsFromStrings( + FormMetadataJSController.regularExpressionsIndicatingNonAutoFillableFormType, + )), + (this._regularExpressionsIndicatingNonAutoFillableFormType = u)); + var c = u.length, + d = []; + for (l = 0; l < o; ++l) d.push(0); + if (n) + for (const [e, r] of Object.entries(n)) d[t.indexOf(parseInt(e))] += r; + for (var h = s.length, m = 0; m < h; ++m) { + for (var F = s[m].toLowerCase(), f = 0; f < c; ++f) + if (u[f].test(F)) return WBSAutoFillFormTypeNonAutoFillable; + for (l = 0; l < o; ++l) { + a = i[l]; + for (var g in a) -1 !== F.indexOf(g) && (d[l] += a[g]); + } + } + for (let r = 0; r < o; ++r) { + const n = this._mapOfFormTypeToExtraScoreProducer[t[r]]; + d[r] += n(e); + } + for (l = 0; l < o; ++l) 0 !== d[l] && 0; + var p = formActionAsAnchorElement(e.formElement, !0); + if (p) { + var C = p.pathname.toLowerCase() + p.search.toLowerCase(); + for (l = 0; l < o; ++l) { + a = i[l]; + for (var g in a) -1 !== C.indexOf(g) && (d[l] += a[g]); + } + } + var y = [], + b = 0; + for (l = 0; l < o; ++l) { + var A = d[l]; + A > 0 && (A >= b ? ((b = A), y.unshift(l)) : y.push(l)); + } + if (1 === y.length) return t[y[0]]; + if (y.length > 1) { + var w = y[0]; + if (d[w] > d[y[1]]) return t[w]; + } + return r; + } + _matchesNonUsernameFieldLabelPattern(e) { + if ( + (this._nonUsernameFieldPatternMatchers || + (this._nonUsernameFieldPatternMatchers = + FormMetadataJSController.nonUsernameFieldLabelPatternMatchers), + this._bestMatchForElement(e, this._nonUsernameFieldPatternMatchers)) + ) + return !0; + const t = e.value; + if (!e.id && !e.name && t && e.disabled) + for (const e of this._nonUsernameFieldPatternMatchers) + if (this._matchPatternAgainstString(e, t)) return !0; + return !1; + } + _matchSearchFieldLabelPattern(e) { + if ( + (this._searchFieldLabelPatternMatchers || + (this._searchFieldLabelPatternMatchers = + FormMetadataJSController.searchFieldLabelPatternMatchers), + this._bestMatchForElement(e, this._searchFieldLabelPatternMatchers, !0)) + ) + return !0; + const t = e.value; + if (!e.id && !e.name && t && e.disabled) + for (const e of this._searchFieldLabelPatternMatchers) + if (this._matchPatternAgainstString(e, t)) return !0; + return !1; + } + _matchesNonEmailFieldLabelPattern(e) { + return ( + this._nonEmailFieldPatternMatchers || + (this._nonEmailFieldPatternMatchers = + FormMetadataJSController.nonEmailFieldLabelPatternMatchers), + !!this._bestMatchForElement(e, this._nonEmailFieldPatternMatchers) + ); + } + _scoreForUsernameFieldCandidateFromLabelingAndPositionOfField(e, t, r) { + return this._isLabeledUsernameField(e) + ? t + ? UsernameCandidateScoreForUsernameLabeledFieldBelowPasswordField + : UsernameCandidateScoreForUsernameLabeledFieldAbovePasswordField + : this._isLabeledEmailField(e) && + !this._matchesNonEmailFieldLabelPattern(e) + ? t + ? UsernameCandidateScoreForEmailLabeledFieldBelowPasswordField + : UsernameCandidateScoreForEmailLabeledFieldAbovePasswordField + : r + ? UsernameCandidateScoreForPlainTextFieldDirectlyBeforePasswordField + : UsernameCandidateScoreForPlainTextField; + } + _scoreForUsernameFieldCandidate(e, t, r) { + var n = this._scoreForUsernameFieldCandidateFromLabelingAndPositionOfField( + e, + t, + r, + ); + return ( + e.isVisible() && (n += UsernameCandidateScoreBonusForVisibleElement), + this._matchesNonUsernameFieldLabelPattern(e) && + (n -= + UsernameCandidateScorePenaltyForMatchingNonUsernameFieldLabelPattern), + this._matchSearchFieldLabelPattern(e) && + (n -= UsernameCandidateScorePenaltyForMatchingSearchFieldLabelPattern), + e.readOnly && (n -= UsernameCandidateScorePenaltyForReadOnlyElement), + e.id || e.name || (n -= UsernameCandidateScorePenaltyForAnonymousElement), + n + ); + } + _matchesPasswordFieldLabelPattern(e) { + return ( + this._passwordFieldPatternMatchers || + (this._passwordFieldPatternMatchers = + FormMetadataJSController.passwordFieldLabelPatternMatchers), + !!this._bestMatchForElement(e, this._passwordFieldPatternMatchers) + ); + } + _matchesConfirmPasswordFieldLabelPattern(e, t = !1) { + return ( + this._confirmPasswordFieldPatternMatchers || + (this._confirmPasswordFieldPatternMatchers = + FormMetadataJSController.confirmPasswordFieldLabelPatternMatchers), + !!this._bestMatchForElement( + e, + this._confirmPasswordFieldPatternMatchers, + t, + ) + ); + } + _matchesConfirmEmailFieldLabelPattern(e) { + return ( + !!this._isLabeledEmailField(e) && + (this._confirmEmailFieldPatternMatchers || + (this._confirmEmailFieldPatternMatchers = + FormMetadataJSController.confirmEmailFieldLabelPatternMatchers), + !!this._bestMatchForElement(e, this._confirmEmailFieldPatternMatchers)) + ); + } + _collectRadioButtonInfo(e, t) { + function r(e, t) { + var r = e.trim(); + r && t.push(r); + } + function n(e, t) { + (r(e.alt, t), r(e.title, t), r(lastPathComponentForURLString(e.src), t)); + } + function o(e) { + let t = []; + r(e.innerText, t); + let o = queryAllBySelector(e, "img"), + i = o.length; + for (let e = 0; e < i; ++e) n(o[e], t); + return t.length ? t : null; + } + for ( + var i = e.radioButtonsWithName(t), l = i.length, a = !1, s = {}, u = 0; + u < l; + ++u + ) { + s[(f = i[u]).value] = [f.value]; + for (var c = this._labelsForElement(f), d = c.length, h = 0; h < d; ++h) { + a = !0; + var m = o(c[h]); + m && (s[f.value] = s[f.value].concat(m)); + } + } + if (a) return s; + const F = 64; + for (u = 0; u < l; ++u) { + for ( + var f, g = "", p = (f = i[u]).traverseNextNode(); + p && !this._isRenderedFormControl(p); + p = p.traverseNextNode() + ) { + var C = p.localName; + if ("td" === C || "tr" === C || "ul" === C || "ol" === C || "dl" === C) + break; + if (p instanceof HTMLImageElement) n(p, s[f.value]); + else if (p.nodeType === Node.TEXT_NODE) { + var y = p.nodeValue.trim(); + if ((y && (g += y.substr(0, F - g.length)), g.length >= F)) break; + } + } + g && s[f.value].push(g); + } + return s; + } + _bestUsernameFieldCandidate(e, t, r) { + var n = t.FormControls, + o = n.filter(function (e) { + return e.ControlClaimsToBeUsernameViaAutocompleteAttribute; + }); + if (1 === o.length) return o[0]; + for ( + var i = 0, l = [], a = !1, s = n.indexOf(r), u = n.length, c = 0; + c < u; + ++c + ) { + var d = n[c]; + if (d === r) { + a = !0; + continue; + } + if (!d.ControlIsTextField || d.ControlIsSecureTextField) continue; + if (t.IsVisible && !n[c].IsVisible && !d.ControlValue) continue; + const o = 100; + let F = e[c]; + if (!(F.value.length > o)) { + var h = c + 1 < u && c + 1 === s, + m = this._scoreForUsernameFieldCandidate(F, a, h); + m > i ? ((l = [c]), (i = m)) : m === i && l.push(c); + } + } + var F = l.length; + if (i < LowestScoreForLabeledUsernameFieldCandidate && F > 1) return null; + if (i < LowestScoreForUsernameFieldCandidate) return null; + switch (F) { + case 0: + return null; + case 1: + return n[l[0]]; + default: + var f = e[s].getBoundingClientRect(), + g = {}; + return ( + l.forEach(function (t) { + g[t] = f.distanceToRect(e[t].getBoundingClientRect()); + }), + n[ + l.sort(function (e, t) { + return g[e] - g[t]; + })[0] + ] + ); + } + } + _autoFillFormTypeFromCandidateFormTypes(e, t, r) { + switch (t.length) { + case 1: + return t[0]; + case 2: + return this._autoFillFormTypeOfTypesUsingKeywordMatching( + e, + [t[0], t[1]], + r, + ); + default: + return WBSAutoFillFormTypeAutoFillableStandard; + } + } + _shouldTrustElementThatClaimsToBeCurrentPasswordViaAutocompleteAttribute(e) { + return !e.dataset.valRegexPattern; + } + _identifyFormTypeAndPasswordFieldIndicesFromAutocompleteAttributes(e, t) { + const r = [null, null]; + if (/^(.+\.)?roll20\.net\.?$/.test(document.location.hostname)) return r; + var n = t.length; + if (n > 3) return r; + for (var o = [], i = [], l = 0; l < n; ++l) { + var a = t[l]; + a.ControlClaimsToBeCurrentPasswordViaAutocompleteAttribute && + this._shouldTrustElementThatClaimsToBeCurrentPasswordViaAutocompleteAttribute( + e[l], + ) + ? o.push(l) + : a.ControlClaimsToBeNewPasswordViaAutocompleteAttribute && i.push(l); + } + var s = o.length, + u = i.length; + if (s + u !== n) return r; + switch (n) { + case 0: + return r; + case 1: + if (s) return [null, null, WBSAutoFillFormTypeAutoFillableLogin]; + if (u) return [null, null, WBSAutoFillFormTypeNewAccount]; + case 2: + if (1 === s && 1 === u) + return [ + [WBSAutoFillFormTypeChangePassword], + { OldPasswordFieldIndex: o[0], PasswordFieldIndex: i[0] }, + ]; + if (0 === s && 2 === u) + return [ + [WBSAutoFillFormTypeNewAccount, WBSAutoFillFormTypeChangePassword], + { PasswordFieldIndex: i[0], ConfirmationFieldIndex: i[1] }, + ]; + break; + case 3: + if (1 === s && 2 === u) + return [ + [WBSAutoFillFormTypeChangePassword], + { + OldPasswordFieldIndex: o[0], + PasswordFieldIndex: i[0], + ConfirmationFieldIndex: i[1], + }, + ]; + } + return r; + } + _identifyPasswordFieldIndices(e, t) { + var r = e.length; + if (0 === r) return {}; + if (1 === r) return { PasswordFieldIndex: 0 }; + if ( + (this._oldPasswordPatternMatchers || + (this._oldPasswordPatternMatchers = + FormMetadataJSController.oldPasswordFieldLabelPatternMatchers), + 2 === r) + ) { + return this._bestMatchForElement(t[0], this._oldPasswordPatternMatchers) + ? { OldPasswordFieldIndex: 0, PasswordFieldIndex: 1 } + : this._bestMatchForElement(t[1], this._oldPasswordPatternMatchers) + ? { OldPasswordFieldIndex: 1, PasswordFieldIndex: 0 } + : { PasswordFieldIndex: 0, ConfirmationFieldIndex: 1 }; + } + return this._bestMatchForElement(t[r - 1], this._oldPasswordPatternMatchers) + ? { + PasswordFieldIndex: r - 3, + ConfirmationFieldIndex: r - 2, + OldPasswordFieldIndex: r - 1, + } + : { + PasswordFieldIndex: r - 2, + ConfirmationFieldIndex: r - 1, + OldPasswordFieldIndex: r - 3, + }; + } + _removePlaceholderTextForFormMetadata(e, t) { + for (var r = e.length, n = 0; n < r; ++n) { + var o = t.FormControls[n]; + if ( + o.ControlValue && + o.ControlIsTextField && + !o.ControlIsSecureTextField && + !o.ControlIsReadOnly + ) { + var i = legacyPlaceholderInfoForInputElement(e[n]); + i && + ((i.AttributeMatchedWasValue && + o.ControlUniqueID === t.UsernameElementUniqueID) || + (o.ControlValue = "")); + } + } + } + _isPasswordConfirmPair(e, t) { + var r = this._matchesPasswordFieldLabelPattern(e), + n = this._matchesConfirmPasswordFieldLabelPattern(t); + return r && n; + } + _trailingArgumentsForCollectControlMetadataFunction(e, t, r) { + let n = isElementPositionedToBeEffectivelyInvisible(e.backingElement), + o = !1, + i = !1, + l = !1; + if (innermostActiveElement() || t === WBSFormMetadataRequestTesting) { + let e = documentTitleWithoutHostNamePrefix(), + t = this._cachedOneTimeCodePatternMatcher(); + o = !!this._matchPatternAgainstString(t, e); + let n = this._cachedLoginFormTypePatternMatcher(); + if (((i = !!this._matchPatternAgainstString(n, e)), r)) { + let e = location.pathname.split("/"), + n = stripCommonPrefix(r.pathname.split("/"), e)[0].join("/"); + n.length && (l = !!this._matchPatternAgainstString(t, n)); + } + } + let a = !1; + for (let t of e.elements) + if (this._isTextField(t) && t.isVisible()) { + if (a) { + a = !1; + break; + } + a = !0; + } + return [n, l, o, i, a]; + } + _collectFormMetadata(e, t) { + var r, + n, + o = + ((n = 0), + { + backwardScanCache: new WeakMap(), + forwardScanCache: new WeakMap(), + shouldUsePageScan: function () { + return ( + n < + numberOfConsecutiveElementsWithoutSuccessfulPageScanAfterWhichPageScanIsAbandoned + ); + }, + willStartCollectingMetadataForControl: function () { + r = null; + }, + reportPageScanUsedSuccessfully: function (e) { + r = !(!e && !r); + }, + didFinishCollectingMetadataForControl: function () { + !0 === r ? (n = 0) : !1 === r && n++; + }, + }); + this._pageScanContext = o; + var i = e.formElement, + l = { + FormID: e.formUniqueID, + ContainsActiveElement: !1, + FormControls: [], + AutoFillFormType: WBSAutoFillFormTypeAutoFillableStandard, + UsernameElementUniqueID: void 0, + OldPasswordElementUniqueID: void 0, + PasswordElementUniqueID: void 0, + ConfirmPasswordElementUniqueID: void 0, + UsesGeneratedPassword: this._usesGeneratedPassword(e), + FirstCreditCardCardholderFieldOrCreditCardNumberFieldUniqueID: void 0, + IsVisible: i.isVisible(), + TextSample: void 0, + RequestType: t, + }; + (this._elementDisallowsAutocomplete(i) && (l.DisallowsAutocomplete = !0), + i instanceof HTMLFormElement && + (l.FormIsSearchForm = this.isSearchForm(i, !0)), + e.isAnnotated && (l.Annotations = e.annotations)); + var a = i.getAttribute("rel"); + a && "async" === a.toLowerCase() && (l.FormUsesRelAsync = !0); + let s = formActionAsAnchorElement(i); + if ( + (s && s.href && (l.FormAction = s.href), + t == WBSFormMetadataRequestCollectMetadataFromDebugMenu || + t == WBSFormMetadataRequestTesting) + ) { + let e = selectorForElement(i); + e && e.length && (l.LogicalFormElementSelector = e); + } + var u = e.elements, + c = !u.some(this._isSecureTextField.bind(this)); + let [d, h, m, F, f] = + this._trailingArgumentsForCollectControlMetadataFunction(e, t, s); + var g = 0, + p = !1, + C = [], + y = [], + b = [], + A = [], + w = void 0, + E = void 0, + _ = void 0, + T = void 0, + S = !1, + I = !1, + P = {}, + v = []; + let L = !1; + for (var M = u.length, x = 0; x < M; ++x) { + var k = u[x]; + if (c && !k.isVisible() && !k._relatesToCredentials) continue; + var B = isRadioButtonElement(k), + D = k.name; + if (B && P[D]) continue; + o.willStartCollectingMetadataForControl(); + const r = !L; + var U = this._collectControlMetadata(k, t, d, h, m, F, f, r); + if ( + (o.didFinishCollectingMetadataForControl(), + (L = !0), + x + 1 < M && + (U.ControlNextFieldUniqueID = this.controlUniqueID(u[x + 1])), + l.FormControls.push(U), + v.push(k), + U.IsVisible || !l.IsVisible || k._relatesToCredentials) + ) + if ( + (U.ControlIsActiveElement && (l.ContainsActiveElement = !0), D && B) + ) + ((P[D] = 1), + (U.ControlValue = ""), + (U.RadioButtonInfo = this._collectRadioButtonInfo(e, D))); + else if (U.ControlIsTextField || U.SelectElementInfo) + if ( + (!I && U.ControlLooksLikeCreditCardSecurityCodeField && (I = !0), + S || + (!U.ControlLooksLikeCreditCardCardholderField && + !U.ControlLooksLikeCreditCardNumberField)) + ) { + if ( + !( + U.ControlLooksLikeDayField || + U.ControlLooksLikeMonthField || + U.ControlLooksLikeYearField || + U.ControlLooksLikeCreditCardCompositeExpirationDateField + ) + ) { + if (U.ControlLooksLikePasswordCredentialField) { + if ( + U.ControlLooksLikeCreditCardSecurityCodeField || + U.ControlLooksLikeCreditCardNumberField || + U.ControlLooksLikeIgnoredDataTypeField + ) + continue; + k.isHiddenFromAccessibilityTree() + ? (b.push(k), A.push(U)) + : (C.push(k), y.push(U)); + } + if (this._isLabeledEmailField(k)) { + if (++g > 2) { + p = !1; + continue; + } + if ( + !( + x + 1 < M && + this._matchesConfirmEmailFieldLabelPattern(u[x + 1]) + ) + ) + continue; + p = !0; + } + } + } else + ((S = !0), + (l.FirstCreditCardCardholderFieldOrCreditCardNumberFieldUniqueID = + U.ControlUniqueID)); + } + !C.length && b.length && ((C = b), (y = A)); + var R, + O, + N = + this._identifyFormTypeAndPasswordFieldIndicesFromAutocompleteAttributes( + C, + y, + ), + W = N[0], + q = N[1], + K = N[2], + V = q || this._identifyPasswordFieldIndices(y, C); + if ( + (void 0 !== V.PasswordFieldIndex && + ((w = y[V.PasswordFieldIndex]), + (l.PasswordElementUniqueID = w.ControlUniqueID), + (E = this._explicitMaxLength(C[V.PasswordFieldIndex]))), + void 0 !== V.ConfirmationFieldIndex && + ((_ = y[V.ConfirmationFieldIndex]), + (l.ConfirmPasswordElementUniqueID = _.ControlUniqueID), + (T = this._explicitMaxLength(C[V.ConfirmationFieldIndex]))), + void 0 !== V.OldPasswordFieldIndex) + ) { + var H = y[V.OldPasswordFieldIndex]; + l.OldPasswordElementUniqueID = H.ControlUniqueID; + } + if ( + (w && (R = this._bestUsernameFieldCandidate(v, l, w)), + R + ? (l.UsernameElementUniqueID = R.ControlUniqueID) + : (O = this._findHiddenUsernameElement(e, l, v)), + W) + ) + l.AutoFillFormType = this._autoFillFormTypeFromCandidateFormTypes( + e, + W, + W[0], + ); + else if (1 === C.length && p) + l.AutoFillFormType = this._autoFillFormTypeOfTypesUsingKeywordMatching( + e, + [WBSAutoFillFormTypeNewAccount, WBSAutoFillFormTypeChangePassword], + WBSAutoFillFormTypeNewAccount, + ); + else if (l.UsernameElementUniqueID) + switch (C.length) { + case 0: + break; + case 1: + if ( + I && + l.UsernameElementUniqueID === + l.FirstCreditCardCardholderFieldOrCreditCardNumberFieldUniqueID && + y[0].ControlLooksLikeCreditCardNumberField + ) + break; + if (this._matchesConfirmPasswordFieldLabelPattern(C[0])) { + let t = {}; + (this._isElementFollowedByForgotPasswordAffordance(k, i) && + (t[WBSAutoFillFormTypeAutoFillableLogin] = 2), + (l.AutoFillFormType = + this._autoFillFormTypeOfTypesUsingKeywordMatching( + e, + [ + WBSAutoFillFormTypeNewAccount, + WBSAutoFillFormTypeChangePassword, + ], + K || WBSAutoFillFormTypeAutoFillableLogin, + t, + ))); + } else { + let t = C[0], + r = {}, + n = + 2 * + this._numberOfForgotUserNameEmailOrPasswordAffordancesFollowingElement( + t, + e.backingElement, + ); + (n && (r[WBSAutoFillFormTypeAutoFillableLogin] = n), + (l.AutoFillFormType = + this._autoFillFormTypeOfTypesUsingKeywordMatching( + e, + [ + WBSAutoFillFormTypeNewAccount, + WBSAutoFillFormTypeAutoFillableLogin, + ], + K || WBSAutoFillFormTypeAutoFillableLogin, + r, + ))); + } + break; + case 2: + E === T + ? (l.AutoFillFormType = + this._autoFillFormTypeOfTypesUsingKeywordMatching( + e, + [ + WBSAutoFillFormTypeNewAccount, + WBSAutoFillFormTypeChangePassword, + ], + WBSAutoFillFormTypeNewAccount, + )) + : T + ? this._isPasswordConfirmPair(C[0], C[1]) + ? (l.AutoFillFormType = + this._autoFillFormTypeOfTypesUsingKeywordMatching( + e, + [ + WBSAutoFillFormTypeNewAccount, + WBSAutoFillFormTypeChangePassword, + ], + WBSAutoFillFormTypeNonAutoFillable, + )) + : (l.AutoFillFormType = WBSAutoFillFormTypeNonAutoFillable) + : (l.AutoFillFormType = + this._autoFillFormTypeOfTypesUsingKeywordMatching( + e, + [ + WBSAutoFillFormTypeNewAccount, + WBSAutoFillFormTypeChangePassword, + ], + WBSAutoFillFormTypeNonAutoFillable, + )); + break; + case 3: + E === T || + !T || + this._isPasswordConfirmPair( + C[V.PasswordFieldIndex], + C[V.ConfirmationFieldIndex], + ) + ? (l.AutoFillFormType = WBSAutoFillFormTypeChangePassword) + : (l.AutoFillFormType = WBSAutoFillFormTypeNonAutoFillable); + break; + default: + l.AutoFillFormType = WBSAutoFillFormTypeNonAutoFillable; + } + else if (2 === C.length || 3 === C.length) + if (E !== T && T) + 2 === C.length + ? this._isPasswordConfirmPair(C[0], C[1]) + ? (l.AutoFillFormType = + this._autoFillFormTypeOfTypesUsingKeywordMatching( + e, + [ + WBSAutoFillFormTypeNewAccount, + WBSAutoFillFormTypeChangePassword, + ], + WBSAutoFillFormTypeNonAutoFillable, + )) + : (l.AutoFillFormType = WBSAutoFillFormTypeNonAutoFillable) + : this._isPasswordConfirmPair( + C[V.PasswordFieldIndex], + C[V.ConfirmationFieldIndex], + ) + ? (l.AutoFillFormType = WBSAutoFillFormTypeChangePassword) + : (l.AutoFillFormType = WBSAutoFillFormTypeNonAutoFillable); + else { + let t = {}; + (this._isPasswordConfirmPair( + C[V.PasswordFieldIndex], + C[V.ConfirmationFieldIndex], + ) && (t[WBSAutoFillFormTypeChangePassword] = 2), + (l.AutoFillFormType = + this._autoFillFormTypeOfTypesUsingKeywordMatching( + e, + [ + WBSAutoFillFormTypeNewAccount, + WBSAutoFillFormTypeChangePassword, + ], + WBSAutoFillFormTypeChangePassword, + t, + ))); + } + else if (1 === C.length) { + var G = C[0]; + if (this._matchesConfirmPasswordFieldLabelPattern(G, !0)) { + let t = {}; + (this._isElementFollowedByForgotPasswordAffordance(k, i) && + (t[WBSAutoFillFormTypeAutoFillableLogin] = 2), + (l.AutoFillFormType = + this._autoFillFormTypeOfTypesUsingKeywordMatching( + e, + [ + WBSAutoFillFormTypeAutoFillableLogin, + WBSAutoFillFormTypeChangePassword, + ], + WBSAutoFillFormTypeChangePassword, + t, + ))); + } else if (this._matchesPasswordFieldLabelPattern(G)) + if (this._isElementFollowedByForgotPasswordAffordance(G, i)) + l.AutoFillFormType = WBSAutoFillFormTypeAutoFillableLogin; + else { + var J = [ + WBSAutoFillFormTypeNewAccount, + WBSAutoFillFormTypeAutoFillableLogin, + WBSAutoFillFormTypeChangePassword, + ]; + ((l.AutoFillFormType = + this._autoFillFormTypeOfTypesUsingKeywordMatching( + e, + J, + WBSAutoFillFormTypeNonAutoFillable, + )), + l.AutoFillFormType === WBSAutoFillFormTypeNonAutoFillable && + O && + (l.AutoFillFormType = WBSAutoFillFormTypeNewAccount)); + } + else l.AutoFillFormType = WBSAutoFillFormTypeNonAutoFillable; + } else + 0 !== C.length && + (l.AutoFillFormType = WBSAutoFillFormTypeNonAutoFillable); + if ( + l.AutoFillFormType === WBSAutoFillFormTypeAutoFillableStandard && + this._shouldDetectStandaloneUserNameFields() + ) { + var j = null, + Y = null, + z = null, + $ = 0, + Z = v.length; + for (x = 0; x < Z; ++x) { + k = v[x]; + var X = l.FormControls[x], + Q = X.IsVisible; + if ((Q && X.ControlIsTextField && $++, $ > 1)) break; + if (k.closest("footer")) continue; + let t = {}; + this._isElementFollowedByForgotUserNameOrEmailOrFederatedSignInAffordance( + k, + i, + ) && (t[WBSAutoFillFormTypeAutoFillableLogin] = 2); + var ee = this._isLabeledEmailField(k); + if ( + Q && + (X.ControlClaimsToBeUsernameViaAutocompleteAttribute || + X.ControlIsLabeledUsernameField || + ee || + this._isLabeledLoginField(k)) && + !this._matchesNonUsernameFieldLabelPattern(k) && + !this._matchSearchFieldLabelPattern(k) && + !k.readOnly && + "INPUT" === k.tagName && + !this._isLabeledSignUpField(k) + ) { + this._autoFillFormTypeOfTypesUsingKeywordMatching( + e, + [ + WBSAutoFillFormTypeNewAccount, + WBSAutoFillFormTypeAutoFillableLogin, + ], + ee + ? WBSAutoFillFormTypeNewAccount + : WBSAutoFillFormTypeAutoFillableLogin, + t, + ) === WBSAutoFillFormTypeAutoFillableLogin && + ((j = k), (Y = X), (z = WBSAutoFillFormTypeAutoFillableLogin)); + } + const r = X.AutocompleteTokens; + if (r) { + const n = r.includes("username"), + o = r.includes("email"); + if (r.includes("webauthn") && (n || o)) { + ((j = k), (Y = X), (z = WBSAutoFillFormTypeAutoFillableLogin)); + continue; + } + n && + ee && + ((j = k), + (Y = X), + (z = this._autoFillFormTypeOfTypesUsingKeywordMatching( + e, + [ + WBSAutoFillFormTypeNewAccount, + WBSAutoFillFormTypeAutoFillableLogin, + ], + WBSAutoFillFormTypeAutoFillableLogin, + t, + ))); + } + } + 1 === $ && + Y && + z && + !controlAppearsToBePartOfPhotoTaggingInterface(j) && + ((l.AutoFillFormType = z), + (l.UsernameElementUniqueID = Y.ControlUniqueID)); + } + (l.AutoFillFormType === WBSAutoFillFormTypeNewAccount && + l.FirstCreditCardCardholderFieldOrCreditCardNumberFieldUniqueID === + l.UsernameElementUniqueID && + (l.UsernameElementUniqueID = void 0), + !l.UsernameElementUniqueID && + O && + this._extractMetadataForHiddenUsernameElement(O, l, v), + l.AutoFillFormType != WBSAutoFillFormTypeAutoFillableLogin && + l.AutoFillFormType != WBSAutoFillFormTypeNewAccount && + l.AutoFillFormType != WBSAutoFillFormTypeChangePassword && + ((l.UsernameElementUniqueID = void 0), + (l.OldPasswordElementUniqueID = void 0), + (l.PasswordElementUniqueID = void 0), + (l.ConfirmPasswordElementUniqueID = void 0)), + l.IsVisible || + l.AutoFillFormType == WBSAutoFillFormTypeAutoFillableLogin || + l.AutoFillFormType == WBSAutoFillFormTypeNewAccount || + l.AutoFillFormType == WBSAutoFillFormTypeChangePassword || + (l.AutoFillFormType = WBSAutoFillFormTypeNonAutoFillable), + t !== WBSFormMetadataRequestPreFill && + (l.TextSample = this._collectTextSample(e.formElement)), + (l.FormIsEligibleForAutomaticLogin = + this._formIsEligibleForAutomaticLogin(l, e.backingElement))); + for (let e of l.FormControls) + if ( + e.ControlLooksLikeOneTimeCodeField && + this._oneTimeCodeIsEligibleForAutomaticLogin(e, l) + ) { + e.OneTimeCodeIsEligibleForAutomaticLogin = !0; + break; + } + if (l.IsVisible && !FormMetadataJSController.collectAllFields) + for (x = (Z = v.length) - 1; x >= 0; --x) + this._shouldIncludeControlMetadata(l, v[x], l.FormControls[x]) || + (t !== WBSFormMetadataRequestCollectMetadataFromDebugMenu + ? (l.FormControls.splice(x, 1), v.splice(x, 1)) + : (l.FormControls[x].WOULD_NORMALLY_NOT_BE_SENT_TO_UI_PROCESS = + !0)); + return ( + this._removePlaceholderTextForFormMetadata(v, l), + delete this._pageScanContext, + t !== WBSFormMetadataRequestPreFill && + globalThis.FormMetadataClassificationJS && + globalThis.FormMetadataClassificationJS.classify(l), + addPasswordRequirementsToFormMetadata(l), + l + ); + } + _formIsEligibleForAutomaticLogin(e, t) { + if (e.AutoFillFormType !== WBSAutoFillFormTypeAutoFillableLogin) return !1; + let r = !1; + for (const t of e.FormControls) { + const n = t.ControlUniqueID; + if (n === e.UsernameElementUniqueID || n === e.PasswordElementUniqueID) + continue; + if (t.ControlIsDisabled) continue; + if (t.ControlIsReadOnly) continue; + if (!t.IsVisible) continue; + const o = this.formControlWithUniqueID(n); + if (!o) continue; + if (this._isTextArea(o)) return !1; + if (isSelectElement(o)) return !1; + if (this._isSubmitButton(o)) continue; + if (this._looksLikeShowHidePasswordButton(o)) continue; + if (!isInputElement(o)) continue; + const i = o.type; + if ("button" !== i && "reset" !== i && "submit" !== i && "image" !== i) { + if (!this._isCheckboxInputElement(o)) return !1; + if (r) return !1; + r = !0; + } + } + return !t || !elementAppearsToContinueCaptchaWidget(t); + } + _oneTimeCodeIsEligibleForAutomaticLogin(e, t) { + for (const e of t.FormControls) { + if (e.ControlLooksLikeOneTimeCodeField) continue; + if (e.ControlIsDisabled) continue; + if (e.ControlIsReadOnly) continue; + if (!e.IsVisible) continue; + const t = this.formControlWithUniqueID(e.ControlUniqueID); + if (!t) continue; + if (this._isTextArea(t)) return !1; + if (isSelectElement(t)) return !1; + if (this._isSubmitButton(t)) continue; + if (this._looksLikeShowHidePasswordButton(t)) continue; + if (!isInputElement(t)) continue; + const r = t.type; + if ("button" !== r && "reset" !== r && "submit" !== r && "image" !== r) + return !1; + } + return !0; + } + _shouldIncludeControlMetadata(e, t, r) { + if (t._relatesToCredentials) return !0; + if (r.IsVisible) { + if (formControlHasBeenClassifiedInAnInterestingWay(r)) return !0; + if (r.ControlValue) return !0; + } + return !( + !e.UsernameElementUniqueID || + r.ControlUniqueID !== e.UsernameElementUniqueID + ); + } + _isElementAHiddenUsername(e) { + const t = /user|email/i; + return ( + "hidden" === e.type && + !(!t.test(e.getAttribute("id")) && !t.test(e.getAttribute("name"))) && + !!isValidUsernameOrEmail(e.value) + ); + } + _findHiddenUsernameElement(e, t, r) { + var n = e.formElement; + if (!(n instanceof HTMLElement)) return; + let o = queryAllBySelector(n, "input"), + i = o.length; + for (let e = 0; e < i; ++e) { + let t = o[e]; + if (this._isElementAHiddenUsername(t)) return t; + } + return null; + } + _extractMetadataForHiddenUsernameElement(e, t, r) { + var n = { + ControlTagName: this._getTagName(e), + ControlFieldName: this._getNameOrId(e), + ControlUniqueID: this.controlUniqueID(e), + ControlIsReadOnly: !0, + ControlValue: e.value, + }; + ((t.UsernameElementUniqueID = n.ControlUniqueID), + t.FormControls.push(n), + r.push(e)); + } + _cachedMetadataForLogicalForm(e) { + var t = e.metadata, + r = t?.FormControls, + n = r?.length ?? 0; + if (!n) return null; + const o = innermostActiveElement(); + for (var i = 0; i < n; ++i) { + var l = r[i], + a = this.formControlWithUniqueID(l.ControlUniqueID); + a && + ((l.ControlIsActiveElement = a === o), + (l.ControlValue = a.value), + (l.ControlIsAutoFilledTextField = this._isAutoFilledTextField(a))); + } + return ( + (t.UsesGeneratedPassword = this._usesGeneratedPassword(e)), + (t.Annotations = e.annotations), + t + ); + } + _markFormIsBestForPageLevelAutoFill() { + function e(e) { + switch (e) { + case WBSAutoFillFormTypeAutoFillableLogin: + return 30; + case WBSAutoFillFormTypeNewAccount: + case WBSAutoFillFormTypeChangePassword: + return 20; + case WBSAutoFillFormTypeAutoFillableStandard: + return 10; + case WBSAutoFillFormTypeUndetermined: + case WBSAutoFillFormTypeNonAutoFillable: + return 0; + } + return -100; + } + function t(e) { + return e ? 50 : 0; + } + let r = this._logicalFormWithHighestScoreIfGreaterThanZero(function (r) { + var n = r.PasswordElementUniqueID ? 0 : -1; + return e(r.AutoFillFormType) + t(r.IsVisible) + n; + }); + null !== r && (r.metadata.FormIsBestForPageLevelAutoFill = !0); + } + _markFormIsBestForStreamlinedLogin() { + let e = this._logicalFormWithHighestScoreIfGreaterThanZero(function (e, t) { + if (!e.IsVisible) return 0; + let r = t.getBoundingClientRect(); + if (!rectIsWithinDocumentViewport(r)) return 0; + if (r.bottom + window.scrollY < 80) { + let e = !( + location.hash || + (location.pathname && "/" !== location.pathname) || + location.search + ), + t = r.width / r.height; + if (!e && t > 4) return 0; + } + if (t.closest("footer")) return 0; + let n = e.AutoFillFormType === WBSAutoFillFormTypeAutoFillableLogin, + o = 0, + i = e.FormControls, + l = i.length; + for (var a = 0; a < l; ++a) { + let t = i[a], + r = FormMetadataJS.formControlWithUniqueID(t.ControlUniqueID); + if (!r) continue; + const l = parseInt(r.tabIndex, 10); + if (!(isFiniteNumber(l) && l < 0)) { + if (n) { + t.ControlIsAutofocusedTextField && (o += 1); + let r = t.ControlUniqueID; + if ( + r === e.UsernameElementUniqueID || + r === e.PasswordElementUniqueID + ) { + o += 10; + continue; + } + } + t.OneTimeCodeIsEligibleForAutomaticLogin && (o += 5); + } + } + return o; + }); + null !== e && (e.metadata.FormIsBestForStreamlinedLogin = !0); + } + _logicalFormWithHighestScoreIfGreaterThanZero(e) { + let t = null, + r = null; + for (let o of this._logicalFormsCache.allForms()) { + var n = e(o.metadata, o.backingElement); + (null === t || n > t) && ((r = o), (t = n)); + } + return t > 0 ? r : null; + } + isAnyFormAnnotated() { + return this._logicalFormsCache.allForms().some((e) => e.isAnnotated); + } + annotateFormWithID(e, t) { + let r = this._logicalFormsCache.logicalFormWithUniqueID(e); + r && r.annotate(t); + } + _collectMetadata(e) { + const t = 100, + r = 10; + var n = this._logicalFormsInPage(t, r); + this._logicalFormsCache.clearCacheAndAdd(n); + for (var o = n.length, i = 0; i < o; ++i) + n[i].metadata = this._collectFormMetadata(n[i], e); + (this._markFormIsBestForPageLevelAutoFill(), + e !== WBSFormMetadataRequestNormal && + this._markFormIsBestForStreamlinedLogin()); + } + _collectAndCacheFormMetadata(e, t) { + let r = this._collectFormMetadata(e, t), + n = this._logicalFormsCache.logicalFormWithUniqueID(e.formUniqueID); + return ( + n + ? (n.metadata = r) + : ((e.metadata = r), this._logicalFormsCache.addOrUpdate(e)), + r + ); + } + _metadataForFormWithID(e) { + return this._logicalFormsCache.logicalFormWithUniqueID(e)?.metadata; + } + _recollectMetadataForFormWithID(e) { + const t = this._logicalFormsCache.logicalFormWithUniqueID(e); + return t + ? this._collectAndCacheFormMetadata(t, WBSFormMetadataRequestNormal) + : null; + } + async _fillControlWithGeneratedPassword(e, t) { + var r = this._elementsWithGeneratedPasswords.indexOf(e); + (-1 === r && + (this._elementsWithGeneratedPasswords.push(e), + (r = this._elementsWithGeneratedPasswords.length - 1)), + (this._generatedPasswords[r] = t)); + const n = !0; + await this._fillControl(e, t, n); + } + async fillFormWithPassword(e, t, r) { + var n = this._metadataForFormWithID(e); + if (null === n) return null; + const o = n.PasswordElementUniqueID, + i = o ? this.formControlWithUniqueID(o) : void 0, + l = r ? this.formControlWithUniqueID(r) : void 0; + var a = i || l; + const s = o || r; + if (!a) return null; + await this._fillControlWithGeneratedPassword(a, t); + let u = n.ConfirmPasswordElementUniqueID; + u || + (n.AutoFillFormType !== WBSAutoFillFormTypeChangePassword && + n.AutoFillFormType !== WBSAutoFillFormTypeNewAccount) || + (u = (n = this._recollectMetadataForFormWithID(e) || n) + .ConfirmPasswordElementUniqueID); + let c = u ? this.formControlWithUniqueID(u) : null; + return c + ? (await this._fillControlWithGeneratedPassword(c, t), [s, u]) + : [s]; + } + clearField(e) { + const t = this.formControlWithUniqueID(e), + r = !0; + this._clearControl(t, r); + } + async _clearControl(e, t = !1) { + if (!e) return; + if (isSelectElement(e)) return void (e.selectedIndex = 0); + if (isDateTimeInputElement(e)) return void (e.value = ""); + if (isRadioButtonElement(e)) { + const t = this._logicalFormsCache + .logicalFormForControl(e) + .radioButtonsWithName(e.name); + for (let e of t) e.checked = !1; + return; + } + if (!this._isTextField(e)) return; + if (!e.value.length) return; + let r = innermostActiveElement(); + (e !== r && e.focus({ preventScroll: !0, focusVisible: !1 }), + e.select(), + e.dispatchEvent(new Event("select", { bubbles: !0, cancelable: !1 }))); + const n = KeyInfo.BackspaceKeyInfo; + e.dispatchEvent(n.keyEvent("keydown")); + const o = "deleteContentBackward"; + (e.dispatchEvent( + new InputEvent("beforeinput", { + bubbles: !0, + cancelable: !0, + inputType: o, + data: null, + }), + ), + (e.value = ""), + e.dispatchEvent( + new InputEvent("input", { + bubbles: !0, + cancelable: !1, + inputType: o, + data: null, + }), + ), + e.dispatchEvent(n.keyEvent("keyup")), + e.dispatchEvent(new Event("change", { bubbles: !0, cancelable: !1 })), + t || (await yieldToEventLoopAfterAnimationFrameAndDelay()), + r && e !== r && r.focus({ preventScroll: !0 })); + } + focusFormForStreamlinedLogin(e) { + const t = function (e) { + for (const t of e.FormControls) { + const r = t.ControlUniqueID; + if ( + r === e.UsernameElementUniqueID || + r === e.PasswordElementUniqueID || + t.ControlLooksLikeOneTimeCodeField + ) { + let e = this.formControlWithUniqueID(r); + if (e.isVisible() && !e.disabled) return e; + } + } + return null; + }.bind(this); + var r = this._metadataForFormWithID(e); + null !== r && this._focusControlForStreamlinedLogin(t(r)); + } + focusControlForStreamlinedLogin(e) { + this._focusControlForStreamlinedLogin(this.formControlWithUniqueID(e)); + } + _focusControlForStreamlinedLogin(e) { + e && rectIsWithinDocumentViewport(e.getBoundingClientRect()) && e.focus(); + } + formsAndMetadata(e) { + (visibilityCacheGeneration++, this._collectMetadata(e)); + let t = [], + r = []; + for (let e of this._logicalFormsCache.allForms()) + (t.push(e.formElement), r.push(e.metadata)); + return [t, r]; + } + formControlWithUniqueID(e) { + let t = this._controlUniqueIDToWeakControlMap.get(e)?.deref(); + return t; + } + formElementWithFormID(e) { + return this._logicalFormsCache.logicalFormWithUniqueID(e)?.formElement; + } + selectIfTextField(e) { + this._isTextField(e) && e.select(); + } + _getOrCreateCachedMetadataForLogicalForm(e, t) { + var r = this._cachedMetadataForLogicalForm(e); + return !r || + (null != t && + r.RequestType === WBSFormMetadataRequestPreFill && + t !== WBSFormMetadataRequestPreFill) + ? this._collectAndCacheFormMetadata(e, t) + : r; + } + _getOrCreateLogicalFormForTextFieldOrSelectElement(e) { + let t = this._logicalFormsCache.logicalFormForControl(e); + if (t) + for ( + var r = t.metadata, + n = r?.FormControls, + o = n?.length ?? 0, + i = e._controlUniqueID, + l = 0; + l < o; + ++l + ) + if (n[l].ControlUniqueID === i) return t; + var a = this._logicalFormsInPage(), + s = a.length; + for (l = 0; l < s; ++l) { + var u = a[l]; + if (u.containsControl(e)) + return ( + this._logicalFormsCache.addOrUpdate(u), + (u.metadata = this._collectFormMetadata( + u, + WBSFormMetadataRequestNormal, + )), + u + ); + } + return null; + } + _cachedMetadataForFormWithTextFieldOrSelectElement(e, t) { + if (!this._isTextField(e) && !isSelectElement(e)) return null; + var r = this._getOrCreateLogicalFormForTextFieldOrSelectElement(e); + return r ? this._getOrCreateCachedMetadataForLogicalForm(r, t) : null; + } + _isAnyPasswordElementUniqueID(e, t) { + return ( + e.PasswordElementUniqueID === t || + e.ConfirmPasswordElementUniqueID === t || + e.OldPasswordElementUniqueID === t + ); + } + _isCurrentPasswordElementUniqueID(e, t) { + switch (e.AutoFillFormType) { + case WBSAutoFillFormTypeNewAccount: + case WBSAutoFillFormTypeChangePassword: + return e.OldPasswordElementUniqueID === t; + default: + return e.PasswordElementUniqueID === t; + } + } + _isNewPasswordElementUniqueID(e, t) { + switch (e.AutoFillFormType) { + case WBSAutoFillFormTypeNewAccount: + case WBSAutoFillFormTypeChangePassword: + return ( + e.PasswordElementUniqueID === t || + e.ConfirmPasswordElementUniqueID === t + ); + default: + return !1; + } + } + _updateAnnotationsForField(e) { + var t = this._getOrCreateLogicalFormForTextFieldOrSelectElement(e); + if (t) { + var r = this._getOrCreateCachedMetadataForLogicalForm(t); + if (r) { + var n = e._controlUniqueID; + (this._isCurrentPasswordElementUniqueID(r, n) + ? t.annotate({ CurrentPassword: e.value }) + : this._isNewPasswordElementUniqueID(r, n) + ? t.annotate({ NewPassword: e.value }) + : r.UsernameElementUniqueID === n && + t.annotate({ Username: e.value }), + isCredentialElementUniqueID(r, n) && + (e._relatesToCredentials = "" !== e.value)); + } + } + } + textFieldOrSelectElementMetadata(e, t, r) { + (visibilityCacheGeneration++, + this._logicalFormsCache.removeUnparentedLogicalFormsFromCache()); + var n = [null, null], + o = this._cachedMetadataForFormWithTextFieldOrSelectElement(e, t); + if (!o) return n; + this._pageScanContext = { + backwardScanCache: new WeakMap(), + forwardScanCache: new WeakMap(), + }; + let i = this._logicalFormsCache.logicalFormWithUniqueID(o.FormID), + l = formActionAsAnchorElement(i.formElement), + [a, s, u, c, d] = + this._trailingArgumentsForCollectControlMetadataFunction(i, t, l); + const h = !0; + var m = this._collectControlMetadata( + e, + WBSFormMetadataRequestNormal, + a, + s, + u, + c, + d, + h, + ); + if ( + (delete this._pageScanContext, + m.ControlLooksLikeOneTimeCodeField && + this._oneTimeCodeIsEligibleForAutomaticLogin(m, o) && + (m.OneTimeCodeIsEligibleForAutomaticLogin = !0), + (m.SelectionStart = e.selectionStart), + (m.SelectionLength = e.selectionEnd - e.selectionStart), + t === WBSFormMetadataRequestTextChange && + (!o.UsernameElementUniqueID && + this._isAnyPasswordElementUniqueID(o, m.ControlUniqueID) && + i.isAnnotated && + i.annotate({ Username: null }), + this._updateAnnotationsForField(e)), + o.RequestType !== WBSFormMetadataRequestPreFill) + ) + for (let e of o.FormControls) + if (m.ControlUniqueID === e.ControlUniqueID) { + ((m.ControlClassification = e.ControlClassification), + (m.ControlClassificationHints = e.ControlClassificationHints), + (m.ControlOrderedParts = e.ControlOrderedParts), + (m.ControlContinuationID = e.ControlContinuationID), + (m.ControlContinuationIndex = e.ControlContinuationIndex)); + break; + } + if (r) { + for (const e of o.FormControls) + e.ControlUniqueID == m.ControlUniqueID && (e.ControlValue = null); + this._cachedFormMetadata = JSON.stringify(o); + } + return ((n[0] = m), (n[1] = o), n); + } + clearTextFieldOrSelectElementMetadataCache() { + this._cachedFormMetadata = null; + } + disableSpellCheckInFieldIfNeeded(e) { + if (e) { + var t = this.formControlWithUniqueID(e); + t && + this._isAutoFillableTextField(t) && + FormMetadataJSController.setInputElementSpellCheckEnabled(t, !1); + } + } + selectionRangeInField(e) { + var t = this.formControlWithUniqueID(e); + return t && this._isTextField(t) + ? [t.selectionStart, t.selectionEnd - t.selectionStart] + : null; + } + setFormFieldSelection(e, t, r) { + var n = this.formControlWithUniqueID(e); + n && + this._isTextField(n) && + ((n.selectionStart = t), (n.selectionEnd = t + r)); + } + replaceFormFieldRangeAndSelectTail(e, t, r, n, o) { + var i = this.formControlWithUniqueID(e); + if (i && this._isTextField(i)) { + var l = i.value, + a = l.substr(0, t) + n + l.substr(t + r); + ((i.value = a), + (i.selectionStart = o), + (i.selectionEnd = a.length), + i.dispatchEvent(createCustomEventThatBubbles("input")), + i.dispatchEvent(createCustomEventThatBubbles("change"))); + } + } + _collectVisibleNonEmptyTextFieldsAndTextAreasInForm(e, t, r) { + visibilityCacheGeneration++; + for ( + var n = elementsInFormPiercingShadowDOM(e), o = n.length, i = 0; + i < o; + ++i + ) { + var l = n[i]; + l.isVisible() && + null != l.value && + l.value.length && + (this._isTextField(l) ? t.push(l) : this._isTextArea(l) && r.push(l)); + } + } + visibleNonEmptyFormTextControls() { + var e = [], + t = []; + let r = queryAllBySelector(document, "form"); + for (let n = 0; n < r.length; ++n) + this._collectVisibleNonEmptyTextFieldsAndTextAreasInForm(r[n], e, t); + return [e, t]; + } + visibleNonEmptyFormTextControlsInForm(e) { + var t = [], + r = []; + return ( + this._collectVisibleNonEmptyTextFieldsAndTextAreasInForm(e, t, r), + [t, r] + ); + } + async _fillRadioButtonInGroupStartingWithControl(e, t) { + const r = this._logicalFormsCache.logicalFormForControl(e); + let n = r?.radioButtonsWithName(e.name); + if (!n) return null; + for (let e of n) + if (e.value === t) + return ( + dispatchEventsSimulatingClickOnElement(e), + (e.checked = !0), + e.dispatchEvent( + new InputEvent("input", { bubbles: !0, cancelable: !1 }), + ), + e.dispatchEvent(new Event("change", { bubbles: !0, cancelable: !1 })), + await yieldToEventLoop(), + e + ); + return null; + } + _controlContainsAllCharactersFromValue(e, t) { + let r = [...e.value.normalize()], + n = [...t.normalize()]; + if (r.length < n.length) return !1; + for (let e of r) { + e === n[0] && n.shift(); + } + return !n.length; + } + async _fillSelectControlWithBestOptionFromSynonyms(e, t) { + const r = this._collectSelectElementInfo(e), + n = FormMetadataUtilitiesJS.bestIndexToFillSelectControl(r, t); + -1 !== n && + e.selectedIndex !== n && + (e.dispatchEvent(createCustomEventThatBubbles("focus")), + e.dispatchEvent(createCustomEventThatBubbles("pointerdown")), + e.dispatchEvent(createCustomEventThatBubbles("mousedown")), + (e.selectedIndex = n), + e.dispatchEvent(new InputEvent("input", { bubbles: !0, cancelable: !1 })), + e.dispatchEvent(new Event("change", { bubbles: !0, cancelable: !1 })), + e.dispatchEvent(createCustomEventThatBubbles("blur")), + await yieldToEventLoop()); + } + async autoFillOneTimeCodeFieldsWithValue(e, t) { + let r = innermostActiveElement(); + if (!this._isAutoFillableTextField(r)) + return { + value: e, + shouldSubmit: !1, + codeAppearsToHaveBeenFilledInItsEntirety: !1, + }; + const n = 10, + o = { + waitForSingleCharacterFieldsToAdvanceToNextField: { + delayBetweenChecks: 1, + numberOfTimesToCheck: 20, + }, + }, + i = await this._executeWhilePreventingUserInteraction( + async () => await this._fillTextControl(null, e, n, o), + ); + let l = !0; + if (RegExp.escape) { + let t = i.map((e) => e.value).join(""), + r = new RegExp( + e + .replaceAll("-", "") + .split("") + .map((e) => RegExp.escape(e)) + .join(".*"), + "s", + ); + if (((l = r.test(t)), !l)) { + const e = this._logicalFormsCache.logicalFormForControl( + i[0], + )?.backingElement; + e && (l = r.test(e.innerText)); + } + } + return { + value: e, + shouldSubmit: t, + codeAppearsToHaveBeenFilledInItsEntirety: l, + }; + } + async _fillTextControl(e, t, r = 0, n = {}) { + if (e && this._controlContainsAllCharactersFromValue(e, t)) return; + if ( + e && + userIsOnDomain("m.facebook.com") && + document.location.pathname.startsWith("/login") && + "m_login_email" === e.id + ) + return void (await this._fillGenericControl(e, t)); + let o = new Set(); + const i = !e; + ((e ??= innermostActiveElement()), await this._clearControl(e)); + const l = !!n.waitForSingleCharacterFieldsToAdvanceToNextField; + let a = !0; + for (let s of t) { + if ( + l && + !a && + (1 === e.maxLength || + controlSeemsToBeSingleCharacterFieldPartOfSingleLogicalEntity(e)) + ) { + const t = + n.waitForSingleCharacterFieldsToAdvanceToNextField + .numberOfTimesToCheck, + r = + n.waitForSingleCharacterFieldsToAdvanceToNextField + .delayBetweenChecks; + let o = 0; + for (; o < t; ++o) { + const t = innermostActiveElement(); + if (!t || e !== t) break; + await yieldToEventLoop(r); + } + } + const t = innermostActiveElement(); + if (t !== e) { + if (!i) break; + ((e = t), await this._clearControl(e)); + } + const u = KeyInfo.forCharacter(s); + u.isShifted && e.dispatchEvent(KeyInfo.shiftKeyEvent("keydown")); + let c = !e.dispatchEvent(u.keyEvent("keydown")); + if ((c || (c = !e.dispatchEvent(u.keyEvent("keypress"))), !c)) + if (this.canUseTextInputEventsToFill) + e.dispatchEvent(createTextInputEvent(s)); + else { + const t = e.value + s; + (e.dispatchEvent( + new InputEvent("beforeinput", { + bubbles: !0, + cancelable: !0, + inputType: insertTextInputType, + data: t, + }), + ), + (e.value = t), + e.dispatchEvent( + new InputEvent("input", { + bubbles: !0, + cancelable: !1, + inputType: insertTextInputType, + data: t, + }), + )); + } + (e.dispatchEvent(u.keyEvent("keyup")), + u.isShifted && e.dispatchEvent(KeyInfo.shiftKeyEvent("keyup")), + o.add(e), + (a = !1), + await yieldToEventLoop(r)); + } + return ( + i || + this._controlContainsAllCharactersFromValue(e, t) || + (await yieldToEventLoopAfterAnimationFrameAndDelay(), + await this._fillGenericControl(e, t)), + Array.from(o) + ); + } + async _fillGenericControl(e, t) { + (await this._clearControl(e), + (this.canUseTextInputEventsToFill && + e === innermostActiveElement() && + (e.dispatchEvent(createTextInputEvent(t)), + await yieldToEventLoop(), + this._controlContainsAllCharactersFromValue(e, t))) || + (e.dispatchEvent( + new InputEvent("beforeinput", { + bubbles: !0, + cancelable: !0, + inputType: insertTextInputType, + data: t, + }), + ), + (e.value = t), + e.dispatchEvent( + new InputEvent("input", { + bubbles: !0, + cancelable: !1, + inputType: insertTextInputType, + data: t, + }), + ), + e.dispatchEvent(new Event("change", { bubbles: !0, cancelable: !1 })), + await yieldToEventLoop(), + this._controlContainsAllCharactersFromValue(e, t))); + } + async _fillControl(e, t, r, n) { + if (e.isDisabledOrReadOnly()) return; + if (e.shouldFocusDuringFilling()) { + let t = !1; + (document.hasFocus() || + (await yieldUntilDocumentIsFocusedOrTimeout(100), (t = !0)), + e !== innermostActiveElement() && + (e.focus({ preventScroll: !0, focusVisible: !1 }), (t = !0)), + t && (await yieldToEventLoopAfterAnimationFrameAndDelay(20))); + } + let o = !1; + if (isRadioButtonElement(e)) { + if (!(e = await this._fillRadioButtonInGroupStartingWithControl(e, t))) + return; + } else + isSelectElement(e) + ? await this._fillSelectControlWithBestOptionFromSynonyms(e, t) + : ((o = !0), + this._isTextField(e) + ? await this._fillTextControl(e, t) + : await this._fillGenericControl(e, t)); + const i = t.length && r; + o && n + ? FormMetadataJSController.setInputElementAutofilledAndObscured(e, i) + : FormMetadataJSController.setInputElementAutofilled(e, i); + } + async _executeWhilePreventingUserInteraction(e) { + const t = new AbortController(), + r = [ + "keydown", + "keyup", + "keypress", + "pointerdown", + "pointerup", + "touchstart", + "touchend", + "mousedown", + "mouseup", + "click", + "dblclick", + ]; + for (const e of r) + window.addEventListener( + e, + (e) => { + e.isTrusted && (e.preventDefault(), e.stopImmediatePropagation()); + }, + { capture: !0, signal: t.signal }, + ); + try { + return await e(); + } finally { + t.abort(null); + } + } + async autoFillControlsByID(e, t, r, n, o, i, l) { + let a = arguments[arguments.length - 1], + s = n; + if (s) { + let e = s.getAttribute("onfocus"); + e && e.length && /this\.value/.test(e) && (s = null); + } else s = innermostActiveElement(); + var u = null; + for (let t in e) { + u = this._logicalFormsCache.logicalFormForControl( + this.formControlWithUniqueID(t), + ); + break; + } + const c = Object.entries(e) + .map(([e, t]) => [this.formControlWithUniqueID(e), t]) + .sort((e, t) => { + const r = e[0], + n = t[0], + o = r.compareDocumentPosition(n); + return o & + (Node.DOCUMENT_POSITION_PRECEDING | Node.DOCUMENT_POSITION_CONTAINS) + ? 1 + : o & + (Node.DOCUMENT_POSITION_FOLLOWING | + Node.DOCUMENT_POSITION_CONTAINED_BY) + ? -1 + : 0; + }); + return ( + await this._executeWhilePreventingUserInteraction(async () => { + const e = new Set(i); + for (let [t, n] of c) { + const o = e.has(t._controlUniqueID); + await this._fillControl(t, n, r, o); + } + }), + o + ? innermostActiveElement().blur() + : s && + setTimeout(() => { + this.selectIfTextField(s); + }, 0), + u?.backingElement && + elementAppearsToContinueCaptchaWidget(u.backingElement) && + (a = !1), + { + formMetadata: this._getOrCreateCachedMetadataForLogicalForm(u), + shouldSubmit: a, + } + ); + } + _isInputAllowedInSearchForm(e, t) { + var r = this._getTagName(e).toLowerCase(); + if ("button" === r || "fieldset" === r) return !0; + if ("select" === r) return !t || isSelectInDefaultState(e); + if ("input" !== r && !this._textAreaElementLookLikeItIsPartOfASearchForm(e)) + return !1; + var n = e.type; + return "radio" === n || "checkbox" === n + ? !t || isCheckboxOrRadioButtonInDefaultState(e) + : "hidden" === n || + "reset" === n || + "submit" === n || + "button" === n || + "image" === n || + (this._isTextField(e) && !this._isSecureTextField(e)); + } + isSearchForm(e, t) { + if ("get" !== e.method) return !1; + for ( + var r = elementsInFormPiercingShadowDOM(e), n = r.length, o = 0; + o < n; + ++o + ) + if (!this._isInputAllowedInSearchForm(r[o], t)) return !1; + return !0; + } + _textAreaElementLookLikeItIsPartOfASearchForm(e) { + return ( + !!this._isTextArea(e) && + ("search" === e.getAttribute("type") || + "search" === e.inputMode || + "search" === e.getAttribute("enterkeyhint")) + ); + } + _shouldInputBeIncludedInSearchURLQuery(e) { + if (e.disabled) return !1; + if (!e.name.length) return !1; + if (!e.value.length) return !1; + if (isSelectElement(e)) return !0; + var t = this._getTagName(e).toLowerCase(), + r = e.type; + return "button" === t + ? "submit" === r + : "input" === t && + ("submit" === r || + ("checkbox" === r || "radio" === r + ? e.checked + : "hidden" === r || this._isTextField(e))); + } + _isSubmitButton(e) { + return ( + (e instanceof HTMLButtonElement || e instanceof HTMLInputElement) && + e.type && + "submit" === e.type + ); + } + _isCustomFormButton(e) { + return ( + "button" === e.type && + (e instanceof HTMLButtonElement || e instanceof HTMLInputElement) + ); + } + _isCheckboxInputElement(e) { + return "checkbox" === e.type && e instanceof HTMLInputElement; + } + _setQueryString(e, t) { + var r = document.createElement("a"); + return ((r.href = e), (r.search = t), r.href); + } + searchTextFieldFormSubmissionURLString(e, t) { + if ( + (visibilityCacheGeneration++, + !this._isTextField(e) || this._isSecureTextField(e) || !e.isVisible()) + ) + return null; + var r = e.form; + if (!r) return null; + var n = r.getAttribute("action"); + if (!n || !n.length) return null; + if (!/^https?:/i.test(r.action)) return null; + if (!this.isSearchForm(r, t)) return null; + for ( + var o = null, + i = "", + l = elementsInFormPiercingShadowDOM(r), + a = l.length, + s = 0; + s < a; + ++s + ) { + var u = l[s]; + if ( + (u === e || this._shouldInputBeIncludedInSearchURLQuery(u)) && + (!this._isSubmitButton(u) || (o || (o = u), u === o)) + ) { + i.length && (i += "&"); + var c = u === e ? "{searchTerms}" : urlEncode(u.value); + i += urlEncode(u.name) + "=" + c; + } + } + return this._setQueryString(r.action, i); + } + _collectExtraControlMetadata(e, t) { + let r = e.getAttribute("passwordrules"); + t.ControlPasswordRules = r || void 0; + } + removeAutomaticStrongPasswordFromPasswordElement(e) { + let t = this.formControlWithUniqueID(e); + t && + this._isTextField(t) && + (this.clearField(e), + this._updateAnnotationsForField(t), + FormMetadataJSController.setInputElementAutofilled(t, !1)); + } +} +var FormMetadataJS = new FormMetadata(); diff --git a/26.2/js/forms/FormMetadataClassification.js b/26.2/js/forms/FormMetadataClassification.js new file mode 100644 index 0000000..4216859 --- /dev/null +++ b/26.2/js/forms/FormMetadataClassification.js @@ -0,0 +1,674 @@ +//# sourceURL=__InjectedScript_FormMetadataClassification.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +"use strict"; +function datePlaceholderParser(e) { + for (const t of e) { + const e = t.toLowerCase(); + if (e >= "a" && e <= "z" && !["d", "y", "m"].includes(e)) return null; + } + return e.includes("d") + ? e.includes("yyyy") + ? { year: "numeric", month: "2-digit", day: "2-digit" } + : { year: "2-digit", month: "2-digit", day: "2-digit" } + : e.includes("M") + ? e.includes("yyyy") + ? { year: "numeric", month: "2-digit" } + : { year: "2-digit", month: "2-digit" } + : e.includes("y") + ? e.includes("yyyy") + ? { year: "numeric" } + : { year: "2-digit" } + : null; +} +function referenceDateToDateFormat(e) { + let t = e.replace("12", "MM"); + return ( + (t = t.replace("30", "dd")), + (t = t.replace("1999", "y")), + (t = t.replace("99", "yy")), + t + ); +} +const WBSABAddressProperty = "Address", + WBSABPhoneProperty = "Phone", + _WBSABAddressZIPKey = "ZIP", + WBSFormControlMetadataDefaultMaxLength = 524288, + WBSIgnoredClassificationToken = "-sf-ignored", + WBSDateDayOrderedPartToken = "-sf-day", + WBSDateMonthOrderedPartToken = "-sf-month", + WBSDateYearOrderedPartToken = "-sf-year", + WBSGivenNameOrderedPartToken = "given-name", + WBSAdditionalNameOrderedPartToken = "additional-name", + WBSFamilyNameOrderedPartToken = "family-name", + WBSLocaleForCreditCardExpirationDate = "en-US-POSIX", + WBSCreditCardTypeClassificationToken = "cc-type", + WBSCreditCardHolderNameClassificationToken = "cc-name", + WBSCreditCardNumberClassificationToken = "cc-number", + WBSCreditCardExpirationClassificationToken = "cc-exp", + WBSCreditCardSecurityCodeClassificationToken = "cc-csc", + WBSCreditCardHolderNameClassificationDefaultOrderedParts = [ + WBSGivenNameOrderedPartToken, + WBSAdditionalNameOrderedPartToken, + WBSFamilyNameOrderedPartToken, + ], + WBSCreditCardExpirationClassificationDefaultOrderedParts = [ + WBSDateMonthOrderedPartToken, + WBSDateYearOrderedPartToken, + ], + WBSCredentialUsernameClassificationToken = "username", + WBSCredentialCurrentPasswordClassificationToken = "current-password", + WBSCredentialNewPasswordClassificationToken = "new-password", + WBSContactNameClassificationToken = "name", + WBSContactNameClassificationDefaultOrderedParts = [ + WBSGivenNameOrderedPartToken, + WBSAdditionalNameOrderedPartToken, + WBSFamilyNameOrderedPartToken, + ], + WBSNameOrderedPartTokensSet = new Set( + WBSContactNameClassificationDefaultOrderedParts, + ), + WBSContactInstantMessageClassificationToken = "-sf-instant-message", + WBSContactPostalCodeClassificationToken = "postal-code", + WBSContactStreetAddressClassificationToken = "street-address", + WBSContactStreetAddressLine1OrderedPartToken = "address-line1", + WBSContactStreetAddressLine2OrderedPartToken = "address-line2", + WBSContactStreetAddressLine3OrderedPartToken = "address-line3", + WBSContactTelephoneClassificationToken = "tel", + WBSTelephoneCountryCodeOrderedPartToken = "tel-country-code", + WBSTelephoneAreaCodeOrderedPartToken = "tel-area-code", + WBSTelephoneLocalPrefixOrderedPartToken = "tel-local-prefix", + WBSTelephoneLocalSuffixOrderedPartToken = "tel-local-suffix", + WBSTelephoneExtensionOrderedPartToken = "tel-extension", + WBSTelephoneDefaultOrderedParts = [ + WBSTelephoneCountryCodeOrderedPartToken, + WBSTelephoneAreaCodeOrderedPartToken, + WBSTelephoneLocalPrefixOrderedPartToken, + WBSTelephoneLocalSuffixOrderedPartToken, + WBSTelephoneExtensionOrderedPartToken, + ], + WBSContactBirthdayClassificationToken = "bday", + WBSContactEmailClassificationToken = "email", + WBSDeviceEIDClassificationToken = "device-eid", + WBSDeviceIMEIClassificationToken = "device-imei", + AllowedControlTagsForStandaloneCreditCardCompositeExpirationControl = new Set( + ["input", "select", "textarea"], + ); +class FormMetadataClassification { + #e(e) { + return null != e && "object" == typeof e; + } + #t(e) { + return this.#e(e) && "string" == typeof e.ControlTagName; + } + #o(e) { + return this.#e(e) && "string" == typeof e.property; + } + fieldLooksLikeDateField(e) { + return !!( + e.ControlLooksLikeDayField || + e.ControlLooksLikeMonthField || + e.ControlLooksLikeYearField + ); + } + #r(e) { + let t = e.ControlMaxLength; + return ( + (void 0 === t || t < 0 || t > WBSFormControlMetadataDefaultMaxLength) && + (t = WBSFormControlMetadataDefaultMaxLength), + t + ); + } + fieldLooksLikeItExpectsDataOfSize(e, t) { + return (e.ControlSize ?? 0) <= t || this.#r(e) <= t; + } + fieldCouldBeCreditCardNumberContinuation(e, t) { + const o = 4; + if (t.length >= o) return !1; + if (!t[0]?.ControlLooksLikeCreditCardNumberField) return !1; + const r = 2; + if (e.ControlMaxLength === r) return !1; + if (e.ControlLooksLikeCreditCardNumberField) return !0; + if (e.ControlLooksLikeCreditCardSecurityCodeField) return !1; + if (e.ControlLooksLikeCreditCardCompositeExpirationDateField) return !1; + const n = 6; + if (!this.fieldLooksLikeItExpectsDataOfSize(e, n)) return !1; + const i = t.at(-1); + return !(i && !this.fieldLooksLikeItExpectsDataOfSize(i, n)); + } + labelsCouldRepresentContinuation(e, t, o, r) { + return ( + !(!e || !o) && + (e === o || + (!!t && + (!r || + (t.property === r.property && + (!r.component || t.component === r.component))))) + ); + } + #n(e) { + const t = [ + WBSContactStreetAddressLine1OrderedPartToken, + WBSContactStreetAddressLine2OrderedPartToken, + WBSContactStreetAddressLine3OrderedPartToken, + ], + o = [ + WBSContactStreetAddressLine2OrderedPartToken, + WBSContactStreetAddressLine3OrderedPartToken, + ]; + if (e.AutocompleteTokens) + for (let o of e.AutocompleteTokens) + switch (o) { + case "street-address": + return t; + case "address-line1": + return [WBSContactStreetAddressLine1OrderedPartToken]; + case "address-line2": + case "address-level2": + return [WBSContactStreetAddressLine2OrderedPartToken]; + case "address-line3": + case "address-level1": + return [WBSContactStreetAddressLine3OrderedPartToken]; + } + let r = e.ControlFieldName, + n = r?.indexOf("1") ?? -1, + i = r?.indexOf("2") ?? -1; + return -1 === n + ? -1 === i + ? t + : o + : -1 === i || n < i + ? [WBSContactStreetAddressLine1OrderedPartToken] + : o; + } + fieldCouldBePhoneNumberContinuation(e, t) { + const o = 5; + if (t.length >= o) return !1; + if (t[0]?.AddressBookValueSpecifier?.property !== WBSABPhoneProperty) + return !1; + const r = 5; + return !!this.fieldLooksLikeItExpectsDataOfSize(e, r); + } + fieldCouldBePostCodeContinuation(e, t) { + const o = 3; + if (t.length >= o) return !1; + if (t[0]?.AddressBookValueSpecifier?.component != _WBSABAddressZIPKey) + return !1; + const r = 6; + return !!this.fieldLooksLikeItExpectsDataOfSize(e, r); + } + fieldLooksLikeSameDataType(e, t) { + const o = t.at(-1); + return ( + !!this.labelsCouldRepresentContinuation( + o?.AddressBookLabel, + o?.AddressBookValueSpecifier, + e?.AddressBookLabel, + e?.AddressBookValueSpecifier, + ) || + !!( + o && + this.fieldLooksLikeDateField(o) && + this.fieldLooksLikeDateField(e) + ) || + !!this.fieldCouldBePhoneNumberContinuation(e, t) || + !!this.fieldCouldBePostCodeContinuation(e, t) || + !!this.fieldCouldBeCreditCardNumberContinuation(e, t) + ); + } + #i(e) { + if ( + (globalThis.DOMRect || + (globalThis.DOMRect = class { + constructor(e, t, o, r) { + ((this.left = e), + (this.right = e + o), + (this.top = t), + (this.bottom = t + r), + (this.width = o), + (this.height = r)); + } + }), + e.ControlRectLeft || + e.ControlRectTop || + e.ControlRectWidth || + e.ControlRectHeight) + ) + return new DOMRect( + e.ControlRectLeft, + e.ControlRectTop, + e.ControlRectWidth, + e.ControlRectHeight, + ); + let t = globalThis.FormMetadataJS?.formControlWithUniqueID( + e.ControlUniqueID, + ); + return t ? t.getBoundingClientRect() : new DOMRect(0, 0, 0, 0); + } + fieldLooksLikeContinuation(e, t, o) { + if (!e.ControlIsTextField && "SELECT" !== e.ControlTagName.toUpperCase()) + return !1; + if (!this.fieldLooksLikeSameDataType(e, t)) return !1; + if (o) return !0; + const r = this.#i(t.at(-1)), + n = this.#i(e); + if (Math.abs(r.top - n.top) > 3) return !1; + let i, a; + return ( + r.left < n.left ? ((i = r), (a = n)) : ((i = n), (a = r)), + !(a.left - i.right > 60) + ); + } + continuingFieldsInFormControls(e, t, o, r) { + const n = [e[t]]; + for (let i = t + 1; i < e.length; ++i) { + const t = e[i]; + if (o && !t.ControlIsTextField) break; + if (!this.fieldLooksLikeContinuation(t, n, r)) break; + n.push(t); + } + return n; + } + classifyControlsRelatedToNameParts(e, t, o) { + const r = e[t]; + ((r.ControlClassification = o), + (r.ControlOrderedParts = [r.AddressBookValueSpecifier?.classification])); + const n = new Set([r.AddressBookValueSpecifier?.classification]), + i = [e[t]]; + for (let r = t + 1; r < e.length; ++r) { + const t = e[r]; + if (!t.ControlIsTextField) break; + const a = t.AddressBookValueSpecifier?.classification; + if (!a) break; + if (!WBSNameOrderedPartTokensSet.has(a) || n.has(a)) break; + ((t.ControlClassification = o), + (t.ControlOrderedParts = [a]), + n.add(a), + i.push(t)); + } + return i; + } + identifyDateFields(e) { + let t, + o, + r, + n = !1; + for (let i of e) + if (i.ControlLooksLikeDayField) { + if (t) return [!1, null, null, null]; + ((t = i), (n = !0)); + } else if (i.ControlLooksLikeMonthField) { + if (o) return [!1, null, null, null]; + ((o = i), (n = !0)); + } else if (i.ControlLooksLikeYearField) { + if (r) return [!1, null, null, null]; + ((r = i), (n = !0)); + } + return [n, r, o, t]; + } + canonicalizedDateTemplate(e) { + if (e && (e = e.replace(/\s/g, "")).length && !/[^dmyDMY\/.-]/g.test(e)) + return (e = (e = (e = e.replace(/D/g, "d")).replace(/m/g, "M")).replace( + /Y/g, + "y", + )); + } + classifyDateFields(e, t, o, r, n, i, a) { + if (e.length > 3) return !1; + if ((a || (a = navigator.language), 1 === e.length)) { + if (!e[0].ControlIsTextField) return !1; + let i = e[0].ControlRequiredFormatForDateTimeInput; + if (!i) { + const t = new Date(1999, 11, 30); + let o = this.#r(e[0]), + r = this.canonicalizedDateTemplate(e[0].ControlPlaceholder), + s = ""; + if (r?.length) { + const e = datePlaceholderParser(r); + e && + ((s = new Intl.DateTimeFormat(a, e).format(t)), + (i = referenceDateToDateFormat(s))); + } + if (!s || s.length > o) { + const e = n + ? [ + { year: "numeric", month: "2-digit", day: "2-digit" }, + { year: "2-digit", month: "2-digit", day: "2-digit" }, + ] + : [{ year: "2-digit", month: "2-digit" }]; + for (const r of e) + if ( + ((s = new Intl.DateTimeFormat(a, r).format(t)), + (i = referenceDateToDateFormat(s)), + s.length <= o) + ) + break; + } + if (s.length > o) return !1; + } + const s = []; + for (const e of i) { + let t; + ("y" === e ? (t = o) : "M" === e ? (t = r) : "d" === e && (t = n), + t && !s.includes(t) && s.push(t)); + } + return ( + (e[0].ControlClassification = t), + (e[0].ControlOrderedParts = s), + (e[0].ControlRequiredFormatForDateTimeInput = i), + !0 + ); + } + let [s, l, d, C] = this.identifyDateFields(e); + if (!s) return !1; + if (C && !d) return !1; + let c = 0; + for (const a of e) + ((a.ControlClassification = t), + (a.ControlContinuationID = i), + (a.ControlContinuationIndex = c++), + a === C + ? (a.ControlOrderedParts = [n]) + : a === d + ? (a.ControlOrderedParts = [r]) + : a === l && (a.ControlOrderedParts = [o])); + return !0; + } + classify(e) { + const t = e.FormControls, + o = t.length, + r = e.AutoFillFormType === WBSAutoFillFormTypeNewAccount, + n = e.AutoFillFormType === WBSAutoFillFormTypeChangePassword, + i = e.UsernameElementUniqueID, + a = e.PasswordElementUniqueID, + s = e.OldPasswordElementUniqueID, + l = e.ConfirmPasswordElementUniqueID; + for (let e of t) + (e.AutocompleteTokens || e.AddressBookLabel) && + (e.AddressBookValueSpecifier = + FormMetadataJSController.specifierForAutocompleteTokensAndAddressBookLabel( + e.AutocompleteTokens, + e.AddressBookLabel, + )); + let d = !1, + C = !1, + c = !1, + f = !1, + u = !1, + k = 0; + for (let S = 0, T = 1; S < o; S += T, T = 1) { + const o = t[S]; + if (o.ControlLooksLikeIgnoredDataTypeField) { + o.ControlClassification = WBSIgnoredClassificationToken; + continue; + } + const h = o.ControlUniqueID; + if (h === a || h === l) { + o.ControlClassification = + r || n + ? WBSCredentialNewPasswordClassificationToken + : WBSCredentialCurrentPasswordClassificationToken; + continue; + } + if (h === s) { + o.ControlClassification = + WBSCredentialCurrentPasswordClassificationToken; + continue; + } + const B = o.AddressBookValueSpecifier?.classification; + if (B === WBSContactEmailClassificationToken) { + o.ControlClassification = WBSContactEmailClassificationToken; + continue; + } + if (h === i) { + o.ControlClassification = WBSCredentialUsernameClassificationToken; + continue; + } + if (!C && o.ControlLooksLikeCreditCardCardholderField) { + if (((C = !0), B && WBSNameOrderedPartTokensSet.has(B))) { + const e = this.classifyControlsRelatedToNameParts( + t, + S, + WBSCreditCardHolderNameClassificationToken, + ); + if (e.length > 1) { + let t = ++k, + o = 0; + for (let r of e) + ((r.ControlContinuationID = t), + (r.ControlContinuationIndex = o++)); + } + T = e.length; + continue; + } + ((o.ControlClassification = WBSCreditCardHolderNameClassificationToken), + (o.ControlOrderedParts = + WBSCreditCardHolderNameClassificationDefaultOrderedParts)); + continue; + } + if (!d && o.ControlLooksLikeCreditCardNumberField) { + d = !0; + const e = this.continuingFieldsInFormControls(t, S, !0, !1); + let o = 0, + r = e.length > 1 ? ++k : 0; + for (let t of e) + ((t.ControlClassification = WBSCreditCardNumberClassificationToken), + (t.ControlContinuationID = r), + (t.ControlContinuationIndex = o++)); + T = e.length; + continue; + } + const P = + this.fieldLooksLikeDateField(o) || + o.ControlLooksLikeCreditCardCompositeExpirationDateField; + if (!c && P) { + let e = f || C || d; + if ( + ((e ||= + !o.ControlLooksLikeOneTimeCodeField && + 1 === + t.filter((e) => + AllowedControlTagsForStandaloneCreditCardCompositeExpirationControl.has( + e.ControlTagName.toLowerCase(), + ), + ).length), + e) + ) { + c = !0; + const e = this.continuingFieldsInFormControls(t, S, !1, !0); + let o = e.length > 1 ? ++k : 0; + (this.classifyDateFields( + e, + WBSCreditCardExpirationClassificationToken, + WBSDateYearOrderedPartToken, + WBSDateMonthOrderedPartToken, + void 0, + o, + WBSLocaleForCreditCardExpirationDate, + ), + (T = e.length)); + continue; + } + } + if (u || !o.ControlLooksLikeCreditCardSecurityCodeField) + if (f || !o.ControlLooksLikeCreditCardTypeField) + if (B) { + const r = o.AddressBookValueSpecifier.classificationHint; + if (B === WBSContactNameClassificationToken) { + ((o.ControlClassification = B), + (o.ControlOrderedParts = + WBSContactNameClassificationDefaultOrderedParts)); + continue; + } + if (WBSNameOrderedPartTokensSet.has(B)) { + const e = this.classifyControlsRelatedToNameParts( + t, + S, + WBSContactNameClassificationToken, + ); + if (e.length > 1) { + let t = ++k, + o = 0; + for (let r of e) + ((r.ControlContinuationID = t), + (r.ControlContinuationIndex = o++)); + } + T = e.length; + continue; + } + if (B === WBSContactPostalCodeClassificationToken) { + const e = this.continuingFieldsInFormControls(t, S, !0, !1); + let o = e.length > 1 ? ++k : 0, + r = 0; + for (let t of e) + ((t.ControlClassification = + WBSContactPostalCodeClassificationToken), + (t.ControlContinuationID = o), + (t.ControlContinuationIndex = r++)); + T = e.length; + continue; + } + if (B === WBSContactStreetAddressClassificationToken) { + const e = this.continuingFieldsInFormControls(t, S, !0, !0); + let o = e.length > 1 ? ++k : 0, + r = 0; + for (let t of e) + ((t.ControlClassification = + WBSContactStreetAddressClassificationToken), + (t.ControlContinuationID = o), + (t.ControlContinuationIndex = r++)); + if (1 === e.length) { + let t = e[0]; + t.ControlOrderedParts = this.#n(t); + } else + 2 === e.length + ? ((e[0].ControlOrderedParts = [ + WBSContactStreetAddressLine1OrderedPartToken, + ]), + (e[1].ControlOrderedParts = [ + WBSContactStreetAddressLine2OrderedPartToken, + WBSContactStreetAddressLine3OrderedPartToken, + ])) + : e.length >= 3 && + ((e[0].ControlOrderedParts = [ + WBSContactStreetAddressLine1OrderedPartToken, + ]), + (e[1].ControlOrderedParts = [ + WBSContactStreetAddressLine2OrderedPartToken, + ]), + (e[2].ControlOrderedParts = [ + WBSContactStreetAddressLine3OrderedPartToken, + ])); + T = e.length; + continue; + } + if (B === WBSContactInstantMessageClassificationToken) { + const e = this.continuingFieldsInFormControls(t, S, !0, !0); + (1 === e.length && + ((e[0].ControlClassification = + WBSContactInstantMessageClassificationToken), + r && (e[0].ControlClassificationHints = [r])), + (T = e.length)); + continue; + } + if (B.startsWith(WBSContactTelephoneClassificationToken)) { + const e = this.continuingFieldsInFormControls(t, S, !0, !1); + if (1 == e.length) { + ((e[0].ControlClassification = + WBSContactTelephoneClassificationToken), + (e[0].ControlOrderedParts = WBSTelephoneDefaultOrderedParts), + r && (e[0].ControlClassificationHints = [r])); + continue; + } + let o = ++k, + n = 0; + for (let t of e) + ((t.ControlClassification = + WBSContactTelephoneClassificationToken), + (t.ControlContinuationID = o), + (t.ControlContinuationIndex = n++), + r && (t.ControlClassificationHints = [r])); + (2 === e.length + ? ((e[0].ControlOrderedParts = [ + WBSTelephoneAreaCodeOrderedPartToken, + ]), + (e[1].ControlOrderedParts = [ + WBSTelephoneLocalPrefixOrderedPartToken, + WBSTelephoneLocalSuffixOrderedPartToken, + ])) + : 3 === e.length + ? ((e[0].ControlOrderedParts = [ + WBSTelephoneAreaCodeOrderedPartToken, + ]), + (e[1].ControlOrderedParts = [ + WBSTelephoneLocalPrefixOrderedPartToken, + ]), + (e[2].ControlOrderedParts = [ + WBSTelephoneLocalSuffixOrderedPartToken, + ])) + : 4 === e.length + ? ((e[0].ControlOrderedParts = [ + WBSTelephoneCountryCodeOrderedPartToken, + ]), + (e[1].ControlOrderedParts = [ + WBSTelephoneAreaCodeOrderedPartToken, + ]), + (e[2].ControlOrderedParts = [ + WBSTelephoneLocalPrefixOrderedPartToken, + ]), + (e[3].ControlOrderedParts = [ + WBSTelephoneLocalSuffixOrderedPartToken, + ])) + : ((e[0].ControlOrderedParts = [ + WBSTelephoneCountryCodeOrderedPartToken, + ]), + (e[1].ControlOrderedParts = [ + WBSTelephoneAreaCodeOrderedPartToken, + ]), + (e[2].ControlOrderedParts = [ + WBSTelephoneLocalPrefixOrderedPartToken, + ]), + (e[3].ControlOrderedParts = [ + WBSTelephoneLocalSuffixOrderedPartToken, + ]), + (e[4].ControlOrderedParts = [ + WBSTelephoneExtensionOrderedPartToken, + ])), + (T = e.length)); + continue; + } + if (B === WBSContactBirthdayClassificationToken) { + const o = this.continuingFieldsInFormControls(t, S, !1, !1), + r = o.length > 1 ? ++k : void 0, + n = + e.RequestType === WBSFormMetadataRequestTesting + ? "en-US" + : void 0; + (this.classifyDateFields( + o, + WBSContactBirthdayClassificationToken, + WBSDateYearOrderedPartToken, + WBSDateMonthOrderedPartToken, + WBSDateDayOrderedPartToken, + r, + n, + ), + (T = o.length)); + continue; + } + o.ControlClassification = B; + } else + o.ControlLooksLikeEIDField + ? (o.ControlClassification = WBSDeviceEIDClassificationToken) + : o.ControlLooksLikeIMEIField && + (o.ControlClassification = WBSDeviceIMEIClassificationToken); + else + ((f = !0), + (o.ControlClassification = WBSCreditCardTypeClassificationToken)); + else + ((u = !0), + (o.ControlClassification = + WBSCreditCardSecurityCodeClassificationToken)); + } + } +} +globalThis.FormMetadataClassificationJS = new FormMetadataClassification(); diff --git a/26.2/js/forms/FormMetadataContactsAutoFillMappings.js b/26.2/js/forms/FormMetadataContactsAutoFillMappings.js new file mode 100644 index 0000000..e71d725 --- /dev/null +++ b/26.2/js/forms/FormMetadataContactsAutoFillMappings.js @@ -0,0 +1,9051 @@ +//# sourceURL=__InjectedScript_FormMetadataContactsAutoFillMappings.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +// Copyright (C) 2018-25 Apple Inc. All rights reserved. +function newAddressBookFieldLabelPatternMatchers() { + return [ + new FormMetadataFieldPatternMatcher([ + "\u59d3\u540d", + "\u771f\u5b9e\u59d3\u540d", + "\u5168\u540d", + "\u043f\u043e\u0432\u043d\u0435\u0456\u043c'\u044f", + "\u043f\u043e\u0432\u043d\u0435\u0456\u043c\u2019\u044f", + "\u043f\u043e\u0432\u043d\u0435 \u0456\u043c'\u044f", + "\u043f\u043e\u0432\u043d\u0435 \u0456\u043c\u2019\u044f", + "tam ad\u0131", + "tam isim", + "tam ad", + "\u0e0a\u0e37\u0e48\u0e2d\u0e41\u0e25\u0e30\u0e19\u0e32\u0e21\u0e2a\u0e38\u0e01\u0e25", + "\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e15\u0e47\u0e21", + "fullst\xe4ndigt namn", + "hela namnet", + "nombre completo", + "cel\xe9 meno", + "\u0424.\u0418.\u041e.", + "\u0424\u0418\u041e", + "\u043f\u043e\u043b\u043d\u043e\u0435\u0438\u043c\u044f", + "\u043f\u043e\u043b\u043d\u043e\u0435 \u0438\u043c\u044f", + "nume complet", + "nume \xeentreg", + "fullt navn", + "fulltnavn", + "\uc131\uc774\ub984", + "\uc131, \uc774\ub984", + "\uc131 \uc774\ub984", + "\uc804\uccb4 \uc774\ub984", + "\u30d5\u30eb\u30cd\u30fc\u30e0", + "\u6c0f\u540d", + "\u540d\u524d", + "\u304a\u540d\u524d", + "nome completo", + "nome e cognome", + "puno ime", + "\u05e9\u05dd \u05de\u05dc\u05d0", + "Voller Name", + "Vollst\xe4ndiger Name", + "nom entier", + "t\xe4ydellinen nimi", + "koko nimi", + "\u03bf\u03bd\u03bf\u03bc\u03b1\u03c4\u03b5\u03c0\u03ce\u03bd\u03c5\u03bc\u03bf", + "fuldt navn", + "fulde navn", + "nom complet", + "\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0643\u0627\u0645\u0644", + "first, middle, last", + "first and last name", + "first and last", + "full name", + "fullname", + "\u0456\u043c\u2019\u044f", + "\u0456\u043c'\u044f", + "birinci ad", + "birinci ad\u0131", + "ad", + "\u0e0a\u0e37\u0e48\u0e2d\u0e2b\u0e19\u0e49\u0e32", + "\u0e0a\u0e37\u0e48\u0e2d\u0e41\u0e23\u0e01", + "\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e23\u0e34\u0e07", + "\u0e0a\u0e37\u0e48\u0e2d\u0e15\u0e31\u0e27", + "\u0e0a\u0e37\u0e48\u0e2d\u0e15\u0e49\u0e19", + "\u0e0a\u0e37\u0e48\u0e2d", + "dopnamn", + "fnamn", + "f\xf6rnamn", + "f\xf6rn.", + "nombre", + "krst. meno", + "krst meno", + "krstn\xe9 meno", + "krstn\xe9", + "\u0418\u043c\u044f", + "pnume", + "nume botez", + "pre nume", + "prenume", + "nome de baptismo", + "primeironome", + "pnome", + "primeiro nome", + "primeiro", + "pierwsze imi\u0119", + "imi\u0119", + "d\xf8penavn", + "for-", + "\uc774\ub984", + "\u540d\uff08\u5168\u89d28\u6587\u5b57\u4ee5\u5185\uff09", + "nome", + "\u05e9\u05dd \u05e4\u05e8\u05d8\u05d9", + "\u05e4\u05e8\u05d8\u05d9", + "Vorname", + "pr\xe9nom usuel", + "petit nom", + "nom de bapt\xeame", + "pr\xe9nom", + "kutsumanimi", + "etun.", + "etu", + "etunimi", + "\u03cc\u03bd\u03bf\u03bc\u03b1", + "voornaam", + "d\xf8benavn", + "f-navn", + "fnavn", + "fornavn", + "\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0623\u0648\u0644", + "\u0627\u0644\u0623\u0648\u0644", + "forename", + "given name", + "firstname", + "f name", + "namef", + "fname", + "first name", + "first", + "\u4e2d\u9593\u540d", + "\u4e2d\u95f4\u540d", + "\u043f\u043e\u0431\u0430\u0442\u044c\u043a\u043e\u0432\u0456", + "\u043f\u043e \u0431\u0430\u0442\u044c\u043a\u043e\u0432\u0456", + "g\xf6bek ad\u0131", + "ikinci ad\u0131", + "ikinci isim", + "ikinci ad", + "\u0e01\u0e25\u0e32\u0e07", + "\u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e25\u0e32\u0e07\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07", + "\u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e25\u0e32\u0e07", + "\u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e25\u0e32\u0e07\u0e22\u0e48\u0e2d", + "\u0e15\u0e31\u0e27\u0e22\u0e48\u0e2d\u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e25\u0e32\u0e07", + "mellan", + "andranamn", + "mellannamn", + "mellan initial", + "mellaninitial", + "segundo nombre", + "stredn\xe9", + "stredn\xe9 meno", + "inici\xe1la stredn\xe9ho", + "inici\xe1la stredn\xe9ho mena", + "\u041e\u0442\u0447\u0435\u0441\u0442\u0432\u043e", + "secundar", + "alt prenume", + "prenume secundar", + "meio", + "nomedomeio", + "nome do meio", + "inicialdomeio", + "inicial do meio", + "2\xba nome", + "inicial do 2\xba nome", + "inicja\u0142 drugiego imienia", + "drugie imi\u0119", + "drugie", + "mellom-", + "m-navn", + "mellomnavn", + "initial, mellomnavn", + "forbokstav, mellomnavn", + "\uac00\uc6b4\ub370\uc774\ub984 \uccab\uc790", + "\uac00\uc6b4\ub370 \uc774\ub984 \uccab\uc790", + "\uc911\uac04\uc774\ub984 \uccab\uc790", + "\uc911\uac04 \uc774\ub984 \uccab\uc790", + "\uac00\uc6b4\ub370\uc774\ub984", + "\uac00\uc6b4\ub370 \uc774\ub984", + "\uc911\uac04\uc774\ub984", + "\uc911\uac04 \uc774\ub984", + "\u30df\u30c9\u30eb\u30cd\u30fc\u30e0", + "secondo nome", + "iniziale secondo nome", + "iniziale", + "drugo ime", + "\u05e9\u05dd \u05d0\u05de\u05e6\u05e2\u05d9", + "\u05d0\u05de\u05e6\u05e2\u05d9", + "Initialen", + "Mittelname", + "nom matronymique", + "matronyme", + "second pr\xe9nom", + "initiale autre pr\xe9nom", + "autre pr\xe9nom", + "initiale deuxi\xe8me pr\xe9nom", + "initiale second pr\xe9nom", + "deuxi\xe8me pr\xe9nom", + "toinen nimi", + "toinen etunimi", + "\u03bc\u03b5\u03c3\u03b1\u03af\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1", + "initiaal tweede naam", + "mellem", + "mellem navn", + "initial, mellemnavn", + "forbogstav, mellemnavn", + "segon nom", + "\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0623\u0648\u0633\u0637", + "\u0627\u0644\u062d\u0631\u0641 \u0627\u0644\u0623\u0648\u0644 \u0645\u0646 \u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0623\u0648\u0633\u0637", + "middle", + "middlename", + "middle name", + "middleinitial", + "middle initial", + "\u59d3\u6c0f", + "\u043f\u0440\u0456\u0437\u0432\u0438\u0449\u0435", + "soyismi", + "soyisim", + "soyad\u0131", + "soyad", + "\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e01\u0e38\u0e25\u0e17\u0e49\u0e32\u0e22", + "\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e49\u0e32\u0e22", + "\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e01\u0e38\u0e25", + "\u0e2a\u0e01\u0e38\u0e25", + "\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25", + "\u0e17\u0e49\u0e32\u0e22", + "enamn", + "familjenamn", + "efternamn", + "eftern.", + "apellidos", + "apellido", + "\u0424\u0430\u043c\u0438\u043b\u0438\u044f", + "familie", + "nume familie", + "apelido", + "\xfaltimonome", + "\xfanome", + "\xfaltimo nome", + "\xfaltimo", + "sobrenome", + "nazwisko", + "e-navn", + "etternavn", + "etter-", + "\uc131", + "\u6c0f", + "\u59d3", + "cognome", + "prezime", + "\u05e9\u05dd \u05de\u05e9\u05e4\u05d7\u05d4", + "\u05de\u05e9\u05e4\u05d7\u05d4", + "Familienname", + "Nachname", + "nom patronymique", + "nom patronyme", + "patronyme", + "nom", + "nom de famille", + "sukun.", + "suku", + "sukunimi", + "\u03b5\u03c0\u03ce\u03bd\u03c5\u03bc\u03bf", + "achternaam", + "familienavn", + "enavn", + "Efternavn", + "efter", + "cognoms", + "cognom", + "\u0627\u0633\u0645 \u0627\u0644\u0639\u0627\u0626\u0644\u0629", + "surname", + "lastname", + "l name", + "namel", + "lname", + "last name", + "last", + "\u51fa\u751f\u5e74\u6708\u65e5", + "\u51fa\u751f", + "\u51fa\u751f\u65e5\u671f", + "\u751f\u65e5", + "\u043d\u0430\u0440\u043e\u0434\u0438\u0432\u0441\u044f", + "\u0434\u0430\u0442\u0430 \u043d\u0430\u0440\u043e\u0434\u0436\u0435\u043d\u043d\u044f", + "\u0434\u0435\u043d\u044c \u043d\u0430\u0440\u043e\u0434\u0436\u0435\u043d\u043d\u044f", + "do\u011fum tarihi", + "do\u011fum", + "do\u011fum g\xfcn\xfc", + "do\u011fumg\xfcn\xfc", + "\u0e40\u0e01\u0e34\u0e14", + "\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e40\u0e01\u0e34\u0e14", + "\u0e27\u0e31\u0e19\u0e40\u0e01\u0e34\u0e14", + "f\xf6dd", + "f\xf6delsedatum", + "f\xf6delsedag", + "cumplea\xf1os", + "nacimiento", + "fecha de nacimiento", + "naroden\xfd/\xe1", + "d\xe1tum narodenia", + "narodeniny", + "\u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c", + "\u0440\u043e\u0434\u0438\u043b\u0441\u044f", + "\u0434\u0430\u0442\u0430\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f", + "\u0434\u0435\u043d\u044c\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f", + "\u0434\u0430\u0442\u0430 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f", + "\u0434\u0435\u043d\u044c \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f", + "nascut", + "data na\u0219terii", + "zi na\u0219tere", + "zi de na\u0219tere", + "nascido", + "nascido(a)", + "data de nascimento", + "anivers\xe1rio", + "urodzona", + "urodzony", + "data urodzenia", + "urodziny", + "bursdag", + "\ud0dc\uc5b4\ub09c \ub0a0\uc9dc", + "\ud0dc\uc5b4\ub09c \ub0a0", + "\ucd9c\uc0dd\uc77c", + "\uc0dd\ub144\uc6d4\uc77c", + "\uc0dd\uc77c", + "\u304a\u8a95\u751f\u65e5", + "\u751f\u5e74\u6708\u65e5", + "\u8a95\u751f\u65e5", + "nato/a", + "data di nascita", + "compleanno", + "datum ro\u0111enja", + "ro\u0111endan", + "\u05d9\u05d5\u05dd \u05d4\u05d5\u05dc\u05d3\u05ea", + "\u05ea\u05d0\u05e8\u05d9\u05da \u05dc\u05d9\u05d3\u05d4", + "Geburtsdatum", + "Geburtstag", + "anniversaire", + "n\xe9(e) le", + "naissance", + "date de naissance", + "syntynyt", + "syntym\xe4p\xe4iv\xe4", + "\u03b3\u03ad\u03bd\u03bd\u03b7\u03c3\u03b7", + "\u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03b3\u03ad\u03bd\u03bd\u03b7\u03c3\u03b7\u03c2", + "\u03b3\u03b5\u03bd\u03ad\u03b8\u03bb\u03b9\u03b1", + "geboren", + "geboortedatum", + "verjaardag", + "f\xf8dt", + "f\xf8dselsdato", + "f\xf8dselsdag", + "aniversari", + "naixen\xe7a", + "data de naixen\xe7a", + "\u0645\u0648\u0644\u0648\u062f", + "\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0645\u064a\u0644\u0627\u062f", + "born", + "date of birth", + "birth year", + "birth month", + "birth day", + "birthday", + "birth date", + "\u982d\u929c", + "\u8077\u929c", + "\u5de5\u4f5c\u8077\u929c", + "\u5de5\u4f5c\u8077\u7a31", + "\u8077\u52d9\u540d\u7a31", + "\u8077\u52d9", + "\u8077\u4f4d\u540d\u7a31", + "\u8077\u4f4d", + "\u8077\u7a31\u540d\u7a31", + "\u8077\u7a31", + "\u5de5\u4f5c\u804c\u4f4d", + "\u804c\u52a1", + "\u804c\u4f4d", + "\u043f\u043e\u0441\u0430\u0434\u0430", + "meslek", + "mesle\u011fi", + "i\u015f \xfcnvan\u0131", + "\xfcnvan\u0131", + "\xfcnvan", + "\u0e0a\u0e37\u0e48\u0e2d\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07", + "\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07", + "yrke", + "befattning", + "titel", + "jobbtitel", + "trabajo", + "puesto de trabajo", + "poz\xedcia", + "pracovn\xe1 poz\xedcia", + "\u0414\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u044c", + "\u0440\u043e\u0434\u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438", + "\u0420\u043e\u0434 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438", + "\u0432\u0438\u0434\u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438", + "\u0412\u0438\u0434 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438", + "\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f", + "func\u021bie", + "cargoprofissional", + "cargo profissional", + "cargo", + "stanowisko", + "\uc9c1\ud568", + "\uc9c1\ucc45", + "\uc9c1\uc704", + "\u8077\u696d", + "\u8077\u7a2e", + "\u5f79\u8077", + "ruolo professionale", + "qualifica", + "profesija", + "posao", + "titula", + "\u05ea\u05e4\u05e7\u05d9\u05d3", + "T\xe4tigkeit", + "Berufsbezeichnung", + "Beruf", + "poste", + "profession", + "activit\xe9", + "ammattinimike", + "ammatti", + "\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1", + "\u03b8\u03ad\u03c3\u03b7 \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2", + "werk", + "functie", + "stilling", + "feina", + "lloc de treball", + "c\xe0rrec", + "\u0627\u0644\u0645\u0633\u0645\u0649 \u0627\u0644\u0648\u0638\u064a\u0641\u064a", + "company title", + "jobtitle", + "job title", + "\u96fb\u90f5", + "\u96fb\u5b50\u90f5\u7bb1", + "\u96fb\u5b50\u4fe1\u7bb1", + "\u96fb\u5b50\u90f5\u4ef6\u4fe1\u7bb1", + "\u96fb\u5b50\u90f5\u4ef6\u5730\u5740", + "\u96fb\u5b50\u90f5\u4ef6\u4f4d\u5740", + "\u96fb\u5b50\u90f5\u4ef6", + "\u7535\u5b50\u90ae\u4ef6\u5730\u5740", + "\u7535\u5b50\u90ae\u4ef6", + "\u0435\u043b. \u0430\u0434\u0440\u0435\u0441\u0430", + "\u0435\u043b.\u0430\u0434\u0440\u0435\u0441\u0430", + "\u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u0430\u0434\u0440\u0435\u0441\u0430", + "\u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0430", + "\u0435\u043b. \u043f\u043e\u0448\u0442\u0430", + "\u0435\u043b.\u043f\u043e\u0448\u0442\u0430", + "\u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u043f\u043e\u0448\u0442\u0430", + "\u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430 \u043f\u043e\u0448\u0442\u0430", + "eposta adresi", + "e-posta adresi", + "e-posta", + "eposta", + "\u0e2d\u0e35-\u0e40\u0e21\u0e25", + "\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25", + "\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48", + "\u0e2d\u0e35\u0e40\u0e21\u0e25", + "mejladress", + "mejl", + "emejl", + "epostadress", + "e-postadress", + "correo electr\xf3nico", + "emailAdr", + "emailAdresa", + "\u0410\u0434\u0440\u0435\u0441 email", + "\u0410\u0434\u0440\u0435\u0441 e-mail", + "\u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441", + "\u0410\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b", + "\u0410\u0434\u0440\u0435\u0441 \u044d\u043b. \u043f\u043e\u0447\u0442\u044b", + "adres\u0103email", + "mail", + "epost", + "e-mail\uc8fc\uc18c", + "e-mail \uc8fc\uc18c", + "email\uc8fc\uc18c", + "email \uc8fc\uc18c", + "\uc774\uba54\uc77c\uc8fc\uc18c", + "\uc774\uba54\uc77c \uc8fc\uc18c", + "\uc774\uba54\uc77c", + "\u30e1\u30eb\u30a2\u30c9", + "\u30e1\u30a2\u30c9", + "E\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9", + "\u96fb\u5b50\u30e1\u30fc\u30eb", + "Email \u30a2\u30c9\u30ec\u30b9", + "Email\u30a2\u30c9\u30ec\u30b9", + "\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9", + "\u30e1\u30fc\u30eb", + "ind. posta elettronica", + "posta elettronica", + "indirizzo di posta elettronica", + "indirizzo e-mail", + "ind. e-mail", + "e-po\u0161ta", + "adresa e-po\u0161te", + "e-mail adresa", + "\u05de\u05d9\u05d9\u05dc", + "\u05d3\u05d5\u05d0\u05f4\u05dc", + "E-Mail-Adresse", + "E-Mail Adresse", + "adel", + "m\xe9l.", + "c\xe9", + "c. \xe9lec.", + "adresse Internet", + "adr\xe9lec", + "adresse e-mail", + "adresse courriel", + "adresse de courrier \xe9lectronique", + "adresse de courriel", + "courrier \xe9lectronique", + "adresse \xe9lectronique", + "adresse de messagerie", + "messagerie \xe9lectronique", + "courriel", + "s\xe4hk\xf6postiosoite", + "s-posti", + "s\xe4hk\xf6posti", + "e-postadresse", + "e-postadr", + "e-post", + "adre\xe7a electr\xf2nica", + "correu electr\xf2nic", + "\u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a", + "e-mail", + "emailAddress", + "emailAddr", + "e mail", + "email", + "\u8be6\u7ec6\u5730\u5740", + "\u5730\u5740", + "\u8f93\u5165\u8857\u9053\u5730\u5740\u884c", + "\u8857\u9053\u5730\u5740", + "\u8857\u9053", + "\u0430\u0434\u0440\u0435\u0441\u04301", + "\u0430\u0434\u0440\u0435\u0441\u0430 1", + "\u0440\u044f\u0434\u043e\u043a \u0430\u0434\u0440\u0435\u0441\u0438", + "\u043f\u0440\u043e\u0441\u043f\u0435\u043a\u0442", + "\u043f\u0440\u043e\u0432\u0443\u043b\u043e\u043a", + "\u0432\u0443\u043b.", + "\u0432\u0443\u043b\u0438\u0446\u044f", + "cad.", + "cadde adresi", + "cadde", + "\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48 1", + "\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e23\u0e01", + "\u0e1b\u0e49\u0e2d\u0e19\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48", + "\u0e0a\u0e37\u0e48\u0e2d\u0e16\u0e19\u0e19", + "\u0e16\u0e19\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48", + "\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e16\u0e19\u0e19", + "\u0e16\u0e19\u0e19", + "adress 1", + "adress1", + "adr.", + "gatuadr.", + "v\xe4g", + "gatuadress", + "gata", + "direcci\xf3n1", + "direcci\xf3n 1", + "calle", + "adresa ul.", + "adresa ulice", + "\u0423\u043b.", + "\u0423\u043b\u0438\u0446\u0430", + "adres\u0103 stradal\u0103", + "adres\u01031", + "adres\u0103 1", + "strada", + "endere\xe7o da rua", + "endere\xe7o 1", + "endere\xe7o1", + "rua", + "angiAdresseAdresselinje", + "veiadresse", + "vei", + "gateadresse", + "gate", + "\uc8fc\uc18c 1", + "\uc8fc\uc18c1", + "\uc0c1\uc138 \uc8fc\uc18c", + "\uc0c1\uc138\uc8fc\uc18c", + "\u756a\u5730\uff1a", + "\u4f4f\u6240\u5165\u529b\u6b04", + "\u4f4f\u6240\uff0817\u6587\u5b57\u4ee5\u5185\uff09", + "\u305d\u308c\u4ee5\u964d\u306e\u4f4f\u6240", + "\u756a\u5730", + "indirizzo 1", + "indirizzo1", + "linea indirizzo", + "indirizzo postale", + "via", + "adresa 1", + "adresa1", + "ku\u0107na adresa", + "ulica", + "\u05e8\u05d7\u05d5\u05d1", + "Str.", + "Strasse", + "Stra\xdfe", + "adresse civique", + "adresse municipale", + "adresse g\xe9ographique", + "adresse postale 1", + "1\xe8re adresse", + "adresse postale", + "rue", + "osoite 1", + "k.", + "katu", + "katuosoite", + "\u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 (\u03b3\u03c1\u03b1\u03bc\u03bc\u03ae 1)", + "\u03bf\u03b4\u03cc\u03c2", + "adres 1", + "adres1", + "straat", + "adresse 1", + "adresse1", + "angivAdresseAdresselinje", + "vejadresse", + "vej", + "gadeadresse", + "gade", + "adre\xe7a1", + "adre\xe7a 1", + "carrer", + "\u0627\u0644\u0639\u0646\u0648\u0627\u0646 \u0661", + "\u0623\u062f\u062e\u0644 \u0639\u0646\u0648\u0627\u0646 \u0633\u0637\u0631 \u0627\u0644\u0639\u0646\u0648\u0627\u0646", + "\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0634\u0627\u0631\u0639", + "\u0627\u0644\u0634\u0627\u0631\u0639", + "address 1", + "address1", + "house name", + "enterAddressAddressLine", + "addrstreet", + "streetaddress", + "street address", + "street", + "\u7e23\u2215\u5e02", + "\u7e23\uff08\u5e02\uff09", + "\u7e23\u5e02", + "\u57ce\u5e02", + "\u043c\u0456\u0441\u0442\u043e", + "il", + "\u015fehir", + "\u0e40\u0e21\u0e37\u0e2d\u0e07", + "hemstad", + "bostadsort", + "ort", + "kommun", + "stad", + "ciudad", + "mesto", + "\u0433.", + "\u041d\u0430\u0441\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u043d\u043a\u0442", + "\u0413\u043e\u0440\u043e\u0434", + "ora\u0219", + "cidade", + "sted", + "poststed", + "\ub3c4\uc2dc", + "\uc2dc", + "\u90e1\u5e02\u533a(\u5cf6\u30fb\u56fd\u540d)", + "\u5dde\u307e\u305f\u306f\u90e1/\u5e02\u533a\u753a\u6751", + "\u90e1\u5e02\u533a\uff08\u5cf6\u30fb\u56fd\u540d\uff09", + "\u5dde\u307e\u305f\u306f\u90e1\uff0f\u5e02\u533a\u753a\u6751", + "\u5e02\u533a\u753a\u6751\uff1a", + "\u5e02\u533a\u753a\u6751\uff0811\u6587\u5b57\u4ee5\u5185\uff09", + "\u5e02\u533a\u90e1\u753a\u6751", + "\u5e02\u533a\u753a\u6751", + "citt\xe0", + "grad", + "\u05d9\u05d9\u05e9\u05d5\u05d1", + "\u05e2\u05d9\u05e8", + "Stadt", + "ville", + "postitoimipaikka", + "paikkakunta", + "kaupunki", + "\u03c0\u03cc\u03bb\u03b7", + "plaats", + "ciutat", + "\u0627\u0644\u0645\u062f\u064a\u0646\u0629", + "city", + "\u7701", + "\u5dde/\u7701", + "\u043e\u0431\u043b.", + "\u043e\u0431\u043b\u0430\u0441\u0442\u044c", + "eyalet", + "\u0e23\u0e31\u0e10", + "l\xe4n", + "provins", + "provincia", + "\u0161t\xe1t", + "\u041a\u0440\u0430\u0439", + "\u0420\u0435\u0433\u0438\u043e\u043d", + "\u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430", + "jude\u021b", + "stat", + "regi\xe3o", + "estado", + "\ub3c4", + "\uc8fc", + "\u5dde", + "\u90fd\u9053\u5e9c\u770c\uff1a", + "\u90fd\u9053\u5e9c\u770c", + "stato", + "dr\u017eava", + "\u05de\u05d3\u05d9\u05e0\u05d4", + "\u05de\u05d7\u05d5\u05d6", + "Bundesstaat", + "Bundesland", + "province", + "r\xe9gion", + "\xe9tat", + "osavaltio", + "l\xe4\xe4ni", + "\u03bd\u03bf\u03bc\u03cc\u03c2", + "\u03c0\u03bf\u03bb\u03b9\u03c4\u03b5\u03af\u03b1", + "staat", + "delstat", + "prov\xedncia", + "estat", + "\u0627\u0644\u0648\u0644\u0627\u064a\u0629", + "state", + "\u90f5\u905e\u5340\u865f", + "\u90ae\u7f16", + "\u90ae\u653f\u7f16\u7801", + "\u043f\u043e\u0448\u0442\u043e\u0432\u0438\u0439 \u043a\u043e\u0434", + "\u043f\u043e\u0448\u0442\u043e\u0432\u0438\u0439 \u0456\u043d\u0434\u0435\u043a\u0441", + "\u0456\u043d\u0434\u0435\u043a\u0441", + "zipkod", + "zip kod", + "zip kodu", + "posta kodu", + "\u0e23\u0e2b\u0e31\u0e2a\u0e2a\u0e48\u0e07\u0e08\u0e14\u0e2b\u0e21\u0e32\u0e22", + "\u0e23\u0e2b\u0e31\u0e2a\u0e08\u0e14\u0e2b\u0e21\u0e32\u0e22", + "\u0e23\u0e2b\u0e31\u0e2a\u0e44\u0e1b\u0e23\u0e29\u0e13\u0e35\u0e22\u0e4c", + "\u0e44\u0e1b\u0e23\u0e29\u0e13\u0e35\u0e22\u0e4c", + "\u0e23\u0e2b\u0e31\u0e2a", + "smerovacie \u010d\xedslo", + "po\u0161tov\xe9 smerovacie \u010d\xedslo", + "PS\u010c", + "\u0418\u043d\u0434\u0435\u043a\u0441", + "\u041f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441", + "codpo\u0219tal", + "cod po\u0219tal", + "c\xf3digopostal", + "cp", + "c\xf3digo postal", + "postnummer", + "\uc0ac\uc11c\ud568", + "\uc6b0\ud3b8", + "\uc6b0\ud3b8\ubc88\ud638", + "\uc6b0\ud3b8 \ubc88\ud638", + "\u3012", + "\u90f5\u4fbf\u756a\u53f7\uff1a", + "\u90f5\u4fbf\u756a\u53f7", + "codice postale", + "codice avviamento postale", + "codice di avviamento postale", + "CAP", + "po\u0161tanski br.", + "po\u0161tanski broj", + "\u05de\u05d9\u05e7\u05d5\u05d3", + "Postleitzahl", + "PLZ", + "code postal am\xe9ricain", + "code ZIP", + "NPA", + "num\xe9ro postal d'acheminement", + "num\xe9ro postal", + "code postal", + "postinro", + "postinumero", + "\u03a4.\u039a.", + "\u03c4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b9\u03ba\u03cc\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2", + "postnr.", + "codi postal", + "\u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0628\u0631\u064a\u062f\u064a", + "post code", + "postcode", + "postal code", + "postalcode", + "postal", + "zip code", + "zipcode", + "zip", + "\u570b\u5bb6\u6216\u5730\u5340", + "\u570b\u5bb6\u2215\u5730\u5340", + "\u570b\u5bb6", + "\u5730\u533a", + "\u56fd\u5bb6", + "\u56fd\u5bb6/\u5730\u533a", + "\u043a\u0440\u0430\u0457\u043d\u0430", + "\xfclke", + "\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28", + "krajina", + "\u0421\u0442\u0440\u0430\u043d\u0430", + "\u021bar\u0103", + "\ub098\ub77c", + "\uad6d\uac00", + "\u56fd\uff0f\u5730\u57df\u540d\uff1a", + "\u56fd\uff0f\u5730\u57df\u540d", + "\u56fd/\u5730\u57df\u540d\uff1a", + "\u56fd/\u5730\u57df\u540d", + "\u56fd\u3001\u5730\u57df", + "\u56fd", + "paese", + "zemlja", + "pays", + "maa", + "\u03c7\u03ce\u03c1\u03b1", + "land", + "pa\xeds", + "\u0627\u0644\u0628\u0644\u062f", + "country", + "\u665a\u4e0a\u96fb\u8a71", + "\u665a\u9593\u96fb\u8a71", + "\u591c\u9593\u96fb\u8a71", + "\u4f4f\u5b85\u96fb\u8a71", + "\u5bb6\u88e1\u96fb\u8a71", + "\u5bb6\u7528\u96fb\u8a71", + "\u4f4f\u5bb6\u96fb\u8a71", + "\u591c\u665a\u7535\u8bdd\u533a\u53f7", + "\u5bb6\u5ead\u7535\u8bdd\u533a\u53f7", + "\u591c\u95f4\u7535\u8bdd", + "\u5bb6\u5ead\u7535\u8bdd", + "\u043a\u043e\u0434 \u0432\u0435\u0447\u0456\u0440\u043d\u044c\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + "\u043a\u043e\u0434 \u0434\u043e\u043c.", + "\u043a\u043e\u0434\u0434\u043e\u043c.\u0442\u0435\u043b.", + "\u043a\u043e\u0434 \u0434\u043e\u043c. \u0442\u0435\u043b.", + "\u043a\u043e\u0434 \u0434\u043e\u043c.\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + "\u043a\u043e\u0434 \u0434\u043e\u043c. \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + "\u043a\u043e\u0434 \u0434\u043e\u043c\u0430\u0448\u043d\u044c\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + "\u0432\u0435\u0447\u0456\u0440\u043d\u0456\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + "\u0434\u043e\u043c.", + "\u0434\u043e\u043c.\u0442\u0435\u043b.", + "\u0434\u043e\u043c. \u0442\u0435\u043b.", + "\u0434\u043e\u043c.\u0442\u0435\u043b\u0435\u0444\u043e\u043d", + "\u0434\u043e\u043c. \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + "\u0434\u043e\u043c\u0430\u0448\u043d\u0456\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + "ak\u015fam alan kodu", + "ev alan kodu", + "ak\u015fam telefonu", + "telefon (ev)", + "ev telefonu", + "\u0e23\u0e2b\u0e31\u0e2a\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e1a\u0e49\u0e32\u0e19", + "\u0e23\u0e2b\u0e31\u0e2a\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27", + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27", + "\u0e23\u0e2b\u0e31\u0e2a\u0e1a\u0e49\u0e32\u0e19", + "\u0e1a\u0e49\u0e32\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48", + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e1a\u0e49\u0e32\u0e19", + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27", + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d", + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e1a\u0e49\u0e32\u0e19", + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e1a\u0e49\u0e32\u0e19", + "riktnummer kv\xe4llstid", + "riktnummer hem", + "telefon kv\xe4llstid", + "kv\xe4llsnummer", + "telefon hem", + "hemtelefon", + "tel\xe9fono noche", + "tel\xe9fono casa", + "tel\xe9fono de casa", + "dom\xe1ca predvo\u013eba", + "telef\xf3nna predvo\u013eba domov", + "predvo\u013eba domov", + "ve\u010dern\xfd telef\xf3n", + "\u010d\xedslo domov", + "telef\xf3n domov", + "dom\xe1ci telef\xf3n", + "\u041a\u043e\u0434 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u043e\u0433\u043e \u043d\u043e\u043c\u0435\u0440\u0430", + "\u0414\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440", + "\u0414\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430", + "\u0414\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u043d\u043e\u043c\u0435\u0440", + "\u0412\u0435\u0447\u0435\u0440\u043e\u043c", + "\u0412 \u0432\u0435\u0447\u0435\u0440\u043d\u0438\u0435 \u0447\u0430\u0441\u044b", + "\u0414\u043e\u043c\u0430\u0448\u043d\u0438\u0439", + "\u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + "prefix telefon sear\u0103", + "prefix telefon domiciliu", + "prefix telefon acas\u0103", + "telefon sear\u0103", + "telefon domiciliu", + "telefon acas\u0103", + "c\xf3digode\xe1reanoite", + "c\xf3digode\xe1rea noite", + "c\xf3digo de \xe1rea noite", + "c\xf3digode\xe1readecasa", + "c\xf3digode\xe1rea de casa", + "c\xf3digo de \xe1rea de casa", + "telefone \xe0 noite", + "telefonenoite", + "telefone de casa", + "telefonedecasa", + "c\xf3digo de \xe1rea (noturno)", + "c\xf3digo de \xe1rea (local)", + "telefone (noturno)", + "telefone (casa)", + "kveldsretningsnummer", + "retningsnummer, kveldstid", + "retningsnummer, kveld", + "retningsnummer, hjem", + "telefon, kveldstid", + "kveldstelefon", + "telefon, hjem", + "hjemmetelefon", + "\uc800\ub141\uc5f0\ub77d\ucc98\uc9c0\uc5ed\ubc88\ud638", + "\uc800\ub141\uc5f0\ub77d\ucc98 \uc9c0\uc5ed\ubc88\ud638", + "\uc800\ub141\uc5f0\ub77d\ucc98 \uc9c0\uc5ed \ubc88\ud638", + "\uc800\ub141 \uc5f0\ub77d\ucc98 \uc9c0\uc5ed\ubc88\ud638", + "\uc800\ub141 \uc5f0\ub77d\ucc98 \uc9c0\uc5ed \ubc88\ud638", + "\uc9d1\uc9c0\uc5ed\ubc88\ud638", + "\uc9d1 \uc9c0\uc5ed\ubc88\ud638", + "\uc9d1 \uc9c0\uc5ed \ubc88\ud638", + "\uc800\ub141 \uc2dc\uac04 \uc5f0\ub77d\ucc98", + "\uc800\ub141\uc2dc\uac04 \uc5f0\ub77d\ucc98", + "\uc800\ub141\uc2dc\uac04\uc5f0\ub77d\ucc98", + "\uc800\ub141 \uc5f0\ub77d\ucc98", + "\uc800\ub141\uc5f0\ub77d\ucc98", + "\uc9d1 \uc804\ud654", + "\uc9d1\uc804\ud654", + "\u81ea\u5b85\u96fb\u8a71\uff1a", + "\u81ea\u5b85\u96fb\u8a71", + "\u96fb\u8a71\uff08\u500b\u4eba\uff09", + "\u96fb\u8a71\uff08\u591c\u9593\uff09", + "\u96fb\u8a71\uff08\u81ea\u5b85\uff09", + "\u96fb\u8a71(\u500b\u4eba)", + "\u96fb\u8a71(\u591c\u9593)", + "\u96fb\u8a71(\u81ea\u5b85)", + "\u96fb\u8a71\u756a\u53f7\uff08\u500b\u4eba\uff09", + "\u96fb\u8a71\u756a\u53f7\uff08\u591c\u9593\uff09", + "\u96fb\u8a71\u756a\u53f7\uff08\u81ea\u5b85\uff09", + "\u96fb\u8a71\u756a\u53f7(\u500b\u4eba)", + "\u96fb\u8a71\u756a\u53f7(\u591c\u9593)", + "\u96fb\u8a71\u756a\u53f7(\u81ea\u5b85)", + "\u500b\u4eba\u96fb\u8a71\u756a\u53f7", + "\u591c\u9593\u96fb\u8a71\u756a\u53f7", + "\u81ea\u5b85\u96fb\u8a71\u756a\u53f7", + "\u81ea\u5b85", + "prefisso telefono abitazione", + "prefisso telefono di casa", + "prefisso ore serali", + "prefisso tel. privato", + "prefisso telefono casa", + "telefono ore serali", + "telefono abitazione", + "telefono privato", + "numero di telefono casa", + "telefono casa", + "ve\u010dernji telefon", + "ku\u0107ni telefon", + "\u05d1\u05d9\u05ea", + "\u05d8\u05dc\u05e4\u05d5\u05df \u05d1\u05d9\u05ea", + "Rufnummer abends", + "Rufnummer (privat)", + "Rufnummer privat", + "Telefon abends", + "Telefon (privat)", + "Telefon privat", + "num\xe9ro de t\xe9l\xe9phone domicile", + "t\xe9l\xe9phone (soir\xe9e)", + "t\xe9l\xe9phone de domicile", + "t\xe9l\xe9phone de r\xe9sidence", + "t\xe9l\xe9phone (le soir)", + "t\xe9l\xe9phone domicile", + "t\xe9l\xe9phone maison", + "t\xe9l\xe9phone priv\xe9", + "t\xe9l\xe9phone r\xe9sidentiel", + "suuntanumero iltaisin", + "suuntanumero koti", + "kodin suuntanumero", + "iltaisin", + "kotipuh.", + "kotinro", + "koti", + "kotinumero", + "kotipuhelin", + "\u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf \u03b5\u03ba\u03c4\u03cc\u03c2 \u03c9\u03c1\u03ce\u03bd \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2", + "\u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf \u03bf\u03b9\u03ba\u03af\u03b1\u03c2", + "netnummer 's avonds", + "netnummer thuis", + "netnummer priv\xe9", + "telefoonnnummer thuis", + "telefoon 's avonds", + "telefoonnummer priv\xe9", + "telefoon priv\xe9", + "telefoon thuis", + "omr\xe5denummer, aften", + "omr\xe5denummer, privat", + "telefon, aften", + "privat", + "hjemnummer", + "tel\xe8fono nit", + "tel\xe8fono casa", + "tel\xe8fon de casa", + "\u0643\u0648\u062f \u0627\u0644\u0645\u0646\u0637\u0642\u0629 \u0644\u0644\u0647\u0627\u062a\u0641 \u0641\u064a \u0627\u0644\u0645\u0633\u0627\u0621", + "\u0643\u0648\u062f \u0627\u0644\u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0633\u0643\u0646\u064a\u0629", + "\u0627\u0644\u0647\u0627\u062a\u0641 \u0641\u064a \u0627\u0644\u0645\u0633\u0627\u0621 ", + "\u0627\u0644\u0647\u0627\u062a\u0641 \u0641\u064a \u0627\u0644\u0645\u0633\u0627\u0621", + "\u0647\u0627\u062a\u0641 \u0627\u0644\u0645\u0646\u0632\u0644", + "eveningareacode", + "evening areacode", + "evening area code", + "homeareacode", + "home areacode", + "home area code", + "evening phone", + "eveningphone", + "home phone", + "homephone", + "\u767d\u5929\u96fb\u8a71", + "\u65e5\u9593\u96fb\u8a71", + "\u516c\u52d9\u96fb\u8a71", + "\u8fa6\u516c\u5ba4\u96fb\u8a71", + "\u5de5\u4f5c\u96fb\u8a71", + "\u5546\u7528\u96fb\u8a71", + "\u516c\u53f8\u96fb\u8a71", + "\u516c\u53f8\u7535\u8bdd\u533a\u53f7", + "\u767d\u5929\u7535\u8bdd\u533a\u53f7", + "\u5de5\u4f5c\u7535\u8bdd\u533a\u53f7", + "\u516c\u53f8\u7535\u8bdd", + "\u767d\u5929\u7535\u8bdd", + "\u5de5\u4f5c\u7535\u8bdd", + "\u043a\u043e\u0434 \u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + "\u043a\u043e\u0434 \u0440\u043e\u0431.", + "\u043a\u043e\u0434\u0440\u043e\u0431.\u0442\u0435\u043b.", + "\u043a\u043e\u0434 \u0440\u043e\u0431. \u0442\u0435\u043b.", + "\u043a\u043e\u0434 \u0440\u043e\u0431.\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + "\u043a\u043e\u0434 \u0440\u043e\u0431. \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + "\u043a\u043e\u0434 \u0440\u043e\u0431\u043e\u0447\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + "\u0434\u0435\u043d\u043d\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + "\u0440\u043e\u0431.", + "\u0440\u043e\u0431.\u0442\u0435\u043b.", + "\u0440\u043e\u0431. \u0442\u0435\u043b.", + "\u0440\u043e\u0431.\u0442\u0435\u043b\u0435\u0444\u043e\u043d", + "\u0440\u043e\u0431. \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + "\u0440\u043e\u0431\u043e\u0447\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + "i\u015f alan kodu", + "g\xfcnd\xfcz alan kodu", + "g\xfcnd\xfcz telefonu", + "telefon (i\u015f)", + "\u015firket telefonu", + "i\u015f telefonu", + "\u0e18\u0e38\u0e23\u0e01\u0e34\u0e08\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48", + "\u0e23\u0e2b\u0e31\u0e2a\u0e18\u0e38\u0e23\u0e01\u0e34\u0e08", + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e18\u0e38\u0e23\u0e01\u0e34\u0e08", + "\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e23\u0e2b\u0e31\u0e2a\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17", + "\u0e23\u0e2b\u0e31\u0e2a\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17", + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17", + "\u0e17\u0e35\u0e48\u0e35\u0e23\u0e2b\u0e31\u0e2a\u0e17\u0e33\u0e07\u0e32\u0e19", + "\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e23\u0e2b\u0e31\u0e2a", + "\u0e23\u0e2b\u0e31\u0e2a\u0e17\u0e33\u0e07\u0e32\u0e19", + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e07\u0e32\u0e19", + "\u0e23\u0e2b\u0e31\u0e2a\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19", + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19", + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e18\u0e38\u0e23\u0e01\u0e34\u0e08", + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e18\u0e38\u0e23\u0e01\u0e34\u0e08", + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17", + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17", + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19", + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e07\u0e32\u0e19", + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e07\u0e32\u0e19", + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e07\u0e32\u0e19", + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19", + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e17\u0e33\u0e07\u0e32\u0e19", + "riktnummer kontoret", + "riktnummer f\xf6retaget", + "riktnummer dagtid", + "riktnummer arbetet", + "telefon f\xf6retaget", + "f\xf6retagstelefon", + "telefon dagtid", + "dagstelefon", + "telefon kontoret", + "kontorstelefon", + "telefon arbetet", + "arbetstelefon", + "tel\xe9fono del trabajo", + "tel\xe9fono trabajo", + "tel\xe9fono d\xeda", + "predvo\u013eba spolo\u010dnosti", + "predvo\u013eba firmy", + "denn\xe1 predvo\u013eba", + "pracovn\xe1 predvo\u013eba", + "predvo\u013eba do pr\xe1ce", + "firemn\xe9 \u010d\xedslo", + "firemn\xfd telef\xf3n", + "denn\xe9 \u010d\xedslo", + "denn\xfd telef\xf3n", + "\u010d\xedslo do pr\xe1ce", + "telef\xf3n do pr\xe1ce", + "pracovn\xfd telef\xf3n", + "\u041a\u043e\u0434 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u043e\u0433\u043e \u043d\u043e\u043c\u0435\u0440\u0430", + "\u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440", + "\u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430", + "\u0414\u043d\u0435\u043c", + "\u0412 \u0434\u043d\u0435\u0432\u043d\u044b\u0435 \u0447\u0430\u0441\u044b", + "\u0421\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439", + "\u0421\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + "\u0420\u0430\u0431. \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + "\u0420\u0430\u0431.", + "\u0420\u0430\u0431\u043e\u0447\u0438\u0439", + "\u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + "prefix telefon zi", + "prefix telefon companie", + "prefix telefon lucru", + "prefix telefon birou", + "prefix telefon serviciu", + "telefon zi", + "telefon companie", + "telefon lucru", + "telefon birou", + "telefon serviciu", + "c\xf3digode\xe1reacomercial", + "c\xf3digode\xe1rea comercial", + "c\xf3digo de \xe1rea comercial", + "c\xf3digode\xe1readaempresa", + "c\xf3digode\xe1rea da empresa", + "c\xf3digo de \xe1rea da empresa", + "c\xf3digode\xe1readedia", + "c\xf3digode\xe1rea de dia", + "c\xf3digo de \xe1rea de dia", + "c\xf3digode\xe1readotrabalho", + "c\xf3digode\xe1rea do trabalho", + "c\xf3digo de \xe1rea do trabalho", + "telefone comercial", + "telefonecomercial", + "telefone da empresa", + "telefoneempresa", + "telefone durante o dia", + "telefone de dia", + "telefonedia", + "telefone do trabalho", + "telefonetrabalho", + "c\xf3digo de \xe1rea (empresa)", + "c\xf3digo de \xe1rea (diurno)", + "c\xf3digo de \xe1rea (trabalho)", + "telefone (empresa)", + "telefone (diurno)", + "telefone (trabalho)", + "retningsnummer, selskap", + "retningsnummer, bedrift", + "firmaretningsnummer", + "retningsnummer, firma", + "dagretningsnummer", + "retningsnummer, dag", + "retningsnummer, dagtid", + "jobbretningsnummer", + "retningsnummer, arbeid", + "retningsnummer, jobb", + "arbeidstelefon", + "jobbtelefon", + "telefon, jobb", + "telefon, arbeid", + "\uc5c5\ubb34\uc6a9\uc9c0\uc5ed\ubc88\ud638", + "\uc5c5\ubb34\uc6a9 \uc9c0\uc5ed\ubc88\ud638", + "\uc5c5\ubb34\uc6a9 \uc9c0\uc5ed \ubc88\ud638", + "\ud68c\uc0ac\uc9c0\uc5ed\ubc88\ud638", + "\ud68c\uc0ac \uc9c0\uc5ed\ubc88\ud638", + "\ud68c\uc0ac \uc9c0\uc5ed \ubc88\ud638", + "\ub0ae\uc2dc\uac04\uc5f0\ub77d\ucc98\uc9c0\uc5ed\ubc88\ud638", + "\ub0ae\uc2dc\uac04\uc5f0\ub77d\ucc98 \uc9c0\uc5ed\ubc88\ud638", + "\ub0ae\uc2dc\uac04 \uc5f0\ub77d\ucc98 \uc9c0\uc5ed \ubc88\ud638", + "\uc9c1\uc7a5\uc9c0\uc5ed\ubc88\ud638", + "\uc9d5\uc7a5 \uc9c0\uc5ed\ubc88\ud638", + "\uc9c1\uc7a5 \uc9c0\uc5ed \ubc88\ud638", + "\uc5c5\ubb34\uc6a9 \uc804\ud654", + "\uc5c5\ubb34\uc6a9\uc804\ud654", + "\ud68c\uc0ac \uc804\ud654", + "\ud68c\uc0ac\uc804\ud654", + "\ub0ae\uc2dc\uac04 \uc5f0\ub77d\ucc98", + "\ub0ae\uc2dc\uac04\uc5f0\ub77d\ucc98", + "\uc9c1\uc7a5 \uc804\ud654", + "\uc9c1\uc7a5\uc804\ud654", + "\u4f1a\u793e\u96fb\u8a71\uff1a", + "\u4f1a\u793e\u96fb\u8a71", + "\u96fb\u8a71(\u663c\u9593)", + "\u96fb\u8a71(\u65e5\u4e2d)", + "\u96fb\u8a71(\u8077\u5834)", + "\u96fb\u8a71(\u52e4\u52d9\u5148)", + "\u96fb\u8a71(\u4f1a\u793e)", + "\u96fb\u8a71\uff08\u663c\u9593\uff09", + "\u96fb\u8a71\uff08\u65e5\u4e2d\uff09", + "\u96fb\u8a71\uff08\u8077\u5834\uff09", + "\u96fb\u8a71\uff08\u52e4\u52d9\u5148\uff09", + "\u96fb\u8a71\uff08\u4f1a\u793e\uff09", + "\u96fb\u8a71\u756a\u53f7(\u663c\u9593)", + "\u96fb\u8a71\u756a\u53f7(\u65e5\u4e2d)", + "\u96fb\u8a71\u756a\u53f7(\u8077\u5834)", + "\u96fb\u8a71\u756a\u53f7(\u52e4\u52d9\u5148)", + "\u96fb\u8a71\u756a\u53f7(\u4f1a\u793e)", + "\u96fb\u8a71\u756a\u53f7\uff08\u663c\u9593\uff09", + "\u96fb\u8a71\u756a\u53f7\uff08\u65e5\u4e2d\uff09", + "\u96fb\u8a71\u756a\u53f7\uff08\u8077\u5834\uff09", + "\u96fb\u8a71\u756a\u53f7\uff08\u52e4\u52d9\u5148\uff09", + "\u96fb\u8a71\u756a\u53f7\uff08\u4f1a\u793e\uff09", + "\u663c\u9593\u96fb\u8a71\u756a\u53f7", + "\u65e5\u4e2d\u96fb\u8a71\u756a\u53f7", + "\u8077\u5834\u96fb\u8a71\u756a\u53f7", + "\u4f1a\u793e\u96fb\u8a71\u756a\u53f7", + "\u52e4\u52d9\u5148\u96fb\u8a71\u756a\u53f7", + "prefisso numero lavoro", + "prefisso telefono azienda", + "prefisso telefono ufficio", + "prefisso ufficio", + "prefisso telefono lavoro", + "prefisso lavoro", + "numero di tel. ufficio", + "telefono azienda", + "telefono ore ufficio", + "numero di telefono lavoro", + "tel. ufficio", + "telefono ufficio", + "tel. lavoro", + "telefono lavoro", + "telefon tvrtke", + "slu\u017ebeni telefon", + "dnevni telefon", + "poslovni telefon", + "\u05de\u05e9\u05e8\u05d3", + "\u05e2\u05d1\u05d5\u05d3\u05d4", + "\u05d8\u05dc\u05e4\u05d5\u05df \u05d1\u05e2\u05d1\u05d5\u05d3\u05d4", + "Rufnummer dienstlich", + "Rufnummer tags\xfcber", + "Rufnummer (gesch\xe4ftlich)", + "Rufnummer gesch\xe4ftlich", + "Telefon dienstlich", + "Telefon tags\xfcber", + "Telefon (gesch\xe4ftlich)", + "Telefon gesch\xe4ftlich", + "t\xe9l\xe9phone (soci\xe9t\xe9)", + "t\xe9l\xe9phone (entreprise)", + "t\xe9l\xe9phone (jour)", + "t\xe9l\xe9phone (journ\xe9e)", + "t\xe9l\xe9phone de travail", + "t\xe9l\xe9phone bureau", + "t\xe9l\xe9phone professionnel", + "suuntanumero yritys", + "suuntanumero ty\xf6", + "ty\xf6numeron suuntanumero", + "ty\xf6puhelimen suuntanumero", + "yritysnumero", + "yrityksen numero", + "p\xe4ivisin", + "puhelin p\xe4iv\xe4saikaan", + "ty\xf6numero", + "ty\xf6puhelin", + "\u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf \u03ba\u03b1\u03c4\u03ac \u03c4\u03b9\u03c2 \u03c0\u03c1\u03c9\u03ca\u03bd\u03ad\u03c2 \u03ce\u03c1\u03b5\u03c2", + "\u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf \u03ba\u03b1\u03c4\u03ac \u03c4\u03b9\u03c2 \u03ce\u03c1\u03b5\u03c2 \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2", + "\u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2", + "netnummer zakelijk", + "netnummer bedrijf", + "netnummer overdag", + "netnummer werk", + "telefoonnummer zakelijk", + "telefoon zakelijk", + "telefoonnummer bedrijf", + "telefoon bedrijf", + "telefoonnummer overdag", + "telefoon overdag", + "telefoonnummer werk", + "telefoon werk", + "omr\xe5denummer, selskab", + "omr\xe5denummer, firma", + "omr\xe5denummer, dag", + "omr\xe5denummer om dagen", + "omr\xe5denummer, arbejde", + "arbejdstelefon", + "telefon, firma", + "firmatelfon", + "telefon, dagtid", + "telefon, dag", + "dagtelefon", + "telefon, arbejde", + "arbejdsnummer", + "tel\xe8fon de la feina", + "tel\xe8fon feina", + "tel\xe8fon dia", + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0639\u0645\u0644", + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0634\u0631\u0643\u0629", + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0647\u0627\u062a\u0641 \u0641\u064a \u0627\u0644\u0635\u0628\u0627\u062d", + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u0647\u0627\u062a\u0641 \u0627\u0644\u0639\u0645\u0644", + "\u0647\u0627\u062a\u0641 \u0627\u0644\u0634\u0631\u0643\u0629", + "\u0627\u0644\u0647\u0627\u062a\u0641 \u0641\u064a \u0627\u0644\u0635\u0628\u0627\u062d", + "\u0647\u0627\u062a\u0641 \u0627\u0644\u0639\u0645\u0644", + "businessareacode", + "business areacode", + "business area code", + "companyareacode", + "company areacode", + "company area code", + "dayareacode", + "day areacode", + "day area code", + "workareacode", + "work areacode", + "work area code", + "business phone", + "businessphone", + "company phone", + "companyphone", + "daytime telephone", + "daytime phone", + "day phone", + "dayphone", + "work phone", + "workphone", + "\u624b\u6301\u96fb\u8a71", + "\u624b\u63d0\u96fb\u8a71", + "\u624b\u6a5f\u96fb\u8a71", + "\u624b\u6a5f", + "\u5927\u54e5\u5927\u96fb\u8a71", + "\u5927\u54e5\u5927", + "\u884c\u52d5\u96fb\u8a71", + "\u884c\u52d5", + "\u624b\u673a\u533a\u53f7", + "\u79fb\u52a8\u7535\u8bdd\u533a\u53f7", + "\u624b\u673a", + "\u79fb\u52a8\u7535\u8bdd", + "\u043a\u043e\u0434 \u0441\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + "\u043a\u043e\u0434 \u043c\u043e\u0431.", + "\u043a\u043e\u0434\u043c\u043e\u0431.\u0442\u0435\u043b.", + "\u043a\u043e\u0434 \u043c\u043e\u0431. \u0442\u0435\u043b.", + "\u043a\u043e\u0434 \u043c\u043e\u0431.\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + "\u043a\u043e\u0434 \u043c\u043e\u0431. \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + "\u043a\u043e\u0434 \u043c\u043e\u0431\u0456\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + "\u0441\u043e\u0442\u043e\u0432\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + "\u043c\u043e\u0431.", + "\u043c\u043e\u0431.\u0442\u0435\u043b.", + "\u043c\u043e\u0431. \u0442\u0435\u043b.", + "\u043c\u043e\u0431.\u0442\u0435\u043b\u0435\u0444\u043e\u043d", + "\u043c\u043e\u0431. \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + "\u043c\u043e\u0431\u0456\u043b\u044c\u043d\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + "cep numaras\u0131", + "cep", + "mobil telefon", + "telefon (cep)", + "cep telefonu", + "\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e23\u0e2b\u0e31\u0e2a\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d", + "\u0e23\u0e2b\u0e31\u0e2a\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27", + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27", + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d", + "\u0e23\u0e2b\u0e31\u0e2a\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d", + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d", + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27", + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d", + "\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d", + "riktnummer mobiltelefon", + "riktnummer mobil", + "mobiltel", + "m\xf3vil", + "tel\xe9fono m\xf3vil", + "mobiln\xe1 predvo\u013eba", + "predvo\u013eba mobiln\xe9ho telef\xf3nu", + "mobiln\xfd telef\xf3n", + "\u041c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440", + "\u041c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430", + "\u041d\u043e\u043c\u0435\u0440 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043e\u0442\u043e\u0432\u043e\u0439 \u0441\u0432\u044f\u0437\u0438", + "\u041d\u043e\u043c\u0435\u0440 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438", + "\u041a\u043e\u0434 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043e\u0442\u043e\u0432\u043e\u0439 \u0441\u0432\u044f\u0437\u0438", + "\u041a\u043e\u0434 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438", + "\u0422\u0435\u043b\u0435\u0444\u043e\u043d \u0441\u043e\u0442\u043e\u0432\u043e\u0439 \u0441\u0432\u044f\u0437\u0438", + "\u0422\u0435\u043b\u0435\u0444\u043e\u043d \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438", + "\u0421\u043e\u0442\u043e\u0432\u044b\u0439", + "\u0421\u043e\u0442\u043e\u0432\u044b\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + "\u041c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439", + "\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + "prefix mobil", + "celular", + "telefon celular", + "telefon mobil", + "c\xf3digode\xe1readocelular", + "c\xf3digode\xe1rea do celular", + "c\xf3digo de \xe1rea do celular", + "c\xf3digode\xe1readotelem\xf3vel", + "c\xf3digode\xe1rea do telem\xf3vel", + "c\xf3digo de \xe1rea do telem\xf3vel", + "telefone celular", + "telefonecelular", + "telem\xf3vel", + "c\xf3digo de \xe1rea (celular)", + "telefone (celular)", + "mobilretningsnummer", + "retningsnummer, mobil", + "retningsnummer, mobiltelefon", + "mobil", + "\ud734\ub300\ud3f0\uc9c0\uc5ed\ubc88\ud638", + "\ud734\ub300\ud3f0 \uc9c0\uc5ed\ubc88\ud638", + "\ud734\ub300\ud3f0 \uc9c0\uc5ed \ubc88\ud638", + "\ud734\ub300\uc804\ud654\uc9c0\uc5ed\ubc88\ud638", + "\ud734\ub300 \uc804\ud654 \uc9c0\uc5ed \ubc88\ud638", + "\ud734\ub300 \uc804\ud654 \uc9c0\uc5ed\ubc88\ud638", + "\ud734\ub300\uc804\ud654 \uc9c0\uc5ed \ubc88\ud638", + "\ud734\ub300\uc804\ud654 \uc9c0\uc5ed\ubc88\ud638", + "\ud734\ub300\ud3f0", + "\ud734\ub300 \uc804\ud654", + "\ud734\ub300\uc804\ud654", + "\u30b1\u30fc\u30bf\u30a4\u756a\u53f7", + "\u30b1\u30fc\u30bf\u30a4\u96fb\u8a71\u756a\u53f7", + "\u30b1\u30fc\u30bf\u30a4\u96fb\u8a71", + "\u30b1\u30fc\u30bf\u30a4", + "\u643a\u5e2f\u756a\u53f7", + "\u96fb\u8a71\u756a\u53f7(\u643a\u5e2f)", + "\u96fb\u8a71\u756a\u53f7\uff08\u643a\u5e2f\uff09", + "\u643a\u5e2f\u96fb\u8a71\u756a\u53f7", + "\u643a\u5e2f\u96fb\u8a71", + "\u643a\u5e2f", + "prefisso cell.", + "telefono cell.", + "prefisso telefono cellulare", + "prefisso cellulare", + "cellulare", + "telefono cellulare", + "mobitel", + "mobilni telefon", + "\u05e1\u05dc\u05d5\u05dc\u05e8\u05d9", + "\u05e0\u05d9\u05d9\u05d3", + "Vorwahl (Netzbetreiber)", + "Vorwahl Netzbetreiber", + "Netzbetreiber-Vorwahl", + "Vorwahl (Mobilfunk)", + "Vorwahl Mobilfunk", + "Mobilfunk-Vorwahl", + "Mobiltelefon-Vorwahl", + "Vorwahl (Mobil)", + "Vorwahl (Mobiltelefon)", + "Vorwahl Mobil", + "Vorwahl Mobiltelefon", + "Handy", + "num\xe9ro de mobile", + "t\xe9l\xe9phone cellulaire portable", + "t\xe9l\xe9phone cellulaire portatif", + "cell.", + "t\xe9l. cell.", + "cellulaire", + "t\xe9l\xe9phone mobile", + "t\xe9l\xe9phone cellulaire", + "t\xe9l\xe9phone portable", + "operaattoritunnus", + "matkapuhelimen operaattoritunnus", + "mobiili", + "matkap.", + "matkapuhelin", + "\u03ba\u03b9\u03bd\u03b7\u03c4\u03cc", + "\u03ba\u03b9\u03bd\u03b7\u03c4\u03cc \u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf", + "netnummer GSM", + "netnummer mobiele telefoon", + "netnummer mobiel", + "GSM", + "mobiele telefoon", + "mobiel", + "omr\xe5denummer, mobil", + "telefon, mobil", + "mobiltelefon", + "m\xf2bil", + "tel\xe8fon m\xf2bil", + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0647\u0627\u062a\u0641 \u0627\u0644\u062e\u0644\u0648\u064a", + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0647\u0627\u062a\u0641 \u0627\u0644\u0645\u062d\u0645\u0648\u0644", + "\u0627\u0644\u0647\u0627\u062a\u0641 \u0627\u0644\u062e\u0644\u0648\u064a", + "\u0627\u0644\u0647\u0627\u062a\u0641 \u0627\u0644\u0645\u062d\u0645\u0648\u0644", + "cellareacode", + "cell areacode", + "cell area code", + "mobileareacode", + "mobile areacode", + "mobile area code", + "cell phone", + "cellphone", + "mobile number", + "mobilenumber", + "mobile phone", + "mobilephone", + "\u547c\u53eb\u5668\u865f\u78bc", + "\u50b3\u547c\u6a5f\u865f\u78bc", + "\u547c\u53eb\u5668", + "\u50b3\u547c\u6a5f", + "\u4f20\u547c\u673a\u533a\u53f7", + "\u4f20\u547c\u673a", + "\u043a\u043e\u0434\u043f\u0435\u0439\u0434\u0436\u0435\u0440\u0430", + "\u043a\u043e\u0434 \u043f\u0435\u0439\u0434\u0436\u0435\u0440\u0430", + "\u043f\u0435\u0439\u0434\u0436\u0435\u0440", + "\xe7a\u011fr\u0131 cihaz\u0131 numaras\u0131", + "\xe7a\u011fr\u0131 cihaz\u0131", + "\u0e23\u0e2b\u0e31\u0e2a\u0e40\u0e1e\u0e08\u0e40\u0e08\u0e2d\u0e23\u0e4c", + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e40\u0e1e\u0e08\u0e40\u0e08\u0e2d\u0e23\u0e4c", + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e27\u0e34\u0e17\u0e22\u0e38\u0e15\u0e34\u0e14\u0e15\u0e32\u0e21\u0e15\u0e31\u0e27", + "\u0e27\u0e34\u0e17\u0e22\u0e38\u0e15\u0e34\u0e14\u0e15\u0e32\u0e21\u0e15\u0e31\u0e27", + "riktnummer persons\xf6k", + "riktnummer persons\xf6kare", + "persons\xf6k", + "persons\xf6kare", + "buscapersonas", + "busca", + "predvo\u013eba pagera", + "\u041d\u043e\u043c\u0435\u0440 \u043f\u0435\u0439\u0434\u0436\u0435\u0440\u0430", + "prefix pager", + "num\u0103r pager", + "telefon pager", + "c\xf3digode\xe1readopager", + "c\xf3digode\xe1rea do pager", + "c\xf3digo de \xe1rea do pager", + "telefone pager", + "telefonepager", + "c\xf3digo de \xe1rea (pager)", + "telefone (pager)", + "retningsnr., persons\xf8ker", + "retningsnummer, persons\xf8ker", + "persons\xf8kernr.", + "persons\xf8kernummer", + "\ud638\ucd9c\uae30\uc9c0\uc5ed\ubc88\ud638", + "\ud638\ucd9c\uae30 \uc9c0\uc5ed\ubc88\ud638", + "\ud638\ucd9c\uae30 \uc9c0\uc5ed \ubc88\ud638", + "\ud638\ucd9c \ubc88\ud638", + "\ud638\ucd9c\uae30 \ubc88\ud638", + "\ud638\ucd9c\uae30", + "\u30dd\u30b1\u30d9\u30eb\u96fb\u8a71\u756a\u53f7", + "\u30dd\u30b1\u30d9\u30eb\u756a\u53f7", + "\u30dd\u30b1\u30d9\u30eb", + "\u96fb\u8a71(\u30dd\u30b1\u30d9\u30eb)", + "\u96fb\u8a71(\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb)", + "\u96fb\u8a71\uff08\u30dd\u30b1\u30d9\u30eb\uff09", + "\u96fb\u8a71\uff08\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb\uff09", + "\u96fb\u8a71\u756a\u53f7(\u30dd\u30b1\u30d9\u30eb)", + "\u96fb\u8a71\u756a\u53f7(\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb)", + "\u96fb\u8a71\u756a\u53f7\uff08\u30dd\u30b1\u30d9\u30eb\uff09", + "\u96fb\u8a71\u756a\u53f7\uff08\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb\uff09", + "\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb\u96fb\u8a71\u756a\u53f7", + "\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb\u756a\u53f7", + "\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb", + "pref. cercapersone", + "prefisso cercapers.", + "prefisso cercapersone", + "cercapers.", + "cercapersone", + "dojavnik", + "pager", + "\u05d6\u05d9\u05de\u05d5\u05e0\u05d9\u05ea", + "Pager-Vorwahl", + "Vorwahl (Pager)", + "Vorwahl Pager", + "num\xe9ro de t\xe9l\xe9avertisseur", + "NDT", + "bipeur", + "pageur", + "bellboy", + "pagette", + "t\xe9l\xe9av.", + "s\xe9maphone", + "messageur", + "radiomessageur", + "r\xe9cepteur de radiomessagerie", + "t\xe9l\xe9avertisseur", + "hakulaitenro", + "hakulaitteen numero", + "hakulaite", + "\u03b2\u03bf\u03bc\u03b2\u03b7\u03c4\u03ae\u03c2", + "netnummer semafoon", + "semafoon", + "omr\xe5denummer til persons\xf8ger", + "omr\xe5denummer, persons\xf8ger", + "persons\xf8ger nr.", + "persons\xf8ger", + "cercapersones", + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u062c\u0647\u0627\u0632 \u0627\u0644\u0646\u062f\u0627\u0621", + "\u0647\u0627\u062a\u0641 \u0646\u062f\u0627\u0621", + "pagerareacode", + "pager areacode", + "pager area code", + "pager phone", + "pagerphone", + "\u5340\u78bc", + "\u5340\u57df\u78bc", + "\u5340\u57df\u865f\u78bc", + "\u533a\u53f7", + "\u043a\u043e\u0434\u0440\u0435\u0433\u0456\u043e\u043d\u0443", + "\u043a\u043e\u0434\u043e\u0431\u043b\u0430\u0441\u0442\u0456", + "\u043a\u043e\u0434 \u0440\u0435\u0433\u0456\u043e\u043d\u0443", + "\u043a\u043e\u0434 \u043e\u0431\u043b\u0430\u0441\u0442\u0456", + "alan kodu", + "\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e23\u0e2b\u0e31\u0e2a", + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48", + "riktnr", + "riktnummer", + "prefijo", + "telef\xf3nna predvo\u013eba", + "predvo\u013eba", + "\u041a\u043e\u0434 \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430", + "\u041a\u043e\u0434 \u043a\u0440\u0430\u044f", + "\u041a\u043e\u0434 \u0440\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438", + "\u041a\u043e\u0434 \u043e\u0431\u043b\u0430\u0441\u0442\u0438", + "\u041a\u043e\u0434 \u0433\u043e\u0440\u043e\u0434\u0430", + "prefix zonal", + "c\xf3digode\xe1rea", + "c\xf3digo de \xe1rea", + "retningsnr.", + "retningsnummer", + "\uc9c0\uc5ed\ubc88\ud638", + "\uc9c0\uc5ed \ubc88\ud638", + "\u30a8\u30ea\u30a2\u30b3\u30fc\u30c9", + "\u5e02\u5916\u5c40\u756a", + "prefisso locale", + "prefisso", + "pozivni broj", + "\u05e7\u05d9\u05d3\u05d5\u05de\u05ea", + "Vorwahlnummer", + "Vorwahl", + "ind. r\xe9g.", + "ir", + "indicatif", + "code r\xe9gional", + "indicatif t\xe9l\xe9phonique", + "indicatif de zone", + "indicatif r\xe9gional", + "suuntanro", + "suuntanumero", + "\u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae\u03c2", + "netnummer", + "omdr\xe5denr.", + "omr\xe5denummer", + "prefix", + "\u0643\u0648\u062f \u0627\u0644\u0645\u0646\u0637\u0642\u0629", + "areacode", + "area code", + "\u50b3\u771f\u865f\u78bc", + "\u50b3\u771f", + "\u4f20\u771f", + "\u0444\u0430\u043a\u0441", + "faks numaras\u0131", + "\u0e42\u0e17\u0e23\u0e2a\u0e32\u0e23", + "\u0422\u0435\u043b\u0435\u0444\u0430\u043a\u0441", + "\u041d\u043e\u043c\u0435\u0440 \u0444\u0430\u043a\u0441\u0430", + "\ud329\uc2a4", + "\u96fb\u8a71\u756a\u53f7(FAX)", + "\u96fb\u8a71\u756a\u53f7(\u30d5\u30a1\u30af\u30b7\u30df\u30ea)", + "\u96fb\u8a71\u756a\u53f7(\u30d5\u30a1\u30c3\u30af\u30b9)", + "\u96fb\u8a71\u756a\u53f7(\u30d5\u30a1\u30af\u30b9)", + "\u96fb\u8a71\u756a\u53f7\uff08FAX\uff09", + "\u96fb\u8a71\u756a\u53f7\uff08\u30d5\u30a1\u30af\u30b7\u30df\u30ea\uff09", + "\u96fb\u8a71\u756a\u53f7\uff08\u30d5\u30a1\u30c3\u30af\u30b9\uff09", + "\u96fb\u8a71\u756a\u53f7\uff08\u30d5\u30a1\u30af\u30b9\uff09", + "FAX\u756a\u53f7", + "\u30d5\u30a1\u30af\u30b7\u30df\u30ea\u756a\u53f7", + "\u30d5\u30a1\u30c3\u30af\u30b9\u756a\u53f7", + "\u30d5\u30a1\u30af\u30b9\u756a\u53f7", + "\u30d5\u30a1\u30af\u30b7\u30df\u30ea", + "\u30d5\u30a1\u30c3\u30af\u30b9", + "\u30d5\u30a1\u30af\u30b9", + "faks", + "\u05e4\u05e7\u05e1", + "Telefax", + "t\xe9l\xe9copieur", + "t\xe9l\xe9c.", + "t\xe9l\xe9copie", + "faksi", + "\u03c6\u03b1\u03be", + "\u0627\u0644\u0641\u0627\u0643\u0633", + "fax", + "\u6a5f\u95dc", + "\u6a5f\u69cb", + "\u7d44\u7e54\u2215\u6a5f\u69cb", + "\u5355\u4f4d\u540d\u79f0", + "\u5355\u4f4d", + "\u516c\u53f8\u540d\u7a31", + "\u516c\u53f8", + "\u7ec4\u7ec7", + "\u673a\u6784", + "\u673a\u6784/\u7ec4\u7ec7", + "\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0430", + "\u043e\u0440\u0433\u0430\u043d\u0456\u0437\u0430\u0446\u0456\u044f", + "\u043a\u043e\u043c\u043f\u0430\u043d\u0456\u044f", + "organizasyon", + "\u015firket", + "kurulu\u015f", + "kurum", + "\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17", + "\u0e2d\u0e07\u0e04\u0e4c\u0e01\u0e23", + "kontor", + "bolag", + "f\xf6retag", + "organizaci\xf3n", + "firmenname", + "firma", + "spolo\u010dnos\u0165", + "organiz\xe1cia", + "\u0424\u0438\u0440\u043c\u0430", + "\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f", + "\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f", + "\u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435", + "organiza\u021bie", + "companie", + "organiza\xe7\xe3o", + "selskap", + "organisasjon", + "\uc18c\uc18d", + "\ud68c\uc0ac", + "\uc870\uc9c1", + "\u6240\u5c5e\u7d44\u7e54\u540d", + "\u6240\u5c5e\u7d44\u7e54", + "\u52e4\u52d9\u5148\u4f1a\u793e\u540d", + "\u52e4\u52d9\u5148\u4f1a\u793e", + "\u52e4\u52d9\u5148", + "\u7d44\u7e54\u540d", + "\u4f1a\u793e\u540d", + "\u8077\u5834", + "\u7d44\u7e54", + "\u4f1a\u793e", + "\u6240\u5c5e", + "azienda", + "societ\xe0", + "organizzazione", + "tvrtka", + "organizacija", + "\u05d7\u05d1\u05e8\u05d4", + "\u05d0\u05e8\u05d2\u05d5\u05df", + "corporation", + "compagnie", + "soci\xe9t\xe9", + "entreprise", + "organisme", + "yritys", + "organisaatio", + "\u03b5\u03c4\u03b1\u03b9\u03c1\u03b5\u03af\u03b1", + "\u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03cc\u03c2", + "bedrijf", + "organisatie", + "selskak", + "organisation", + "companyia", + "organitzaci\xf3", + "empresa", + "\u0627\u0644\u0634\u0631\u0643\u0629", + "\u0627\u0644\u0645\u0624\u0633\u0633\u0629", + "business", + "company", + "organization", + "\u9a8c \u8bc1 \u7801", + "\u9a8c\u8bc1\u7801", + "verification code", + "\u8eab\u4efd\u8bc1", + "nick", + "aim", + "icq", + "jabber", + "msn", + "qq", + "skype", + "\u4e2a\u4eba\u7f51\u9875", + "\u4e2a\u4eba\u7f51\u7ad9", + "\u4e2a\u4eba\u4e3b\u9875", + "homepage", + ]), + new FormMetadataFieldPatternMatcher([ + "\u96fb\u8a71\u865f\u78bc", + "\u9023\u7d61\u96fb\u8a71", + "\u806f\u7d61\u96fb\u8a71", + "\u7535\u8bdd\u53f7\u7801", + "\u7535\u8bdd", + "\u0442\u0435\u043b", + "\u0442\u0435\u043b.", + "\u0442\u0435\u043b\u0435\u0444\u043e\u043d", + "telefon no", + "telefon numaras\u0131", + "\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e42\u0e17\u0e23\u0e2f", + "\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c", + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c", + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c", + "nummer", + "n\xfamero de tel\xe9fono", + "tel\xe9fono", + "tel. \u010d\xedslo", + "telef\xf3nne \u010d\xedslo", + "telef\xf3n", + "\u0422\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440", + "\u041d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430", + "num\u0103r de telefon", + "num\u0103r telefon", + "n\xfamero de telefone", + "telefone", + "\uc5f0\ub77d \ubc88\ud638", + "\uc804\ud654 \ubc88\ud638", + "\uc804\ud654\ubc88\ud638", + "\uc804\ud654", + "tel", + "\u96fb\u8a71\u756a\u53f7(\u56fa\u5b9a)", + "\u96fb\u8a71\u756a\u53f7\uff08\u56fa\u5b9a\uff09", + "\u56fa\u5b9a\u96fb\u8a71\u756a\u53f7", + "\u56fa\u5b9a\u96fb\u8a71", + "\u96fb\u8a71\u756a\u53f7\u203b", + "\u96fb\u8a71\u756a\u53f7", + "\u96fb\u8a71", + "numero di telefono", + "tel.", + "numero telefono", + "telefono", + "telefonski broj", + "broj telefona", + "\u05d8\u05dc\u05e4\u05d5\u05df", + "Fon", + "num\xe9ro de t\xe9l.", + "t\xe9l.", + "num\xe9ro de t\xe9l\xe9phone", + "t\xe9l\xe9phone", + "puh.num.", + "puhelinnro", + "puhelinnumero", + "puhelin", + "\u03b1\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03c4\u03b7\u03bb\u03b5\u03c6\u03ce\u03bd\u03bf\u03c5", + "\u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf", + "telefon", + "telefonnr.", + "telefonnummer", + "tlf.", + "n\xfamero de tel\xe8fon", + "tel\xe8fon", + "\u0627\u0644\u062a\u0644\u064a\u0641\u0648\u0646", + "\u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062a\u0641", + "\u0627\u0644\u0647\u0627\u062a\u0641", + "exchange", + "telephone", + "phone number", + "phonenumber", + "phone", + ]), + new FormMetadataFieldPatternMatcher([ + "\u8054\u7cfb\u4eba", + "\u771f\u5be6\u59d3\u540d", + "\u540d\u7a31", + "ad\u0131", + "isim", + "namn", + "meno", + "nume", + "imi\u0119 i nazwisko", + "\u540d\u5b57", + "ime", + "\u05e9\u05dd", + "nimi", + "naam", + "navn", + "\u0627\u0644\u0627\u0633\u0645", + "name", + ]), + new FormMetadataFieldPatternMatcher([ + "\u901a\u8a0a\u5730\u5740", + "\u806f\u7d61\u5730\u5740", + "\u9023\u7d61\u5730\u5740", + "\u4f4f\u5740", + "\u0430\u0434\u0440\u0435\u0441\u0430", + "adresi", + "\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48", + "adress", + "direcci\xf3n", + "\u0410\u0434\u0440\u0435\u0441", + "adres\u0103", + "endere\xe7o", + "\uc8fc\uc18c", + "\u30a2\u30c9\u30ec\u30b9", + "\u3054\u4f4f\u6240", + "\u4f4f\u6240", + "indirizzo", + "adresa", + "\u05db\u05ea\u05d5\u05d1\u05ea", + "addresse", + "osoite", + "\u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7", + "adres", + "adresse", + "adre\xe7a", + "\u0627\u0644\u0639\u0646\u0648\u0627\u0646", + "address", + ]), + ]; +} +function newEmailFieldLabelPatternMatchers() { + return [ + new FormMetadataFieldPatternMatcher([ + "email", + "e mail", + "emailAddr", + "emailAddress", + "e-mail", + "\u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a", + "correu electr\xf2nic", + "adre\xe7a electr\xf2nica", + "e-post", + "e-postadr", + "e-postadresse", + "s\xe4hk\xf6posti", + "s-posti", + "s\xe4hk\xf6postiosoite", + "courriel", + "messagerie \xe9lectronique", + "adresse de messagerie", + "adresse \xe9lectronique", + "courrier \xe9lectronique", + "adresse de courriel", + "adresse de courrier \xe9lectronique", + "adresse courriel", + "adresse e-mail", + "adr\xe9lec", + "adresse Internet", + "c. \xe9lec.", + "c\xe9", + "m\xe9l.", + "adel", + "E-Mail Adresse", + "E-Mail-Adresse", + "\u05d3\u05d5\u05d0\u05f4\u05dc", + "\u05de\u05d9\u05d9\u05dc", + "e-mail adresa", + "adresa e-po\u0161te", + "e-po\u0161ta", + "ind. e-mail", + "indirizzo e-mail", + "indirizzo di posta elettronica", + "posta elettronica", + "ind. posta elettronica", + "\u30e1\u30fc\u30eb", + "\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9", + "Email\u30a2\u30c9\u30ec\u30b9", + "Email \u30a2\u30c9\u30ec\u30b9", + "\u96fb\u5b50\u30e1\u30fc\u30eb", + "E\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9", + "\u30e1\u30a2\u30c9", + "\u30e1\u30eb\u30a2\u30c9", + "\uc774\uba54\uc77c", + "\uc774\uba54\uc77c \uc8fc\uc18c", + "\uc774\uba54\uc77c\uc8fc\uc18c", + "email \uc8fc\uc18c", + "email\uc8fc\uc18c", + "e-mail \uc8fc\uc18c", + "e-mail\uc8fc\uc18c", + "epost", + "mail", + "adres\u0103email", + "\u0410\u0434\u0440\u0435\u0441 \u044d\u043b. \u043f\u043e\u0447\u0442\u044b", + "\u0410\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b", + "\u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441", + "\u0410\u0434\u0440\u0435\u0441 e-mail", + "\u0410\u0434\u0440\u0435\u0441 email", + "emailAdresa", + "emailAdr", + "correo electr\xf3nico", + "e-postadress", + "epostadress", + "emejl", + "mejl", + "mejladress", + "\u0e2d\u0e35\u0e40\u0e21\u0e25", + "\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48", + "\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25", + "\u0e2d\u0e35-\u0e40\u0e21\u0e25", + "eposta", + "e-posta", + "e-posta adresi", + "eposta adresi", + "\u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430 \u043f\u043e\u0448\u0442\u0430", + "\u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u043f\u043e\u0448\u0442\u0430", + "\u0435\u043b.\u043f\u043e\u0448\u0442\u0430", + "\u0435\u043b. \u043f\u043e\u0448\u0442\u0430", + "\u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0430", + "\u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u0430\u0434\u0440\u0435\u0441\u0430", + "\u0435\u043b.\u0430\u0434\u0440\u0435\u0441\u0430", + "\u0435\u043b. \u0430\u0434\u0440\u0435\u0441\u0430", + "\u7535\u5b50\u90ae\u4ef6", + "\u7535\u5b50\u90ae\u4ef6\u5730\u5740", + "\u96fb\u5b50\u90f5\u4ef6", + "\u96fb\u5b50\u90f5\u4ef6\u4f4d\u5740", + "\u96fb\u5b50\u90f5\u4ef6\u5730\u5740", + "\u96fb\u5b50\u90f5\u4ef6\u4fe1\u7bb1", + "\u96fb\u5b50\u4fe1\u7bb1", + "\u96fb\u5b50\u90f5\u7bb1", + "\u96fb\u90f5", + ]), + ]; +} +class ValueSpecifier { + constructor(e, a, n, r, i, p, t) { + ((this.property = e), + (this.component = a), + (this.label = n), + (this.category = r), + (this.parentProperty = i), + (this.classification = p), + (this.classificationHint = t)); + } +} +class MapEntry { + constructor(e, a, n) { + ((this.keyLength = e), (this.key = a), (this.valueSpecifier = n)); + } +} +var valueSpecifiers = [ + new ValueSpecifier( + "FullNameComposite", + null, + null, + "FullNameComposite", + null, + "name", + null, + ), + new ValueSpecifier( + "First", + null, + null, + "First", + "FullNameComposite", + "given-name", + null, + ), + new ValueSpecifier( + "Middle", + null, + null, + "Middle", + "FullNameComposite", + "additional-name", + null, + ), + new ValueSpecifier( + "Last", + null, + null, + "Last", + "FullNameComposite", + "family-name", + null, + ), + new ValueSpecifier("Birthday", null, null, "Birthday", null, "bday", null), + new ValueSpecifier( + "JobTitle", + null, + null, + "JobTitle", + null, + "organization-title", + null, + ), + new ValueSpecifier("Email", null, null, "Email", null, "email", null), + new ValueSpecifier( + "Address", + "Street", + null, + "AddressStreet", + null, + "street-address", + null, + ), + new ValueSpecifier( + "Address", + "City", + null, + "AddressCity", + null, + "address-level2", + null, + ), + new ValueSpecifier( + "Address", + "State", + null, + "AddressState", + null, + "address-level1", + null, + ), + new ValueSpecifier( + "Address", + "ZIP", + null, + "AddressZIP", + null, + "postal-code", + null, + ), + new ValueSpecifier( + "Address", + "Country", + null, + "AddressCountry", + null, + "country", + null, + ), + new ValueSpecifier( + "Phone", + null, + null, + "Phone", + null, + "tel-area-code", + null, + ), + new ValueSpecifier("Phone", null, null, "Phone", null, "tel", null), + new ValueSpecifier( + "Organization", + null, + null, + "Organization", + null, + "organization", + null, + ), + new ValueSpecifier( + "URLs", + null, + "_$!!$_", + "URLs_$!!$_", + null, + "url", + null, + ), + new ValueSpecifier( + "Phone", + null, + "_$!!$_", + "Phone_$!!$_", + null, + "tel", + "home", + ), + new ValueSpecifier( + "Phone", + null, + "_$!!$_", + "Phone_$!!$_", + null, + "tel", + "work", + ), + new ValueSpecifier( + "Phone", + null, + "_$!!$_", + "Phone_$!!$_", + null, + "tel", + "mobile", + ), + new ValueSpecifier( + "Phone", + null, + "_$!!$_", + "Phone_$!!$_", + null, + "tel", + "pager", + ), + new ValueSpecifier("Phone", null, null, "Phone", null, "tel", "fax"), + new ValueSpecifier("", null, null, "", null, null, null), + new ValueSpecifier( + "InstantMessage", + "AIMInstant", + null, + "InstantMessageAIMInstant", + null, + "-sf-instant-message", + "-sf-aim", + ), + new ValueSpecifier( + "InstantMessage", + "ICQInstant", + null, + "InstantMessageICQInstant", + null, + "-sf-instant-message", + "-sf-icq", + ), + new ValueSpecifier( + "InstantMessage", + "JabberInstant", + null, + "InstantMessageJabberInstant", + null, + "-sf-instant-message", + "-sf-jabber", + ), + new ValueSpecifier( + "InstantMessage", + "MSNInstant", + null, + "InstantMessageMSNInstant", + null, + "-sf-instant-message", + "-sf-msn", + ), + new ValueSpecifier( + "InstantMessage", + "QQInstant", + null, + "InstantMessageQQInstant", + null, + "-sf-instant-message", + "-sf-qq", + ), + new ValueSpecifier( + "InstantMessage", + "SkypeInstant", + null, + "InstantMessageSkypeInstant", + null, + "-sf-instant-message", + "-sf-skype", + ), + ], + autocompleteTokenMap = { + "additional-name": new MapEntry(15, "additional-name", valueSpecifiers[2]), + "additional-name-initial": new MapEntry( + 23, + "additional-name-initial", + valueSpecifiers[2], + ), + "address-level1": new MapEntry(14, "address-level1", valueSpecifiers[9]), + "address-level2": new MapEntry(14, "address-level2", valueSpecifiers[8]), + "address-line1": new MapEntry(13, "address-line1", valueSpecifiers[7]), + "address-line2": new MapEntry(13, "address-line2", valueSpecifiers[7]), + "address-line3": new MapEntry(13, "address-line3", valueSpecifiers[7]), + "administrative-area": new MapEntry( + 19, + "administrative-area", + valueSpecifiers[9], + ), + bday: new MapEntry(4, "bday", valueSpecifiers[4]), + "bday-day": new MapEntry(8, "bday-day", valueSpecifiers[4]), + "bday-month": new MapEntry(10, "bday-month", valueSpecifiers[4]), + "bday-year": new MapEntry(9, "bday-year", valueSpecifiers[4]), + birthday: new MapEntry(8, "birthday", valueSpecifiers[4]), + "birthday-day": new MapEntry(12, "birthday-day", valueSpecifiers[4]), + "birthday-month": new MapEntry(14, "birthday-month", valueSpecifiers[4]), + "birthday-year": new MapEntry(13, "birthday-year", valueSpecifiers[4]), + city: new MapEntry(4, "city", valueSpecifiers[8]), + country: new MapEntry(7, "country", valueSpecifiers[11]), + "country-name": new MapEntry(12, "country-name", valueSpecifiers[11]), + email: new MapEntry(5, "email", valueSpecifiers[6]), + "family-name": new MapEntry(11, "family-name", valueSpecifiers[3]), + "given-name": new MapEntry(10, "given-name", valueSpecifiers[1]), + locality: new MapEntry(8, "locality", valueSpecifiers[8]), + "middle-initial": new MapEntry(14, "middle-initial", valueSpecifiers[2]), + "middle-name": new MapEntry(11, "middle-name", valueSpecifiers[2]), + name: new MapEntry(4, "name", valueSpecifiers[0]), + "name-full": new MapEntry(9, "name-full", valueSpecifiers[0]), + org: new MapEntry(3, "org", valueSpecifiers[14]), + organization: new MapEntry(12, "organization", valueSpecifiers[14]), + "organization-title": new MapEntry( + 18, + "organization-title", + valueSpecifiers[5], + ), + "phone-area-code": new MapEntry(15, "phone-area-code", valueSpecifiers[12]), + "phone-country-code": new MapEntry( + 18, + "phone-country-code", + valueSpecifiers[13], + ), + "phone-extension": new MapEntry(15, "phone-extension", valueSpecifiers[13]), + "phone-full": new MapEntry(10, "phone-full", valueSpecifiers[13]), + "phone-local": new MapEntry(11, "phone-local", valueSpecifiers[13]), + "phone-local-prefix": new MapEntry( + 18, + "phone-local-prefix", + valueSpecifiers[13], + ), + "phone-local-suffix": new MapEntry( + 18, + "phone-local-suffix", + valueSpecifiers[13], + ), + "phone-national": new MapEntry(14, "phone-national", valueSpecifiers[13]), + "postal-code": new MapEntry(11, "postal-code", valueSpecifiers[10]), + province: new MapEntry(8, "province", valueSpecifiers[9]), + region: new MapEntry(6, "region", valueSpecifiers[9]), + state: new MapEntry(5, "state", valueSpecifiers[9]), + "street-address": new MapEntry(14, "street-address", valueSpecifiers[7]), + surname: new MapEntry(7, "surname", valueSpecifiers[3]), + tel: new MapEntry(3, "tel", valueSpecifiers[13]), + "tel-area-code": new MapEntry(13, "tel-area-code", valueSpecifiers[12]), + "tel-country-code": new MapEntry( + 16, + "tel-country-code", + valueSpecifiers[13], + ), + "tel-extension": new MapEntry(13, "tel-extension", valueSpecifiers[13]), + "tel-local": new MapEntry(9, "tel-local", valueSpecifiers[13]), + "tel-local-prefix": new MapEntry( + 16, + "tel-local-prefix", + valueSpecifiers[13], + ), + "tel-local-suffix": new MapEntry( + 16, + "tel-local-suffix", + valueSpecifiers[13], + ), + "tel-national": new MapEntry(12, "tel-national", valueSpecifiers[13]), + url: new MapEntry(3, "url", valueSpecifiers[15]), + }, + fieldLabelMap = { + "1\xe8re adresse": new MapEntry(12, "1\xe8re adresse", valueSpecifiers[7]), + "2\xba nome": new MapEntry(7, "2\xba nome", valueSpecifiers[2]), + beruf: new MapEntry(5, "Beruf", valueSpecifiers[5]), + berufsbezeichnung: new MapEntry( + 17, + "Berufsbezeichnung", + valueSpecifiers[5], + ), + bundesland: new MapEntry(10, "Bundesland", valueSpecifiers[9]), + bundesstaat: new MapEntry(11, "Bundesstaat", valueSpecifiers[9]), + cap: new MapEntry(3, "CAP", valueSpecifiers[10]), + "e-mail adresse": new MapEntry(14, "E-Mail Adresse", valueSpecifiers[6]), + "e-mail-adresse": new MapEntry(14, "E-Mail-Adresse", valueSpecifiers[6]), + efternavn: new MapEntry(9, "Efternavn", valueSpecifiers[3]), + "email \u30a2\u30c9\u30ec\u30b9": new MapEntry( + 10, + "Email \u30a2\u30c9\u30ec\u30b9", + valueSpecifiers[6], + ), + "email\u30a2\u30c9\u30ec\u30b9": new MapEntry( + 9, + "Email\u30a2\u30c9\u30ec\u30b9", + valueSpecifiers[6], + ), + "e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9": new MapEntry( + 8, + "E\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9", + valueSpecifiers[6], + ), + "fax\u756a\u53f7": new MapEntry(5, "FAX\u756a\u53f7", valueSpecifiers[20]), + familienname: new MapEntry(12, "Familienname", valueSpecifiers[3]), + fon: new MapEntry(3, "Fon", valueSpecifiers[13]), + gsm: new MapEntry(3, "GSM", valueSpecifiers[18]), + geburtsdatum: new MapEntry(12, "Geburtsdatum", valueSpecifiers[4]), + geburtstag: new MapEntry(10, "Geburtstag", valueSpecifiers[4]), + handy: new MapEntry(5, "Handy", valueSpecifiers[18]), + initialen: new MapEntry(9, "Initialen", valueSpecifiers[2]), + mittelname: new MapEntry(10, "Mittelname", valueSpecifiers[2]), + "mobilfunk-vorwahl": new MapEntry( + 17, + "Mobilfunk-Vorwahl", + valueSpecifiers[18], + ), + "mobiltelefon-vorwahl": new MapEntry( + 20, + "Mobiltelefon-Vorwahl", + valueSpecifiers[18], + ), + ndt: new MapEntry(3, "NDT", valueSpecifiers[19]), + npa: new MapEntry(3, "NPA", valueSpecifiers[10]), + nachname: new MapEntry(8, "Nachname", valueSpecifiers[3]), + "netzbetreiber-vorwahl": new MapEntry( + 21, + "Netzbetreiber-Vorwahl", + valueSpecifiers[18], + ), + plz: new MapEntry(3, "PLZ", valueSpecifiers[10]), + "ps\u010d": new MapEntry(3, "PS\u010c", valueSpecifiers[10]), + "pager-vorwahl": new MapEntry(13, "Pager-Vorwahl", valueSpecifiers[19]), + postleitzahl: new MapEntry(12, "Postleitzahl", valueSpecifiers[10]), + "rufnummer (gesch\xe4ftlich)": new MapEntry( + 24, + "Rufnummer (gesch\xe4ftlich)", + valueSpecifiers[17], + ), + "rufnummer (privat)": new MapEntry( + 18, + "Rufnummer (privat)", + valueSpecifiers[16], + ), + "rufnummer abends": new MapEntry( + 16, + "Rufnummer abends", + valueSpecifiers[16], + ), + "rufnummer dienstlich": new MapEntry( + 20, + "Rufnummer dienstlich", + valueSpecifiers[17], + ), + "rufnummer gesch\xe4ftlich": new MapEntry( + 22, + "Rufnummer gesch\xe4ftlich", + valueSpecifiers[17], + ), + "rufnummer privat": new MapEntry( + 16, + "Rufnummer privat", + valueSpecifiers[16], + ), + "rufnummer tags\xfcber": new MapEntry( + 18, + "Rufnummer tags\xfcber", + valueSpecifiers[17], + ), + stadt: new MapEntry(5, "Stadt", valueSpecifiers[8]), + "str.": new MapEntry(4, "Str.", valueSpecifiers[7]), + strasse: new MapEntry(7, "Strasse", valueSpecifiers[7]), + "stra\xdfe": new MapEntry(6, "Stra\xdfe", valueSpecifiers[7]), + telefax: new MapEntry(7, "Telefax", valueSpecifiers[20]), + "telefon (gesch\xe4ftlich)": new MapEntry( + 22, + "Telefon (gesch\xe4ftlich)", + valueSpecifiers[17], + ), + "telefon (privat)": new MapEntry( + 16, + "Telefon (privat)", + valueSpecifiers[16], + ), + "telefon abends": new MapEntry(14, "Telefon abends", valueSpecifiers[16]), + "telefon dienstlich": new MapEntry( + 18, + "Telefon dienstlich", + valueSpecifiers[17], + ), + "telefon gesch\xe4ftlich": new MapEntry( + 20, + "Telefon gesch\xe4ftlich", + valueSpecifiers[17], + ), + "telefon privat": new MapEntry(14, "Telefon privat", valueSpecifiers[16]), + "telefon tags\xfcber": new MapEntry( + 16, + "Telefon tags\xfcber", + valueSpecifiers[17], + ), + "t\xe4tigkeit": new MapEntry(9, "T\xe4tigkeit", valueSpecifiers[5]), + "voller name": new MapEntry(11, "Voller Name", valueSpecifiers[0]), + "vollst\xe4ndiger name": new MapEntry( + 18, + "Vollst\xe4ndiger Name", + valueSpecifiers[0], + ), + vorname: new MapEntry(7, "Vorname", valueSpecifiers[1]), + vorwahl: new MapEntry(7, "Vorwahl", valueSpecifiers[12]), + "vorwahl (mobil)": new MapEntry(15, "Vorwahl (Mobil)", valueSpecifiers[18]), + "vorwahl (mobilfunk)": new MapEntry( + 19, + "Vorwahl (Mobilfunk)", + valueSpecifiers[18], + ), + "vorwahl (mobiltelefon)": new MapEntry( + 22, + "Vorwahl (Mobiltelefon)", + valueSpecifiers[18], + ), + "vorwahl (netzbetreiber)": new MapEntry( + 23, + "Vorwahl (Netzbetreiber)", + valueSpecifiers[18], + ), + "vorwahl (pager)": new MapEntry(15, "Vorwahl (Pager)", valueSpecifiers[19]), + "vorwahl mobil": new MapEntry(13, "Vorwahl Mobil", valueSpecifiers[18]), + "vorwahl mobilfunk": new MapEntry( + 17, + "Vorwahl Mobilfunk", + valueSpecifiers[18], + ), + "vorwahl mobiltelefon": new MapEntry( + 20, + "Vorwahl Mobiltelefon", + valueSpecifiers[18], + ), + "vorwahl netzbetreiber": new MapEntry( + 21, + "Vorwahl Netzbetreiber", + valueSpecifiers[18], + ), + "vorwahl pager": new MapEntry(13, "Vorwahl Pager", valueSpecifiers[19]), + vorwahlnummer: new MapEntry(13, "Vorwahlnummer", valueSpecifiers[12]), + achternaam: new MapEntry(10, "achternaam", valueSpecifiers[3]), + "activit\xe9": new MapEntry(8, "activit\xe9", valueSpecifiers[5]), + ad: new MapEntry(2, "ad", valueSpecifiers[1]), + address: new MapEntry(7, "address", valueSpecifiers[7]), + "address 1": new MapEntry(9, "address 1", valueSpecifiers[7]), + address1: new MapEntry(8, "address1", valueSpecifiers[7]), + addresse: new MapEntry(8, "addresse", valueSpecifiers[7]), + addrstreet: new MapEntry(10, "addrstreet", valueSpecifiers[7]), + adel: new MapEntry(4, "adel", valueSpecifiers[6]), + "adr.": new MapEntry(4, "adr.", valueSpecifiers[7]), + adres: new MapEntry(5, "adres", valueSpecifiers[7]), + "adres 1": new MapEntry(7, "adres 1", valueSpecifiers[7]), + adres1: new MapEntry(6, "adres1", valueSpecifiers[7]), + adresa: new MapEntry(6, "adresa", valueSpecifiers[7]), + "adresa 1": new MapEntry(8, "adresa 1", valueSpecifiers[7]), + "adresa e-po\u0161te": new MapEntry( + 14, + "adresa e-po\u0161te", + valueSpecifiers[6], + ), + "adresa ul.": new MapEntry(10, "adresa ul.", valueSpecifiers[7]), + "adresa ulice": new MapEntry(12, "adresa ulice", valueSpecifiers[7]), + adresa1: new MapEntry(7, "adresa1", valueSpecifiers[7]), + adresi: new MapEntry(6, "adresi", valueSpecifiers[7]), + adress: new MapEntry(6, "adress", valueSpecifiers[7]), + "adress 1": new MapEntry(8, "adress 1", valueSpecifiers[7]), + adress1: new MapEntry(7, "adress1", valueSpecifiers[7]), + adresse: new MapEntry(7, "adresse", valueSpecifiers[7]), + "adresse 1": new MapEntry(9, "adresse 1", valueSpecifiers[7]), + "adresse internet": new MapEntry( + 16, + "adresse Internet", + valueSpecifiers[6], + ), + "adresse civique": new MapEntry(15, "adresse civique", valueSpecifiers[7]), + "adresse courriel": new MapEntry( + 16, + "adresse courriel", + valueSpecifiers[6], + ), + "adresse de courriel": new MapEntry( + 19, + "adresse de courriel", + valueSpecifiers[6], + ), + "adresse de courrier \xe9lectronique": new MapEntry( + 32, + "adresse de courrier \xe9lectronique", + valueSpecifiers[6], + ), + "adresse de messagerie": new MapEntry( + 21, + "adresse de messagerie", + valueSpecifiers[6], + ), + "adresse e-mail": new MapEntry(14, "adresse e-mail", valueSpecifiers[6]), + "adresse g\xe9ographique": new MapEntry( + 20, + "adresse g\xe9ographique", + valueSpecifiers[7], + ), + "adresse municipale": new MapEntry( + 18, + "adresse municipale", + valueSpecifiers[7], + ), + "adresse postale": new MapEntry(15, "adresse postale", valueSpecifiers[7]), + "adresse postale 1": new MapEntry( + 17, + "adresse postale 1", + valueSpecifiers[7], + ), + "adresse \xe9lectronique": new MapEntry( + 20, + "adresse \xe9lectronique", + valueSpecifiers[6], + ), + adresse1: new MapEntry(8, "adresse1", valueSpecifiers[7]), + "adres\u0103": new MapEntry(6, "adres\u0103", valueSpecifiers[7]), + "adres\u0103 1": new MapEntry(8, "adres\u0103 1", valueSpecifiers[7]), + "adres\u0103 stradal\u0103": new MapEntry( + 15, + "adres\u0103 stradal\u0103", + valueSpecifiers[7], + ), + "adres\u01031": new MapEntry(7, "adres\u01031", valueSpecifiers[7]), + "adres\u0103email": new MapEntry( + 11, + "adres\u0103email", + valueSpecifiers[6], + ), + "adre\xe7a": new MapEntry(6, "adre\xe7a", valueSpecifiers[7]), + "adre\xe7a 1": new MapEntry(8, "adre\xe7a 1", valueSpecifiers[7]), + "adre\xe7a electr\xf2nica": new MapEntry( + 18, + "adre\xe7a electr\xf2nica", + valueSpecifiers[6], + ), + "adre\xe7a1": new MapEntry(7, "adre\xe7a1", valueSpecifiers[7]), + "adr\xe9lec": new MapEntry(7, "adr\xe9lec", valueSpecifiers[6]), + "ad\u0131": new MapEntry(3, "ad\u0131", valueSpecifiers[0]), + aim: new MapEntry(3, "aim", valueSpecifiers[22]), + "ak\u015fam alan kodu": new MapEntry( + 15, + "ak\u015fam alan kodu", + valueSpecifiers[16], + ), + "ak\u015fam telefonu": new MapEntry( + 14, + "ak\u015fam telefonu", + valueSpecifiers[16], + ), + "alan kodu": new MapEntry(9, "alan kodu", valueSpecifiers[12]), + "alt prenume": new MapEntry(11, "alt prenume", valueSpecifiers[2]), + ammatti: new MapEntry(7, "ammatti", valueSpecifiers[5]), + ammattinimike: new MapEntry(13, "ammattinimike", valueSpecifiers[5]), + andranamn: new MapEntry(9, "andranamn", valueSpecifiers[2]), + angiadresseadresselinje: new MapEntry( + 23, + "angiAdresseAdresselinje", + valueSpecifiers[7], + ), + angivadresseadresselinje: new MapEntry( + 24, + "angivAdresseAdresselinje", + valueSpecifiers[7], + ), + aniversari: new MapEntry(10, "aniversari", valueSpecifiers[4]), + "anivers\xe1rio": new MapEntry(11, "anivers\xe1rio", valueSpecifiers[4]), + anniversaire: new MapEntry(12, "anniversaire", valueSpecifiers[4]), + apelido: new MapEntry(7, "apelido", valueSpecifiers[3]), + apellido: new MapEntry(8, "apellido", valueSpecifiers[3]), + apellidos: new MapEntry(9, "apellidos", valueSpecifiers[3]), + arbeidstelefon: new MapEntry(14, "arbeidstelefon", valueSpecifiers[17]), + arbejdsnummer: new MapEntry(13, "arbejdsnummer", valueSpecifiers[17]), + arbejdstelefon: new MapEntry(14, "arbejdstelefon", valueSpecifiers[17]), + arbetstelefon: new MapEntry(13, "arbetstelefon", valueSpecifiers[17]), + "area code": new MapEntry(9, "area code", valueSpecifiers[12]), + areacode: new MapEntry(8, "areacode", valueSpecifiers[12]), + "autre pr\xe9nom": new MapEntry(12, "autre pr\xe9nom", valueSpecifiers[2]), + azienda: new MapEntry(7, "azienda", valueSpecifiers[14]), + bedrijf: new MapEntry(7, "bedrijf", valueSpecifiers[14]), + befattning: new MapEntry(10, "befattning", valueSpecifiers[5]), + bellboy: new MapEntry(7, "bellboy", valueSpecifiers[19]), + bipeur: new MapEntry(6, "bipeur", valueSpecifiers[19]), + "birinci ad": new MapEntry(10, "birinci ad", valueSpecifiers[1]), + "birinci ad\u0131": new MapEntry( + 11, + "birinci ad\u0131", + valueSpecifiers[1], + ), + "birth date": new MapEntry(10, "birth date", valueSpecifiers[4]), + "birth day": new MapEntry(9, "birth day", valueSpecifiers[4]), + "birth month": new MapEntry(11, "birth month", valueSpecifiers[4]), + "birth year": new MapEntry(10, "birth year", valueSpecifiers[4]), + birthday: new MapEntry(8, "birthday", valueSpecifiers[4]), + bolag: new MapEntry(5, "bolag", valueSpecifiers[14]), + born: new MapEntry(4, "born", valueSpecifiers[4]), + bostadsort: new MapEntry(10, "bostadsort", valueSpecifiers[8]), + "broj telefona": new MapEntry(13, "broj telefona", valueSpecifiers[13]), + bursdag: new MapEntry(7, "bursdag", valueSpecifiers[4]), + busca: new MapEntry(5, "busca", valueSpecifiers[19]), + buscapersonas: new MapEntry(13, "buscapersonas", valueSpecifiers[19]), + business: new MapEntry(8, "business", valueSpecifiers[14]), + "business area code": new MapEntry( + 18, + "business area code", + valueSpecifiers[17], + ), + "business areacode": new MapEntry( + 17, + "business areacode", + valueSpecifiers[17], + ), + "business phone": new MapEntry(14, "business phone", valueSpecifiers[17]), + businessareacode: new MapEntry(16, "businessareacode", valueSpecifiers[17]), + businessphone: new MapEntry(13, "businessphone", valueSpecifiers[17]), + "c. \xe9lec.": new MapEntry(8, "c. \xe9lec.", valueSpecifiers[6]), + "cad.": new MapEntry(4, "cad.", valueSpecifiers[7]), + cadde: new MapEntry(5, "cadde", valueSpecifiers[7]), + "cadde adresi": new MapEntry(12, "cadde adresi", valueSpecifiers[7]), + calle: new MapEntry(5, "calle", valueSpecifiers[7]), + cargo: new MapEntry(5, "cargo", valueSpecifiers[5]), + "cargo profissional": new MapEntry( + 18, + "cargo profissional", + valueSpecifiers[5], + ), + cargoprofissional: new MapEntry( + 17, + "cargoprofissional", + valueSpecifiers[5], + ), + carrer: new MapEntry(6, "carrer", valueSpecifiers[7]), + "cell area code": new MapEntry(14, "cell area code", valueSpecifiers[18]), + "cell areacode": new MapEntry(13, "cell areacode", valueSpecifiers[18]), + "cell phone": new MapEntry(10, "cell phone", valueSpecifiers[18]), + "cell.": new MapEntry(5, "cell.", valueSpecifiers[18]), + cellareacode: new MapEntry(12, "cellareacode", valueSpecifiers[18]), + cellphone: new MapEntry(9, "cellphone", valueSpecifiers[18]), + cellulaire: new MapEntry(10, "cellulaire", valueSpecifiers[18]), + cellulare: new MapEntry(9, "cellulare", valueSpecifiers[18]), + celular: new MapEntry(7, "celular", valueSpecifiers[18]), + "cel\xe9 meno": new MapEntry(9, "cel\xe9 meno", valueSpecifiers[0]), + cep: new MapEntry(3, "cep", valueSpecifiers[18]), + "cep numaras\u0131": new MapEntry( + 12, + "cep numaras\u0131", + valueSpecifiers[18], + ), + "cep telefonu": new MapEntry(12, "cep telefonu", valueSpecifiers[18]), + "cercapers.": new MapEntry(10, "cercapers.", valueSpecifiers[19]), + cercapersone: new MapEntry(12, "cercapersone", valueSpecifiers[19]), + cercapersones: new MapEntry(13, "cercapersones", valueSpecifiers[19]), + cidade: new MapEntry(6, "cidade", valueSpecifiers[8]), + "citt\xe0": new MapEntry(5, "citt\xe0", valueSpecifiers[8]), + city: new MapEntry(4, "city", valueSpecifiers[8]), + ciudad: new MapEntry(6, "ciudad", valueSpecifiers[8]), + ciutat: new MapEntry(6, "ciutat", valueSpecifiers[8]), + "cod po\u0219tal": new MapEntry(10, "cod po\u0219tal", valueSpecifiers[10]), + "code zip": new MapEntry(8, "code ZIP", valueSpecifiers[10]), + "code postal": new MapEntry(11, "code postal", valueSpecifiers[10]), + "code postal am\xe9ricain": new MapEntry( + 21, + "code postal am\xe9ricain", + valueSpecifiers[10], + ), + "code r\xe9gional": new MapEntry( + 13, + "code r\xe9gional", + valueSpecifiers[12], + ), + "codi postal": new MapEntry(11, "codi postal", valueSpecifiers[10]), + "codice avviamento postale": new MapEntry( + 25, + "codice avviamento postale", + valueSpecifiers[10], + ), + "codice di avviamento postale": new MapEntry( + 28, + "codice di avviamento postale", + valueSpecifiers[10], + ), + "codice postale": new MapEntry(14, "codice postale", valueSpecifiers[10]), + "codpo\u0219tal": new MapEntry(9, "codpo\u0219tal", valueSpecifiers[10]), + cognom: new MapEntry(6, "cognom", valueSpecifiers[3]), + cognome: new MapEntry(7, "cognome", valueSpecifiers[3]), + cognoms: new MapEntry(7, "cognoms", valueSpecifiers[3]), + compagnie: new MapEntry(9, "compagnie", valueSpecifiers[14]), + companie: new MapEntry(8, "companie", valueSpecifiers[14]), + company: new MapEntry(7, "company", valueSpecifiers[14]), + "company area code": new MapEntry( + 17, + "company area code", + valueSpecifiers[17], + ), + "company areacode": new MapEntry( + 16, + "company areacode", + valueSpecifiers[17], + ), + "company phone": new MapEntry(13, "company phone", valueSpecifiers[17]), + "company title": new MapEntry(13, "company title", valueSpecifiers[5]), + companyareacode: new MapEntry(15, "companyareacode", valueSpecifiers[17]), + companyia: new MapEntry(9, "companyia", valueSpecifiers[14]), + companyphone: new MapEntry(12, "companyphone", valueSpecifiers[17]), + compleanno: new MapEntry(10, "compleanno", valueSpecifiers[4]), + corporation: new MapEntry(11, "corporation", valueSpecifiers[14]), + "correo electr\xf3nico": new MapEntry( + 18, + "correo electr\xf3nico", + valueSpecifiers[6], + ), + "correu electr\xf2nic": new MapEntry( + 17, + "correu electr\xf2nic", + valueSpecifiers[6], + ), + country: new MapEntry(7, "country", valueSpecifiers[11]), + courriel: new MapEntry(8, "courriel", valueSpecifiers[6]), + "courrier \xe9lectronique": new MapEntry( + 21, + "courrier \xe9lectronique", + valueSpecifiers[6], + ), + cp: new MapEntry(2, "cp", valueSpecifiers[10]), + "cumplea\xf1os": new MapEntry(10, "cumplea\xf1os", valueSpecifiers[4]), + "c\xe0rrec": new MapEntry(6, "c\xe0rrec", valueSpecifiers[5]), + "c\xe9": new MapEntry(2, "c\xe9", valueSpecifiers[6]), + "c\xf3digo de \xe1rea": new MapEntry( + 14, + "c\xf3digo de \xe1rea", + valueSpecifiers[12], + ), + "c\xf3digo de \xe1rea (celular)": new MapEntry( + 24, + "c\xf3digo de \xe1rea (celular)", + valueSpecifiers[18], + ), + "c\xf3digo de \xe1rea (diurno)": new MapEntry( + 23, + "c\xf3digo de \xe1rea (diurno)", + valueSpecifiers[17], + ), + "c\xf3digo de \xe1rea (empresa)": new MapEntry( + 24, + "c\xf3digo de \xe1rea (empresa)", + valueSpecifiers[17], + ), + "c\xf3digo de \xe1rea (local)": new MapEntry( + 22, + "c\xf3digo de \xe1rea (local)", + valueSpecifiers[16], + ), + "c\xf3digo de \xe1rea (noturno)": new MapEntry( + 24, + "c\xf3digo de \xe1rea (noturno)", + valueSpecifiers[16], + ), + "c\xf3digo de \xe1rea (pager)": new MapEntry( + 22, + "c\xf3digo de \xe1rea (pager)", + valueSpecifiers[19], + ), + "c\xf3digo de \xe1rea (trabalho)": new MapEntry( + 25, + "c\xf3digo de \xe1rea (trabalho)", + valueSpecifiers[17], + ), + "c\xf3digo de \xe1rea comercial": new MapEntry( + 24, + "c\xf3digo de \xe1rea comercial", + valueSpecifiers[17], + ), + "c\xf3digo de \xe1rea da empresa": new MapEntry( + 25, + "c\xf3digo de \xe1rea da empresa", + valueSpecifiers[17], + ), + "c\xf3digo de \xe1rea de casa": new MapEntry( + 22, + "c\xf3digo de \xe1rea de casa", + valueSpecifiers[16], + ), + "c\xf3digo de \xe1rea de dia": new MapEntry( + 21, + "c\xf3digo de \xe1rea de dia", + valueSpecifiers[17], + ), + "c\xf3digo de \xe1rea do celular": new MapEntry( + 25, + "c\xf3digo de \xe1rea do celular", + valueSpecifiers[18], + ), + "c\xf3digo de \xe1rea do pager": new MapEntry( + 23, + "c\xf3digo de \xe1rea do pager", + valueSpecifiers[19], + ), + "c\xf3digo de \xe1rea do telem\xf3vel": new MapEntry( + 27, + "c\xf3digo de \xe1rea do telem\xf3vel", + valueSpecifiers[18], + ), + "c\xf3digo de \xe1rea do trabalho": new MapEntry( + 26, + "c\xf3digo de \xe1rea do trabalho", + valueSpecifiers[17], + ), + "c\xf3digo de \xe1rea noite": new MapEntry( + 20, + "c\xf3digo de \xe1rea noite", + valueSpecifiers[16], + ), + "c\xf3digo postal": new MapEntry( + 13, + "c\xf3digo postal", + valueSpecifiers[10], + ), + "c\xf3digode\xe1rea": new MapEntry( + 12, + "c\xf3digode\xe1rea", + valueSpecifiers[12], + ), + "c\xf3digode\xe1rea comercial": new MapEntry( + 22, + "c\xf3digode\xe1rea comercial", + valueSpecifiers[17], + ), + "c\xf3digode\xe1rea da empresa": new MapEntry( + 23, + "c\xf3digode\xe1rea da empresa", + valueSpecifiers[17], + ), + "c\xf3digode\xe1rea de casa": new MapEntry( + 20, + "c\xf3digode\xe1rea de casa", + valueSpecifiers[16], + ), + "c\xf3digode\xe1rea de dia": new MapEntry( + 19, + "c\xf3digode\xe1rea de dia", + valueSpecifiers[17], + ), + "c\xf3digode\xe1rea do celular": new MapEntry( + 23, + "c\xf3digode\xe1rea do celular", + valueSpecifiers[18], + ), + "c\xf3digode\xe1rea do pager": new MapEntry( + 21, + "c\xf3digode\xe1rea do pager", + valueSpecifiers[19], + ), + "c\xf3digode\xe1rea do telem\xf3vel": new MapEntry( + 25, + "c\xf3digode\xe1rea do telem\xf3vel", + valueSpecifiers[18], + ), + "c\xf3digode\xe1rea do trabalho": new MapEntry( + 24, + "c\xf3digode\xe1rea do trabalho", + valueSpecifiers[17], + ), + "c\xf3digode\xe1rea noite": new MapEntry( + 18, + "c\xf3digode\xe1rea noite", + valueSpecifiers[16], + ), + "c\xf3digode\xe1reacomercial": new MapEntry( + 21, + "c\xf3digode\xe1reacomercial", + valueSpecifiers[17], + ), + "c\xf3digode\xe1readaempresa": new MapEntry( + 21, + "c\xf3digode\xe1readaempresa", + valueSpecifiers[17], + ), + "c\xf3digode\xe1readecasa": new MapEntry( + 18, + "c\xf3digode\xe1readecasa", + valueSpecifiers[16], + ), + "c\xf3digode\xe1readedia": new MapEntry( + 17, + "c\xf3digode\xe1readedia", + valueSpecifiers[17], + ), + "c\xf3digode\xe1readocelular": new MapEntry( + 21, + "c\xf3digode\xe1readocelular", + valueSpecifiers[18], + ), + "c\xf3digode\xe1readopager": new MapEntry( + 19, + "c\xf3digode\xe1readopager", + valueSpecifiers[19], + ), + "c\xf3digode\xe1readotelem\xf3vel": new MapEntry( + 23, + "c\xf3digode\xe1readotelem\xf3vel", + valueSpecifiers[18], + ), + "c\xf3digode\xe1readotrabalho": new MapEntry( + 22, + "c\xf3digode\xe1readotrabalho", + valueSpecifiers[17], + ), + "c\xf3digode\xe1reanoite": new MapEntry( + 17, + "c\xf3digode\xe1reanoite", + valueSpecifiers[16], + ), + "c\xf3digopostal": new MapEntry(12, "c\xf3digopostal", valueSpecifiers[10]), + dagretningsnummer: new MapEntry( + 17, + "dagretningsnummer", + valueSpecifiers[17], + ), + dagstelefon: new MapEntry(11, "dagstelefon", valueSpecifiers[17]), + dagtelefon: new MapEntry(10, "dagtelefon", valueSpecifiers[17]), + "data de naixen\xe7a": new MapEntry( + 16, + "data de naixen\xe7a", + valueSpecifiers[4], + ), + "data de nascimento": new MapEntry( + 18, + "data de nascimento", + valueSpecifiers[4], + ), + "data di nascita": new MapEntry(15, "data di nascita", valueSpecifiers[4]), + "data na\u0219terii": new MapEntry( + 13, + "data na\u0219terii", + valueSpecifiers[4], + ), + "data urodzenia": new MapEntry(14, "data urodzenia", valueSpecifiers[4]), + "date de naissance": new MapEntry( + 17, + "date de naissance", + valueSpecifiers[4], + ), + "date of birth": new MapEntry(13, "date of birth", valueSpecifiers[4]), + "datum ro\u0111enja": new MapEntry( + 13, + "datum ro\u0111enja", + valueSpecifiers[4], + ), + "day area code": new MapEntry(13, "day area code", valueSpecifiers[17]), + "day areacode": new MapEntry(12, "day areacode", valueSpecifiers[17]), + "day phone": new MapEntry(9, "day phone", valueSpecifiers[17]), + dayareacode: new MapEntry(11, "dayareacode", valueSpecifiers[17]), + dayphone: new MapEntry(8, "dayphone", valueSpecifiers[17]), + "daytime phone": new MapEntry(13, "daytime phone", valueSpecifiers[17]), + "daytime telephone": new MapEntry( + 17, + "daytime telephone", + valueSpecifiers[17], + ), + delstat: new MapEntry(7, "delstat", valueSpecifiers[9]), + "denn\xe1 predvo\u013eba": new MapEntry( + 15, + "denn\xe1 predvo\u013eba", + valueSpecifiers[17], + ), + "denn\xe9 \u010d\xedslo": new MapEntry( + 11, + "denn\xe9 \u010d\xedslo", + valueSpecifiers[17], + ), + "denn\xfd telef\xf3n": new MapEntry( + 13, + "denn\xfd telef\xf3n", + valueSpecifiers[17], + ), + "deuxi\xe8me pr\xe9nom": new MapEntry( + 15, + "deuxi\xe8me pr\xe9nom", + valueSpecifiers[2], + ), + "direcci\xf3n": new MapEntry(9, "direcci\xf3n", valueSpecifiers[7]), + "direcci\xf3n 1": new MapEntry(11, "direcci\xf3n 1", valueSpecifiers[7]), + "direcci\xf3n1": new MapEntry(10, "direcci\xf3n1", valueSpecifiers[7]), + "dnevni telefon": new MapEntry(14, "dnevni telefon", valueSpecifiers[17]), + dojavnik: new MapEntry(8, "dojavnik", valueSpecifiers[19]), + "dom\xe1ca predvo\u013eba": new MapEntry( + 16, + "dom\xe1ca predvo\u013eba", + valueSpecifiers[16], + ), + "dom\xe1ci telef\xf3n": new MapEntry( + 14, + "dom\xe1ci telef\xf3n", + valueSpecifiers[16], + ), + dopnamn: new MapEntry(7, "dopnamn", valueSpecifiers[1]), + "do\u011fum": new MapEntry(5, "do\u011fum", valueSpecifiers[4]), + "do\u011fum g\xfcn\xfc": new MapEntry( + 10, + "do\u011fum g\xfcn\xfc", + valueSpecifiers[4], + ), + "do\u011fum tarihi": new MapEntry( + 12, + "do\u011fum tarihi", + valueSpecifiers[4], + ), + "do\u011fumg\xfcn\xfc": new MapEntry( + 9, + "do\u011fumg\xfcn\xfc", + valueSpecifiers[4], + ), + drugie: new MapEntry(6, "drugie", valueSpecifiers[2]), + "drugie imi\u0119": new MapEntry( + 11, + "drugie imi\u0119", + valueSpecifiers[2], + ), + "drugo ime": new MapEntry(9, "drugo ime", valueSpecifiers[2]), + "dr\u017eava": new MapEntry(6, "dr\u017eava", valueSpecifiers[9]), + "d\xe1tum narodenia": new MapEntry( + 15, + "d\xe1tum narodenia", + valueSpecifiers[4], + ), + "d\xf8benavn": new MapEntry(8, "d\xf8benavn", valueSpecifiers[1]), + "d\xf8penavn": new MapEntry(8, "d\xf8penavn", valueSpecifiers[1]), + "e mail": new MapEntry(6, "e mail", valueSpecifiers[6]), + "e-mail": new MapEntry(6, "e-mail", valueSpecifiers[6]), + "e-mail adresa": new MapEntry(13, "e-mail adresa", valueSpecifiers[6]), + "e-mail \uc8fc\uc18c": new MapEntry( + 9, + "e-mail \uc8fc\uc18c", + valueSpecifiers[6], + ), + "e-mail\uc8fc\uc18c": new MapEntry( + 8, + "e-mail\uc8fc\uc18c", + valueSpecifiers[6], + ), + "e-navn": new MapEntry(6, "e-navn", valueSpecifiers[3]), + "e-post": new MapEntry(6, "e-post", valueSpecifiers[6]), + "e-posta": new MapEntry(7, "e-posta", valueSpecifiers[6]), + "e-posta adresi": new MapEntry(14, "e-posta adresi", valueSpecifiers[6]), + "e-postadr": new MapEntry(9, "e-postadr", valueSpecifiers[6]), + "e-postadress": new MapEntry(12, "e-postadress", valueSpecifiers[6]), + "e-postadresse": new MapEntry(13, "e-postadresse", valueSpecifiers[6]), + "e-po\u0161ta": new MapEntry(7, "e-po\u0161ta", valueSpecifiers[6]), + efter: new MapEntry(5, "efter", valueSpecifiers[3]), + "eftern.": new MapEntry(7, "eftern.", valueSpecifiers[3]), + efternamn: new MapEntry(9, "efternamn", valueSpecifiers[3]), + email: new MapEntry(5, "email", valueSpecifiers[6]), + "email \uc8fc\uc18c": new MapEntry( + 8, + "email \uc8fc\uc18c", + valueSpecifiers[6], + ), + emailaddr: new MapEntry(9, "emailAddr", valueSpecifiers[6]), + emailaddress: new MapEntry(12, "emailAddress", valueSpecifiers[6]), + emailadr: new MapEntry(8, "emailAdr", valueSpecifiers[6]), + emailadresa: new MapEntry(11, "emailAdresa", valueSpecifiers[6]), + "email\uc8fc\uc18c": new MapEntry( + 7, + "email\uc8fc\uc18c", + valueSpecifiers[6], + ), + emejl: new MapEntry(5, "emejl", valueSpecifiers[6]), + empresa: new MapEntry(7, "empresa", valueSpecifiers[14]), + enamn: new MapEntry(5, "enamn", valueSpecifiers[3]), + enavn: new MapEntry(5, "enavn", valueSpecifiers[3]), + "endere\xe7o": new MapEntry(8, "endere\xe7o", valueSpecifiers[7]), + "endere\xe7o 1": new MapEntry(10, "endere\xe7o 1", valueSpecifiers[7]), + "endere\xe7o da rua": new MapEntry( + 15, + "endere\xe7o da rua", + valueSpecifiers[7], + ), + "endere\xe7o1": new MapEntry(9, "endere\xe7o1", valueSpecifiers[7]), + enteraddressaddressline: new MapEntry( + 23, + "enterAddressAddressLine", + valueSpecifiers[7], + ), + entreprise: new MapEntry(10, "entreprise", valueSpecifiers[14]), + epost: new MapEntry(5, "epost", valueSpecifiers[6]), + eposta: new MapEntry(6, "eposta", valueSpecifiers[6]), + "eposta adresi": new MapEntry(13, "eposta adresi", valueSpecifiers[6]), + epostadress: new MapEntry(11, "epostadress", valueSpecifiers[6]), + estado: new MapEntry(6, "estado", valueSpecifiers[9]), + estat: new MapEntry(5, "estat", valueSpecifiers[9]), + "etter-": new MapEntry(6, "etter-", valueSpecifiers[3]), + etternavn: new MapEntry(9, "etternavn", valueSpecifiers[3]), + etu: new MapEntry(3, "etu", valueSpecifiers[1]), + "etun.": new MapEntry(5, "etun.", valueSpecifiers[1]), + etunimi: new MapEntry(7, "etunimi", valueSpecifiers[1]), + "ev alan kodu": new MapEntry(12, "ev alan kodu", valueSpecifiers[16]), + "ev telefonu": new MapEntry(11, "ev telefonu", valueSpecifiers[16]), + "evening area code": new MapEntry( + 17, + "evening area code", + valueSpecifiers[16], + ), + "evening areacode": new MapEntry( + 16, + "evening areacode", + valueSpecifiers[16], + ), + "evening phone": new MapEntry(13, "evening phone", valueSpecifiers[16]), + eveningareacode: new MapEntry(15, "eveningareacode", valueSpecifiers[16]), + eveningphone: new MapEntry(12, "eveningphone", valueSpecifiers[16]), + exchange: new MapEntry(8, "exchange", valueSpecifiers[13]), + eyalet: new MapEntry(6, "eyalet", valueSpecifiers[9]), + "f name": new MapEntry(6, "f name", valueSpecifiers[1]), + "f-navn": new MapEntry(6, "f-navn", valueSpecifiers[1]), + faks: new MapEntry(4, "faks", valueSpecifiers[20]), + "faks numaras\u0131": new MapEntry( + 13, + "faks numaras\u0131", + valueSpecifiers[20], + ), + faksi: new MapEntry(5, "faksi", valueSpecifiers[20]), + familie: new MapEntry(7, "familie", valueSpecifiers[3]), + familienavn: new MapEntry(11, "familienavn", valueSpecifiers[3]), + familjenamn: new MapEntry(11, "familjenamn", valueSpecifiers[3]), + fax: new MapEntry(3, "fax", valueSpecifiers[20]), + "fecha de nacimiento": new MapEntry( + 19, + "fecha de nacimiento", + valueSpecifiers[4], + ), + feina: new MapEntry(5, "feina", valueSpecifiers[5]), + "firemn\xe9 \u010d\xedslo": new MapEntry( + 13, + "firemn\xe9 \u010d\xedslo", + valueSpecifiers[17], + ), + "firemn\xfd telef\xf3n": new MapEntry( + 15, + "firemn\xfd telef\xf3n", + valueSpecifiers[17], + ), + firma: new MapEntry(5, "firma", valueSpecifiers[14]), + firmaretningsnummer: new MapEntry( + 19, + "firmaretningsnummer", + valueSpecifiers[17], + ), + firmatelfon: new MapEntry(11, "firmatelfon", valueSpecifiers[17]), + firmenname: new MapEntry(10, "firmenname", valueSpecifiers[14]), + first: new MapEntry(5, "first", valueSpecifiers[1]), + "first and last": new MapEntry(14, "first and last", valueSpecifiers[0]), + "first and last name": new MapEntry( + 19, + "first and last name", + valueSpecifiers[0], + ), + "first name": new MapEntry(10, "first name", valueSpecifiers[1]), + "first, middle, last": new MapEntry( + 19, + "first, middle, last", + valueSpecifiers[0], + ), + firstname: new MapEntry(9, "firstname", valueSpecifiers[1]), + fname: new MapEntry(5, "fname", valueSpecifiers[1]), + fnamn: new MapEntry(5, "fnamn", valueSpecifiers[1]), + fnavn: new MapEntry(5, "fnavn", valueSpecifiers[1]), + "for-": new MapEntry(4, "for-", valueSpecifiers[1]), + "forbogstav, mellemnavn": new MapEntry( + 22, + "forbogstav, mellemnavn", + valueSpecifiers[2], + ), + "forbokstav, mellomnavn": new MapEntry( + 22, + "forbokstav, mellomnavn", + valueSpecifiers[2], + ), + forename: new MapEntry(8, "forename", valueSpecifiers[1]), + fornavn: new MapEntry(7, "fornavn", valueSpecifiers[1]), + "fulde navn": new MapEntry(10, "fulde navn", valueSpecifiers[0]), + "fuldt navn": new MapEntry(10, "fuldt navn", valueSpecifiers[0]), + "full name": new MapEntry(9, "full name", valueSpecifiers[0]), + fullname: new MapEntry(8, "fullname", valueSpecifiers[0]), + "fullst\xe4ndigt namn": new MapEntry( + 17, + "fullst\xe4ndigt namn", + valueSpecifiers[0], + ), + "fullt navn": new MapEntry(10, "fullt navn", valueSpecifiers[0]), + fulltnavn: new MapEntry(9, "fulltnavn", valueSpecifiers[0]), + functie: new MapEntry(7, "functie", valueSpecifiers[5]), + "func\u021bie": new MapEntry(7, "func\u021bie", valueSpecifiers[5]), + "f\xf6dd": new MapEntry(4, "f\xf6dd", valueSpecifiers[4]), + "f\xf6delsedag": new MapEntry(10, "f\xf6delsedag", valueSpecifiers[4]), + "f\xf6delsedatum": new MapEntry(12, "f\xf6delsedatum", valueSpecifiers[4]), + "f\xf6retag": new MapEntry(7, "f\xf6retag", valueSpecifiers[14]), + "f\xf6retagstelefon": new MapEntry( + 15, + "f\xf6retagstelefon", + valueSpecifiers[17], + ), + "f\xf6rn.": new MapEntry(5, "f\xf6rn.", valueSpecifiers[1]), + "f\xf6rnamn": new MapEntry(7, "f\xf6rnamn", valueSpecifiers[1]), + "f\xf8dselsdag": new MapEntry(10, "f\xf8dselsdag", valueSpecifiers[4]), + "f\xf8dselsdato": new MapEntry(11, "f\xf8dselsdato", valueSpecifiers[4]), + "f\xf8dt": new MapEntry(4, "f\xf8dt", valueSpecifiers[4]), + gade: new MapEntry(4, "gade", valueSpecifiers[7]), + gadeadresse: new MapEntry(11, "gadeadresse", valueSpecifiers[7]), + gata: new MapEntry(4, "gata", valueSpecifiers[7]), + gate: new MapEntry(4, "gate", valueSpecifiers[7]), + gateadresse: new MapEntry(11, "gateadresse", valueSpecifiers[7]), + "gatuadr.": new MapEntry(8, "gatuadr.", valueSpecifiers[7]), + gatuadress: new MapEntry(10, "gatuadress", valueSpecifiers[7]), + geboortedatum: new MapEntry(13, "geboortedatum", valueSpecifiers[4]), + geboren: new MapEntry(7, "geboren", valueSpecifiers[4]), + "given name": new MapEntry(10, "given name", valueSpecifiers[1]), + grad: new MapEntry(4, "grad", valueSpecifiers[8]), + "g\xf6bek ad\u0131": new MapEntry( + 9, + "g\xf6bek ad\u0131", + valueSpecifiers[2], + ), + "g\xfcnd\xfcz alan kodu": new MapEntry( + 16, + "g\xfcnd\xfcz alan kodu", + valueSpecifiers[17], + ), + "g\xfcnd\xfcz telefonu": new MapEntry( + 15, + "g\xfcnd\xfcz telefonu", + valueSpecifiers[17], + ), + hakulaite: new MapEntry(9, "hakulaite", valueSpecifiers[19]), + hakulaitenro: new MapEntry(12, "hakulaitenro", valueSpecifiers[19]), + "hakulaitteen numero": new MapEntry( + 19, + "hakulaitteen numero", + valueSpecifiers[19], + ), + "hela namnet": new MapEntry(11, "hela namnet", valueSpecifiers[0]), + hemstad: new MapEntry(7, "hemstad", valueSpecifiers[8]), + hemtelefon: new MapEntry(10, "hemtelefon", valueSpecifiers[16]), + hjemmetelefon: new MapEntry(13, "hjemmetelefon", valueSpecifiers[16]), + hjemnummer: new MapEntry(10, "hjemnummer", valueSpecifiers[16]), + "home area code": new MapEntry(14, "home area code", valueSpecifiers[16]), + "home areacode": new MapEntry(13, "home areacode", valueSpecifiers[16]), + "home phone": new MapEntry(10, "home phone", valueSpecifiers[16]), + homeareacode: new MapEntry(12, "homeareacode", valueSpecifiers[16]), + homepage: new MapEntry(8, "homepage", valueSpecifiers[15]), + homephone: new MapEntry(9, "homephone", valueSpecifiers[16]), + "house name": new MapEntry(10, "house name", valueSpecifiers[7]), + icq: new MapEntry(3, "icq", valueSpecifiers[23]), + "ikinci ad": new MapEntry(9, "ikinci ad", valueSpecifiers[2]), + "ikinci ad\u0131": new MapEntry(10, "ikinci ad\u0131", valueSpecifiers[2]), + "ikinci isim": new MapEntry(11, "ikinci isim", valueSpecifiers[2]), + il: new MapEntry(2, "il", valueSpecifiers[8]), + iltaisin: new MapEntry(8, "iltaisin", valueSpecifiers[16]), + ime: new MapEntry(3, "ime", valueSpecifiers[0]), + "imi\u0119": new MapEntry(4, "imi\u0119", valueSpecifiers[1]), + "imi\u0119 i nazwisko": new MapEntry( + 15, + "imi\u0119 i nazwisko", + valueSpecifiers[0], + ), + "ind. e-mail": new MapEntry(11, "ind. e-mail", valueSpecifiers[6]), + "ind. posta elettronica": new MapEntry( + 22, + "ind. posta elettronica", + valueSpecifiers[6], + ), + "ind. r\xe9g.": new MapEntry(9, "ind. r\xe9g.", valueSpecifiers[12]), + indicatif: new MapEntry(9, "indicatif", valueSpecifiers[12]), + "indicatif de zone": new MapEntry( + 17, + "indicatif de zone", + valueSpecifiers[12], + ), + "indicatif r\xe9gional": new MapEntry( + 18, + "indicatif r\xe9gional", + valueSpecifiers[12], + ), + "indicatif t\xe9l\xe9phonique": new MapEntry( + 22, + "indicatif t\xe9l\xe9phonique", + valueSpecifiers[12], + ), + indirizzo: new MapEntry(9, "indirizzo", valueSpecifiers[7]), + "indirizzo 1": new MapEntry(11, "indirizzo 1", valueSpecifiers[7]), + "indirizzo di posta elettronica": new MapEntry( + 30, + "indirizzo di posta elettronica", + valueSpecifiers[6], + ), + "indirizzo e-mail": new MapEntry( + 16, + "indirizzo e-mail", + valueSpecifiers[6], + ), + "indirizzo postale": new MapEntry( + 17, + "indirizzo postale", + valueSpecifiers[7], + ), + indirizzo1: new MapEntry(10, "indirizzo1", valueSpecifiers[7]), + "inicial do 2\xba nome": new MapEntry( + 18, + "inicial do 2\xba nome", + valueSpecifiers[2], + ), + "inicial do meio": new MapEntry(15, "inicial do meio", valueSpecifiers[2]), + inicialdomeio: new MapEntry(13, "inicialdomeio", valueSpecifiers[2]), + "inici\xe1la stredn\xe9ho": new MapEntry( + 18, + "inici\xe1la stredn\xe9ho", + valueSpecifiers[2], + ), + "inici\xe1la stredn\xe9ho mena": new MapEntry( + 23, + "inici\xe1la stredn\xe9ho mena", + valueSpecifiers[2], + ), + "inicja\u0142 drugiego imienia": new MapEntry( + 24, + "inicja\u0142 drugiego imienia", + valueSpecifiers[2], + ), + "initiaal tweede naam": new MapEntry( + 20, + "initiaal tweede naam", + valueSpecifiers[2], + ), + "initial, mellemnavn": new MapEntry( + 19, + "initial, mellemnavn", + valueSpecifiers[2], + ), + "initial, mellomnavn": new MapEntry( + 19, + "initial, mellomnavn", + valueSpecifiers[2], + ), + "initiale autre pr\xe9nom": new MapEntry( + 21, + "initiale autre pr\xe9nom", + valueSpecifiers[2], + ), + "initiale deuxi\xe8me pr\xe9nom": new MapEntry( + 24, + "initiale deuxi\xe8me pr\xe9nom", + valueSpecifiers[2], + ), + "initiale second pr\xe9nom": new MapEntry( + 22, + "initiale second pr\xe9nom", + valueSpecifiers[2], + ), + iniziale: new MapEntry(8, "iniziale", valueSpecifiers[2]), + "iniziale secondo nome": new MapEntry( + 21, + "iniziale secondo nome", + valueSpecifiers[2], + ), + ir: new MapEntry(2, "ir", valueSpecifiers[12]), + isim: new MapEntry(4, "isim", valueSpecifiers[0]), + "i\u015f alan kodu": new MapEntry( + 12, + "i\u015f alan kodu", + valueSpecifiers[17], + ), + "i\u015f telefonu": new MapEntry( + 11, + "i\u015f telefonu", + valueSpecifiers[17], + ), + "i\u015f \xfcnvan\u0131": new MapEntry( + 9, + "i\u015f \xfcnvan\u0131", + valueSpecifiers[5], + ), + jabber: new MapEntry(6, "jabber", valueSpecifiers[24]), + "job title": new MapEntry(9, "job title", valueSpecifiers[5]), + jobbretningsnummer: new MapEntry( + 18, + "jobbretningsnummer", + valueSpecifiers[17], + ), + jobbtelefon: new MapEntry(11, "jobbtelefon", valueSpecifiers[17]), + jobbtitel: new MapEntry(9, "jobbtitel", valueSpecifiers[5]), + jobtitle: new MapEntry(8, "jobtitle", valueSpecifiers[5]), + "jude\u021b": new MapEntry(5, "jude\u021b", valueSpecifiers[9]), + "k.": new MapEntry(2, "k.", valueSpecifiers[7]), + katu: new MapEntry(4, "katu", valueSpecifiers[7]), + katuosoite: new MapEntry(10, "katuosoite", valueSpecifiers[7]), + kaupunki: new MapEntry(8, "kaupunki", valueSpecifiers[8]), + "kodin suuntanumero": new MapEntry( + 18, + "kodin suuntanumero", + valueSpecifiers[16], + ), + "koko nimi": new MapEntry(9, "koko nimi", valueSpecifiers[0]), + kommun: new MapEntry(6, "kommun", valueSpecifiers[8]), + kontor: new MapEntry(6, "kontor", valueSpecifiers[14]), + kontorstelefon: new MapEntry(14, "kontorstelefon", valueSpecifiers[17]), + koti: new MapEntry(4, "koti", valueSpecifiers[16]), + kotinro: new MapEntry(7, "kotinro", valueSpecifiers[16]), + kotinumero: new MapEntry(10, "kotinumero", valueSpecifiers[16]), + "kotipuh.": new MapEntry(8, "kotipuh.", valueSpecifiers[16]), + kotipuhelin: new MapEntry(11, "kotipuhelin", valueSpecifiers[16]), + krajina: new MapEntry(7, "krajina", valueSpecifiers[11]), + "krst meno": new MapEntry(9, "krst meno", valueSpecifiers[1]), + "krst. meno": new MapEntry(10, "krst. meno", valueSpecifiers[1]), + "krstn\xe9": new MapEntry(6, "krstn\xe9", valueSpecifiers[1]), + "krstn\xe9 meno": new MapEntry(11, "krstn\xe9 meno", valueSpecifiers[1]), + "kurulu\u015f": new MapEntry(7, "kurulu\u015f", valueSpecifiers[14]), + kurum: new MapEntry(5, "kurum", valueSpecifiers[14]), + kutsumanimi: new MapEntry(11, "kutsumanimi", valueSpecifiers[1]), + "ku\u0107na adresa": new MapEntry( + 12, + "ku\u0107na adresa", + valueSpecifiers[7], + ), + "ku\u0107ni telefon": new MapEntry( + 13, + "ku\u0107ni telefon", + valueSpecifiers[16], + ), + kveldsretningsnummer: new MapEntry( + 20, + "kveldsretningsnummer", + valueSpecifiers[16], + ), + kveldstelefon: new MapEntry(13, "kveldstelefon", valueSpecifiers[16]), + "kv\xe4llsnummer": new MapEntry(12, "kv\xe4llsnummer", valueSpecifiers[16]), + "l name": new MapEntry(6, "l name", valueSpecifiers[3]), + land: new MapEntry(4, "land", valueSpecifiers[11]), + last: new MapEntry(4, "last", valueSpecifiers[3]), + "last name": new MapEntry(9, "last name", valueSpecifiers[3]), + lastname: new MapEntry(8, "lastname", valueSpecifiers[3]), + "linea indirizzo": new MapEntry(15, "linea indirizzo", valueSpecifiers[7]), + "lloc de treball": new MapEntry(15, "lloc de treball", valueSpecifiers[5]), + lname: new MapEntry(5, "lname", valueSpecifiers[3]), + "l\xe4n": new MapEntry(3, "l\xe4n", valueSpecifiers[9]), + "l\xe4\xe4ni": new MapEntry(5, "l\xe4\xe4ni", valueSpecifiers[9]), + "m-navn": new MapEntry(6, "m-navn", valueSpecifiers[2]), + maa: new MapEntry(3, "maa", valueSpecifiers[11]), + mail: new MapEntry(4, "mail", valueSpecifiers[6]), + "matkap.": new MapEntry(7, "matkap.", valueSpecifiers[18]), + "matkapuhelimen operaattoritunnus": new MapEntry( + 32, + "matkapuhelimen operaattoritunnus", + valueSpecifiers[18], + ), + matkapuhelin: new MapEntry(12, "matkapuhelin", valueSpecifiers[18]), + matronyme: new MapEntry(9, "matronyme", valueSpecifiers[2]), + meio: new MapEntry(4, "meio", valueSpecifiers[2]), + mejl: new MapEntry(4, "mejl", valueSpecifiers[6]), + mejladress: new MapEntry(10, "mejladress", valueSpecifiers[6]), + mellan: new MapEntry(6, "mellan", valueSpecifiers[2]), + "mellan initial": new MapEntry(14, "mellan initial", valueSpecifiers[2]), + mellaninitial: new MapEntry(13, "mellaninitial", valueSpecifiers[2]), + mellannamn: new MapEntry(10, "mellannamn", valueSpecifiers[2]), + mellem: new MapEntry(6, "mellem", valueSpecifiers[2]), + "mellem navn": new MapEntry(11, "mellem navn", valueSpecifiers[2]), + "mellom-": new MapEntry(7, "mellom-", valueSpecifiers[2]), + mellomnavn: new MapEntry(10, "mellomnavn", valueSpecifiers[2]), + meno: new MapEntry(4, "meno", valueSpecifiers[0]), + meslek: new MapEntry(6, "meslek", valueSpecifiers[5]), + "mesle\u011fi": new MapEntry(7, "mesle\u011fi", valueSpecifiers[5]), + "messagerie \xe9lectronique": new MapEntry( + 23, + "messagerie \xe9lectronique", + valueSpecifiers[6], + ), + messageur: new MapEntry(9, "messageur", valueSpecifiers[19]), + mesto: new MapEntry(5, "mesto", valueSpecifiers[8]), + middle: new MapEntry(6, "middle", valueSpecifiers[2]), + "middle initial": new MapEntry(14, "middle initial", valueSpecifiers[2]), + "middle name": new MapEntry(11, "middle name", valueSpecifiers[2]), + middleinitial: new MapEntry(13, "middleinitial", valueSpecifiers[2]), + middlename: new MapEntry(10, "middlename", valueSpecifiers[2]), + mobiel: new MapEntry(6, "mobiel", valueSpecifiers[18]), + "mobiele telefoon": new MapEntry( + 16, + "mobiele telefoon", + valueSpecifiers[18], + ), + mobiili: new MapEntry(7, "mobiili", valueSpecifiers[18]), + mobil: new MapEntry(5, "mobil", valueSpecifiers[18]), + "mobil telefon": new MapEntry(13, "mobil telefon", valueSpecifiers[18]), + "mobile area code": new MapEntry( + 16, + "mobile area code", + valueSpecifiers[18], + ), + "mobile areacode": new MapEntry(15, "mobile areacode", valueSpecifiers[18]), + "mobile number": new MapEntry(13, "mobile number", valueSpecifiers[18]), + "mobile phone": new MapEntry(12, "mobile phone", valueSpecifiers[18]), + mobileareacode: new MapEntry(14, "mobileareacode", valueSpecifiers[18]), + mobilenumber: new MapEntry(12, "mobilenumber", valueSpecifiers[18]), + mobilephone: new MapEntry(11, "mobilephone", valueSpecifiers[18]), + "mobilni telefon": new MapEntry(15, "mobilni telefon", valueSpecifiers[18]), + "mobiln\xe1 predvo\u013eba": new MapEntry( + 17, + "mobiln\xe1 predvo\u013eba", + valueSpecifiers[18], + ), + "mobiln\xfd telef\xf3n": new MapEntry( + 15, + "mobiln\xfd telef\xf3n", + valueSpecifiers[18], + ), + mobilretningsnummer: new MapEntry( + 19, + "mobilretningsnummer", + valueSpecifiers[18], + ), + mobiltel: new MapEntry(8, "mobiltel", valueSpecifiers[18]), + mobiltelefon: new MapEntry(12, "mobiltelefon", valueSpecifiers[18]), + mobitel: new MapEntry(7, "mobitel", valueSpecifiers[18]), + msn: new MapEntry(3, "msn", valueSpecifiers[25]), + "m\xe9l.": new MapEntry(4, "m\xe9l.", valueSpecifiers[6]), + "m\xf2bil": new MapEntry(5, "m\xf2bil", valueSpecifiers[18]), + "m\xf3vil": new MapEntry(5, "m\xf3vil", valueSpecifiers[18]), + naam: new MapEntry(4, "naam", valueSpecifiers[0]), + nacimiento: new MapEntry(10, "nacimiento", valueSpecifiers[4]), + naissance: new MapEntry(9, "naissance", valueSpecifiers[4]), + "naixen\xe7a": new MapEntry(8, "naixen\xe7a", valueSpecifiers[4]), + name: new MapEntry(4, "name", valueSpecifiers[0]), + namef: new MapEntry(5, "namef", valueSpecifiers[1]), + namel: new MapEntry(5, "namel", valueSpecifiers[3]), + namn: new MapEntry(4, "namn", valueSpecifiers[0]), + narodeniny: new MapEntry(10, "narodeniny", valueSpecifiers[4]), + "naroden\xfd/\xe1": new MapEntry( + 10, + "naroden\xfd/\xe1", + valueSpecifiers[4], + ), + nascido: new MapEntry(7, "nascido", valueSpecifiers[4]), + "nascido(a)": new MapEntry(10, "nascido(a)", valueSpecifiers[4]), + nascut: new MapEntry(6, "nascut", valueSpecifiers[4]), + "nato/a": new MapEntry(6, "nato/a", valueSpecifiers[4]), + navn: new MapEntry(4, "navn", valueSpecifiers[0]), + nazwisko: new MapEntry(8, "nazwisko", valueSpecifiers[3]), + netnummer: new MapEntry(9, "netnummer", valueSpecifiers[12]), + "netnummer 's avonds": new MapEntry( + 19, + "netnummer 's avonds", + valueSpecifiers[16], + ), + "netnummer gsm": new MapEntry(13, "netnummer GSM", valueSpecifiers[18]), + "netnummer bedrijf": new MapEntry( + 17, + "netnummer bedrijf", + valueSpecifiers[17], + ), + "netnummer mobiel": new MapEntry( + 16, + "netnummer mobiel", + valueSpecifiers[18], + ), + "netnummer mobiele telefoon": new MapEntry( + 26, + "netnummer mobiele telefoon", + valueSpecifiers[18], + ), + "netnummer overdag": new MapEntry( + 17, + "netnummer overdag", + valueSpecifiers[17], + ), + "netnummer priv\xe9": new MapEntry( + 15, + "netnummer priv\xe9", + valueSpecifiers[16], + ), + "netnummer semafoon": new MapEntry( + 18, + "netnummer semafoon", + valueSpecifiers[19], + ), + "netnummer thuis": new MapEntry(15, "netnummer thuis", valueSpecifiers[16]), + "netnummer werk": new MapEntry(14, "netnummer werk", valueSpecifiers[17]), + "netnummer zakelijk": new MapEntry( + 18, + "netnummer zakelijk", + valueSpecifiers[17], + ), + nick: new MapEntry(4, "nick", valueSpecifiers[21]), + nimi: new MapEntry(4, "nimi", valueSpecifiers[0]), + nom: new MapEntry(3, "nom", valueSpecifiers[3]), + "nom complet": new MapEntry(11, "nom complet", valueSpecifiers[0]), + "nom de bapt\xeame": new MapEntry( + 14, + "nom de bapt\xeame", + valueSpecifiers[1], + ), + "nom de famille": new MapEntry(14, "nom de famille", valueSpecifiers[3]), + "nom entier": new MapEntry(10, "nom entier", valueSpecifiers[0]), + "nom matronymique": new MapEntry( + 16, + "nom matronymique", + valueSpecifiers[2], + ), + "nom patronyme": new MapEntry(13, "nom patronyme", valueSpecifiers[3]), + "nom patronymique": new MapEntry( + 16, + "nom patronymique", + valueSpecifiers[3], + ), + nombre: new MapEntry(6, "nombre", valueSpecifiers[1]), + "nombre completo": new MapEntry(15, "nombre completo", valueSpecifiers[0]), + nome: new MapEntry(4, "nome", valueSpecifiers[1]), + "nome completo": new MapEntry(13, "nome completo", valueSpecifiers[0]), + "nome de baptismo": new MapEntry( + 16, + "nome de baptismo", + valueSpecifiers[1], + ), + "nome do meio": new MapEntry(12, "nome do meio", valueSpecifiers[2]), + "nome e cognome": new MapEntry(14, "nome e cognome", valueSpecifiers[0]), + nomedomeio: new MapEntry(10, "nomedomeio", valueSpecifiers[2]), + nume: new MapEntry(4, "nume", valueSpecifiers[0]), + "nume botez": new MapEntry(10, "nume botez", valueSpecifiers[1]), + "nume complet": new MapEntry(12, "nume complet", valueSpecifiers[0]), + "nume familie": new MapEntry(12, "nume familie", valueSpecifiers[3]), + "nume \xeentreg": new MapEntry(11, "nume \xeentreg", valueSpecifiers[0]), + "numero di tel. ufficio": new MapEntry( + 22, + "numero di tel. ufficio", + valueSpecifiers[17], + ), + "numero di telefono": new MapEntry( + 18, + "numero di telefono", + valueSpecifiers[13], + ), + "numero di telefono casa": new MapEntry( + 23, + "numero di telefono casa", + valueSpecifiers[16], + ), + "numero di telefono lavoro": new MapEntry( + 25, + "numero di telefono lavoro", + valueSpecifiers[17], + ), + "numero telefono": new MapEntry(15, "numero telefono", valueSpecifiers[13]), + nummer: new MapEntry(6, "nummer", valueSpecifiers[13]), + "num\xe9ro de mobile": new MapEntry( + 16, + "num\xe9ro de mobile", + valueSpecifiers[18], + ), + "num\xe9ro de t\xe9l.": new MapEntry( + 14, + "num\xe9ro de t\xe9l.", + valueSpecifiers[13], + ), + "num\xe9ro de t\xe9l\xe9avertisseur": new MapEntry( + 25, + "num\xe9ro de t\xe9l\xe9avertisseur", + valueSpecifiers[19], + ), + "num\xe9ro de t\xe9l\xe9phone": new MapEntry( + 19, + "num\xe9ro de t\xe9l\xe9phone", + valueSpecifiers[13], + ), + "num\xe9ro de t\xe9l\xe9phone domicile": new MapEntry( + 28, + "num\xe9ro de t\xe9l\xe9phone domicile", + valueSpecifiers[16], + ), + "num\xe9ro postal": new MapEntry( + 13, + "num\xe9ro postal", + valueSpecifiers[10], + ), + "num\xe9ro postal d'acheminement": new MapEntry( + 28, + "num\xe9ro postal d'acheminement", + valueSpecifiers[10], + ), + "num\u0103r de telefon": new MapEntry( + 16, + "num\u0103r de telefon", + valueSpecifiers[13], + ), + "num\u0103r pager": new MapEntry( + 11, + "num\u0103r pager", + valueSpecifiers[19], + ), + "num\u0103r telefon": new MapEntry( + 13, + "num\u0103r telefon", + valueSpecifiers[13], + ), + "n\xe9(e) le": new MapEntry(8, "n\xe9(e) le", valueSpecifiers[4]), + "n\xfamero de telefone": new MapEntry( + 18, + "n\xfamero de telefone", + valueSpecifiers[13], + ), + "n\xfamero de tel\xe8fon": new MapEntry( + 17, + "n\xfamero de tel\xe8fon", + valueSpecifiers[13], + ), + "n\xfamero de tel\xe9fono": new MapEntry( + 18, + "n\xfamero de tel\xe9fono", + valueSpecifiers[13], + ), + "omdr\xe5denr.": new MapEntry(10, "omdr\xe5denr.", valueSpecifiers[12]), + "omr\xe5denummer": new MapEntry(12, "omr\xe5denummer", valueSpecifiers[12]), + "omr\xe5denummer om dagen": new MapEntry( + 21, + "omr\xe5denummer om dagen", + valueSpecifiers[17], + ), + "omr\xe5denummer til persons\xf8ger": new MapEntry( + 28, + "omr\xe5denummer til persons\xf8ger", + valueSpecifiers[19], + ), + "omr\xe5denummer, aften": new MapEntry( + 19, + "omr\xe5denummer, aften", + valueSpecifiers[16], + ), + "omr\xe5denummer, arbejde": new MapEntry( + 21, + "omr\xe5denummer, arbejde", + valueSpecifiers[17], + ), + "omr\xe5denummer, dag": new MapEntry( + 17, + "omr\xe5denummer, dag", + valueSpecifiers[17], + ), + "omr\xe5denummer, firma": new MapEntry( + 19, + "omr\xe5denummer, firma", + valueSpecifiers[17], + ), + "omr\xe5denummer, mobil": new MapEntry( + 19, + "omr\xe5denummer, mobil", + valueSpecifiers[18], + ), + "omr\xe5denummer, persons\xf8ger": new MapEntry( + 25, + "omr\xe5denummer, persons\xf8ger", + valueSpecifiers[19], + ), + "omr\xe5denummer, privat": new MapEntry( + 20, + "omr\xe5denummer, privat", + valueSpecifiers[16], + ), + "omr\xe5denummer, selskab": new MapEntry( + 21, + "omr\xe5denummer, selskab", + valueSpecifiers[17], + ), + operaattoritunnus: new MapEntry( + 17, + "operaattoritunnus", + valueSpecifiers[18], + ), + "ora\u0219": new MapEntry(4, "ora\u0219", valueSpecifiers[8]), + organisaatio: new MapEntry(12, "organisaatio", valueSpecifiers[14]), + organisasjon: new MapEntry(12, "organisasjon", valueSpecifiers[14]), + organisatie: new MapEntry(11, "organisatie", valueSpecifiers[14]), + organisation: new MapEntry(12, "organisation", valueSpecifiers[14]), + organisme: new MapEntry(9, "organisme", valueSpecifiers[14]), + "organitzaci\xf3": new MapEntry(12, "organitzaci\xf3", valueSpecifiers[14]), + organizacija: new MapEntry(12, "organizacija", valueSpecifiers[14]), + "organizaci\xf3n": new MapEntry(12, "organizaci\xf3n", valueSpecifiers[14]), + organizasyon: new MapEntry(12, "organizasyon", valueSpecifiers[14]), + organization: new MapEntry(12, "organization", valueSpecifiers[14]), + "organiza\xe7\xe3o": new MapEntry( + 11, + "organiza\xe7\xe3o", + valueSpecifiers[14], + ), + "organiza\u021bie": new MapEntry( + 11, + "organiza\u021bie", + valueSpecifiers[14], + ), + organizzazione: new MapEntry(14, "organizzazione", valueSpecifiers[14]), + "organiz\xe1cia": new MapEntry(11, "organiz\xe1cia", valueSpecifiers[14]), + ort: new MapEntry(3, "ort", valueSpecifiers[8]), + osavaltio: new MapEntry(9, "osavaltio", valueSpecifiers[9]), + osoite: new MapEntry(6, "osoite", valueSpecifiers[7]), + "osoite 1": new MapEntry(8, "osoite 1", valueSpecifiers[7]), + paese: new MapEntry(5, "paese", valueSpecifiers[11]), + pager: new MapEntry(5, "pager", valueSpecifiers[19]), + "pager area code": new MapEntry(15, "pager area code", valueSpecifiers[19]), + "pager areacode": new MapEntry(14, "pager areacode", valueSpecifiers[19]), + "pager phone": new MapEntry(11, "pager phone", valueSpecifiers[19]), + pagerareacode: new MapEntry(13, "pagerareacode", valueSpecifiers[19]), + pagerphone: new MapEntry(10, "pagerphone", valueSpecifiers[19]), + pagette: new MapEntry(7, "pagette", valueSpecifiers[19]), + pageur: new MapEntry(6, "pageur", valueSpecifiers[19]), + paikkakunta: new MapEntry(11, "paikkakunta", valueSpecifiers[8]), + patronyme: new MapEntry(9, "patronyme", valueSpecifiers[3]), + pays: new MapEntry(4, "pays", valueSpecifiers[11]), + "pa\xeds": new MapEntry(4, "pa\xeds", valueSpecifiers[11]), + "persons\xf6k": new MapEntry(9, "persons\xf6k", valueSpecifiers[19]), + "persons\xf6kare": new MapEntry(12, "persons\xf6kare", valueSpecifiers[19]), + "persons\xf8ger": new MapEntry(11, "persons\xf8ger", valueSpecifiers[19]), + "persons\xf8ger nr.": new MapEntry( + 15, + "persons\xf8ger nr.", + valueSpecifiers[19], + ), + "persons\xf8kernr.": new MapEntry( + 14, + "persons\xf8kernr.", + valueSpecifiers[19], + ), + "persons\xf8kernummer": new MapEntry( + 17, + "persons\xf8kernummer", + valueSpecifiers[19], + ), + "petit nom": new MapEntry(9, "petit nom", valueSpecifiers[1]), + phone: new MapEntry(5, "phone", valueSpecifiers[13]), + "phone number": new MapEntry(12, "phone number", valueSpecifiers[13]), + phonenumber: new MapEntry(11, "phonenumber", valueSpecifiers[13]), + "pierwsze imi\u0119": new MapEntry( + 13, + "pierwsze imi\u0119", + valueSpecifiers[1], + ), + plaats: new MapEntry(6, "plaats", valueSpecifiers[8]), + pnome: new MapEntry(5, "pnome", valueSpecifiers[1]), + pnume: new MapEntry(5, "pnume", valueSpecifiers[1]), + posao: new MapEntry(5, "posao", valueSpecifiers[5]), + "poslovni telefon": new MapEntry( + 16, + "poslovni telefon", + valueSpecifiers[17], + ), + "post code": new MapEntry(9, "post code", valueSpecifiers[10]), + "posta elettronica": new MapEntry( + 17, + "posta elettronica", + valueSpecifiers[6], + ), + "posta kodu": new MapEntry(10, "posta kodu", valueSpecifiers[10]), + postal: new MapEntry(6, "postal", valueSpecifiers[10]), + "postal code": new MapEntry(11, "postal code", valueSpecifiers[10]), + postalcode: new MapEntry(10, "postalcode", valueSpecifiers[10]), + postcode: new MapEntry(8, "postcode", valueSpecifiers[10]), + poste: new MapEntry(5, "poste", valueSpecifiers[5]), + postinro: new MapEntry(8, "postinro", valueSpecifiers[10]), + postinumero: new MapEntry(11, "postinumero", valueSpecifiers[10]), + postitoimipaikka: new MapEntry(16, "postitoimipaikka", valueSpecifiers[8]), + "postnr.": new MapEntry(7, "postnr.", valueSpecifiers[10]), + postnummer: new MapEntry(10, "postnummer", valueSpecifiers[10]), + poststed: new MapEntry(8, "poststed", valueSpecifiers[8]), + "pozivni broj": new MapEntry(12, "pozivni broj", valueSpecifiers[12]), + "poz\xedcia": new MapEntry(7, "poz\xedcia", valueSpecifiers[5]), + "po\u0161tanski br.": new MapEntry( + 13, + "po\u0161tanski br.", + valueSpecifiers[10], + ), + "po\u0161tanski broj": new MapEntry( + 14, + "po\u0161tanski broj", + valueSpecifiers[10], + ), + "po\u0161tov\xe9 smerovacie \u010d\xedslo": new MapEntry( + 24, + "po\u0161tov\xe9 smerovacie \u010d\xedslo", + valueSpecifiers[10], + ), + "pracovn\xe1 poz\xedcia": new MapEntry( + 16, + "pracovn\xe1 poz\xedcia", + valueSpecifiers[5], + ), + "pracovn\xe1 predvo\u013eba": new MapEntry( + 18, + "pracovn\xe1 predvo\u013eba", + valueSpecifiers[17], + ), + "pracovn\xfd telef\xf3n": new MapEntry( + 16, + "pracovn\xfd telef\xf3n", + valueSpecifiers[17], + ), + "pre nume": new MapEntry(8, "pre nume", valueSpecifiers[1]), + "predvo\u013eba": new MapEntry(9, "predvo\u013eba", valueSpecifiers[12]), + "predvo\u013eba do pr\xe1ce": new MapEntry( + 18, + "predvo\u013eba do pr\xe1ce", + valueSpecifiers[17], + ), + "predvo\u013eba domov": new MapEntry( + 15, + "predvo\u013eba domov", + valueSpecifiers[16], + ), + "predvo\u013eba firmy": new MapEntry( + 15, + "predvo\u013eba firmy", + valueSpecifiers[17], + ), + "predvo\u013eba mobiln\xe9ho telef\xf3nu": new MapEntry( + 28, + "predvo\u013eba mobiln\xe9ho telef\xf3nu", + valueSpecifiers[18], + ), + "predvo\u013eba pagera": new MapEntry( + 16, + "predvo\u013eba pagera", + valueSpecifiers[19], + ), + "predvo\u013eba spolo\u010dnosti": new MapEntry( + 21, + "predvo\u013eba spolo\u010dnosti", + valueSpecifiers[17], + ), + "pref. cercapersone": new MapEntry( + 18, + "pref. cercapersone", + valueSpecifiers[19], + ), + prefijo: new MapEntry(7, "prefijo", valueSpecifiers[12]), + prefisso: new MapEntry(8, "prefisso", valueSpecifiers[12]), + "prefisso cell.": new MapEntry(14, "prefisso cell.", valueSpecifiers[18]), + "prefisso cellulare": new MapEntry( + 18, + "prefisso cellulare", + valueSpecifiers[18], + ), + "prefisso cercapers.": new MapEntry( + 19, + "prefisso cercapers.", + valueSpecifiers[19], + ), + "prefisso cercapersone": new MapEntry( + 21, + "prefisso cercapersone", + valueSpecifiers[19], + ), + "prefisso lavoro": new MapEntry(15, "prefisso lavoro", valueSpecifiers[17]), + "prefisso locale": new MapEntry(15, "prefisso locale", valueSpecifiers[12]), + "prefisso numero lavoro": new MapEntry( + 22, + "prefisso numero lavoro", + valueSpecifiers[17], + ), + "prefisso ore serali": new MapEntry( + 19, + "prefisso ore serali", + valueSpecifiers[16], + ), + "prefisso tel. privato": new MapEntry( + 21, + "prefisso tel. privato", + valueSpecifiers[16], + ), + "prefisso telefono abitazione": new MapEntry( + 28, + "prefisso telefono abitazione", + valueSpecifiers[16], + ), + "prefisso telefono azienda": new MapEntry( + 25, + "prefisso telefono azienda", + valueSpecifiers[17], + ), + "prefisso telefono casa": new MapEntry( + 22, + "prefisso telefono casa", + valueSpecifiers[16], + ), + "prefisso telefono cellulare": new MapEntry( + 27, + "prefisso telefono cellulare", + valueSpecifiers[18], + ), + "prefisso telefono di casa": new MapEntry( + 25, + "prefisso telefono di casa", + valueSpecifiers[16], + ), + "prefisso telefono lavoro": new MapEntry( + 24, + "prefisso telefono lavoro", + valueSpecifiers[17], + ), + "prefisso telefono ufficio": new MapEntry( + 25, + "prefisso telefono ufficio", + valueSpecifiers[17], + ), + "prefisso ufficio": new MapEntry( + 16, + "prefisso ufficio", + valueSpecifiers[17], + ), + prefix: new MapEntry(6, "prefix", valueSpecifiers[12]), + "prefix mobil": new MapEntry(12, "prefix mobil", valueSpecifiers[18]), + "prefix pager": new MapEntry(12, "prefix pager", valueSpecifiers[19]), + "prefix telefon acas\u0103": new MapEntry( + 20, + "prefix telefon acas\u0103", + valueSpecifiers[16], + ), + "prefix telefon birou": new MapEntry( + 20, + "prefix telefon birou", + valueSpecifiers[17], + ), + "prefix telefon companie": new MapEntry( + 23, + "prefix telefon companie", + valueSpecifiers[17], + ), + "prefix telefon domiciliu": new MapEntry( + 24, + "prefix telefon domiciliu", + valueSpecifiers[16], + ), + "prefix telefon lucru": new MapEntry( + 20, + "prefix telefon lucru", + valueSpecifiers[17], + ), + "prefix telefon sear\u0103": new MapEntry( + 20, + "prefix telefon sear\u0103", + valueSpecifiers[16], + ), + "prefix telefon serviciu": new MapEntry( + 23, + "prefix telefon serviciu", + valueSpecifiers[17], + ), + "prefix telefon zi": new MapEntry( + 17, + "prefix telefon zi", + valueSpecifiers[17], + ), + "prefix zonal": new MapEntry(12, "prefix zonal", valueSpecifiers[12]), + prenume: new MapEntry(7, "prenume", valueSpecifiers[1]), + "prenume secundar": new MapEntry( + 16, + "prenume secundar", + valueSpecifiers[2], + ), + prezime: new MapEntry(7, "prezime", valueSpecifiers[3]), + primeiro: new MapEntry(8, "primeiro", valueSpecifiers[1]), + "primeiro nome": new MapEntry(13, "primeiro nome", valueSpecifiers[1]), + primeironome: new MapEntry(12, "primeironome", valueSpecifiers[1]), + privat: new MapEntry(6, "privat", valueSpecifiers[16]), + profesija: new MapEntry(9, "profesija", valueSpecifiers[5]), + profession: new MapEntry(10, "profession", valueSpecifiers[5]), + province: new MapEntry(8, "province", valueSpecifiers[9]), + provincia: new MapEntry(9, "provincia", valueSpecifiers[9]), + provins: new MapEntry(7, "provins", valueSpecifiers[9]), + "prov\xedncia": new MapEntry(9, "prov\xedncia", valueSpecifiers[9]), + "pr\xe9nom": new MapEntry(6, "pr\xe9nom", valueSpecifiers[1]), + "pr\xe9nom usuel": new MapEntry(12, "pr\xe9nom usuel", valueSpecifiers[1]), + "puesto de trabajo": new MapEntry( + 17, + "puesto de trabajo", + valueSpecifiers[5], + ), + "puh.num.": new MapEntry(8, "puh.num.", valueSpecifiers[13]), + puhelin: new MapEntry(7, "puhelin", valueSpecifiers[13]), + "puhelin p\xe4iv\xe4saikaan": new MapEntry( + 20, + "puhelin p\xe4iv\xe4saikaan", + valueSpecifiers[17], + ), + puhelinnro: new MapEntry(10, "puhelinnro", valueSpecifiers[13]), + puhelinnumero: new MapEntry(13, "puhelinnumero", valueSpecifiers[13]), + "puno ime": new MapEntry(8, "puno ime", valueSpecifiers[0]), + "p\xe4ivisin": new MapEntry(8, "p\xe4ivisin", valueSpecifiers[17]), + qq: new MapEntry(2, "qq", valueSpecifiers[26]), + qualifica: new MapEntry(9, "qualifica", valueSpecifiers[5]), + radiomessageur: new MapEntry(14, "radiomessageur", valueSpecifiers[19]), + "regi\xe3o": new MapEntry(6, "regi\xe3o", valueSpecifiers[9]), + "retningsnr.": new MapEntry(11, "retningsnr.", valueSpecifiers[12]), + "retningsnr., persons\xf8ker": new MapEntry( + 24, + "retningsnr., persons\xf8ker", + valueSpecifiers[19], + ), + retningsnummer: new MapEntry(14, "retningsnummer", valueSpecifiers[12]), + "retningsnummer, arbeid": new MapEntry( + 22, + "retningsnummer, arbeid", + valueSpecifiers[17], + ), + "retningsnummer, bedrift": new MapEntry( + 23, + "retningsnummer, bedrift", + valueSpecifiers[17], + ), + "retningsnummer, dag": new MapEntry( + 19, + "retningsnummer, dag", + valueSpecifiers[17], + ), + "retningsnummer, dagtid": new MapEntry( + 22, + "retningsnummer, dagtid", + valueSpecifiers[17], + ), + "retningsnummer, firma": new MapEntry( + 21, + "retningsnummer, firma", + valueSpecifiers[17], + ), + "retningsnummer, hjem": new MapEntry( + 20, + "retningsnummer, hjem", + valueSpecifiers[16], + ), + "retningsnummer, jobb": new MapEntry( + 20, + "retningsnummer, jobb", + valueSpecifiers[17], + ), + "retningsnummer, kveld": new MapEntry( + 21, + "retningsnummer, kveld", + valueSpecifiers[16], + ), + "retningsnummer, kveldstid": new MapEntry( + 25, + "retningsnummer, kveldstid", + valueSpecifiers[16], + ), + "retningsnummer, mobil": new MapEntry( + 21, + "retningsnummer, mobil", + valueSpecifiers[18], + ), + "retningsnummer, mobiltelefon": new MapEntry( + 28, + "retningsnummer, mobiltelefon", + valueSpecifiers[18], + ), + "retningsnummer, persons\xf8ker": new MapEntry( + 27, + "retningsnummer, persons\xf8ker", + valueSpecifiers[19], + ), + "retningsnummer, selskap": new MapEntry( + 23, + "retningsnummer, selskap", + valueSpecifiers[17], + ), + riktnr: new MapEntry(6, "riktnr", valueSpecifiers[12]), + riktnummer: new MapEntry(10, "riktnummer", valueSpecifiers[12]), + "riktnummer arbetet": new MapEntry( + 18, + "riktnummer arbetet", + valueSpecifiers[17], + ), + "riktnummer dagtid": new MapEntry( + 17, + "riktnummer dagtid", + valueSpecifiers[17], + ), + "riktnummer f\xf6retaget": new MapEntry( + 20, + "riktnummer f\xf6retaget", + valueSpecifiers[17], + ), + "riktnummer hem": new MapEntry(14, "riktnummer hem", valueSpecifiers[16]), + "riktnummer kontoret": new MapEntry( + 19, + "riktnummer kontoret", + valueSpecifiers[17], + ), + "riktnummer kv\xe4llstid": new MapEntry( + 20, + "riktnummer kv\xe4llstid", + valueSpecifiers[16], + ), + "riktnummer mobil": new MapEntry( + 16, + "riktnummer mobil", + valueSpecifiers[18], + ), + "riktnummer mobiltelefon": new MapEntry( + 23, + "riktnummer mobiltelefon", + valueSpecifiers[18], + ), + "riktnummer persons\xf6k": new MapEntry( + 20, + "riktnummer persons\xf6k", + valueSpecifiers[19], + ), + "riktnummer persons\xf6kare": new MapEntry( + 23, + "riktnummer persons\xf6kare", + valueSpecifiers[19], + ), + "ro\u0111endan": new MapEntry(8, "ro\u0111endan", valueSpecifiers[4]), + rua: new MapEntry(3, "rua", valueSpecifiers[7]), + rue: new MapEntry(3, "rue", valueSpecifiers[7]), + "ruolo professionale": new MapEntry( + 19, + "ruolo professionale", + valueSpecifiers[5], + ), + "r\xe9cepteur de radiomessagerie": new MapEntry( + 28, + "r\xe9cepteur de radiomessagerie", + valueSpecifiers[19], + ), + "r\xe9gion": new MapEntry(6, "r\xe9gion", valueSpecifiers[9]), + "s-posti": new MapEntry(7, "s-posti", valueSpecifiers[6]), + "second pr\xe9nom": new MapEntry( + 13, + "second pr\xe9nom", + valueSpecifiers[2], + ), + "secondo nome": new MapEntry(12, "secondo nome", valueSpecifiers[2]), + secundar: new MapEntry(8, "secundar", valueSpecifiers[2]), + "segon nom": new MapEntry(9, "segon nom", valueSpecifiers[2]), + "segundo nombre": new MapEntry(14, "segundo nombre", valueSpecifiers[2]), + selskak: new MapEntry(7, "selskak", valueSpecifiers[14]), + selskap: new MapEntry(7, "selskap", valueSpecifiers[14]), + semafoon: new MapEntry(8, "semafoon", valueSpecifiers[19]), + skype: new MapEntry(5, "skype", valueSpecifiers[27]), + "slu\u017ebeni telefon": new MapEntry( + 16, + "slu\u017ebeni telefon", + valueSpecifiers[17], + ), + "smerovacie \u010d\xedslo": new MapEntry( + 16, + "smerovacie \u010d\xedslo", + valueSpecifiers[10], + ), + sobrenome: new MapEntry(9, "sobrenome", valueSpecifiers[3]), + "societ\xe0": new MapEntry(7, "societ\xe0", valueSpecifiers[14]), + "soci\xe9t\xe9": new MapEntry(7, "soci\xe9t\xe9", valueSpecifiers[14]), + soyad: new MapEntry(5, "soyad", valueSpecifiers[3]), + "soyad\u0131": new MapEntry(6, "soyad\u0131", valueSpecifiers[3]), + soyisim: new MapEntry(7, "soyisim", valueSpecifiers[3]), + soyismi: new MapEntry(7, "soyismi", valueSpecifiers[3]), + "spolo\u010dnos\u0165": new MapEntry( + 10, + "spolo\u010dnos\u0165", + valueSpecifiers[14], + ), + staat: new MapEntry(5, "staat", valueSpecifiers[9]), + stad: new MapEntry(4, "stad", valueSpecifiers[8]), + stanowisko: new MapEntry(10, "stanowisko", valueSpecifiers[5]), + stat: new MapEntry(4, "stat", valueSpecifiers[9]), + state: new MapEntry(5, "state", valueSpecifiers[9]), + stato: new MapEntry(5, "stato", valueSpecifiers[9]), + sted: new MapEntry(4, "sted", valueSpecifiers[8]), + stilling: new MapEntry(8, "stilling", valueSpecifiers[5]), + straat: new MapEntry(6, "straat", valueSpecifiers[7]), + strada: new MapEntry(6, "strada", valueSpecifiers[7]), + "stredn\xe9": new MapEntry(7, "stredn\xe9", valueSpecifiers[2]), + "stredn\xe9 meno": new MapEntry(12, "stredn\xe9 meno", valueSpecifiers[2]), + street: new MapEntry(6, "street", valueSpecifiers[7]), + "street address": new MapEntry(14, "street address", valueSpecifiers[7]), + streetaddress: new MapEntry(13, "streetaddress", valueSpecifiers[7]), + suku: new MapEntry(4, "suku", valueSpecifiers[3]), + "sukun.": new MapEntry(6, "sukun.", valueSpecifiers[3]), + sukunimi: new MapEntry(8, "sukunimi", valueSpecifiers[3]), + surname: new MapEntry(7, "surname", valueSpecifiers[3]), + suuntanro: new MapEntry(9, "suuntanro", valueSpecifiers[12]), + suuntanumero: new MapEntry(12, "suuntanumero", valueSpecifiers[12]), + "suuntanumero iltaisin": new MapEntry( + 21, + "suuntanumero iltaisin", + valueSpecifiers[16], + ), + "suuntanumero koti": new MapEntry( + 17, + "suuntanumero koti", + valueSpecifiers[16], + ), + "suuntanumero ty\xf6": new MapEntry( + 16, + "suuntanumero ty\xf6", + valueSpecifiers[17], + ), + "suuntanumero yritys": new MapEntry( + 19, + "suuntanumero yritys", + valueSpecifiers[17], + ), + "syntym\xe4p\xe4iv\xe4": new MapEntry( + 12, + "syntym\xe4p\xe4iv\xe4", + valueSpecifiers[4], + ), + syntynyt: new MapEntry(8, "syntynyt", valueSpecifiers[4]), + "s\xe4hk\xf6posti": new MapEntry( + 10, + "s\xe4hk\xf6posti", + valueSpecifiers[6], + ), + "s\xe4hk\xf6postiosoite": new MapEntry( + 16, + "s\xe4hk\xf6postiosoite", + valueSpecifiers[6], + ), + "s\xe9maphone": new MapEntry(9, "s\xe9maphone", valueSpecifiers[19]), + "tam ad": new MapEntry(6, "tam ad", valueSpecifiers[0]), + "tam ad\u0131": new MapEntry(7, "tam ad\u0131", valueSpecifiers[0]), + "tam isim": new MapEntry(8, "tam isim", valueSpecifiers[0]), + tel: new MapEntry(3, "tel", valueSpecifiers[13]), + "tel.": new MapEntry(4, "tel.", valueSpecifiers[13]), + "tel. lavoro": new MapEntry(11, "tel. lavoro", valueSpecifiers[17]), + "tel. ufficio": new MapEntry(12, "tel. ufficio", valueSpecifiers[17]), + "tel. \u010d\xedslo": new MapEntry( + 10, + "tel. \u010d\xedslo", + valueSpecifiers[13], + ), + telefon: new MapEntry(7, "telefon", valueSpecifiers[13]), + "telefon (cep)": new MapEntry(13, "telefon (cep)", valueSpecifiers[18]), + "telefon (ev)": new MapEntry(12, "telefon (ev)", valueSpecifiers[16]), + "telefon (i\u015f)": new MapEntry( + 12, + "telefon (i\u015f)", + valueSpecifiers[17], + ), + "telefon acas\u0103": new MapEntry( + 13, + "telefon acas\u0103", + valueSpecifiers[16], + ), + "telefon arbetet": new MapEntry(15, "telefon arbetet", valueSpecifiers[17]), + "telefon birou": new MapEntry(13, "telefon birou", valueSpecifiers[17]), + "telefon celular": new MapEntry(15, "telefon celular", valueSpecifiers[18]), + "telefon companie": new MapEntry( + 16, + "telefon companie", + valueSpecifiers[17], + ), + "telefon dagtid": new MapEntry(14, "telefon dagtid", valueSpecifiers[17]), + "telefon domiciliu": new MapEntry( + 17, + "telefon domiciliu", + valueSpecifiers[16], + ), + "telefon f\xf6retaget": new MapEntry( + 17, + "telefon f\xf6retaget", + valueSpecifiers[17], + ), + "telefon hem": new MapEntry(11, "telefon hem", valueSpecifiers[16]), + "telefon kontoret": new MapEntry( + 16, + "telefon kontoret", + valueSpecifiers[17], + ), + "telefon kv\xe4llstid": new MapEntry( + 17, + "telefon kv\xe4llstid", + valueSpecifiers[16], + ), + "telefon lucru": new MapEntry(13, "telefon lucru", valueSpecifiers[17]), + "telefon mobil": new MapEntry(13, "telefon mobil", valueSpecifiers[18]), + "telefon no": new MapEntry(10, "telefon no", valueSpecifiers[13]), + "telefon numaras\u0131": new MapEntry( + 16, + "telefon numaras\u0131", + valueSpecifiers[13], + ), + "telefon pager": new MapEntry(13, "telefon pager", valueSpecifiers[19]), + "telefon sear\u0103": new MapEntry( + 13, + "telefon sear\u0103", + valueSpecifiers[16], + ), + "telefon serviciu": new MapEntry( + 16, + "telefon serviciu", + valueSpecifiers[17], + ), + "telefon tvrtke": new MapEntry(14, "telefon tvrtke", valueSpecifiers[17]), + "telefon zi": new MapEntry(10, "telefon zi", valueSpecifiers[17]), + "telefon, aften": new MapEntry(14, "telefon, aften", valueSpecifiers[16]), + "telefon, arbeid": new MapEntry(15, "telefon, arbeid", valueSpecifiers[17]), + "telefon, arbejde": new MapEntry( + 16, + "telefon, arbejde", + valueSpecifiers[17], + ), + "telefon, dag": new MapEntry(12, "telefon, dag", valueSpecifiers[17]), + "telefon, dagtid": new MapEntry(15, "telefon, dagtid", valueSpecifiers[17]), + "telefon, firma": new MapEntry(14, "telefon, firma", valueSpecifiers[17]), + "telefon, hjem": new MapEntry(13, "telefon, hjem", valueSpecifiers[16]), + "telefon, jobb": new MapEntry(13, "telefon, jobb", valueSpecifiers[17]), + "telefon, kveldstid": new MapEntry( + 18, + "telefon, kveldstid", + valueSpecifiers[16], + ), + "telefon, mobil": new MapEntry(14, "telefon, mobil", valueSpecifiers[18]), + telefone: new MapEntry(8, "telefone", valueSpecifiers[13]), + "telefone (casa)": new MapEntry(15, "telefone (casa)", valueSpecifiers[16]), + "telefone (celular)": new MapEntry( + 18, + "telefone (celular)", + valueSpecifiers[18], + ), + "telefone (diurno)": new MapEntry( + 17, + "telefone (diurno)", + valueSpecifiers[17], + ), + "telefone (empresa)": new MapEntry( + 18, + "telefone (empresa)", + valueSpecifiers[17], + ), + "telefone (noturno)": new MapEntry( + 18, + "telefone (noturno)", + valueSpecifiers[16], + ), + "telefone (pager)": new MapEntry( + 16, + "telefone (pager)", + valueSpecifiers[19], + ), + "telefone (trabalho)": new MapEntry( + 19, + "telefone (trabalho)", + valueSpecifiers[17], + ), + "telefone celular": new MapEntry( + 16, + "telefone celular", + valueSpecifiers[18], + ), + "telefone comercial": new MapEntry( + 18, + "telefone comercial", + valueSpecifiers[17], + ), + "telefone da empresa": new MapEntry( + 19, + "telefone da empresa", + valueSpecifiers[17], + ), + "telefone de casa": new MapEntry( + 16, + "telefone de casa", + valueSpecifiers[16], + ), + "telefone de dia": new MapEntry(15, "telefone de dia", valueSpecifiers[17]), + "telefone do trabalho": new MapEntry( + 20, + "telefone do trabalho", + valueSpecifiers[17], + ), + "telefone durante o dia": new MapEntry( + 22, + "telefone durante o dia", + valueSpecifiers[17], + ), + "telefone pager": new MapEntry(14, "telefone pager", valueSpecifiers[19]), + "telefone \xe0 noite": new MapEntry( + 16, + "telefone \xe0 noite", + valueSpecifiers[16], + ), + telefonecelular: new MapEntry(15, "telefonecelular", valueSpecifiers[18]), + telefonecomercial: new MapEntry( + 17, + "telefonecomercial", + valueSpecifiers[17], + ), + telefonedecasa: new MapEntry(14, "telefonedecasa", valueSpecifiers[16]), + telefonedia: new MapEntry(11, "telefonedia", valueSpecifiers[17]), + telefoneempresa: new MapEntry(15, "telefoneempresa", valueSpecifiers[17]), + telefonenoite: new MapEntry(13, "telefonenoite", valueSpecifiers[16]), + telefonepager: new MapEntry(13, "telefonepager", valueSpecifiers[19]), + telefonetrabalho: new MapEntry(16, "telefonetrabalho", valueSpecifiers[17]), + "telefonnr.": new MapEntry(10, "telefonnr.", valueSpecifiers[13]), + telefonnummer: new MapEntry(13, "telefonnummer", valueSpecifiers[13]), + telefono: new MapEntry(8, "telefono", valueSpecifiers[13]), + "telefono abitazione": new MapEntry( + 19, + "telefono abitazione", + valueSpecifiers[16], + ), + "telefono azienda": new MapEntry( + 16, + "telefono azienda", + valueSpecifiers[17], + ), + "telefono casa": new MapEntry(13, "telefono casa", valueSpecifiers[16]), + "telefono cell.": new MapEntry(14, "telefono cell.", valueSpecifiers[18]), + "telefono cellulare": new MapEntry( + 18, + "telefono cellulare", + valueSpecifiers[18], + ), + "telefono lavoro": new MapEntry(15, "telefono lavoro", valueSpecifiers[17]), + "telefono ore serali": new MapEntry( + 19, + "telefono ore serali", + valueSpecifiers[16], + ), + "telefono ore ufficio": new MapEntry( + 20, + "telefono ore ufficio", + valueSpecifiers[17], + ), + "telefono privato": new MapEntry( + 16, + "telefono privato", + valueSpecifiers[16], + ), + "telefono ufficio": new MapEntry( + 16, + "telefono ufficio", + valueSpecifiers[17], + ), + "telefonski broj": new MapEntry(15, "telefonski broj", valueSpecifiers[13]), + "telefoon 's avonds": new MapEntry( + 18, + "telefoon 's avonds", + valueSpecifiers[16], + ), + "telefoon bedrijf": new MapEntry( + 16, + "telefoon bedrijf", + valueSpecifiers[17], + ), + "telefoon overdag": new MapEntry( + 16, + "telefoon overdag", + valueSpecifiers[17], + ), + "telefoon priv\xe9": new MapEntry( + 14, + "telefoon priv\xe9", + valueSpecifiers[16], + ), + "telefoon thuis": new MapEntry(14, "telefoon thuis", valueSpecifiers[16]), + "telefoon werk": new MapEntry(13, "telefoon werk", valueSpecifiers[17]), + "telefoon zakelijk": new MapEntry( + 17, + "telefoon zakelijk", + valueSpecifiers[17], + ), + "telefoonnnummer thuis": new MapEntry( + 21, + "telefoonnnummer thuis", + valueSpecifiers[16], + ), + "telefoonnummer bedrijf": new MapEntry( + 22, + "telefoonnummer bedrijf", + valueSpecifiers[17], + ), + "telefoonnummer overdag": new MapEntry( + 22, + "telefoonnummer overdag", + valueSpecifiers[17], + ), + "telefoonnummer priv\xe9": new MapEntry( + 20, + "telefoonnummer priv\xe9", + valueSpecifiers[16], + ), + "telefoonnummer werk": new MapEntry( + 19, + "telefoonnummer werk", + valueSpecifiers[17], + ), + "telefoonnummer zakelijk": new MapEntry( + 23, + "telefoonnummer zakelijk", + valueSpecifiers[17], + ), + "telef\xf3n": new MapEntry(7, "telef\xf3n", valueSpecifiers[13]), + "telef\xf3n do pr\xe1ce": new MapEntry( + 16, + "telef\xf3n do pr\xe1ce", + valueSpecifiers[17], + ), + "telef\xf3n domov": new MapEntry( + 13, + "telef\xf3n domov", + valueSpecifiers[16], + ), + "telef\xf3nna predvo\u013eba": new MapEntry( + 19, + "telef\xf3nna predvo\u013eba", + valueSpecifiers[12], + ), + "telef\xf3nna predvo\u013eba domov": new MapEntry( + 25, + "telef\xf3nna predvo\u013eba domov", + valueSpecifiers[16], + ), + "telef\xf3nne \u010d\xedslo": new MapEntry( + 15, + "telef\xf3nne \u010d\xedslo", + valueSpecifiers[13], + ), + "telem\xf3vel": new MapEntry(9, "telem\xf3vel", valueSpecifiers[18]), + telephone: new MapEntry(9, "telephone", valueSpecifiers[13]), + "tel\xe8fon": new MapEntry(7, "tel\xe8fon", valueSpecifiers[13]), + "tel\xe8fon de casa": new MapEntry( + 15, + "tel\xe8fon de casa", + valueSpecifiers[16], + ), + "tel\xe8fon de la feina": new MapEntry( + 19, + "tel\xe8fon de la feina", + valueSpecifiers[17], + ), + "tel\xe8fon dia": new MapEntry(11, "tel\xe8fon dia", valueSpecifiers[17]), + "tel\xe8fon feina": new MapEntry( + 13, + "tel\xe8fon feina", + valueSpecifiers[17], + ), + "tel\xe8fon m\xf2bil": new MapEntry( + 13, + "tel\xe8fon m\xf2bil", + valueSpecifiers[18], + ), + "tel\xe8fono casa": new MapEntry( + 13, + "tel\xe8fono casa", + valueSpecifiers[16], + ), + "tel\xe8fono nit": new MapEntry(12, "tel\xe8fono nit", valueSpecifiers[16]), + "tel\xe9fono": new MapEntry(8, "tel\xe9fono", valueSpecifiers[13]), + "tel\xe9fono casa": new MapEntry( + 13, + "tel\xe9fono casa", + valueSpecifiers[16], + ), + "tel\xe9fono de casa": new MapEntry( + 16, + "tel\xe9fono de casa", + valueSpecifiers[16], + ), + "tel\xe9fono del trabajo": new MapEntry( + 20, + "tel\xe9fono del trabajo", + valueSpecifiers[17], + ), + "tel\xe9fono d\xeda": new MapEntry( + 12, + "tel\xe9fono d\xeda", + valueSpecifiers[17], + ), + "tel\xe9fono m\xf3vil": new MapEntry( + 14, + "tel\xe9fono m\xf3vil", + valueSpecifiers[18], + ), + "tel\xe9fono noche": new MapEntry( + 14, + "tel\xe9fono noche", + valueSpecifiers[16], + ), + "tel\xe9fono trabajo": new MapEntry( + 16, + "tel\xe9fono trabajo", + valueSpecifiers[17], + ), + titel: new MapEntry(5, "titel", valueSpecifiers[5]), + titula: new MapEntry(6, "titula", valueSpecifiers[5]), + "tlf.": new MapEntry(4, "tlf.", valueSpecifiers[13]), + "toinen etunimi": new MapEntry(14, "toinen etunimi", valueSpecifiers[2]), + "toinen nimi": new MapEntry(11, "toinen nimi", valueSpecifiers[2]), + trabajo: new MapEntry(7, "trabajo", valueSpecifiers[5]), + tvrtka: new MapEntry(6, "tvrtka", valueSpecifiers[14]), + "ty\xf6numero": new MapEntry(9, "ty\xf6numero", valueSpecifiers[17]), + "ty\xf6numeron suuntanumero": new MapEntry( + 23, + "ty\xf6numeron suuntanumero", + valueSpecifiers[17], + ), + "ty\xf6puhelimen suuntanumero": new MapEntry( + 25, + "ty\xf6puhelimen suuntanumero", + valueSpecifiers[17], + ), + "ty\xf6puhelin": new MapEntry(10, "ty\xf6puhelin", valueSpecifiers[17]), + "t\xe4ydellinen nimi": new MapEntry( + 16, + "t\xe4ydellinen nimi", + valueSpecifiers[0], + ), + "t\xe9l.": new MapEntry(4, "t\xe9l.", valueSpecifiers[13]), + "t\xe9l. cell.": new MapEntry(10, "t\xe9l. cell.", valueSpecifiers[18]), + "t\xe9l\xe9av.": new MapEntry(7, "t\xe9l\xe9av.", valueSpecifiers[19]), + "t\xe9l\xe9avertisseur": new MapEntry( + 15, + "t\xe9l\xe9avertisseur", + valueSpecifiers[19], + ), + "t\xe9l\xe9c.": new MapEntry(6, "t\xe9l\xe9c.", valueSpecifiers[20]), + "t\xe9l\xe9copie": new MapEntry(9, "t\xe9l\xe9copie", valueSpecifiers[20]), + "t\xe9l\xe9copieur": new MapEntry( + 11, + "t\xe9l\xe9copieur", + valueSpecifiers[20], + ), + "t\xe9l\xe9phone": new MapEntry(9, "t\xe9l\xe9phone", valueSpecifiers[13]), + "t\xe9l\xe9phone (entreprise)": new MapEntry( + 22, + "t\xe9l\xe9phone (entreprise)", + valueSpecifiers[17], + ), + "t\xe9l\xe9phone (jour)": new MapEntry( + 16, + "t\xe9l\xe9phone (jour)", + valueSpecifiers[17], + ), + "t\xe9l\xe9phone (journ\xe9e)": new MapEntry( + 19, + "t\xe9l\xe9phone (journ\xe9e)", + valueSpecifiers[17], + ), + "t\xe9l\xe9phone (le soir)": new MapEntry( + 19, + "t\xe9l\xe9phone (le soir)", + valueSpecifiers[16], + ), + "t\xe9l\xe9phone (soci\xe9t\xe9)": new MapEntry( + 19, + "t\xe9l\xe9phone (soci\xe9t\xe9)", + valueSpecifiers[17], + ), + "t\xe9l\xe9phone (soir\xe9e)": new MapEntry( + 18, + "t\xe9l\xe9phone (soir\xe9e)", + valueSpecifiers[16], + ), + "t\xe9l\xe9phone bureau": new MapEntry( + 16, + "t\xe9l\xe9phone bureau", + valueSpecifiers[17], + ), + "t\xe9l\xe9phone cellulaire": new MapEntry( + 20, + "t\xe9l\xe9phone cellulaire", + valueSpecifiers[18], + ), + "t\xe9l\xe9phone cellulaire portable": new MapEntry( + 29, + "t\xe9l\xe9phone cellulaire portable", + valueSpecifiers[18], + ), + "t\xe9l\xe9phone cellulaire portatif": new MapEntry( + 29, + "t\xe9l\xe9phone cellulaire portatif", + valueSpecifiers[18], + ), + "t\xe9l\xe9phone de domicile": new MapEntry( + 21, + "t\xe9l\xe9phone de domicile", + valueSpecifiers[16], + ), + "t\xe9l\xe9phone de r\xe9sidence": new MapEntry( + 22, + "t\xe9l\xe9phone de r\xe9sidence", + valueSpecifiers[16], + ), + "t\xe9l\xe9phone de travail": new MapEntry( + 20, + "t\xe9l\xe9phone de travail", + valueSpecifiers[17], + ), + "t\xe9l\xe9phone domicile": new MapEntry( + 18, + "t\xe9l\xe9phone domicile", + valueSpecifiers[16], + ), + "t\xe9l\xe9phone maison": new MapEntry( + 16, + "t\xe9l\xe9phone maison", + valueSpecifiers[16], + ), + "t\xe9l\xe9phone mobile": new MapEntry( + 16, + "t\xe9l\xe9phone mobile", + valueSpecifiers[18], + ), + "t\xe9l\xe9phone portable": new MapEntry( + 18, + "t\xe9l\xe9phone portable", + valueSpecifiers[18], + ), + "t\xe9l\xe9phone priv\xe9": new MapEntry( + 15, + "t\xe9l\xe9phone priv\xe9", + valueSpecifiers[16], + ), + "t\xe9l\xe9phone professionnel": new MapEntry( + 23, + "t\xe9l\xe9phone professionnel", + valueSpecifiers[17], + ), + "t\xe9l\xe9phone r\xe9sidentiel": new MapEntry( + 21, + "t\xe9l\xe9phone r\xe9sidentiel", + valueSpecifiers[16], + ), + ulica: new MapEntry(5, "ulica", valueSpecifiers[7]), + urodziny: new MapEntry(8, "urodziny", valueSpecifiers[4]), + urodzona: new MapEntry(8, "urodzona", valueSpecifiers[4]), + urodzony: new MapEntry(8, "urodzony", valueSpecifiers[4]), + vei: new MapEntry(3, "vei", valueSpecifiers[7]), + veiadresse: new MapEntry(10, "veiadresse", valueSpecifiers[7]), + vej: new MapEntry(3, "vej", valueSpecifiers[7]), + vejadresse: new MapEntry(10, "vejadresse", valueSpecifiers[7]), + "verification code": new MapEntry( + 17, + "verification code", + valueSpecifiers[21], + ), + verjaardag: new MapEntry(10, "verjaardag", valueSpecifiers[4]), + "ve\u010dernji telefon": new MapEntry( + 16, + "ve\u010dernji telefon", + valueSpecifiers[16], + ), + "ve\u010dern\xfd telef\xf3n": new MapEntry( + 15, + "ve\u010dern\xfd telef\xf3n", + valueSpecifiers[16], + ), + via: new MapEntry(3, "via", valueSpecifiers[7]), + ville: new MapEntry(5, "ville", valueSpecifiers[8]), + voornaam: new MapEntry(8, "voornaam", valueSpecifiers[1]), + "v\xe4g": new MapEntry(3, "v\xe4g", valueSpecifiers[7]), + werk: new MapEntry(4, "werk", valueSpecifiers[5]), + "work area code": new MapEntry(14, "work area code", valueSpecifiers[17]), + "work areacode": new MapEntry(13, "work areacode", valueSpecifiers[17]), + "work phone": new MapEntry(10, "work phone", valueSpecifiers[17]), + workareacode: new MapEntry(12, "workareacode", valueSpecifiers[17]), + workphone: new MapEntry(9, "workphone", valueSpecifiers[17]), + "yrityksen numero": new MapEntry( + 16, + "yrityksen numero", + valueSpecifiers[17], + ), + yritys: new MapEntry(6, "yritys", valueSpecifiers[14]), + yritysnumero: new MapEntry(12, "yritysnumero", valueSpecifiers[17]), + yrke: new MapEntry(4, "yrke", valueSpecifiers[5]), + zemlja: new MapEntry(6, "zemlja", valueSpecifiers[11]), + "zi de na\u0219tere": new MapEntry( + 13, + "zi de na\u0219tere", + valueSpecifiers[4], + ), + "zi na\u0219tere": new MapEntry(10, "zi na\u0219tere", valueSpecifiers[4]), + zip: new MapEntry(3, "zip", valueSpecifiers[10]), + "zip code": new MapEntry(8, "zip code", valueSpecifiers[10]), + "zip kod": new MapEntry(7, "zip kod", valueSpecifiers[10]), + "zip kodu": new MapEntry(8, "zip kodu", valueSpecifiers[10]), + zipcode: new MapEntry(7, "zipcode", valueSpecifiers[10]), + zipkod: new MapEntry(6, "zipkod", valueSpecifiers[10]), + "\xe7a\u011fr\u0131 cihaz\u0131": new MapEntry( + 12, + "\xe7a\u011fr\u0131 cihaz\u0131", + valueSpecifiers[19], + ), + "\xe7a\u011fr\u0131 cihaz\u0131 numaras\u0131": new MapEntry( + 21, + "\xe7a\u011fr\u0131 cihaz\u0131 numaras\u0131", + valueSpecifiers[19], + ), + "\xe9tat": new MapEntry(4, "\xe9tat", valueSpecifiers[9]), + "\xfaltimo": new MapEntry(6, "\xfaltimo", valueSpecifiers[3]), + "\xfaltimo nome": new MapEntry(11, "\xfaltimo nome", valueSpecifiers[3]), + "\xfaltimonome": new MapEntry(10, "\xfaltimonome", valueSpecifiers[3]), + "\xfanome": new MapEntry(5, "\xfanome", valueSpecifiers[3]), + "\xfclke": new MapEntry(4, "\xfclke", valueSpecifiers[11]), + "\xfcnvan": new MapEntry(5, "\xfcnvan", valueSpecifiers[5]), + "\xfcnvan\u0131": new MapEntry(6, "\xfcnvan\u0131", valueSpecifiers[5]), + "\u010d\xedslo do pr\xe1ce": new MapEntry( + 14, + "\u010d\xedslo do pr\xe1ce", + valueSpecifiers[17], + ), + "\u010d\xedslo domov": new MapEntry( + 11, + "\u010d\xedslo domov", + valueSpecifiers[16], + ), + "\u015fehir": new MapEntry(5, "\u015fehir", valueSpecifiers[8]), + "\u015firket": new MapEntry(6, "\u015firket", valueSpecifiers[14]), + "\u015firket telefonu": new MapEntry( + 15, + "\u015firket telefonu", + valueSpecifiers[17], + ), + "\u0161t\xe1t": new MapEntry(4, "\u0161t\xe1t", valueSpecifiers[9]), + "\u021bar\u0103": new MapEntry(4, "\u021bar\u0103", valueSpecifiers[11]), + "\u03c4.\u03ba.": new MapEntry(4, "\u03a4.\u039a.", valueSpecifiers[10]), + "\u03b1\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03c4\u03b7\u03bb\u03b5\u03c6\u03ce\u03bd\u03bf\u03c5": + new MapEntry( + 17, + "\u03b1\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03c4\u03b7\u03bb\u03b5\u03c6\u03ce\u03bd\u03bf\u03c5", + valueSpecifiers[13], + ), + "\u03b2\u03bf\u03bc\u03b2\u03b7\u03c4\u03ae\u03c2": new MapEntry( + 8, + "\u03b2\u03bf\u03bc\u03b2\u03b7\u03c4\u03ae\u03c2", + valueSpecifiers[19], + ), + "\u03b3\u03ad\u03bd\u03bd\u03b7\u03c3\u03b7": new MapEntry( + 7, + "\u03b3\u03ad\u03bd\u03bd\u03b7\u03c3\u03b7", + valueSpecifiers[4], + ), + "\u03b3\u03b5\u03bd\u03ad\u03b8\u03bb\u03b9\u03b1": new MapEntry( + 8, + "\u03b3\u03b5\u03bd\u03ad\u03b8\u03bb\u03b9\u03b1", + valueSpecifiers[4], + ), + "\u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7": new MapEntry( + 9, + "\u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7", + valueSpecifiers[7], + ), + "\u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 (\u03b3\u03c1\u03b1\u03bc\u03bc\u03ae 1)": + new MapEntry( + 20, + "\u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 (\u03b3\u03c1\u03b1\u03bc\u03bc\u03ae 1)", + valueSpecifiers[7], + ), + "\u03b5\u03c0\u03ce\u03bd\u03c5\u03bc\u03bf": new MapEntry( + 7, + "\u03b5\u03c0\u03ce\u03bd\u03c5\u03bc\u03bf", + valueSpecifiers[3], + ), + "\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1": new MapEntry( + 7, + "\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1", + valueSpecifiers[5], + ), + "\u03b5\u03c4\u03b1\u03b9\u03c1\u03b5\u03af\u03b1": new MapEntry( + 8, + "\u03b5\u03c4\u03b1\u03b9\u03c1\u03b5\u03af\u03b1", + valueSpecifiers[14], + ), + "\u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03b3\u03ad\u03bd\u03bd\u03b7\u03c3\u03b7\u03c2": + new MapEntry( + 19, + "\u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03b3\u03ad\u03bd\u03bd\u03b7\u03c3\u03b7\u03c2", + valueSpecifiers[4], + ), + "\u03b8\u03ad\u03c3\u03b7 \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2": + new MapEntry( + 13, + "\u03b8\u03ad\u03c3\u03b7 \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2", + valueSpecifiers[5], + ), + "\u03ba\u03b9\u03bd\u03b7\u03c4\u03cc": new MapEntry( + 6, + "\u03ba\u03b9\u03bd\u03b7\u03c4\u03cc", + valueSpecifiers[18], + ), + "\u03ba\u03b9\u03bd\u03b7\u03c4\u03cc \u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf": + new MapEntry( + 15, + "\u03ba\u03b9\u03bd\u03b7\u03c4\u03cc \u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf", + valueSpecifiers[18], + ), + "\u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae\u03c2": + new MapEntry( + 16, + "\u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae\u03c2", + valueSpecifiers[12], + ), + "\u03bc\u03b5\u03c3\u03b1\u03af\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1": + new MapEntry( + 12, + "\u03bc\u03b5\u03c3\u03b1\u03af\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1", + valueSpecifiers[2], + ), + "\u03bd\u03bf\u03bc\u03cc\u03c2": new MapEntry( + 5, + "\u03bd\u03bf\u03bc\u03cc\u03c2", + valueSpecifiers[9], + ), + "\u03bf\u03b4\u03cc\u03c2": new MapEntry( + 4, + "\u03bf\u03b4\u03cc\u03c2", + valueSpecifiers[7], + ), + "\u03bf\u03bd\u03bf\u03bc\u03b1\u03c4\u03b5\u03c0\u03ce\u03bd\u03c5\u03bc\u03bf": + new MapEntry( + 13, + "\u03bf\u03bd\u03bf\u03bc\u03b1\u03c4\u03b5\u03c0\u03ce\u03bd\u03c5\u03bc\u03bf", + valueSpecifiers[0], + ), + "\u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03cc\u03c2": + new MapEntry( + 10, + "\u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03cc\u03c2", + valueSpecifiers[14], + ), + "\u03c0\u03bf\u03bb\u03b9\u03c4\u03b5\u03af\u03b1": new MapEntry( + 8, + "\u03c0\u03bf\u03bb\u03b9\u03c4\u03b5\u03af\u03b1", + valueSpecifiers[9], + ), + "\u03c0\u03cc\u03bb\u03b7": new MapEntry( + 4, + "\u03c0\u03cc\u03bb\u03b7", + valueSpecifiers[8], + ), + "\u03c4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b9\u03ba\u03cc\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2": + new MapEntry( + 20, + "\u03c4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b9\u03ba\u03cc\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2", + valueSpecifiers[10], + ), + "\u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf": new MapEntry( + 8, + "\u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf", + valueSpecifiers[13], + ), + "\u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf \u03b5\u03ba\u03c4\u03cc\u03c2 \u03c9\u03c1\u03ce\u03bd \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2": + new MapEntry( + 28, + "\u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf \u03b5\u03ba\u03c4\u03cc\u03c2 \u03c9\u03c1\u03ce\u03bd \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2", + valueSpecifiers[16], + ), + "\u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2": + new MapEntry( + 17, + "\u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2", + valueSpecifiers[17], + ), + "\u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf \u03ba\u03b1\u03c4\u03ac \u03c4\u03b9\u03c2 \u03c0\u03c1\u03c9\u03ca\u03bd\u03ad\u03c2 \u03ce\u03c1\u03b5\u03c2": + new MapEntry( + 30, + "\u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf \u03ba\u03b1\u03c4\u03ac \u03c4\u03b9\u03c2 \u03c0\u03c1\u03c9\u03ca\u03bd\u03ad\u03c2 \u03ce\u03c1\u03b5\u03c2", + valueSpecifiers[17], + ), + "\u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf \u03ba\u03b1\u03c4\u03ac \u03c4\u03b9\u03c2 \u03ce\u03c1\u03b5\u03c2 \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2": + new MapEntry( + 31, + "\u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf \u03ba\u03b1\u03c4\u03ac \u03c4\u03b9\u03c2 \u03ce\u03c1\u03b5\u03c2 \u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2", + valueSpecifiers[17], + ), + "\u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf \u03bf\u03b9\u03ba\u03af\u03b1\u03c2": + new MapEntry( + 15, + "\u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf \u03bf\u03b9\u03ba\u03af\u03b1\u03c2", + valueSpecifiers[16], + ), + "\u03c6\u03b1\u03be": new MapEntry( + 3, + "\u03c6\u03b1\u03be", + valueSpecifiers[20], + ), + "\u03c7\u03ce\u03c1\u03b1": new MapEntry( + 4, + "\u03c7\u03ce\u03c1\u03b1", + valueSpecifiers[11], + ), + "\u03cc\u03bd\u03bf\u03bc\u03b1": new MapEntry( + 5, + "\u03cc\u03bd\u03bf\u03bc\u03b1", + valueSpecifiers[1], + ), + "\u0430\u0434\u0440\u0435\u0441": new MapEntry( + 5, + "\u0410\u0434\u0440\u0435\u0441", + valueSpecifiers[7], + ), + "\u0430\u0434\u0440\u0435\u0441 e-mail": new MapEntry( + 12, + "\u0410\u0434\u0440\u0435\u0441 e-mail", + valueSpecifiers[6], + ), + "\u0430\u0434\u0440\u0435\u0441 email": new MapEntry( + 11, + "\u0410\u0434\u0440\u0435\u0441 email", + valueSpecifiers[6], + ), + "\u0430\u0434\u0440\u0435\u0441 \u044d\u043b. \u043f\u043e\u0447\u0442\u044b": + new MapEntry( + 15, + "\u0410\u0434\u0440\u0435\u0441 \u044d\u043b. \u043f\u043e\u0447\u0442\u044b", + valueSpecifiers[6], + ), + "\u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b": + new MapEntry( + 23, + "\u0410\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b", + valueSpecifiers[6], + ), + "\u0432 \u0432\u0435\u0447\u0435\u0440\u043d\u0438\u0435 \u0447\u0430\u0441\u044b": + new MapEntry( + 15, + "\u0412 \u0432\u0435\u0447\u0435\u0440\u043d\u0438\u0435 \u0447\u0430\u0441\u044b", + valueSpecifiers[16], + ), + "\u0432 \u0434\u043d\u0435\u0432\u043d\u044b\u0435 \u0447\u0430\u0441\u044b": + new MapEntry( + 14, + "\u0412 \u0434\u043d\u0435\u0432\u043d\u044b\u0435 \u0447\u0430\u0441\u044b", + valueSpecifiers[17], + ), + "\u0432\u0435\u0447\u0435\u0440\u043e\u043c": new MapEntry( + 7, + "\u0412\u0435\u0447\u0435\u0440\u043e\u043c", + valueSpecifiers[16], + ), + "\u0432\u0438\u0434 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438": + new MapEntry( + 16, + "\u0412\u0438\u0434 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438", + valueSpecifiers[5], + ), + "\u0433\u043e\u0440\u043e\u0434": new MapEntry( + 5, + "\u0413\u043e\u0440\u043e\u0434", + valueSpecifiers[8], + ), + "\u0434\u043d\u0435\u043c": new MapEntry( + 4, + "\u0414\u043d\u0435\u043c", + valueSpecifiers[17], + ), + "\u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u044c": new MapEntry( + 9, + "\u0414\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u044c", + valueSpecifiers[5], + ), + "\u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439": new MapEntry( + 8, + "\u0414\u043e\u043c\u0430\u0448\u043d\u0438\u0439", + valueSpecifiers[16], + ), + "\u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u043d\u043e\u043c\u0435\u0440": + new MapEntry( + 14, + "\u0414\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u043d\u043e\u043c\u0435\u0440", + valueSpecifiers[16], + ), + "\u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430": + new MapEntry( + 23, + "\u0414\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430", + valueSpecifiers[16], + ), + "\u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440": + new MapEntry( + 25, + "\u0414\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440", + valueSpecifiers[16], + ), + "\u0438\u043c\u044f": new MapEntry( + 3, + "\u0418\u043c\u044f", + valueSpecifiers[1], + ), + "\u0438\u043d\u0434\u0435\u043a\u0441": new MapEntry( + 6, + "\u0418\u043d\u0434\u0435\u043a\u0441", + valueSpecifiers[10], + ), + "\u043a\u043e\u0434 \u0433\u043e\u0440\u043e\u0434\u0430": new MapEntry( + 10, + "\u041a\u043e\u0434 \u0433\u043e\u0440\u043e\u0434\u0430", + valueSpecifiers[12], + ), + "\u043a\u043e\u0434 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u043e\u0433\u043e \u043d\u043e\u043c\u0435\u0440\u0430": + new MapEntry( + 32, + "\u041a\u043e\u0434 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u043e\u0433\u043e \u043d\u043e\u043c\u0435\u0440\u0430", + valueSpecifiers[16], + ), + "\u043a\u043e\u0434 \u043a\u0440\u0430\u044f": new MapEntry( + 8, + "\u041a\u043e\u0434 \u043a\u0440\u0430\u044f", + valueSpecifiers[12], + ), + "\u043a\u043e\u0434 \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430": + new MapEntry( + 22, + "\u041a\u043e\u0434 \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430", + valueSpecifiers[12], + ), + "\u043a\u043e\u0434 \u043e\u0431\u043b\u0430\u0441\u0442\u0438": + new MapEntry( + 11, + "\u041a\u043e\u0434 \u043e\u0431\u043b\u0430\u0441\u0442\u0438", + valueSpecifiers[12], + ), + "\u043a\u043e\u0434 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438": + new MapEntry( + 29, + "\u041a\u043e\u0434 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438", + valueSpecifiers[18], + ), + "\u043a\u043e\u0434 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043e\u0442\u043e\u0432\u043e\u0439 \u0441\u0432\u044f\u0437\u0438": + new MapEntry( + 27, + "\u041a\u043e\u0434 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043e\u0442\u043e\u0432\u043e\u0439 \u0441\u0432\u044f\u0437\u0438", + valueSpecifiers[18], + ), + "\u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u043e\u0433\u043e \u043d\u043e\u043c\u0435\u0440\u0430": + new MapEntry( + 31, + "\u041a\u043e\u0434 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u043e\u0433\u043e \u043d\u043e\u043c\u0435\u0440\u0430", + valueSpecifiers[17], + ), + "\u043a\u043e\u0434 \u0440\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438": + new MapEntry( + 14, + "\u041a\u043e\u0434 \u0440\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438", + valueSpecifiers[12], + ), + "\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f": new MapEntry( + 8, + "\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f", + valueSpecifiers[14], + ), + "\u043a\u0440\u0430\u0439": new MapEntry( + 4, + "\u041a\u0440\u0430\u0439", + valueSpecifiers[9], + ), + "\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439": new MapEntry( + 9, + "\u041c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439", + valueSpecifiers[18], + ), + "\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430": + new MapEntry( + 24, + "\u041c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430", + valueSpecifiers[18], + ), + "\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440": + new MapEntry( + 26, + "\u041c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440", + valueSpecifiers[18], + ), + "\u043d\u0430\u0441\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u043d\u043a\u0442": + new MapEntry( + 16, + "\u041d\u0430\u0441\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u043d\u043a\u0442", + valueSpecifiers[8], + ), + "\u043d\u043e\u043c\u0435\u0440 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438": + new MapEntry( + 31, + "\u041d\u043e\u043c\u0435\u0440 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438", + valueSpecifiers[18], + ), + "\u043d\u043e\u043c\u0435\u0440 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043e\u0442\u043e\u0432\u043e\u0439 \u0441\u0432\u044f\u0437\u0438": + new MapEntry( + 29, + "\u041d\u043e\u043c\u0435\u0440 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043e\u0442\u043e\u0432\u043e\u0439 \u0441\u0432\u044f\u0437\u0438", + valueSpecifiers[18], + ), + "\u043d\u043e\u043c\u0435\u0440 \u043f\u0435\u0439\u0434\u0436\u0435\u0440\u0430": + new MapEntry( + 14, + "\u041d\u043e\u043c\u0435\u0440 \u043f\u0435\u0439\u0434\u0436\u0435\u0440\u0430", + valueSpecifiers[19], + ), + "\u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430": + new MapEntry( + 14, + "\u041d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430", + valueSpecifiers[13], + ), + "\u043d\u043e\u043c\u0435\u0440 \u0444\u0430\u043a\u0441\u0430": + new MapEntry( + 11, + "\u041d\u043e\u043c\u0435\u0440 \u0444\u0430\u043a\u0441\u0430", + valueSpecifiers[20], + ), + "\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f": + new MapEntry( + 11, + "\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f", + valueSpecifiers[14], + ), + "\u043e\u0442\u0447\u0435\u0441\u0442\u0432\u043e": new MapEntry( + 8, + "\u041e\u0442\u0447\u0435\u0441\u0442\u0432\u043e", + valueSpecifiers[2], + ), + "\u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441": + new MapEntry( + 15, + "\u041f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441", + valueSpecifiers[10], + ), + "\u043f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435": + new MapEntry( + 11, + "\u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435", + valueSpecifiers[14], + ), + "\u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f": new MapEntry( + 9, + "\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f", + valueSpecifiers[5], + ), + "\u0440\u0430\u0431.": new MapEntry( + 4, + "\u0420\u0430\u0431.", + valueSpecifiers[17], + ), + "\u0440\u0430\u0431. \u0442\u0435\u043b\u0435\u0444\u043e\u043d": + new MapEntry( + 12, + "\u0420\u0430\u0431. \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + valueSpecifiers[17], + ), + "\u0440\u0430\u0431\u043e\u0447\u0438\u0439": new MapEntry( + 7, + "\u0420\u0430\u0431\u043e\u0447\u0438\u0439", + valueSpecifiers[17], + ), + "\u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430": + new MapEntry( + 22, + "\u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430", + valueSpecifiers[17], + ), + "\u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440": + new MapEntry( + 24, + "\u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440", + valueSpecifiers[17], + ), + "\u0440\u0435\u0433\u0438\u043e\u043d": new MapEntry( + 6, + "\u0420\u0435\u0433\u0438\u043e\u043d", + valueSpecifiers[9], + ), + "\u0440\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430": + new MapEntry( + 10, + "\u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430", + valueSpecifiers[9], + ), + "\u0440\u043e\u0434 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438": + new MapEntry( + 16, + "\u0420\u043e\u0434 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438", + valueSpecifiers[5], + ), + "\u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439": new MapEntry( + 9, + "\u0421\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439", + valueSpecifiers[17], + ), + "\u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d": + new MapEntry( + 17, + "\u0421\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + valueSpecifiers[17], + ), + "\u0441\u043e\u0442\u043e\u0432\u044b\u0439": new MapEntry( + 7, + "\u0421\u043e\u0442\u043e\u0432\u044b\u0439", + valueSpecifiers[18], + ), + "\u0441\u043e\u0442\u043e\u0432\u044b\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d": + new MapEntry( + 15, + "\u0421\u043e\u0442\u043e\u0432\u044b\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + valueSpecifiers[18], + ), + "\u0441\u0442\u0440\u0430\u043d\u0430": new MapEntry( + 6, + "\u0421\u0442\u0440\u0430\u043d\u0430", + valueSpecifiers[11], + ), + "\u0442\u0435\u043b\u0435\u0444\u0430\u043a\u0441": new MapEntry( + 8, + "\u0422\u0435\u043b\u0435\u0444\u0430\u043a\u0441", + valueSpecifiers[20], + ), + "\u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438": + new MapEntry( + 23, + "\u0422\u0435\u043b\u0435\u0444\u043e\u043d \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438", + valueSpecifiers[18], + ), + "\u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0441\u043e\u0442\u043e\u0432\u043e\u0439 \u0441\u0432\u044f\u0437\u0438": + new MapEntry( + 21, + "\u0422\u0435\u043b\u0435\u0444\u043e\u043d \u0441\u043e\u0442\u043e\u0432\u043e\u0439 \u0441\u0432\u044f\u0437\u0438", + valueSpecifiers[18], + ), + "\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440": + new MapEntry( + 16, + "\u0422\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440", + valueSpecifiers[13], + ), + "\u0443\u043b.": new MapEntry(3, "\u0423\u043b.", valueSpecifiers[7]), + "\u0443\u043b\u0438\u0446\u0430": new MapEntry( + 5, + "\u0423\u043b\u0438\u0446\u0430", + valueSpecifiers[7], + ), + "\u0444.\u0438.\u043e.": new MapEntry( + 6, + "\u0424.\u0418.\u041e.", + valueSpecifiers[0], + ), + "\u0444\u0438\u043e": new MapEntry( + 3, + "\u0424\u0418\u041e", + valueSpecifiers[0], + ), + "\u0444\u0430\u043c\u0438\u043b\u0438\u044f": new MapEntry( + 7, + "\u0424\u0430\u043c\u0438\u043b\u0438\u044f", + valueSpecifiers[3], + ), + "\u0444\u0438\u0440\u043c\u0430": new MapEntry( + 5, + "\u0424\u0438\u0440\u043c\u0430", + valueSpecifiers[14], + ), + "\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441": + new MapEntry( + 17, + "\u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441", + valueSpecifiers[6], + ), + "\u0430\u0434\u0440\u0435\u0441\u0430": new MapEntry( + 6, + "\u0430\u0434\u0440\u0435\u0441\u0430", + valueSpecifiers[7], + ), + "\u0430\u0434\u0440\u0435\u0441\u0430 1": new MapEntry( + 8, + "\u0430\u0434\u0440\u0435\u0441\u0430 1", + valueSpecifiers[7], + ), + "\u0430\u0434\u0440\u0435\u0441\u04301": new MapEntry( + 7, + "\u0430\u0434\u0440\u0435\u0441\u04301", + valueSpecifiers[7], + ), + "\u0432\u0435\u0447\u0456\u0440\u043d\u0456\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d": + new MapEntry( + 16, + "\u0432\u0435\u0447\u0456\u0440\u043d\u0456\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + valueSpecifiers[16], + ), + "\u0432\u0438\u0434\u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438": + new MapEntry( + 15, + "\u0432\u0438\u0434\u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438", + valueSpecifiers[5], + ), + "\u0432\u0443\u043b.": new MapEntry( + 4, + "\u0432\u0443\u043b.", + valueSpecifiers[7], + ), + "\u0432\u0443\u043b\u0438\u0446\u044f": new MapEntry( + 6, + "\u0432\u0443\u043b\u0438\u0446\u044f", + valueSpecifiers[7], + ), + "\u0433.": new MapEntry(2, "\u0433.", valueSpecifiers[8]), + "\u0434\u0430\u0442\u0430 \u043d\u0430\u0440\u043e\u0434\u0436\u0435\u043d\u043d\u044f": + new MapEntry( + 15, + "\u0434\u0430\u0442\u0430 \u043d\u0430\u0440\u043e\u0434\u0436\u0435\u043d\u043d\u044f", + valueSpecifiers[4], + ), + "\u0434\u0430\u0442\u0430 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f": + new MapEntry( + 13, + "\u0434\u0430\u0442\u0430 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f", + valueSpecifiers[4], + ), + "\u0434\u0430\u0442\u0430\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f": + new MapEntry( + 12, + "\u0434\u0430\u0442\u0430\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f", + valueSpecifiers[4], + ), + "\u0434\u0435\u043d\u043d\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d": + new MapEntry( + 14, + "\u0434\u0435\u043d\u043d\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + valueSpecifiers[17], + ), + "\u0434\u0435\u043d\u044c \u043d\u0430\u0440\u043e\u0434\u0436\u0435\u043d\u043d\u044f": + new MapEntry( + 15, + "\u0434\u0435\u043d\u044c \u043d\u0430\u0440\u043e\u0434\u0436\u0435\u043d\u043d\u044f", + valueSpecifiers[4], + ), + "\u0434\u0435\u043d\u044c \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f": + new MapEntry( + 13, + "\u0434\u0435\u043d\u044c \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f", + valueSpecifiers[4], + ), + "\u0434\u0435\u043d\u044c\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f": + new MapEntry( + 12, + "\u0434\u0435\u043d\u044c\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f", + valueSpecifiers[4], + ), + "\u0434\u043e\u043c.": new MapEntry( + 4, + "\u0434\u043e\u043c.", + valueSpecifiers[16], + ), + "\u0434\u043e\u043c. \u0442\u0435\u043b.": new MapEntry( + 9, + "\u0434\u043e\u043c. \u0442\u0435\u043b.", + valueSpecifiers[16], + ), + "\u0434\u043e\u043c. \u0442\u0435\u043b\u0435\u0444\u043e\u043d": + new MapEntry( + 12, + "\u0434\u043e\u043c. \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + valueSpecifiers[16], + ), + "\u0434\u043e\u043c.\u0442\u0435\u043b.": new MapEntry( + 8, + "\u0434\u043e\u043c.\u0442\u0435\u043b.", + valueSpecifiers[16], + ), + "\u0434\u043e\u043c.\u0442\u0435\u043b\u0435\u0444\u043e\u043d": + new MapEntry( + 11, + "\u0434\u043e\u043c.\u0442\u0435\u043b\u0435\u0444\u043e\u043d", + valueSpecifiers[16], + ), + "\u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d": + new MapEntry( + 16, + "\u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + valueSpecifiers[16], + ), + "\u0434\u043e\u043c\u0430\u0448\u043d\u0456\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d": + new MapEntry( + 16, + "\u0434\u043e\u043c\u0430\u0448\u043d\u0456\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + valueSpecifiers[16], + ), + "\u0435\u043b. \u0430\u0434\u0440\u0435\u0441\u0430": new MapEntry( + 10, + "\u0435\u043b. \u0430\u0434\u0440\u0435\u0441\u0430", + valueSpecifiers[6], + ), + "\u0435\u043b. \u043f\u043e\u0448\u0442\u0430": new MapEntry( + 9, + "\u0435\u043b. \u043f\u043e\u0448\u0442\u0430", + valueSpecifiers[6], + ), + "\u0435\u043b.\u0430\u0434\u0440\u0435\u0441\u0430": new MapEntry( + 9, + "\u0435\u043b.\u0430\u0434\u0440\u0435\u0441\u0430", + valueSpecifiers[6], + ), + "\u0435\u043b.\u043f\u043e\u0448\u0442\u0430": new MapEntry( + 8, + "\u0435\u043b.\u043f\u043e\u0448\u0442\u0430", + valueSpecifiers[6], + ), + "\u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0430": + new MapEntry( + 17, + "\u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0430", + valueSpecifiers[6], + ), + "\u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430 \u043f\u043e\u0448\u0442\u0430": + new MapEntry( + 16, + "\u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430 \u043f\u043e\u0448\u0442\u0430", + valueSpecifiers[6], + ), + "\u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u0430\u0434\u0440\u0435\u0441\u0430": + new MapEntry( + 16, + "\u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u0430\u0434\u0440\u0435\u0441\u0430", + valueSpecifiers[6], + ), + "\u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u043f\u043e\u0448\u0442\u0430": + new MapEntry( + 15, + "\u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u043f\u043e\u0448\u0442\u0430", + valueSpecifiers[6], + ), + "\u043a\u043e\u0434 \u0432\u0435\u0447\u0456\u0440\u043d\u044c\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443": + new MapEntry( + 23, + "\u043a\u043e\u0434 \u0432\u0435\u0447\u0456\u0440\u043d\u044c\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + valueSpecifiers[16], + ), + "\u043a\u043e\u0434 \u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443": + new MapEntry( + 20, + "\u043a\u043e\u0434 \u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + valueSpecifiers[17], + ), + "\u043a\u043e\u0434 \u0434\u043e\u043c.": new MapEntry( + 8, + "\u043a\u043e\u0434 \u0434\u043e\u043c.", + valueSpecifiers[16], + ), + "\u043a\u043e\u0434 \u0434\u043e\u043c. \u0442\u0435\u043b.": new MapEntry( + 13, + "\u043a\u043e\u0434 \u0434\u043e\u043c. \u0442\u0435\u043b.", + valueSpecifiers[16], + ), + "\u043a\u043e\u0434 \u0434\u043e\u043c. \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443": + new MapEntry( + 17, + "\u043a\u043e\u0434 \u0434\u043e\u043c. \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + valueSpecifiers[16], + ), + "\u043a\u043e\u0434 \u0434\u043e\u043c.\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443": + new MapEntry( + 16, + "\u043a\u043e\u0434 \u0434\u043e\u043c.\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + valueSpecifiers[16], + ), + "\u043a\u043e\u0434 \u0434\u043e\u043c\u0430\u0448\u043d\u044c\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443": + new MapEntry( + 23, + "\u043a\u043e\u0434 \u0434\u043e\u043c\u0430\u0448\u043d\u044c\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + valueSpecifiers[16], + ), + "\u043a\u043e\u0434 \u043c\u043e\u0431.": new MapEntry( + 8, + "\u043a\u043e\u0434 \u043c\u043e\u0431.", + valueSpecifiers[18], + ), + "\u043a\u043e\u0434 \u043c\u043e\u0431. \u0442\u0435\u043b.": new MapEntry( + 13, + "\u043a\u043e\u0434 \u043c\u043e\u0431. \u0442\u0435\u043b.", + valueSpecifiers[18], + ), + "\u043a\u043e\u0434 \u043c\u043e\u0431. \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443": + new MapEntry( + 17, + "\u043a\u043e\u0434 \u043c\u043e\u0431. \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + valueSpecifiers[18], + ), + "\u043a\u043e\u0434 \u043c\u043e\u0431.\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443": + new MapEntry( + 16, + "\u043a\u043e\u0434 \u043c\u043e\u0431.\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + valueSpecifiers[18], + ), + "\u043a\u043e\u0434 \u043c\u043e\u0431\u0456\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443": + new MapEntry( + 23, + "\u043a\u043e\u0434 \u043c\u043e\u0431\u0456\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + valueSpecifiers[18], + ), + "\u043a\u043e\u0434 \u043e\u0431\u043b\u0430\u0441\u0442\u0456": + new MapEntry( + 11, + "\u043a\u043e\u0434 \u043e\u0431\u043b\u0430\u0441\u0442\u0456", + valueSpecifiers[12], + ), + "\u043a\u043e\u0434 \u043f\u0435\u0439\u0434\u0436\u0435\u0440\u0430": + new MapEntry( + 12, + "\u043a\u043e\u0434 \u043f\u0435\u0439\u0434\u0436\u0435\u0440\u0430", + valueSpecifiers[19], + ), + "\u043a\u043e\u0434 \u0440\u0435\u0433\u0456\u043e\u043d\u0443": + new MapEntry( + 11, + "\u043a\u043e\u0434 \u0440\u0435\u0433\u0456\u043e\u043d\u0443", + valueSpecifiers[12], + ), + "\u043a\u043e\u0434 \u0440\u043e\u0431.": new MapEntry( + 8, + "\u043a\u043e\u0434 \u0440\u043e\u0431.", + valueSpecifiers[17], + ), + "\u043a\u043e\u0434 \u0440\u043e\u0431. \u0442\u0435\u043b.": new MapEntry( + 13, + "\u043a\u043e\u0434 \u0440\u043e\u0431. \u0442\u0435\u043b.", + valueSpecifiers[17], + ), + "\u043a\u043e\u0434 \u0440\u043e\u0431. \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443": + new MapEntry( + 17, + "\u043a\u043e\u0434 \u0440\u043e\u0431. \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + valueSpecifiers[17], + ), + "\u043a\u043e\u0434 \u0440\u043e\u0431.\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443": + new MapEntry( + 16, + "\u043a\u043e\u0434 \u0440\u043e\u0431.\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + valueSpecifiers[17], + ), + "\u043a\u043e\u0434 \u0440\u043e\u0431\u043e\u0447\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443": + new MapEntry( + 21, + "\u043a\u043e\u0434 \u0440\u043e\u0431\u043e\u0447\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + valueSpecifiers[17], + ), + "\u043a\u043e\u0434 \u0441\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443": + new MapEntry( + 21, + "\u043a\u043e\u0434 \u0441\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443", + valueSpecifiers[18], + ), + "\u043a\u043e\u0434\u0434\u043e\u043c.\u0442\u0435\u043b.": new MapEntry( + 11, + "\u043a\u043e\u0434\u0434\u043e\u043c.\u0442\u0435\u043b.", + valueSpecifiers[16], + ), + "\u043a\u043e\u0434\u043c\u043e\u0431.\u0442\u0435\u043b.": new MapEntry( + 11, + "\u043a\u043e\u0434\u043c\u043e\u0431.\u0442\u0435\u043b.", + valueSpecifiers[18], + ), + "\u043a\u043e\u0434\u043e\u0431\u043b\u0430\u0441\u0442\u0456": + new MapEntry( + 10, + "\u043a\u043e\u0434\u043e\u0431\u043b\u0430\u0441\u0442\u0456", + valueSpecifiers[12], + ), + "\u043a\u043e\u0434\u043f\u0435\u0439\u0434\u0436\u0435\u0440\u0430": + new MapEntry( + 11, + "\u043a\u043e\u0434\u043f\u0435\u0439\u0434\u0436\u0435\u0440\u0430", + valueSpecifiers[19], + ), + "\u043a\u043e\u0434\u0440\u0435\u0433\u0456\u043e\u043d\u0443": + new MapEntry( + 10, + "\u043a\u043e\u0434\u0440\u0435\u0433\u0456\u043e\u043d\u0443", + valueSpecifiers[12], + ), + "\u043a\u043e\u0434\u0440\u043e\u0431.\u0442\u0435\u043b.": new MapEntry( + 11, + "\u043a\u043e\u0434\u0440\u043e\u0431.\u0442\u0435\u043b.", + valueSpecifiers[17], + ), + "\u043a\u043e\u043c\u043f\u0430\u043d\u0456\u044f": new MapEntry( + 8, + "\u043a\u043e\u043c\u043f\u0430\u043d\u0456\u044f", + valueSpecifiers[14], + ), + "\u043a\u0440\u0430\u0457\u043d\u0430": new MapEntry( + 6, + "\u043a\u0440\u0430\u0457\u043d\u0430", + valueSpecifiers[11], + ), + "\u043c\u043e\u0431.": new MapEntry( + 4, + "\u043c\u043e\u0431.", + valueSpecifiers[18], + ), + "\u043c\u043e\u0431. \u0442\u0435\u043b.": new MapEntry( + 9, + "\u043c\u043e\u0431. \u0442\u0435\u043b.", + valueSpecifiers[18], + ), + "\u043c\u043e\u0431. \u0442\u0435\u043b\u0435\u0444\u043e\u043d": + new MapEntry( + 12, + "\u043c\u043e\u0431. \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + valueSpecifiers[18], + ), + "\u043c\u043e\u0431.\u0442\u0435\u043b.": new MapEntry( + 8, + "\u043c\u043e\u0431.\u0442\u0435\u043b.", + valueSpecifiers[18], + ), + "\u043c\u043e\u0431.\u0442\u0435\u043b\u0435\u0444\u043e\u043d": + new MapEntry( + 11, + "\u043c\u043e\u0431.\u0442\u0435\u043b\u0435\u0444\u043e\u043d", + valueSpecifiers[18], + ), + "\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d": + new MapEntry( + 17, + "\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + valueSpecifiers[18], + ), + "\u043c\u043e\u0431\u0456\u043b\u044c\u043d\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d": + new MapEntry( + 17, + "\u043c\u043e\u0431\u0456\u043b\u044c\u043d\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + valueSpecifiers[18], + ), + "\u043c\u0456\u0441\u0442\u043e": new MapEntry( + 5, + "\u043c\u0456\u0441\u0442\u043e", + valueSpecifiers[8], + ), + "\u043d\u0430\u0440\u043e\u0434\u0438\u0432\u0441\u044f": new MapEntry( + 9, + "\u043d\u0430\u0440\u043e\u0434\u0438\u0432\u0441\u044f", + valueSpecifiers[4], + ), + "\u043e\u0431\u043b.": new MapEntry( + 4, + "\u043e\u0431\u043b.", + valueSpecifiers[9], + ), + "\u043e\u0431\u043b\u0430\u0441\u0442\u044c": new MapEntry( + 7, + "\u043e\u0431\u043b\u0430\u0441\u0442\u044c", + valueSpecifiers[9], + ), + "\u043e\u0440\u0433\u0430\u043d\u0456\u0437\u0430\u0446\u0456\u044f": + new MapEntry( + 11, + "\u043e\u0440\u0433\u0430\u043d\u0456\u0437\u0430\u0446\u0456\u044f", + valueSpecifiers[14], + ), + "\u043f\u0435\u0439\u0434\u0436\u0435\u0440": new MapEntry( + 7, + "\u043f\u0435\u0439\u0434\u0436\u0435\u0440", + valueSpecifiers[19], + ), + "\u043f\u043e \u0431\u0430\u0442\u044c\u043a\u043e\u0432\u0456": + new MapEntry( + 11, + "\u043f\u043e \u0431\u0430\u0442\u044c\u043a\u043e\u0432\u0456", + valueSpecifiers[2], + ), + "\u043f\u043e\u0431\u0430\u0442\u044c\u043a\u043e\u0432\u0456": + new MapEntry( + 10, + "\u043f\u043e\u0431\u0430\u0442\u044c\u043a\u043e\u0432\u0456", + valueSpecifiers[2], + ), + "\u043f\u043e\u0432\u043d\u0435 \u0456\u043c'\u044f": new MapEntry( + 10, + "\u043f\u043e\u0432\u043d\u0435 \u0456\u043c'\u044f", + valueSpecifiers[0], + ), + "\u043f\u043e\u0432\u043d\u0435 \u0456\u043c\u2019\u044f": new MapEntry( + 10, + "\u043f\u043e\u0432\u043d\u0435 \u0456\u043c\u2019\u044f", + valueSpecifiers[0], + ), + "\u043f\u043e\u0432\u043d\u0435\u0456\u043c'\u044f": new MapEntry( + 9, + "\u043f\u043e\u0432\u043d\u0435\u0456\u043c'\u044f", + valueSpecifiers[0], + ), + "\u043f\u043e\u0432\u043d\u0435\u0456\u043c\u2019\u044f": new MapEntry( + 9, + "\u043f\u043e\u0432\u043d\u0435\u0456\u043c\u2019\u044f", + valueSpecifiers[0], + ), + "\u043f\u043e\u043b\u043d\u043e\u0435 \u0438\u043c\u044f": new MapEntry( + 10, + "\u043f\u043e\u043b\u043d\u043e\u0435 \u0438\u043c\u044f", + valueSpecifiers[0], + ), + "\u043f\u043e\u043b\u043d\u043e\u0435\u0438\u043c\u044f": new MapEntry( + 9, + "\u043f\u043e\u043b\u043d\u043e\u0435\u0438\u043c\u044f", + valueSpecifiers[0], + ), + "\u043f\u043e\u0441\u0430\u0434\u0430": new MapEntry( + 6, + "\u043f\u043e\u0441\u0430\u0434\u0430", + valueSpecifiers[5], + ), + "\u043f\u043e\u0448\u0442\u043e\u0432\u0438\u0439 \u043a\u043e\u0434": + new MapEntry( + 12, + "\u043f\u043e\u0448\u0442\u043e\u0432\u0438\u0439 \u043a\u043e\u0434", + valueSpecifiers[10], + ), + "\u043f\u043e\u0448\u0442\u043e\u0432\u0438\u0439 \u0456\u043d\u0434\u0435\u043a\u0441": + new MapEntry( + 15, + "\u043f\u043e\u0448\u0442\u043e\u0432\u0438\u0439 \u0456\u043d\u0434\u0435\u043a\u0441", + valueSpecifiers[10], + ), + "\u043f\u0440\u043e\u0432\u0443\u043b\u043e\u043a": new MapEntry( + 8, + "\u043f\u0440\u043e\u0432\u0443\u043b\u043e\u043a", + valueSpecifiers[7], + ), + "\u043f\u0440\u043e\u0441\u043f\u0435\u043a\u0442": new MapEntry( + 8, + "\u043f\u0440\u043e\u0441\u043f\u0435\u043a\u0442", + valueSpecifiers[7], + ), + "\u043f\u0440\u0456\u0437\u0432\u0438\u0449\u0435": new MapEntry( + 8, + "\u043f\u0440\u0456\u0437\u0432\u0438\u0449\u0435", + valueSpecifiers[3], + ), + "\u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d": + new MapEntry( + 15, + "\u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + valueSpecifiers[17], + ), + "\u0440\u043e\u0431.": new MapEntry( + 4, + "\u0440\u043e\u0431.", + valueSpecifiers[17], + ), + "\u0440\u043e\u0431. \u0442\u0435\u043b.": new MapEntry( + 9, + "\u0440\u043e\u0431. \u0442\u0435\u043b.", + valueSpecifiers[17], + ), + "\u0440\u043e\u0431. \u0442\u0435\u043b\u0435\u0444\u043e\u043d": + new MapEntry( + 12, + "\u0440\u043e\u0431. \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + valueSpecifiers[17], + ), + "\u0440\u043e\u0431.\u0442\u0435\u043b.": new MapEntry( + 8, + "\u0440\u043e\u0431.\u0442\u0435\u043b.", + valueSpecifiers[17], + ), + "\u0440\u043e\u0431.\u0442\u0435\u043b\u0435\u0444\u043e\u043d": + new MapEntry( + 11, + "\u0440\u043e\u0431.\u0442\u0435\u043b\u0435\u0444\u043e\u043d", + valueSpecifiers[17], + ), + "\u0440\u043e\u0431\u043e\u0447\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d": + new MapEntry( + 15, + "\u0440\u043e\u0431\u043e\u0447\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + valueSpecifiers[17], + ), + "\u0440\u043e\u0434\u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438": + new MapEntry( + 15, + "\u0440\u043e\u0434\u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438", + valueSpecifiers[5], + ), + "\u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c": new MapEntry( + 8, + "\u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c", + valueSpecifiers[4], + ), + "\u0440\u043e\u0434\u0438\u043b\u0441\u044f": new MapEntry( + 7, + "\u0440\u043e\u0434\u0438\u043b\u0441\u044f", + valueSpecifiers[4], + ), + "\u0440\u044f\u0434\u043e\u043a \u0430\u0434\u0440\u0435\u0441\u0438": + new MapEntry( + 12, + "\u0440\u044f\u0434\u043e\u043a \u0430\u0434\u0440\u0435\u0441\u0438", + valueSpecifiers[7], + ), + "\u0441\u043e\u0442\u043e\u0432\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d": + new MapEntry( + 15, + "\u0441\u043e\u0442\u043e\u0432\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d", + valueSpecifiers[18], + ), + "\u0442\u0435\u043b": new MapEntry( + 3, + "\u0442\u0435\u043b", + valueSpecifiers[13], + ), + "\u0442\u0435\u043b.": new MapEntry( + 4, + "\u0442\u0435\u043b.", + valueSpecifiers[13], + ), + "\u0442\u0435\u043b\u0435\u0444\u043e\u043d": new MapEntry( + 7, + "\u0442\u0435\u043b\u0435\u0444\u043e\u043d", + valueSpecifiers[13], + ), + "\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0430": new MapEntry( + 8, + "\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0430", + valueSpecifiers[14], + ), + "\u0444\u0430\u043a\u0441": new MapEntry( + 4, + "\u0444\u0430\u043a\u0441", + valueSpecifiers[20], + ), + "\u0456\u043c'\u044f": new MapEntry( + 4, + "\u0456\u043c'\u044f", + valueSpecifiers[1], + ), + "\u0456\u043c\u2019\u044f": new MapEntry( + 4, + "\u0456\u043c\u2019\u044f", + valueSpecifiers[1], + ), + "\u0456\u043d\u0434\u0435\u043a\u0441": new MapEntry( + 6, + "\u0456\u043d\u0434\u0435\u043a\u0441", + valueSpecifiers[10], + ), + "\u05d0\u05de\u05e6\u05e2\u05d9": new MapEntry( + 5, + "\u05d0\u05de\u05e6\u05e2\u05d9", + valueSpecifiers[2], + ), + "\u05d0\u05e8\u05d2\u05d5\u05df": new MapEntry( + 5, + "\u05d0\u05e8\u05d2\u05d5\u05df", + valueSpecifiers[14], + ), + "\u05d1\u05d9\u05ea": new MapEntry( + 3, + "\u05d1\u05d9\u05ea", + valueSpecifiers[16], + ), + "\u05d3\u05d5\u05d0\u05f4\u05dc": new MapEntry( + 5, + "\u05d3\u05d5\u05d0\u05f4\u05dc", + valueSpecifiers[6], + ), + "\u05d6\u05d9\u05de\u05d5\u05e0\u05d9\u05ea": new MapEntry( + 7, + "\u05d6\u05d9\u05de\u05d5\u05e0\u05d9\u05ea", + valueSpecifiers[19], + ), + "\u05d7\u05d1\u05e8\u05d4": new MapEntry( + 4, + "\u05d7\u05d1\u05e8\u05d4", + valueSpecifiers[14], + ), + "\u05d8\u05dc\u05e4\u05d5\u05df": new MapEntry( + 5, + "\u05d8\u05dc\u05e4\u05d5\u05df", + valueSpecifiers[13], + ), + "\u05d8\u05dc\u05e4\u05d5\u05df \u05d1\u05d9\u05ea": new MapEntry( + 9, + "\u05d8\u05dc\u05e4\u05d5\u05df \u05d1\u05d9\u05ea", + valueSpecifiers[16], + ), + "\u05d8\u05dc\u05e4\u05d5\u05df \u05d1\u05e2\u05d1\u05d5\u05d3\u05d4": + new MapEntry( + 12, + "\u05d8\u05dc\u05e4\u05d5\u05df \u05d1\u05e2\u05d1\u05d5\u05d3\u05d4", + valueSpecifiers[17], + ), + "\u05d9\u05d5\u05dd \u05d4\u05d5\u05dc\u05d3\u05ea": new MapEntry( + 9, + "\u05d9\u05d5\u05dd \u05d4\u05d5\u05dc\u05d3\u05ea", + valueSpecifiers[4], + ), + "\u05d9\u05d9\u05e9\u05d5\u05d1": new MapEntry( + 5, + "\u05d9\u05d9\u05e9\u05d5\u05d1", + valueSpecifiers[8], + ), + "\u05db\u05ea\u05d5\u05d1\u05ea": new MapEntry( + 5, + "\u05db\u05ea\u05d5\u05d1\u05ea", + valueSpecifiers[7], + ), + "\u05de\u05d3\u05d9\u05e0\u05d4": new MapEntry( + 5, + "\u05de\u05d3\u05d9\u05e0\u05d4", + valueSpecifiers[9], + ), + "\u05de\u05d7\u05d5\u05d6": new MapEntry( + 4, + "\u05de\u05d7\u05d5\u05d6", + valueSpecifiers[9], + ), + "\u05de\u05d9\u05d9\u05dc": new MapEntry( + 4, + "\u05de\u05d9\u05d9\u05dc", + valueSpecifiers[6], + ), + "\u05de\u05d9\u05e7\u05d5\u05d3": new MapEntry( + 5, + "\u05de\u05d9\u05e7\u05d5\u05d3", + valueSpecifiers[10], + ), + "\u05de\u05e9\u05e4\u05d7\u05d4": new MapEntry( + 5, + "\u05de\u05e9\u05e4\u05d7\u05d4", + valueSpecifiers[3], + ), + "\u05de\u05e9\u05e8\u05d3": new MapEntry( + 4, + "\u05de\u05e9\u05e8\u05d3", + valueSpecifiers[17], + ), + "\u05e0\u05d9\u05d9\u05d3": new MapEntry( + 4, + "\u05e0\u05d9\u05d9\u05d3", + valueSpecifiers[18], + ), + "\u05e1\u05dc\u05d5\u05dc\u05e8\u05d9": new MapEntry( + 6, + "\u05e1\u05dc\u05d5\u05dc\u05e8\u05d9", + valueSpecifiers[18], + ), + "\u05e2\u05d1\u05d5\u05d3\u05d4": new MapEntry( + 5, + "\u05e2\u05d1\u05d5\u05d3\u05d4", + valueSpecifiers[17], + ), + "\u05e2\u05d9\u05e8": new MapEntry( + 3, + "\u05e2\u05d9\u05e8", + valueSpecifiers[8], + ), + "\u05e4\u05e7\u05e1": new MapEntry( + 3, + "\u05e4\u05e7\u05e1", + valueSpecifiers[20], + ), + "\u05e4\u05e8\u05d8\u05d9": new MapEntry( + 4, + "\u05e4\u05e8\u05d8\u05d9", + valueSpecifiers[1], + ), + "\u05e7\u05d9\u05d3\u05d5\u05de\u05ea": new MapEntry( + 6, + "\u05e7\u05d9\u05d3\u05d5\u05de\u05ea", + valueSpecifiers[12], + ), + "\u05e8\u05d7\u05d5\u05d1": new MapEntry( + 4, + "\u05e8\u05d7\u05d5\u05d1", + valueSpecifiers[7], + ), + "\u05e9\u05dd": new MapEntry(2, "\u05e9\u05dd", valueSpecifiers[0]), + "\u05e9\u05dd \u05d0\u05de\u05e6\u05e2\u05d9": new MapEntry( + 8, + "\u05e9\u05dd \u05d0\u05de\u05e6\u05e2\u05d9", + valueSpecifiers[2], + ), + "\u05e9\u05dd \u05de\u05dc\u05d0": new MapEntry( + 6, + "\u05e9\u05dd \u05de\u05dc\u05d0", + valueSpecifiers[0], + ), + "\u05e9\u05dd \u05de\u05e9\u05e4\u05d7\u05d4": new MapEntry( + 8, + "\u05e9\u05dd \u05de\u05e9\u05e4\u05d7\u05d4", + valueSpecifiers[3], + ), + "\u05e9\u05dd \u05e4\u05e8\u05d8\u05d9": new MapEntry( + 7, + "\u05e9\u05dd \u05e4\u05e8\u05d8\u05d9", + valueSpecifiers[1], + ), + "\u05ea\u05d0\u05e8\u05d9\u05da \u05dc\u05d9\u05d3\u05d4": new MapEntry( + 10, + "\u05ea\u05d0\u05e8\u05d9\u05da \u05dc\u05d9\u05d3\u05d4", + valueSpecifiers[4], + ), + "\u05ea\u05e4\u05e7\u05d9\u05d3": new MapEntry( + 5, + "\u05ea\u05e4\u05e7\u05d9\u05d3", + valueSpecifiers[5], + ), + "\u0623\u062f\u062e\u0644 \u0639\u0646\u0648\u0627\u0646 \u0633\u0637\u0631 \u0627\u0644\u0639\u0646\u0648\u0627\u0646": + new MapEntry( + 22, + "\u0623\u062f\u062e\u0644 \u0639\u0646\u0648\u0627\u0646 \u0633\u0637\u0631 \u0627\u0644\u0639\u0646\u0648\u0627\u0646", + valueSpecifiers[7], + ), + "\u0627\u0633\u0645 \u0627\u0644\u0639\u0627\u0626\u0644\u0629": + new MapEntry( + 11, + "\u0627\u0633\u0645 \u0627\u0644\u0639\u0627\u0626\u0644\u0629", + valueSpecifiers[3], + ), + "\u0627\u0644\u0623\u0648\u0644": new MapEntry( + 5, + "\u0627\u0644\u0623\u0648\u0644", + valueSpecifiers[1], + ), + "\u0627\u0644\u0627\u0633\u0645": new MapEntry( + 5, + "\u0627\u0644\u0627\u0633\u0645", + valueSpecifiers[0], + ), + "\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0623\u0648\u0633\u0637": + new MapEntry( + 12, + "\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0623\u0648\u0633\u0637", + valueSpecifiers[2], + ), + "\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0623\u0648\u0644": + new MapEntry( + 11, + "\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0623\u0648\u0644", + valueSpecifiers[1], + ), + "\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0643\u0627\u0645\u0644": + new MapEntry( + 12, + "\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0643\u0627\u0645\u0644", + valueSpecifiers[0], + ), + "\u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a": + new MapEntry( + 17, + "\u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a", + valueSpecifiers[6], + ), + "\u0627\u0644\u0628\u0644\u062f": new MapEntry( + 5, + "\u0627\u0644\u0628\u0644\u062f", + valueSpecifiers[11], + ), + "\u0627\u0644\u062a\u0644\u064a\u0641\u0648\u0646": new MapEntry( + 8, + "\u0627\u0644\u062a\u0644\u064a\u0641\u0648\u0646", + valueSpecifiers[13], + ), + "\u0627\u0644\u062d\u0631\u0641 \u0627\u0644\u0623\u0648\u0644 \u0645\u0646 \u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0623\u0648\u0633\u0637": + new MapEntry( + 27, + "\u0627\u0644\u062d\u0631\u0641 \u0627\u0644\u0623\u0648\u0644 \u0645\u0646 \u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0623\u0648\u0633\u0637", + valueSpecifiers[2], + ), + "\u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0628\u0631\u064a\u062f\u064a": + new MapEntry( + 13, + "\u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0628\u0631\u064a\u062f\u064a", + valueSpecifiers[10], + ), + "\u0627\u0644\u0634\u0627\u0631\u0639": new MapEntry( + 6, + "\u0627\u0644\u0634\u0627\u0631\u0639", + valueSpecifiers[7], + ), + "\u0627\u0644\u0634\u0631\u0643\u0629": new MapEntry( + 6, + "\u0627\u0644\u0634\u0631\u0643\u0629", + valueSpecifiers[14], + ), + "\u0627\u0644\u0639\u0646\u0648\u0627\u0646": new MapEntry( + 7, + "\u0627\u0644\u0639\u0646\u0648\u0627\u0646", + valueSpecifiers[7], + ), + "\u0627\u0644\u0639\u0646\u0648\u0627\u0646 \u0661": new MapEntry( + 9, + "\u0627\u0644\u0639\u0646\u0648\u0627\u0646 \u0661", + valueSpecifiers[7], + ), + "\u0627\u0644\u0641\u0627\u0643\u0633": new MapEntry( + 6, + "\u0627\u0644\u0641\u0627\u0643\u0633", + valueSpecifiers[20], + ), + "\u0627\u0644\u0645\u0624\u0633\u0633\u0629": new MapEntry( + 7, + "\u0627\u0644\u0645\u0624\u0633\u0633\u0629", + valueSpecifiers[14], + ), + "\u0627\u0644\u0645\u062f\u064a\u0646\u0629": new MapEntry( + 7, + "\u0627\u0644\u0645\u062f\u064a\u0646\u0629", + valueSpecifiers[8], + ), + "\u0627\u0644\u0645\u0633\u0645\u0649 \u0627\u0644\u0648\u0638\u064a\u0641\u064a": + new MapEntry( + 14, + "\u0627\u0644\u0645\u0633\u0645\u0649 \u0627\u0644\u0648\u0638\u064a\u0641\u064a", + valueSpecifiers[5], + ), + "\u0627\u0644\u0647\u0627\u062a\u0641": new MapEntry( + 6, + "\u0627\u0644\u0647\u0627\u062a\u0641", + valueSpecifiers[13], + ), + "\u0627\u0644\u0647\u0627\u062a\u0641 \u0627\u0644\u062e\u0644\u0648\u064a": + new MapEntry( + 13, + "\u0627\u0644\u0647\u0627\u062a\u0641 \u0627\u0644\u062e\u0644\u0648\u064a", + valueSpecifiers[18], + ), + "\u0627\u0644\u0647\u0627\u062a\u0641 \u0627\u0644\u0645\u062d\u0645\u0648\u0644": + new MapEntry( + 14, + "\u0627\u0644\u0647\u0627\u062a\u0641 \u0627\u0644\u0645\u062d\u0645\u0648\u0644", + valueSpecifiers[18], + ), + "\u0627\u0644\u0647\u0627\u062a\u0641 \u0641\u064a \u0627\u0644\u0635\u0628\u0627\u062d": + new MapEntry( + 16, + "\u0627\u0644\u0647\u0627\u062a\u0641 \u0641\u064a \u0627\u0644\u0635\u0628\u0627\u062d", + valueSpecifiers[17], + ), + "\u0627\u0644\u0647\u0627\u062a\u0641 \u0641\u064a \u0627\u0644\u0645\u0633\u0627\u0621": + new MapEntry( + 16, + "\u0627\u0644\u0647\u0627\u062a\u0641 \u0641\u064a \u0627\u0644\u0645\u0633\u0627\u0621", + valueSpecifiers[16], + ), + "\u0627\u0644\u0647\u0627\u062a\u0641 \u0641\u064a \u0627\u0644\u0645\u0633\u0627\u0621 ": + new MapEntry( + 17, + "\u0627\u0644\u0647\u0627\u062a\u0641 \u0641\u064a \u0627\u0644\u0645\u0633\u0627\u0621 ", + valueSpecifiers[16], + ), + "\u0627\u0644\u0648\u0644\u0627\u064a\u0629": new MapEntry( + 7, + "\u0627\u0644\u0648\u0644\u0627\u064a\u0629", + valueSpecifiers[9], + ), + "\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0645\u064a\u0644\u0627\u062f": + new MapEntry( + 13, + "\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0645\u064a\u0644\u0627\u062f", + valueSpecifiers[4], + ), + "\u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062a\u0641": new MapEntry( + 10, + "\u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062a\u0641", + valueSpecifiers[13], + ), + "\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0634\u0627\u0631\u0639": + new MapEntry( + 12, + "\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0634\u0627\u0631\u0639", + valueSpecifiers[7], + ), + "\u0643\u0648\u062f \u0627\u0644\u0645\u0646\u0637\u0642\u0629": + new MapEntry( + 11, + "\u0643\u0648\u062f \u0627\u0644\u0645\u0646\u0637\u0642\u0629", + valueSpecifiers[12], + ), + "\u0643\u0648\u062f \u0627\u0644\u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0633\u0643\u0646\u064a\u0629": + new MapEntry( + 19, + "\u0643\u0648\u062f \u0627\u0644\u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0633\u0643\u0646\u064a\u0629", + valueSpecifiers[16], + ), + "\u0643\u0648\u062f \u0627\u0644\u0645\u0646\u0637\u0642\u0629 \u0644\u0644\u0647\u0627\u062a\u0641 \u0641\u064a \u0627\u0644\u0645\u0633\u0627\u0621": + new MapEntry( + 28, + "\u0643\u0648\u062f \u0627\u0644\u0645\u0646\u0637\u0642\u0629 \u0644\u0644\u0647\u0627\u062a\u0641 \u0641\u064a \u0627\u0644\u0645\u0633\u0627\u0621", + valueSpecifiers[16], + ), + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0634\u0631\u0643\u0629": + new MapEntry( + 16, + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0634\u0631\u0643\u0629", + valueSpecifiers[17], + ), + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0639\u0645\u0644": + new MapEntry( + 15, + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0639\u0645\u0644", + valueSpecifiers[17], + ), + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0647\u0627\u062a\u0641 \u0627\u0644\u062e\u0644\u0648\u064a": + new MapEntry( + 23, + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0647\u0627\u062a\u0641 \u0627\u0644\u062e\u0644\u0648\u064a", + valueSpecifiers[18], + ), + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0647\u0627\u062a\u0641 \u0627\u0644\u0645\u062d\u0645\u0648\u0644": + new MapEntry( + 24, + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0647\u0627\u062a\u0641 \u0627\u0644\u0645\u062d\u0645\u0648\u0644", + valueSpecifiers[18], + ), + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0647\u0627\u062a\u0641 \u0641\u064a \u0627\u0644\u0635\u0628\u0627\u062d": + new MapEntry( + 26, + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0647\u0627\u062a\u0641 \u0641\u064a \u0627\u0644\u0635\u0628\u0627\u062d", + valueSpecifiers[17], + ), + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u062c\u0647\u0627\u0632 \u0627\u0644\u0646\u062f\u0627\u0621": + new MapEntry( + 21, + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u062c\u0647\u0627\u0632 \u0627\u0644\u0646\u062f\u0627\u0621", + valueSpecifiers[19], + ), + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u0647\u0627\u062a\u0641 \u0627\u0644\u0639\u0645\u0644": + new MapEntry( + 20, + "\u0643\u0648\u062f \u0645\u0646\u0637\u0642\u0629 \u0647\u0627\u062a\u0641 \u0627\u0644\u0639\u0645\u0644", + valueSpecifiers[17], + ), + "\u0645\u0648\u0644\u0648\u062f": new MapEntry( + 5, + "\u0645\u0648\u0644\u0648\u062f", + valueSpecifiers[4], + ), + "\u0647\u0627\u062a\u0641 \u0627\u0644\u0634\u0631\u0643\u0629": + new MapEntry( + 11, + "\u0647\u0627\u062a\u0641 \u0627\u0644\u0634\u0631\u0643\u0629", + valueSpecifiers[17], + ), + "\u0647\u0627\u062a\u0641 \u0627\u0644\u0639\u0645\u0644": new MapEntry( + 10, + "\u0647\u0627\u062a\u0641 \u0627\u0644\u0639\u0645\u0644", + valueSpecifiers[17], + ), + "\u0647\u0627\u062a\u0641 \u0627\u0644\u0645\u0646\u0632\u0644": + new MapEntry( + 11, + "\u0647\u0627\u062a\u0641 \u0627\u0644\u0645\u0646\u0632\u0644", + valueSpecifiers[16], + ), + "\u0647\u0627\u062a\u0641 \u0646\u062f\u0627\u0621": new MapEntry( + 9, + "\u0647\u0627\u062a\u0641 \u0646\u062f\u0627\u0621", + valueSpecifiers[19], + ), + "\u0e01\u0e25\u0e32\u0e07": new MapEntry( + 4, + "\u0e01\u0e25\u0e32\u0e07", + valueSpecifiers[2], + ), + "\u0e0a\u0e37\u0e48\u0e2d": new MapEntry( + 4, + "\u0e0a\u0e37\u0e48\u0e2d", + valueSpecifiers[1], + ), + "\u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e25\u0e32\u0e07": new MapEntry( + 8, + "\u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e25\u0e32\u0e07", + valueSpecifiers[2], + ), + "\u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e25\u0e32\u0e07\u0e22\u0e48\u0e2d": + new MapEntry( + 11, + "\u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e25\u0e32\u0e07\u0e22\u0e48\u0e2d", + valueSpecifiers[2], + ), + "\u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e25\u0e32\u0e07\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07": + new MapEntry( + 15, + "\u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e25\u0e32\u0e07\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07", + valueSpecifiers[2], + ), + "\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e23\u0e34\u0e07": new MapEntry( + 8, + "\u0e0a\u0e37\u0e48\u0e2d\u0e08\u0e23\u0e34\u0e07", + valueSpecifiers[1], + ), + "\u0e0a\u0e37\u0e48\u0e2d\u0e15\u0e31\u0e27": new MapEntry( + 7, + "\u0e0a\u0e37\u0e48\u0e2d\u0e15\u0e31\u0e27", + valueSpecifiers[1], + ), + "\u0e0a\u0e37\u0e48\u0e2d\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07": + new MapEntry( + 11, + "\u0e0a\u0e37\u0e48\u0e2d\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07", + valueSpecifiers[5], + ), + "\u0e0a\u0e37\u0e48\u0e2d\u0e15\u0e49\u0e19": new MapEntry( + 7, + "\u0e0a\u0e37\u0e48\u0e2d\u0e15\u0e49\u0e19", + valueSpecifiers[1], + ), + "\u0e0a\u0e37\u0e48\u0e2d\u0e16\u0e19\u0e19": new MapEntry( + 7, + "\u0e0a\u0e37\u0e48\u0e2d\u0e16\u0e19\u0e19", + valueSpecifiers[7], + ), + "\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e49\u0e32\u0e22": new MapEntry( + 8, + "\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e49\u0e32\u0e22", + valueSpecifiers[3], + ), + "\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e01\u0e38\u0e25": new MapEntry( + 8, + "\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e01\u0e38\u0e25", + valueSpecifiers[3], + ), + "\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e01\u0e38\u0e25\u0e17\u0e49\u0e32\u0e22": + new MapEntry( + 12, + "\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e01\u0e38\u0e25\u0e17\u0e49\u0e32\u0e22", + valueSpecifiers[3], + ), + "\u0e0a\u0e37\u0e48\u0e2d\u0e2b\u0e19\u0e49\u0e32": new MapEntry( + 8, + "\u0e0a\u0e37\u0e48\u0e2d\u0e2b\u0e19\u0e49\u0e32", + valueSpecifiers[1], + ), + "\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e15\u0e47\u0e21": new MapEntry( + 8, + "\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e15\u0e47\u0e21", + valueSpecifiers[0], + ), + "\u0e0a\u0e37\u0e48\u0e2d\u0e41\u0e23\u0e01": new MapEntry( + 7, + "\u0e0a\u0e37\u0e48\u0e2d\u0e41\u0e23\u0e01", + valueSpecifiers[1], + ), + "\u0e0a\u0e37\u0e48\u0e2d\u0e41\u0e25\u0e30\u0e19\u0e32\u0e21\u0e2a\u0e38\u0e01\u0e25": + new MapEntry( + 14, + "\u0e0a\u0e37\u0e48\u0e2d\u0e41\u0e25\u0e30\u0e19\u0e32\u0e21\u0e2a\u0e38\u0e01\u0e25", + valueSpecifiers[0], + ), + "\u0e15\u0e31\u0e27\u0e22\u0e48\u0e2d\u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e25\u0e32\u0e07": + new MapEntry( + 14, + "\u0e15\u0e31\u0e27\u0e22\u0e48\u0e2d\u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e25\u0e32\u0e07", + valueSpecifiers[2], + ), + "\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07": new MapEntry( + 7, + "\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07", + valueSpecifiers[5], + ), + "\u0e16\u0e19\u0e19": new MapEntry( + 3, + "\u0e16\u0e19\u0e19", + valueSpecifiers[7], + ), + "\u0e16\u0e19\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48": + new MapEntry( + 10, + "\u0e16\u0e19\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48", + valueSpecifiers[7], + ), + "\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e23\u0e2b\u0e31\u0e2a": + new MapEntry( + 12, + "\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e23\u0e2b\u0e31\u0e2a", + valueSpecifiers[17], + ), + "\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48": new MapEntry( + 7, + "\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48", + valueSpecifiers[7], + ), + "\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48 1": new MapEntry( + 9, + "\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48 1", + valueSpecifiers[7], + ), + "\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e16\u0e19\u0e19": + new MapEntry( + 10, + "\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e16\u0e19\u0e19", + valueSpecifiers[7], + ), + "\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25": + new MapEntry( + 12, + "\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25", + valueSpecifiers[6], + ), + "\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e23\u0e01": + new MapEntry( + 10, + "\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e23\u0e01", + valueSpecifiers[7], + ), + "\u0e17\u0e35\u0e48\u0e35\u0e23\u0e2b\u0e31\u0e2a\u0e17\u0e33\u0e07\u0e32\u0e19": + new MapEntry( + 13, + "\u0e17\u0e35\u0e48\u0e35\u0e23\u0e2b\u0e31\u0e2a\u0e17\u0e33\u0e07\u0e32\u0e19", + valueSpecifiers[17], + ), + "\u0e17\u0e49\u0e32\u0e22": new MapEntry( + 4, + "\u0e17\u0e49\u0e32\u0e22", + valueSpecifiers[3], + ), + "\u0e18\u0e38\u0e23\u0e01\u0e34\u0e08\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48": + new MapEntry( + 17, + "\u0e18\u0e38\u0e23\u0e01\u0e34\u0e08\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48", + valueSpecifiers[17], + ), + "\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25": new MapEntry( + 7, + "\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25", + valueSpecifiers[3], + ), + "\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17": new MapEntry( + 6, + "\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17", + valueSpecifiers[14], + ), + "\u0e1a\u0e49\u0e32\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48": + new MapEntry( + 15, + "\u0e1a\u0e49\u0e32\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48", + valueSpecifiers[16], + ), + "\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28": new MapEntry( + 6, + "\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28", + valueSpecifiers[11], + ), + "\u0e1b\u0e49\u0e2d\u0e19\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48": + new MapEntry( + 17, + "\u0e1b\u0e49\u0e2d\u0e19\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48", + valueSpecifiers[7], + ), + "\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e23\u0e2b\u0e31\u0e2a": + new MapEntry( + 11, + "\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e23\u0e2b\u0e31\u0e2a", + valueSpecifiers[12], + ), + "\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e23\u0e2b\u0e31\u0e2a\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17": + new MapEntry( + 17, + "\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e23\u0e2b\u0e31\u0e2a\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17", + valueSpecifiers[17], + ), + "\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e23\u0e2b\u0e31\u0e2a\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d": + new MapEntry( + 25, + "\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e23\u0e2b\u0e31\u0e2a\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d", + valueSpecifiers[18], + ), + "\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d": new MapEntry( + 6, + "\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d", + valueSpecifiers[18], + ), + "\u0e23\u0e2b\u0e31\u0e2a": new MapEntry( + 4, + "\u0e23\u0e2b\u0e31\u0e2a", + valueSpecifiers[10], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e08\u0e14\u0e2b\u0e21\u0e32\u0e22": + new MapEntry( + 10, + "\u0e23\u0e2b\u0e31\u0e2a\u0e08\u0e14\u0e2b\u0e21\u0e32\u0e22", + valueSpecifiers[10], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e17\u0e33\u0e07\u0e32\u0e19": new MapEntry( + 9, + "\u0e23\u0e2b\u0e31\u0e2a\u0e17\u0e33\u0e07\u0e32\u0e19", + valueSpecifiers[17], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19": + new MapEntry( + 12, + "\u0e23\u0e2b\u0e31\u0e2a\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19", + valueSpecifiers[17], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e18\u0e38\u0e23\u0e01\u0e34\u0e08": + new MapEntry( + 10, + "\u0e23\u0e2b\u0e31\u0e2a\u0e18\u0e38\u0e23\u0e01\u0e34\u0e08", + valueSpecifiers[17], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17": + new MapEntry( + 10, + "\u0e23\u0e2b\u0e31\u0e2a\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17", + valueSpecifiers[17], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e1a\u0e49\u0e32\u0e19": new MapEntry( + 8, + "\u0e23\u0e2b\u0e31\u0e2a\u0e1a\u0e49\u0e32\u0e19", + valueSpecifiers[16], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48": + new MapEntry( + 11, + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48", + valueSpecifiers[12], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e07\u0e32\u0e19": + new MapEntry( + 14, + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e07\u0e32\u0e19", + valueSpecifiers[17], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19": + new MapEntry( + 16, + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19", + valueSpecifiers[17], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e18\u0e38\u0e23\u0e01\u0e34\u0e08": + new MapEntry( + 17, + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e18\u0e38\u0e23\u0e01\u0e34\u0e08", + valueSpecifiers[17], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17": + new MapEntry( + 17, + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17", + valueSpecifiers[17], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e1a\u0e49\u0e32\u0e19": + new MapEntry( + 15, + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e1a\u0e49\u0e32\u0e19", + valueSpecifiers[16], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d": + new MapEntry( + 17, + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d", + valueSpecifiers[18], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e27\u0e34\u0e17\u0e22\u0e38\u0e15\u0e34\u0e14\u0e15\u0e32\u0e21\u0e15\u0e31\u0e27": + new MapEntry( + 25, + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e27\u0e34\u0e17\u0e22\u0e38\u0e15\u0e34\u0e14\u0e15\u0e32\u0e21\u0e15\u0e31\u0e27", + valueSpecifiers[19], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27": + new MapEntry( + 18, + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27", + valueSpecifiers[16], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e40\u0e1e\u0e08\u0e40\u0e08\u0e2d\u0e23\u0e4c": + new MapEntry( + 19, + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e40\u0e1e\u0e08\u0e40\u0e08\u0e2d\u0e23\u0e4c", + valueSpecifiers[19], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d": + new MapEntry( + 25, + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d", + valueSpecifiers[18], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27": + new MapEntry( + 26, + "\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27", + valueSpecifiers[18], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e2a\u0e48\u0e07\u0e08\u0e14\u0e2b\u0e21\u0e32\u0e22": + new MapEntry( + 13, + "\u0e23\u0e2b\u0e31\u0e2a\u0e2a\u0e48\u0e07\u0e08\u0e14\u0e2b\u0e21\u0e32\u0e22", + valueSpecifiers[10], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e1a\u0e49\u0e32\u0e19": + new MapEntry( + 13, + "\u0e23\u0e2b\u0e31\u0e2a\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e1a\u0e49\u0e32\u0e19", + valueSpecifiers[16], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27": + new MapEntry( + 16, + "\u0e23\u0e2b\u0e31\u0e2a\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27", + valueSpecifiers[16], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e40\u0e1e\u0e08\u0e40\u0e08\u0e2d\u0e23\u0e4c": + new MapEntry( + 12, + "\u0e23\u0e2b\u0e31\u0e2a\u0e40\u0e1e\u0e08\u0e40\u0e08\u0e2d\u0e23\u0e4c", + valueSpecifiers[19], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d": + new MapEntry( + 18, + "\u0e23\u0e2b\u0e31\u0e2a\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d", + valueSpecifiers[18], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27": + new MapEntry( + 19, + "\u0e23\u0e2b\u0e31\u0e2a\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27", + valueSpecifiers[18], + ), + "\u0e23\u0e2b\u0e31\u0e2a\u0e44\u0e1b\u0e23\u0e29\u0e13\u0e35\u0e22\u0e4c": + new MapEntry( + 12, + "\u0e23\u0e2b\u0e31\u0e2a\u0e44\u0e1b\u0e23\u0e29\u0e13\u0e35\u0e22\u0e4c", + valueSpecifiers[10], + ), + "\u0e23\u0e31\u0e10": new MapEntry( + 3, + "\u0e23\u0e31\u0e10", + valueSpecifiers[9], + ), + "\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e40\u0e01\u0e34\u0e14": + new MapEntry( + 10, + "\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e40\u0e01\u0e34\u0e14", + valueSpecifiers[4], + ), + "\u0e27\u0e31\u0e19\u0e40\u0e01\u0e34\u0e14": new MapEntry( + 7, + "\u0e27\u0e31\u0e19\u0e40\u0e01\u0e34\u0e14", + valueSpecifiers[4], + ), + "\u0e27\u0e34\u0e17\u0e22\u0e38\u0e15\u0e34\u0e14\u0e15\u0e32\u0e21\u0e15\u0e31\u0e27": + new MapEntry( + 14, + "\u0e27\u0e34\u0e17\u0e22\u0e38\u0e15\u0e34\u0e14\u0e15\u0e32\u0e21\u0e15\u0e31\u0e27", + valueSpecifiers[19], + ), + "\u0e2a\u0e01\u0e38\u0e25": new MapEntry( + 4, + "\u0e2a\u0e01\u0e38\u0e25", + valueSpecifiers[3], + ), + "\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c": + new MapEntry( + 15, + "\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c", + valueSpecifiers[13], + ), + "\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e42\u0e17\u0e23\u0e2f": + new MapEntry( + 11, + "\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e42\u0e17\u0e23\u0e2f", + valueSpecifiers[13], + ), + "\u0e2d\u0e07\u0e04\u0e4c\u0e01\u0e23": new MapEntry( + 6, + "\u0e2d\u0e07\u0e04\u0e4c\u0e01\u0e23", + valueSpecifiers[14], + ), + "\u0e2d\u0e35-\u0e40\u0e21\u0e25": new MapEntry( + 6, + "\u0e2d\u0e35-\u0e40\u0e21\u0e25", + valueSpecifiers[6], + ), + "\u0e2d\u0e35\u0e40\u0e21\u0e25": new MapEntry( + 5, + "\u0e2d\u0e35\u0e40\u0e21\u0e25", + valueSpecifiers[6], + ), + "\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48": + new MapEntry( + 12, + "\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48", + valueSpecifiers[6], + ), + "\u0e40\u0e01\u0e34\u0e14": new MapEntry( + 4, + "\u0e40\u0e01\u0e34\u0e14", + valueSpecifiers[4], + ), + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e07\u0e32\u0e19": new MapEntry( + 8, + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e07\u0e32\u0e19", + valueSpecifiers[17], + ), + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d": + new MapEntry( + 11, + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d", + valueSpecifiers[16], + ), + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e17\u0e33\u0e07\u0e32\u0e19": + new MapEntry( + 10, + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e17\u0e33\u0e07\u0e32\u0e19", + valueSpecifiers[17], + ), + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19": + new MapEntry( + 13, + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19", + valueSpecifiers[17], + ), + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e18\u0e38\u0e23\u0e01\u0e34\u0e08": + new MapEntry( + 11, + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e18\u0e38\u0e23\u0e01\u0e34\u0e08", + valueSpecifiers[17], + ), + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17": + new MapEntry( + 11, + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17", + valueSpecifiers[17], + ), + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e1a\u0e49\u0e32\u0e19": new MapEntry( + 9, + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e1a\u0e49\u0e32\u0e19", + valueSpecifiers[16], + ), + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27": + new MapEntry( + 12, + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27", + valueSpecifiers[16], + ), + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c": + new MapEntry( + 13, + "\u0e40\u0e1a\u0e2d\u0e23\u0e4c\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c", + valueSpecifiers[13], + ), + "\u0e40\u0e21\u0e37\u0e2d\u0e07": new MapEntry( + 5, + "\u0e40\u0e21\u0e37\u0e2d\u0e07", + valueSpecifiers[8], + ), + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c": new MapEntry( + 8, + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c", + valueSpecifiers[13], + ), + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e07\u0e32\u0e19": + new MapEntry( + 11, + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e07\u0e32\u0e19", + valueSpecifiers[17], + ), + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e07\u0e32\u0e19": + new MapEntry( + 17, + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e07\u0e32\u0e19", + valueSpecifiers[17], + ), + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19": + new MapEntry( + 16, + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19", + valueSpecifiers[17], + ), + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e18\u0e38\u0e23\u0e01\u0e34\u0e08": + new MapEntry( + 14, + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e18\u0e38\u0e23\u0e01\u0e34\u0e08", + valueSpecifiers[17], + ), + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17": + new MapEntry( + 14, + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17", + valueSpecifiers[17], + ), + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e1a\u0e49\u0e32\u0e19": + new MapEntry( + 12, + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e1a\u0e49\u0e32\u0e19", + valueSpecifiers[16], + ), + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d": + new MapEntry( + 14, + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d", + valueSpecifiers[18], + ), + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27": + new MapEntry( + 15, + "\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27", + valueSpecifiers[18], + ), + "\u0e42\u0e17\u0e23\u0e2a\u0e32\u0e23": new MapEntry( + 6, + "\u0e42\u0e17\u0e23\u0e2a\u0e32\u0e23", + valueSpecifiers[20], + ), + "\u0e44\u0e1b\u0e23\u0e29\u0e13\u0e35\u0e22\u0e4c": new MapEntry( + 8, + "\u0e44\u0e1b\u0e23\u0e29\u0e13\u0e35\u0e22\u0e4c", + valueSpecifiers[10], + ), + "\u3012": new MapEntry(1, "\u3012", valueSpecifiers[10]), + "\u304a\u540d\u524d": new MapEntry( + 3, + "\u304a\u540d\u524d", + valueSpecifiers[0], + ), + "\u304a\u8a95\u751f\u65e5": new MapEntry( + 4, + "\u304a\u8a95\u751f\u65e5", + valueSpecifiers[4], + ), + "\u3054\u4f4f\u6240": new MapEntry( + 3, + "\u3054\u4f4f\u6240", + valueSpecifiers[7], + ), + "\u305d\u308c\u4ee5\u964d\u306e\u4f4f\u6240": new MapEntry( + 7, + "\u305d\u308c\u4ee5\u964d\u306e\u4f4f\u6240", + valueSpecifiers[7], + ), + "\u30a2\u30c9\u30ec\u30b9": new MapEntry( + 4, + "\u30a2\u30c9\u30ec\u30b9", + valueSpecifiers[7], + ), + "\u30a8\u30ea\u30a2\u30b3\u30fc\u30c9": new MapEntry( + 6, + "\u30a8\u30ea\u30a2\u30b3\u30fc\u30c9", + valueSpecifiers[12], + ), + "\u30b1\u30fc\u30bf\u30a4": new MapEntry( + 4, + "\u30b1\u30fc\u30bf\u30a4", + valueSpecifiers[18], + ), + "\u30b1\u30fc\u30bf\u30a4\u756a\u53f7": new MapEntry( + 6, + "\u30b1\u30fc\u30bf\u30a4\u756a\u53f7", + valueSpecifiers[18], + ), + "\u30b1\u30fc\u30bf\u30a4\u96fb\u8a71": new MapEntry( + 6, + "\u30b1\u30fc\u30bf\u30a4\u96fb\u8a71", + valueSpecifiers[18], + ), + "\u30b1\u30fc\u30bf\u30a4\u96fb\u8a71\u756a\u53f7": new MapEntry( + 8, + "\u30b1\u30fc\u30bf\u30a4\u96fb\u8a71\u756a\u53f7", + valueSpecifiers[18], + ), + "\u30d5\u30a1\u30af\u30b7\u30df\u30ea": new MapEntry( + 6, + "\u30d5\u30a1\u30af\u30b7\u30df\u30ea", + valueSpecifiers[20], + ), + "\u30d5\u30a1\u30af\u30b7\u30df\u30ea\u756a\u53f7": new MapEntry( + 8, + "\u30d5\u30a1\u30af\u30b7\u30df\u30ea\u756a\u53f7", + valueSpecifiers[20], + ), + "\u30d5\u30a1\u30af\u30b9": new MapEntry( + 4, + "\u30d5\u30a1\u30af\u30b9", + valueSpecifiers[20], + ), + "\u30d5\u30a1\u30af\u30b9\u756a\u53f7": new MapEntry( + 6, + "\u30d5\u30a1\u30af\u30b9\u756a\u53f7", + valueSpecifiers[20], + ), + "\u30d5\u30a1\u30c3\u30af\u30b9": new MapEntry( + 5, + "\u30d5\u30a1\u30c3\u30af\u30b9", + valueSpecifiers[20], + ), + "\u30d5\u30a1\u30c3\u30af\u30b9\u756a\u53f7": new MapEntry( + 7, + "\u30d5\u30a1\u30c3\u30af\u30b9\u756a\u53f7", + valueSpecifiers[20], + ), + "\u30d5\u30eb\u30cd\u30fc\u30e0": new MapEntry( + 5, + "\u30d5\u30eb\u30cd\u30fc\u30e0", + valueSpecifiers[0], + ), + "\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb": new MapEntry( + 6, + "\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb", + valueSpecifiers[19], + ), + "\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb\u756a\u53f7": new MapEntry( + 8, + "\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb\u756a\u53f7", + valueSpecifiers[19], + ), + "\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb\u96fb\u8a71\u756a\u53f7": + new MapEntry( + 10, + "\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb\u96fb\u8a71\u756a\u53f7", + valueSpecifiers[19], + ), + "\u30dd\u30b1\u30d9\u30eb": new MapEntry( + 4, + "\u30dd\u30b1\u30d9\u30eb", + valueSpecifiers[19], + ), + "\u30dd\u30b1\u30d9\u30eb\u756a\u53f7": new MapEntry( + 6, + "\u30dd\u30b1\u30d9\u30eb\u756a\u53f7", + valueSpecifiers[19], + ), + "\u30dd\u30b1\u30d9\u30eb\u96fb\u8a71\u756a\u53f7": new MapEntry( + 8, + "\u30dd\u30b1\u30d9\u30eb\u96fb\u8a71\u756a\u53f7", + valueSpecifiers[19], + ), + "\u30df\u30c9\u30eb\u30cd\u30fc\u30e0": new MapEntry( + 6, + "\u30df\u30c9\u30eb\u30cd\u30fc\u30e0", + valueSpecifiers[2], + ), + "\u30e1\u30a2\u30c9": new MapEntry( + 3, + "\u30e1\u30a2\u30c9", + valueSpecifiers[6], + ), + "\u30e1\u30eb\u30a2\u30c9": new MapEntry( + 4, + "\u30e1\u30eb\u30a2\u30c9", + valueSpecifiers[6], + ), + "\u30e1\u30fc\u30eb": new MapEntry( + 3, + "\u30e1\u30fc\u30eb", + valueSpecifiers[6], + ), + "\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9": new MapEntry( + 7, + "\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9", + valueSpecifiers[6], + ), + "\u4e2a\u4eba\u4e3b\u9875": new MapEntry( + 4, + "\u4e2a\u4eba\u4e3b\u9875", + valueSpecifiers[15], + ), + "\u4e2a\u4eba\u7f51\u7ad9": new MapEntry( + 4, + "\u4e2a\u4eba\u7f51\u7ad9", + valueSpecifiers[15], + ), + "\u4e2a\u4eba\u7f51\u9875": new MapEntry( + 4, + "\u4e2a\u4eba\u7f51\u9875", + valueSpecifiers[15], + ), + "\u4e2d\u9593\u540d": new MapEntry( + 3, + "\u4e2d\u9593\u540d", + valueSpecifiers[2], + ), + "\u4e2d\u95f4\u540d": new MapEntry( + 3, + "\u4e2d\u95f4\u540d", + valueSpecifiers[2], + ), + "\u4f1a\u793e": new MapEntry(2, "\u4f1a\u793e", valueSpecifiers[14]), + "\u4f1a\u793e\u540d": new MapEntry( + 3, + "\u4f1a\u793e\u540d", + valueSpecifiers[14], + ), + "\u4f1a\u793e\u96fb\u8a71": new MapEntry( + 4, + "\u4f1a\u793e\u96fb\u8a71", + valueSpecifiers[17], + ), + "\u4f1a\u793e\u96fb\u8a71\u756a\u53f7": new MapEntry( + 6, + "\u4f1a\u793e\u96fb\u8a71\u756a\u53f7", + valueSpecifiers[17], + ), + "\u4f1a\u793e\u96fb\u8a71\uff1a": new MapEntry( + 5, + "\u4f1a\u793e\u96fb\u8a71\uff1a", + valueSpecifiers[17], + ), + "\u4f20\u547c\u673a": new MapEntry( + 3, + "\u4f20\u547c\u673a", + valueSpecifiers[19], + ), + "\u4f20\u547c\u673a\u533a\u53f7": new MapEntry( + 5, + "\u4f20\u547c\u673a\u533a\u53f7", + valueSpecifiers[19], + ), + "\u4f20\u771f": new MapEntry(2, "\u4f20\u771f", valueSpecifiers[20]), + "\u4f4f\u5740": new MapEntry(2, "\u4f4f\u5740", valueSpecifiers[7]), + "\u4f4f\u5b85\u96fb\u8a71": new MapEntry( + 4, + "\u4f4f\u5b85\u96fb\u8a71", + valueSpecifiers[16], + ), + "\u4f4f\u5bb6\u96fb\u8a71": new MapEntry( + 4, + "\u4f4f\u5bb6\u96fb\u8a71", + valueSpecifiers[16], + ), + "\u4f4f\u6240": new MapEntry(2, "\u4f4f\u6240", valueSpecifiers[7]), + "\u4f4f\u6240\u5165\u529b\u6b04": new MapEntry( + 5, + "\u4f4f\u6240\u5165\u529b\u6b04", + valueSpecifiers[7], + ), + "\u4f4f\u6240\uff0817\u6587\u5b57\u4ee5\u5185\uff09": new MapEntry( + 10, + "\u4f4f\u6240\uff0817\u6587\u5b57\u4ee5\u5185\uff09", + valueSpecifiers[7], + ), + "\u500b\u4eba\u96fb\u8a71\u756a\u53f7": new MapEntry( + 6, + "\u500b\u4eba\u96fb\u8a71\u756a\u53f7", + valueSpecifiers[16], + ), + "\u50b3\u547c\u6a5f": new MapEntry( + 3, + "\u50b3\u547c\u6a5f", + valueSpecifiers[19], + ), + "\u50b3\u547c\u6a5f\u865f\u78bc": new MapEntry( + 5, + "\u50b3\u547c\u6a5f\u865f\u78bc", + valueSpecifiers[19], + ), + "\u50b3\u771f": new MapEntry(2, "\u50b3\u771f", valueSpecifiers[20]), + "\u50b3\u771f\u865f\u78bc": new MapEntry( + 4, + "\u50b3\u771f\u865f\u78bc", + valueSpecifiers[20], + ), + "\u5168\u540d": new MapEntry(2, "\u5168\u540d", valueSpecifiers[0]), + "\u516c\u52d9\u96fb\u8a71": new MapEntry( + 4, + "\u516c\u52d9\u96fb\u8a71", + valueSpecifiers[17], + ), + "\u516c\u53f8": new MapEntry(2, "\u516c\u53f8", valueSpecifiers[14]), + "\u516c\u53f8\u540d\u7a31": new MapEntry( + 4, + "\u516c\u53f8\u540d\u7a31", + valueSpecifiers[14], + ), + "\u516c\u53f8\u7535\u8bdd": new MapEntry( + 4, + "\u516c\u53f8\u7535\u8bdd", + valueSpecifiers[17], + ), + "\u516c\u53f8\u7535\u8bdd\u533a\u53f7": new MapEntry( + 6, + "\u516c\u53f8\u7535\u8bdd\u533a\u53f7", + valueSpecifiers[17], + ), + "\u516c\u53f8\u96fb\u8a71": new MapEntry( + 4, + "\u516c\u53f8\u96fb\u8a71", + valueSpecifiers[17], + ), + "\u51fa\u751f": new MapEntry(2, "\u51fa\u751f", valueSpecifiers[4]), + "\u51fa\u751f\u5e74\u6708\u65e5": new MapEntry( + 5, + "\u51fa\u751f\u5e74\u6708\u65e5", + valueSpecifiers[4], + ), + "\u51fa\u751f\u65e5\u671f": new MapEntry( + 4, + "\u51fa\u751f\u65e5\u671f", + valueSpecifiers[4], + ), + "\u52e4\u52d9\u5148": new MapEntry( + 3, + "\u52e4\u52d9\u5148", + valueSpecifiers[14], + ), + "\u52e4\u52d9\u5148\u4f1a\u793e": new MapEntry( + 5, + "\u52e4\u52d9\u5148\u4f1a\u793e", + valueSpecifiers[14], + ), + "\u52e4\u52d9\u5148\u4f1a\u793e\u540d": new MapEntry( + 6, + "\u52e4\u52d9\u5148\u4f1a\u793e\u540d", + valueSpecifiers[14], + ), + "\u52e4\u52d9\u5148\u96fb\u8a71\u756a\u53f7": new MapEntry( + 7, + "\u52e4\u52d9\u5148\u96fb\u8a71\u756a\u53f7", + valueSpecifiers[17], + ), + "\u533a\u53f7": new MapEntry(2, "\u533a\u53f7", valueSpecifiers[12]), + "\u5340\u57df\u78bc": new MapEntry( + 3, + "\u5340\u57df\u78bc", + valueSpecifiers[12], + ), + "\u5340\u57df\u865f\u78bc": new MapEntry( + 4, + "\u5340\u57df\u865f\u78bc", + valueSpecifiers[12], + ), + "\u5340\u78bc": new MapEntry(2, "\u5340\u78bc", valueSpecifiers[12]), + "\u5355\u4f4d": new MapEntry(2, "\u5355\u4f4d", valueSpecifiers[14]), + "\u5355\u4f4d\u540d\u79f0": new MapEntry( + 4, + "\u5355\u4f4d\u540d\u79f0", + valueSpecifiers[14], + ), + "\u540d\u524d": new MapEntry(2, "\u540d\u524d", valueSpecifiers[0]), + "\u540d\u5b57": new MapEntry(2, "\u540d\u5b57", valueSpecifiers[0]), + "\u540d\u7a31": new MapEntry(2, "\u540d\u7a31", valueSpecifiers[0]), + "\u540d\uff08\u5168\u89d28\u6587\u5b57\u4ee5\u5185\uff09": new MapEntry( + 10, + "\u540d\uff08\u5168\u89d28\u6587\u5b57\u4ee5\u5185\uff09", + valueSpecifiers[1], + ), + "\u547c\u53eb\u5668": new MapEntry( + 3, + "\u547c\u53eb\u5668", + valueSpecifiers[19], + ), + "\u547c\u53eb\u5668\u865f\u78bc": new MapEntry( + 5, + "\u547c\u53eb\u5668\u865f\u78bc", + valueSpecifiers[19], + ), + "\u5546\u7528\u96fb\u8a71": new MapEntry( + 4, + "\u5546\u7528\u96fb\u8a71", + valueSpecifiers[17], + ), + "\u56fa\u5b9a\u96fb\u8a71": new MapEntry( + 4, + "\u56fa\u5b9a\u96fb\u8a71", + valueSpecifiers[13], + ), + "\u56fa\u5b9a\u96fb\u8a71\u756a\u53f7": new MapEntry( + 6, + "\u56fa\u5b9a\u96fb\u8a71\u756a\u53f7", + valueSpecifiers[13], + ), + "\u56fd": new MapEntry(1, "\u56fd", valueSpecifiers[11]), + "\u56fd/\u5730\u57df\u540d": new MapEntry( + 5, + "\u56fd/\u5730\u57df\u540d", + valueSpecifiers[11], + ), + "\u56fd/\u5730\u57df\u540d\uff1a": new MapEntry( + 6, + "\u56fd/\u5730\u57df\u540d\uff1a", + valueSpecifiers[11], + ), + "\u56fd\u3001\u5730\u57df": new MapEntry( + 4, + "\u56fd\u3001\u5730\u57df", + valueSpecifiers[11], + ), + "\u56fd\u5bb6": new MapEntry(2, "\u56fd\u5bb6", valueSpecifiers[11]), + "\u56fd\u5bb6/\u5730\u533a": new MapEntry( + 5, + "\u56fd\u5bb6/\u5730\u533a", + valueSpecifiers[11], + ), + "\u56fd\uff0f\u5730\u57df\u540d": new MapEntry( + 5, + "\u56fd\uff0f\u5730\u57df\u540d", + valueSpecifiers[11], + ), + "\u56fd\uff0f\u5730\u57df\u540d\uff1a": new MapEntry( + 6, + "\u56fd\uff0f\u5730\u57df\u540d\uff1a", + valueSpecifiers[11], + ), + "\u570b\u5bb6": new MapEntry(2, "\u570b\u5bb6", valueSpecifiers[11]), + "\u570b\u5bb6\u2215\u5730\u5340": new MapEntry( + 5, + "\u570b\u5bb6\u2215\u5730\u5340", + valueSpecifiers[11], + ), + "\u570b\u5bb6\u6216\u5730\u5340": new MapEntry( + 5, + "\u570b\u5bb6\u6216\u5730\u5340", + valueSpecifiers[11], + ), + "\u5730\u533a": new MapEntry(2, "\u5730\u533a", valueSpecifiers[11]), + "\u5730\u5740": new MapEntry(2, "\u5730\u5740", valueSpecifiers[7]), + "\u57ce\u5e02": new MapEntry(2, "\u57ce\u5e02", valueSpecifiers[8]), + "\u591c\u665a\u7535\u8bdd\u533a\u53f7": new MapEntry( + 6, + "\u591c\u665a\u7535\u8bdd\u533a\u53f7", + valueSpecifiers[16], + ), + "\u591c\u9593\u96fb\u8a71": new MapEntry( + 4, + "\u591c\u9593\u96fb\u8a71", + valueSpecifiers[16], + ), + "\u591c\u9593\u96fb\u8a71\u756a\u53f7": new MapEntry( + 6, + "\u591c\u9593\u96fb\u8a71\u756a\u53f7", + valueSpecifiers[16], + ), + "\u591c\u95f4\u7535\u8bdd": new MapEntry( + 4, + "\u591c\u95f4\u7535\u8bdd", + valueSpecifiers[16], + ), + "\u5927\u54e5\u5927": new MapEntry( + 3, + "\u5927\u54e5\u5927", + valueSpecifiers[18], + ), + "\u5927\u54e5\u5927\u96fb\u8a71": new MapEntry( + 5, + "\u5927\u54e5\u5927\u96fb\u8a71", + valueSpecifiers[18], + ), + "\u59d3": new MapEntry(1, "\u59d3", valueSpecifiers[3]), + "\u59d3\u540d": new MapEntry(2, "\u59d3\u540d", valueSpecifiers[0]), + "\u59d3\u6c0f": new MapEntry(2, "\u59d3\u6c0f", valueSpecifiers[3]), + "\u5bb6\u5ead\u7535\u8bdd": new MapEntry( + 4, + "\u5bb6\u5ead\u7535\u8bdd", + valueSpecifiers[16], + ), + "\u5bb6\u5ead\u7535\u8bdd\u533a\u53f7": new MapEntry( + 6, + "\u5bb6\u5ead\u7535\u8bdd\u533a\u53f7", + valueSpecifiers[16], + ), + "\u5bb6\u7528\u96fb\u8a71": new MapEntry( + 4, + "\u5bb6\u7528\u96fb\u8a71", + valueSpecifiers[16], + ), + "\u5bb6\u88e1\u96fb\u8a71": new MapEntry( + 4, + "\u5bb6\u88e1\u96fb\u8a71", + valueSpecifiers[16], + ), + "\u5dde": new MapEntry(1, "\u5dde", valueSpecifiers[9]), + "\u5dde/\u7701": new MapEntry(3, "\u5dde/\u7701", valueSpecifiers[9]), + "\u5dde\u307e\u305f\u306f\u90e1/\u5e02\u533a\u753a\u6751": new MapEntry( + 10, + "\u5dde\u307e\u305f\u306f\u90e1/\u5e02\u533a\u753a\u6751", + valueSpecifiers[8], + ), + "\u5dde\u307e\u305f\u306f\u90e1\uff0f\u5e02\u533a\u753a\u6751": + new MapEntry( + 10, + "\u5dde\u307e\u305f\u306f\u90e1\uff0f\u5e02\u533a\u753a\u6751", + valueSpecifiers[8], + ), + "\u5de5\u4f5c\u7535\u8bdd": new MapEntry( + 4, + "\u5de5\u4f5c\u7535\u8bdd", + valueSpecifiers[17], + ), + "\u5de5\u4f5c\u7535\u8bdd\u533a\u53f7": new MapEntry( + 6, + "\u5de5\u4f5c\u7535\u8bdd\u533a\u53f7", + valueSpecifiers[17], + ), + "\u5de5\u4f5c\u804c\u4f4d": new MapEntry( + 4, + "\u5de5\u4f5c\u804c\u4f4d", + valueSpecifiers[5], + ), + "\u5de5\u4f5c\u8077\u7a31": new MapEntry( + 4, + "\u5de5\u4f5c\u8077\u7a31", + valueSpecifiers[5], + ), + "\u5de5\u4f5c\u8077\u929c": new MapEntry( + 4, + "\u5de5\u4f5c\u8077\u929c", + valueSpecifiers[5], + ), + "\u5de5\u4f5c\u96fb\u8a71": new MapEntry( + 4, + "\u5de5\u4f5c\u96fb\u8a71", + valueSpecifiers[17], + ), + "\u5e02\u533a\u753a\u6751": new MapEntry( + 4, + "\u5e02\u533a\u753a\u6751", + valueSpecifiers[8], + ), + "\u5e02\u533a\u753a\u6751\uff0811\u6587\u5b57\u4ee5\u5185\uff09": + new MapEntry( + 12, + "\u5e02\u533a\u753a\u6751\uff0811\u6587\u5b57\u4ee5\u5185\uff09", + valueSpecifiers[8], + ), + "\u5e02\u533a\u753a\u6751\uff1a": new MapEntry( + 5, + "\u5e02\u533a\u753a\u6751\uff1a", + valueSpecifiers[8], + ), + "\u5e02\u533a\u90e1\u753a\u6751": new MapEntry( + 5, + "\u5e02\u533a\u90e1\u753a\u6751", + valueSpecifiers[8], + ), + "\u5e02\u5916\u5c40\u756a": new MapEntry( + 4, + "\u5e02\u5916\u5c40\u756a", + valueSpecifiers[12], + ), + "\u5f79\u8077": new MapEntry(2, "\u5f79\u8077", valueSpecifiers[5]), + "\u6240\u5c5e": new MapEntry(2, "\u6240\u5c5e", valueSpecifiers[14]), + "\u6240\u5c5e\u7d44\u7e54": new MapEntry( + 4, + "\u6240\u5c5e\u7d44\u7e54", + valueSpecifiers[14], + ), + "\u6240\u5c5e\u7d44\u7e54\u540d": new MapEntry( + 5, + "\u6240\u5c5e\u7d44\u7e54\u540d", + valueSpecifiers[14], + ), + "\u624b\u6301\u96fb\u8a71": new MapEntry( + 4, + "\u624b\u6301\u96fb\u8a71", + valueSpecifiers[18], + ), + "\u624b\u63d0\u96fb\u8a71": new MapEntry( + 4, + "\u624b\u63d0\u96fb\u8a71", + valueSpecifiers[18], + ), + "\u624b\u673a": new MapEntry(2, "\u624b\u673a", valueSpecifiers[18]), + "\u624b\u673a\u533a\u53f7": new MapEntry( + 4, + "\u624b\u673a\u533a\u53f7", + valueSpecifiers[18], + ), + "\u624b\u6a5f": new MapEntry(2, "\u624b\u6a5f", valueSpecifiers[18]), + "\u624b\u6a5f\u96fb\u8a71": new MapEntry( + 4, + "\u624b\u6a5f\u96fb\u8a71", + valueSpecifiers[18], + ), + "\u643a\u5e2f": new MapEntry(2, "\u643a\u5e2f", valueSpecifiers[18]), + "\u643a\u5e2f\u756a\u53f7": new MapEntry( + 4, + "\u643a\u5e2f\u756a\u53f7", + valueSpecifiers[18], + ), + "\u643a\u5e2f\u96fb\u8a71": new MapEntry( + 4, + "\u643a\u5e2f\u96fb\u8a71", + valueSpecifiers[18], + ), + "\u643a\u5e2f\u96fb\u8a71\u756a\u53f7": new MapEntry( + 6, + "\u643a\u5e2f\u96fb\u8a71\u756a\u53f7", + valueSpecifiers[18], + ), + "\u65e5\u4e2d\u96fb\u8a71\u756a\u53f7": new MapEntry( + 6, + "\u65e5\u4e2d\u96fb\u8a71\u756a\u53f7", + valueSpecifiers[17], + ), + "\u65e5\u9593\u96fb\u8a71": new MapEntry( + 4, + "\u65e5\u9593\u96fb\u8a71", + valueSpecifiers[17], + ), + "\u663c\u9593\u96fb\u8a71\u756a\u53f7": new MapEntry( + 6, + "\u663c\u9593\u96fb\u8a71\u756a\u53f7", + valueSpecifiers[17], + ), + "\u665a\u4e0a\u96fb\u8a71": new MapEntry( + 4, + "\u665a\u4e0a\u96fb\u8a71", + valueSpecifiers[16], + ), + "\u665a\u9593\u96fb\u8a71": new MapEntry( + 4, + "\u665a\u9593\u96fb\u8a71", + valueSpecifiers[16], + ), + "\u673a\u6784": new MapEntry(2, "\u673a\u6784", valueSpecifiers[14]), + "\u673a\u6784/\u7ec4\u7ec7": new MapEntry( + 5, + "\u673a\u6784/\u7ec4\u7ec7", + valueSpecifiers[14], + ), + "\u6a5f\u69cb": new MapEntry(2, "\u6a5f\u69cb", valueSpecifiers[14]), + "\u6a5f\u95dc": new MapEntry(2, "\u6a5f\u95dc", valueSpecifiers[14]), + "\u6c0f": new MapEntry(1, "\u6c0f", valueSpecifiers[3]), + "\u6c0f\u540d": new MapEntry(2, "\u6c0f\u540d", valueSpecifiers[0]), + "\u751f\u5e74\u6708\u65e5": new MapEntry( + 4, + "\u751f\u5e74\u6708\u65e5", + valueSpecifiers[4], + ), + "\u751f\u65e5": new MapEntry(2, "\u751f\u65e5", valueSpecifiers[4]), + "\u7535\u5b50\u90ae\u4ef6": new MapEntry( + 4, + "\u7535\u5b50\u90ae\u4ef6", + valueSpecifiers[6], + ), + "\u7535\u5b50\u90ae\u4ef6\u5730\u5740": new MapEntry( + 6, + "\u7535\u5b50\u90ae\u4ef6\u5730\u5740", + valueSpecifiers[6], + ), + "\u7535\u8bdd": new MapEntry(2, "\u7535\u8bdd", valueSpecifiers[13]), + "\u7535\u8bdd\u53f7\u7801": new MapEntry( + 4, + "\u7535\u8bdd\u53f7\u7801", + valueSpecifiers[13], + ), + "\u756a\u5730": new MapEntry(2, "\u756a\u5730", valueSpecifiers[7]), + "\u756a\u5730\uff1a": new MapEntry( + 3, + "\u756a\u5730\uff1a", + valueSpecifiers[7], + ), + "\u767d\u5929\u7535\u8bdd": new MapEntry( + 4, + "\u767d\u5929\u7535\u8bdd", + valueSpecifiers[17], + ), + "\u767d\u5929\u7535\u8bdd\u533a\u53f7": new MapEntry( + 6, + "\u767d\u5929\u7535\u8bdd\u533a\u53f7", + valueSpecifiers[17], + ), + "\u767d\u5929\u96fb\u8a71": new MapEntry( + 4, + "\u767d\u5929\u96fb\u8a71", + valueSpecifiers[17], + ), + "\u7701": new MapEntry(1, "\u7701", valueSpecifiers[9]), + "\u771f\u5b9e\u59d3\u540d": new MapEntry( + 4, + "\u771f\u5b9e\u59d3\u540d", + valueSpecifiers[0], + ), + "\u771f\u5be6\u59d3\u540d": new MapEntry( + 4, + "\u771f\u5be6\u59d3\u540d", + valueSpecifiers[0], + ), + "\u79fb\u52a8\u7535\u8bdd": new MapEntry( + 4, + "\u79fb\u52a8\u7535\u8bdd", + valueSpecifiers[18], + ), + "\u79fb\u52a8\u7535\u8bdd\u533a\u53f7": new MapEntry( + 6, + "\u79fb\u52a8\u7535\u8bdd\u533a\u53f7", + valueSpecifiers[18], + ), + "\u7d44\u7e54": new MapEntry(2, "\u7d44\u7e54", valueSpecifiers[14]), + "\u7d44\u7e54\u2215\u6a5f\u69cb": new MapEntry( + 5, + "\u7d44\u7e54\u2215\u6a5f\u69cb", + valueSpecifiers[14], + ), + "\u7d44\u7e54\u540d": new MapEntry( + 3, + "\u7d44\u7e54\u540d", + valueSpecifiers[14], + ), + "\u7e23\u2215\u5e02": new MapEntry( + 3, + "\u7e23\u2215\u5e02", + valueSpecifiers[8], + ), + "\u7e23\u5e02": new MapEntry(2, "\u7e23\u5e02", valueSpecifiers[8]), + "\u7e23\uff08\u5e02\uff09": new MapEntry( + 4, + "\u7e23\uff08\u5e02\uff09", + valueSpecifiers[8], + ), + "\u7ec4\u7ec7": new MapEntry(2, "\u7ec4\u7ec7", valueSpecifiers[14]), + "\u804c\u4f4d": new MapEntry(2, "\u804c\u4f4d", valueSpecifiers[5]), + "\u804c\u52a1": new MapEntry(2, "\u804c\u52a1", valueSpecifiers[5]), + "\u8054\u7cfb\u4eba": new MapEntry( + 3, + "\u8054\u7cfb\u4eba", + valueSpecifiers[0], + ), + "\u806f\u7d61\u5730\u5740": new MapEntry( + 4, + "\u806f\u7d61\u5730\u5740", + valueSpecifiers[7], + ), + "\u806f\u7d61\u96fb\u8a71": new MapEntry( + 4, + "\u806f\u7d61\u96fb\u8a71", + valueSpecifiers[13], + ), + "\u8077\u4f4d": new MapEntry(2, "\u8077\u4f4d", valueSpecifiers[5]), + "\u8077\u4f4d\u540d\u7a31": new MapEntry( + 4, + "\u8077\u4f4d\u540d\u7a31", + valueSpecifiers[5], + ), + "\u8077\u52d9": new MapEntry(2, "\u8077\u52d9", valueSpecifiers[5]), + "\u8077\u52d9\u540d\u7a31": new MapEntry( + 4, + "\u8077\u52d9\u540d\u7a31", + valueSpecifiers[5], + ), + "\u8077\u5834": new MapEntry(2, "\u8077\u5834", valueSpecifiers[14]), + "\u8077\u5834\u96fb\u8a71\u756a\u53f7": new MapEntry( + 6, + "\u8077\u5834\u96fb\u8a71\u756a\u53f7", + valueSpecifiers[17], + ), + "\u8077\u696d": new MapEntry(2, "\u8077\u696d", valueSpecifiers[5]), + "\u8077\u7a2e": new MapEntry(2, "\u8077\u7a2e", valueSpecifiers[5]), + "\u8077\u7a31": new MapEntry(2, "\u8077\u7a31", valueSpecifiers[5]), + "\u8077\u7a31\u540d\u7a31": new MapEntry( + 4, + "\u8077\u7a31\u540d\u7a31", + valueSpecifiers[5], + ), + "\u8077\u929c": new MapEntry(2, "\u8077\u929c", valueSpecifiers[5]), + "\u81ea\u5b85": new MapEntry(2, "\u81ea\u5b85", valueSpecifiers[16]), + "\u81ea\u5b85\u96fb\u8a71": new MapEntry( + 4, + "\u81ea\u5b85\u96fb\u8a71", + valueSpecifiers[16], + ), + "\u81ea\u5b85\u96fb\u8a71\u756a\u53f7": new MapEntry( + 6, + "\u81ea\u5b85\u96fb\u8a71\u756a\u53f7", + valueSpecifiers[16], + ), + "\u81ea\u5b85\u96fb\u8a71\uff1a": new MapEntry( + 5, + "\u81ea\u5b85\u96fb\u8a71\uff1a", + valueSpecifiers[16], + ), + "\u884c\u52d5": new MapEntry(2, "\u884c\u52d5", valueSpecifiers[18]), + "\u884c\u52d5\u96fb\u8a71": new MapEntry( + 4, + "\u884c\u52d5\u96fb\u8a71", + valueSpecifiers[18], + ), + "\u8857\u9053": new MapEntry(2, "\u8857\u9053", valueSpecifiers[7]), + "\u8857\u9053\u5730\u5740": new MapEntry( + 4, + "\u8857\u9053\u5730\u5740", + valueSpecifiers[7], + ), + "\u8a95\u751f\u65e5": new MapEntry( + 3, + "\u8a95\u751f\u65e5", + valueSpecifiers[4], + ), + "\u8be6\u7ec6\u5730\u5740": new MapEntry( + 4, + "\u8be6\u7ec6\u5730\u5740", + valueSpecifiers[7], + ), + "\u8eab\u4efd\u8bc1": new MapEntry( + 3, + "\u8eab\u4efd\u8bc1", + valueSpecifiers[21], + ), + "\u8f93\u5165\u8857\u9053\u5730\u5740\u884c": new MapEntry( + 7, + "\u8f93\u5165\u8857\u9053\u5730\u5740\u884c", + valueSpecifiers[7], + ), + "\u8fa6\u516c\u5ba4\u96fb\u8a71": new MapEntry( + 5, + "\u8fa6\u516c\u5ba4\u96fb\u8a71", + valueSpecifiers[17], + ), + "\u901a\u8a0a\u5730\u5740": new MapEntry( + 4, + "\u901a\u8a0a\u5730\u5740", + valueSpecifiers[7], + ), + "\u9023\u7d61\u5730\u5740": new MapEntry( + 4, + "\u9023\u7d61\u5730\u5740", + valueSpecifiers[7], + ), + "\u9023\u7d61\u96fb\u8a71": new MapEntry( + 4, + "\u9023\u7d61\u96fb\u8a71", + valueSpecifiers[13], + ), + "\u90ae\u653f\u7f16\u7801": new MapEntry( + 4, + "\u90ae\u653f\u7f16\u7801", + valueSpecifiers[10], + ), + "\u90ae\u7f16": new MapEntry(2, "\u90ae\u7f16", valueSpecifiers[10]), + "\u90e1\u5e02\u533a(\u5cf6\u30fb\u56fd\u540d)": new MapEntry( + 9, + "\u90e1\u5e02\u533a(\u5cf6\u30fb\u56fd\u540d)", + valueSpecifiers[8], + ), + "\u90e1\u5e02\u533a\uff08\u5cf6\u30fb\u56fd\u540d\uff09": new MapEntry( + 9, + "\u90e1\u5e02\u533a\uff08\u5cf6\u30fb\u56fd\u540d\uff09", + valueSpecifiers[8], + ), + "\u90f5\u4fbf\u756a\u53f7": new MapEntry( + 4, + "\u90f5\u4fbf\u756a\u53f7", + valueSpecifiers[10], + ), + "\u90f5\u4fbf\u756a\u53f7\uff1a": new MapEntry( + 5, + "\u90f5\u4fbf\u756a\u53f7\uff1a", + valueSpecifiers[10], + ), + "\u90f5\u905e\u5340\u865f": new MapEntry( + 4, + "\u90f5\u905e\u5340\u865f", + valueSpecifiers[10], + ), + "\u90fd\u9053\u5e9c\u770c": new MapEntry( + 4, + "\u90fd\u9053\u5e9c\u770c", + valueSpecifiers[9], + ), + "\u90fd\u9053\u5e9c\u770c\uff1a": new MapEntry( + 5, + "\u90fd\u9053\u5e9c\u770c\uff1a", + valueSpecifiers[9], + ), + "\u96fb\u5b50\u30e1\u30fc\u30eb": new MapEntry( + 5, + "\u96fb\u5b50\u30e1\u30fc\u30eb", + valueSpecifiers[6], + ), + "\u96fb\u5b50\u4fe1\u7bb1": new MapEntry( + 4, + "\u96fb\u5b50\u4fe1\u7bb1", + valueSpecifiers[6], + ), + "\u96fb\u5b50\u90f5\u4ef6": new MapEntry( + 4, + "\u96fb\u5b50\u90f5\u4ef6", + valueSpecifiers[6], + ), + "\u96fb\u5b50\u90f5\u4ef6\u4f4d\u5740": new MapEntry( + 6, + "\u96fb\u5b50\u90f5\u4ef6\u4f4d\u5740", + valueSpecifiers[6], + ), + "\u96fb\u5b50\u90f5\u4ef6\u4fe1\u7bb1": new MapEntry( + 6, + "\u96fb\u5b50\u90f5\u4ef6\u4fe1\u7bb1", + valueSpecifiers[6], + ), + "\u96fb\u5b50\u90f5\u4ef6\u5730\u5740": new MapEntry( + 6, + "\u96fb\u5b50\u90f5\u4ef6\u5730\u5740", + valueSpecifiers[6], + ), + "\u96fb\u5b50\u90f5\u7bb1": new MapEntry( + 4, + "\u96fb\u5b50\u90f5\u7bb1", + valueSpecifiers[6], + ), + "\u96fb\u8a71": new MapEntry(2, "\u96fb\u8a71", valueSpecifiers[13]), + "\u96fb\u8a71(\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb)": new MapEntry( + 10, + "\u96fb\u8a71(\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb)", + valueSpecifiers[19], + ), + "\u96fb\u8a71(\u30dd\u30b1\u30d9\u30eb)": new MapEntry( + 8, + "\u96fb\u8a71(\u30dd\u30b1\u30d9\u30eb)", + valueSpecifiers[19], + ), + "\u96fb\u8a71(\u4f1a\u793e)": new MapEntry( + 6, + "\u96fb\u8a71(\u4f1a\u793e)", + valueSpecifiers[17], + ), + "\u96fb\u8a71(\u500b\u4eba)": new MapEntry( + 6, + "\u96fb\u8a71(\u500b\u4eba)", + valueSpecifiers[16], + ), + "\u96fb\u8a71(\u52e4\u52d9\u5148)": new MapEntry( + 7, + "\u96fb\u8a71(\u52e4\u52d9\u5148)", + valueSpecifiers[17], + ), + "\u96fb\u8a71(\u591c\u9593)": new MapEntry( + 6, + "\u96fb\u8a71(\u591c\u9593)", + valueSpecifiers[16], + ), + "\u96fb\u8a71(\u65e5\u4e2d)": new MapEntry( + 6, + "\u96fb\u8a71(\u65e5\u4e2d)", + valueSpecifiers[17], + ), + "\u96fb\u8a71(\u663c\u9593)": new MapEntry( + 6, + "\u96fb\u8a71(\u663c\u9593)", + valueSpecifiers[17], + ), + "\u96fb\u8a71(\u8077\u5834)": new MapEntry( + 6, + "\u96fb\u8a71(\u8077\u5834)", + valueSpecifiers[17], + ), + "\u96fb\u8a71(\u81ea\u5b85)": new MapEntry( + 6, + "\u96fb\u8a71(\u81ea\u5b85)", + valueSpecifiers[16], + ), + "\u96fb\u8a71\u756a\u53f7": new MapEntry( + 4, + "\u96fb\u8a71\u756a\u53f7", + valueSpecifiers[13], + ), + "\u96fb\u8a71\u756a\u53f7(fax)": new MapEntry( + 9, + "\u96fb\u8a71\u756a\u53f7(FAX)", + valueSpecifiers[20], + ), + "\u96fb\u8a71\u756a\u53f7(\u30d5\u30a1\u30af\u30b7\u30df\u30ea)": + new MapEntry( + 12, + "\u96fb\u8a71\u756a\u53f7(\u30d5\u30a1\u30af\u30b7\u30df\u30ea)", + valueSpecifiers[20], + ), + "\u96fb\u8a71\u756a\u53f7(\u30d5\u30a1\u30af\u30b9)": new MapEntry( + 10, + "\u96fb\u8a71\u756a\u53f7(\u30d5\u30a1\u30af\u30b9)", + valueSpecifiers[20], + ), + "\u96fb\u8a71\u756a\u53f7(\u30d5\u30a1\u30c3\u30af\u30b9)": new MapEntry( + 11, + "\u96fb\u8a71\u756a\u53f7(\u30d5\u30a1\u30c3\u30af\u30b9)", + valueSpecifiers[20], + ), + "\u96fb\u8a71\u756a\u53f7(\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb)": + new MapEntry( + 12, + "\u96fb\u8a71\u756a\u53f7(\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb)", + valueSpecifiers[19], + ), + "\u96fb\u8a71\u756a\u53f7(\u30dd\u30b1\u30d9\u30eb)": new MapEntry( + 10, + "\u96fb\u8a71\u756a\u53f7(\u30dd\u30b1\u30d9\u30eb)", + valueSpecifiers[19], + ), + "\u96fb\u8a71\u756a\u53f7(\u4f1a\u793e)": new MapEntry( + 8, + "\u96fb\u8a71\u756a\u53f7(\u4f1a\u793e)", + valueSpecifiers[17], + ), + "\u96fb\u8a71\u756a\u53f7(\u500b\u4eba)": new MapEntry( + 8, + "\u96fb\u8a71\u756a\u53f7(\u500b\u4eba)", + valueSpecifiers[16], + ), + "\u96fb\u8a71\u756a\u53f7(\u52e4\u52d9\u5148)": new MapEntry( + 9, + "\u96fb\u8a71\u756a\u53f7(\u52e4\u52d9\u5148)", + valueSpecifiers[17], + ), + "\u96fb\u8a71\u756a\u53f7(\u56fa\u5b9a)": new MapEntry( + 8, + "\u96fb\u8a71\u756a\u53f7(\u56fa\u5b9a)", + valueSpecifiers[13], + ), + "\u96fb\u8a71\u756a\u53f7(\u591c\u9593)": new MapEntry( + 8, + "\u96fb\u8a71\u756a\u53f7(\u591c\u9593)", + valueSpecifiers[16], + ), + "\u96fb\u8a71\u756a\u53f7(\u643a\u5e2f)": new MapEntry( + 8, + "\u96fb\u8a71\u756a\u53f7(\u643a\u5e2f)", + valueSpecifiers[18], + ), + "\u96fb\u8a71\u756a\u53f7(\u65e5\u4e2d)": new MapEntry( + 8, + "\u96fb\u8a71\u756a\u53f7(\u65e5\u4e2d)", + valueSpecifiers[17], + ), + "\u96fb\u8a71\u756a\u53f7(\u663c\u9593)": new MapEntry( + 8, + "\u96fb\u8a71\u756a\u53f7(\u663c\u9593)", + valueSpecifiers[17], + ), + "\u96fb\u8a71\u756a\u53f7(\u8077\u5834)": new MapEntry( + 8, + "\u96fb\u8a71\u756a\u53f7(\u8077\u5834)", + valueSpecifiers[17], + ), + "\u96fb\u8a71\u756a\u53f7(\u81ea\u5b85)": new MapEntry( + 8, + "\u96fb\u8a71\u756a\u53f7(\u81ea\u5b85)", + valueSpecifiers[16], + ), + "\u96fb\u8a71\u756a\u53f7\u203b": new MapEntry( + 5, + "\u96fb\u8a71\u756a\u53f7\u203b", + valueSpecifiers[13], + ), + "\u96fb\u8a71\u756a\u53f7\uff08fax\uff09": new MapEntry( + 9, + "\u96fb\u8a71\u756a\u53f7\uff08FAX\uff09", + valueSpecifiers[20], + ), + "\u96fb\u8a71\u756a\u53f7\uff08\u30d5\u30a1\u30af\u30b7\u30df\u30ea\uff09": + new MapEntry( + 12, + "\u96fb\u8a71\u756a\u53f7\uff08\u30d5\u30a1\u30af\u30b7\u30df\u30ea\uff09", + valueSpecifiers[20], + ), + "\u96fb\u8a71\u756a\u53f7\uff08\u30d5\u30a1\u30af\u30b9\uff09": + new MapEntry( + 10, + "\u96fb\u8a71\u756a\u53f7\uff08\u30d5\u30a1\u30af\u30b9\uff09", + valueSpecifiers[20], + ), + "\u96fb\u8a71\u756a\u53f7\uff08\u30d5\u30a1\u30c3\u30af\u30b9\uff09": + new MapEntry( + 11, + "\u96fb\u8a71\u756a\u53f7\uff08\u30d5\u30a1\u30c3\u30af\u30b9\uff09", + valueSpecifiers[20], + ), + "\u96fb\u8a71\u756a\u53f7\uff08\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb\uff09": + new MapEntry( + 12, + "\u96fb\u8a71\u756a\u53f7\uff08\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb\uff09", + valueSpecifiers[19], + ), + "\u96fb\u8a71\u756a\u53f7\uff08\u30dd\u30b1\u30d9\u30eb\uff09": + new MapEntry( + 10, + "\u96fb\u8a71\u756a\u53f7\uff08\u30dd\u30b1\u30d9\u30eb\uff09", + valueSpecifiers[19], + ), + "\u96fb\u8a71\u756a\u53f7\uff08\u4f1a\u793e\uff09": new MapEntry( + 8, + "\u96fb\u8a71\u756a\u53f7\uff08\u4f1a\u793e\uff09", + valueSpecifiers[17], + ), + "\u96fb\u8a71\u756a\u53f7\uff08\u500b\u4eba\uff09": new MapEntry( + 8, + "\u96fb\u8a71\u756a\u53f7\uff08\u500b\u4eba\uff09", + valueSpecifiers[16], + ), + "\u96fb\u8a71\u756a\u53f7\uff08\u52e4\u52d9\u5148\uff09": new MapEntry( + 9, + "\u96fb\u8a71\u756a\u53f7\uff08\u52e4\u52d9\u5148\uff09", + valueSpecifiers[17], + ), + "\u96fb\u8a71\u756a\u53f7\uff08\u56fa\u5b9a\uff09": new MapEntry( + 8, + "\u96fb\u8a71\u756a\u53f7\uff08\u56fa\u5b9a\uff09", + valueSpecifiers[13], + ), + "\u96fb\u8a71\u756a\u53f7\uff08\u591c\u9593\uff09": new MapEntry( + 8, + "\u96fb\u8a71\u756a\u53f7\uff08\u591c\u9593\uff09", + valueSpecifiers[16], + ), + "\u96fb\u8a71\u756a\u53f7\uff08\u643a\u5e2f\uff09": new MapEntry( + 8, + "\u96fb\u8a71\u756a\u53f7\uff08\u643a\u5e2f\uff09", + valueSpecifiers[18], + ), + "\u96fb\u8a71\u756a\u53f7\uff08\u65e5\u4e2d\uff09": new MapEntry( + 8, + "\u96fb\u8a71\u756a\u53f7\uff08\u65e5\u4e2d\uff09", + valueSpecifiers[17], + ), + "\u96fb\u8a71\u756a\u53f7\uff08\u663c\u9593\uff09": new MapEntry( + 8, + "\u96fb\u8a71\u756a\u53f7\uff08\u663c\u9593\uff09", + valueSpecifiers[17], + ), + "\u96fb\u8a71\u756a\u53f7\uff08\u8077\u5834\uff09": new MapEntry( + 8, + "\u96fb\u8a71\u756a\u53f7\uff08\u8077\u5834\uff09", + valueSpecifiers[17], + ), + "\u96fb\u8a71\u756a\u53f7\uff08\u81ea\u5b85\uff09": new MapEntry( + 8, + "\u96fb\u8a71\u756a\u53f7\uff08\u81ea\u5b85\uff09", + valueSpecifiers[16], + ), + "\u96fb\u8a71\u865f\u78bc": new MapEntry( + 4, + "\u96fb\u8a71\u865f\u78bc", + valueSpecifiers[13], + ), + "\u96fb\u8a71\uff08\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb\uff09": + new MapEntry( + 10, + "\u96fb\u8a71\uff08\u30dd\u30b1\u30c3\u30c8\u30d9\u30eb\uff09", + valueSpecifiers[19], + ), + "\u96fb\u8a71\uff08\u30dd\u30b1\u30d9\u30eb\uff09": new MapEntry( + 8, + "\u96fb\u8a71\uff08\u30dd\u30b1\u30d9\u30eb\uff09", + valueSpecifiers[19], + ), + "\u96fb\u8a71\uff08\u4f1a\u793e\uff09": new MapEntry( + 6, + "\u96fb\u8a71\uff08\u4f1a\u793e\uff09", + valueSpecifiers[17], + ), + "\u96fb\u8a71\uff08\u500b\u4eba\uff09": new MapEntry( + 6, + "\u96fb\u8a71\uff08\u500b\u4eba\uff09", + valueSpecifiers[16], + ), + "\u96fb\u8a71\uff08\u52e4\u52d9\u5148\uff09": new MapEntry( + 7, + "\u96fb\u8a71\uff08\u52e4\u52d9\u5148\uff09", + valueSpecifiers[17], + ), + "\u96fb\u8a71\uff08\u591c\u9593\uff09": new MapEntry( + 6, + "\u96fb\u8a71\uff08\u591c\u9593\uff09", + valueSpecifiers[16], + ), + "\u96fb\u8a71\uff08\u65e5\u4e2d\uff09": new MapEntry( + 6, + "\u96fb\u8a71\uff08\u65e5\u4e2d\uff09", + valueSpecifiers[17], + ), + "\u96fb\u8a71\uff08\u663c\u9593\uff09": new MapEntry( + 6, + "\u96fb\u8a71\uff08\u663c\u9593\uff09", + valueSpecifiers[17], + ), + "\u96fb\u8a71\uff08\u8077\u5834\uff09": new MapEntry( + 6, + "\u96fb\u8a71\uff08\u8077\u5834\uff09", + valueSpecifiers[17], + ), + "\u96fb\u8a71\uff08\u81ea\u5b85\uff09": new MapEntry( + 6, + "\u96fb\u8a71\uff08\u81ea\u5b85\uff09", + valueSpecifiers[16], + ), + "\u96fb\u90f5": new MapEntry(2, "\u96fb\u90f5", valueSpecifiers[6]), + "\u982d\u929c": new MapEntry(2, "\u982d\u929c", valueSpecifiers[5]), + "\u9a8c \u8bc1 \u7801": new MapEntry( + 5, + "\u9a8c \u8bc1 \u7801", + valueSpecifiers[21], + ), + "\u9a8c\u8bc1\u7801": new MapEntry( + 3, + "\u9a8c\u8bc1\u7801", + valueSpecifiers[21], + ), + "\uac00\uc6b4\ub370 \uc774\ub984": new MapEntry( + 6, + "\uac00\uc6b4\ub370 \uc774\ub984", + valueSpecifiers[2], + ), + "\uac00\uc6b4\ub370 \uc774\ub984 \uccab\uc790": new MapEntry( + 9, + "\uac00\uc6b4\ub370 \uc774\ub984 \uccab\uc790", + valueSpecifiers[2], + ), + "\uac00\uc6b4\ub370\uc774\ub984": new MapEntry( + 5, + "\uac00\uc6b4\ub370\uc774\ub984", + valueSpecifiers[2], + ), + "\uac00\uc6b4\ub370\uc774\ub984 \uccab\uc790": new MapEntry( + 8, + "\uac00\uc6b4\ub370\uc774\ub984 \uccab\uc790", + valueSpecifiers[2], + ), + "\uad6d\uac00": new MapEntry(2, "\uad6d\uac00", valueSpecifiers[11]), + "\ub098\ub77c": new MapEntry(2, "\ub098\ub77c", valueSpecifiers[11]), + "\ub0ae\uc2dc\uac04 \uc5f0\ub77d\ucc98": new MapEntry( + 7, + "\ub0ae\uc2dc\uac04 \uc5f0\ub77d\ucc98", + valueSpecifiers[17], + ), + "\ub0ae\uc2dc\uac04 \uc5f0\ub77d\ucc98 \uc9c0\uc5ed \ubc88\ud638": + new MapEntry( + 13, + "\ub0ae\uc2dc\uac04 \uc5f0\ub77d\ucc98 \uc9c0\uc5ed \ubc88\ud638", + valueSpecifiers[17], + ), + "\ub0ae\uc2dc\uac04\uc5f0\ub77d\ucc98": new MapEntry( + 6, + "\ub0ae\uc2dc\uac04\uc5f0\ub77d\ucc98", + valueSpecifiers[17], + ), + "\ub0ae\uc2dc\uac04\uc5f0\ub77d\ucc98 \uc9c0\uc5ed\ubc88\ud638": + new MapEntry( + 11, + "\ub0ae\uc2dc\uac04\uc5f0\ub77d\ucc98 \uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[17], + ), + "\ub0ae\uc2dc\uac04\uc5f0\ub77d\ucc98\uc9c0\uc5ed\ubc88\ud638": + new MapEntry( + 10, + "\ub0ae\uc2dc\uac04\uc5f0\ub77d\ucc98\uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[17], + ), + "\ub3c4": new MapEntry(1, "\ub3c4", valueSpecifiers[9]), + "\ub3c4\uc2dc": new MapEntry(2, "\ub3c4\uc2dc", valueSpecifiers[8]), + "\uc0ac\uc11c\ud568": new MapEntry( + 3, + "\uc0ac\uc11c\ud568", + valueSpecifiers[10], + ), + "\uc0c1\uc138 \uc8fc\uc18c": new MapEntry( + 5, + "\uc0c1\uc138 \uc8fc\uc18c", + valueSpecifiers[7], + ), + "\uc0c1\uc138\uc8fc\uc18c": new MapEntry( + 4, + "\uc0c1\uc138\uc8fc\uc18c", + valueSpecifiers[7], + ), + "\uc0dd\ub144\uc6d4\uc77c": new MapEntry( + 4, + "\uc0dd\ub144\uc6d4\uc77c", + valueSpecifiers[4], + ), + "\uc0dd\uc77c": new MapEntry(2, "\uc0dd\uc77c", valueSpecifiers[4]), + "\uc131": new MapEntry(1, "\uc131", valueSpecifiers[3]), + "\uc131 \uc774\ub984": new MapEntry( + 4, + "\uc131 \uc774\ub984", + valueSpecifiers[0], + ), + "\uc131, \uc774\ub984": new MapEntry( + 5, + "\uc131, \uc774\ub984", + valueSpecifiers[0], + ), + "\uc131\uc774\ub984": new MapEntry( + 3, + "\uc131\uc774\ub984", + valueSpecifiers[0], + ), + "\uc18c\uc18d": new MapEntry(2, "\uc18c\uc18d", valueSpecifiers[14]), + "\uc2dc": new MapEntry(1, "\uc2dc", valueSpecifiers[8]), + "\uc5c5\ubb34\uc6a9 \uc804\ud654": new MapEntry( + 6, + "\uc5c5\ubb34\uc6a9 \uc804\ud654", + valueSpecifiers[17], + ), + "\uc5c5\ubb34\uc6a9 \uc9c0\uc5ed \ubc88\ud638": new MapEntry( + 9, + "\uc5c5\ubb34\uc6a9 \uc9c0\uc5ed \ubc88\ud638", + valueSpecifiers[17], + ), + "\uc5c5\ubb34\uc6a9 \uc9c0\uc5ed\ubc88\ud638": new MapEntry( + 8, + "\uc5c5\ubb34\uc6a9 \uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[17], + ), + "\uc5c5\ubb34\uc6a9\uc804\ud654": new MapEntry( + 5, + "\uc5c5\ubb34\uc6a9\uc804\ud654", + valueSpecifiers[17], + ), + "\uc5c5\ubb34\uc6a9\uc9c0\uc5ed\ubc88\ud638": new MapEntry( + 7, + "\uc5c5\ubb34\uc6a9\uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[17], + ), + "\uc5f0\ub77d \ubc88\ud638": new MapEntry( + 5, + "\uc5f0\ub77d \ubc88\ud638", + valueSpecifiers[13], + ), + "\uc6b0\ud3b8": new MapEntry(2, "\uc6b0\ud3b8", valueSpecifiers[10]), + "\uc6b0\ud3b8 \ubc88\ud638": new MapEntry( + 5, + "\uc6b0\ud3b8 \ubc88\ud638", + valueSpecifiers[10], + ), + "\uc6b0\ud3b8\ubc88\ud638": new MapEntry( + 4, + "\uc6b0\ud3b8\ubc88\ud638", + valueSpecifiers[10], + ), + "\uc774\ub984": new MapEntry(2, "\uc774\ub984", valueSpecifiers[1]), + "\uc774\uba54\uc77c": new MapEntry( + 3, + "\uc774\uba54\uc77c", + valueSpecifiers[6], + ), + "\uc774\uba54\uc77c \uc8fc\uc18c": new MapEntry( + 6, + "\uc774\uba54\uc77c \uc8fc\uc18c", + valueSpecifiers[6], + ), + "\uc774\uba54\uc77c\uc8fc\uc18c": new MapEntry( + 5, + "\uc774\uba54\uc77c\uc8fc\uc18c", + valueSpecifiers[6], + ), + "\uc800\ub141 \uc2dc\uac04 \uc5f0\ub77d\ucc98": new MapEntry( + 9, + "\uc800\ub141 \uc2dc\uac04 \uc5f0\ub77d\ucc98", + valueSpecifiers[16], + ), + "\uc800\ub141 \uc5f0\ub77d\ucc98": new MapEntry( + 6, + "\uc800\ub141 \uc5f0\ub77d\ucc98", + valueSpecifiers[16], + ), + "\uc800\ub141 \uc5f0\ub77d\ucc98 \uc9c0\uc5ed \ubc88\ud638": new MapEntry( + 12, + "\uc800\ub141 \uc5f0\ub77d\ucc98 \uc9c0\uc5ed \ubc88\ud638", + valueSpecifiers[16], + ), + "\uc800\ub141 \uc5f0\ub77d\ucc98 \uc9c0\uc5ed\ubc88\ud638": new MapEntry( + 11, + "\uc800\ub141 \uc5f0\ub77d\ucc98 \uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[16], + ), + "\uc800\ub141\uc2dc\uac04 \uc5f0\ub77d\ucc98": new MapEntry( + 8, + "\uc800\ub141\uc2dc\uac04 \uc5f0\ub77d\ucc98", + valueSpecifiers[16], + ), + "\uc800\ub141\uc2dc\uac04\uc5f0\ub77d\ucc98": new MapEntry( + 7, + "\uc800\ub141\uc2dc\uac04\uc5f0\ub77d\ucc98", + valueSpecifiers[16], + ), + "\uc800\ub141\uc5f0\ub77d\ucc98": new MapEntry( + 5, + "\uc800\ub141\uc5f0\ub77d\ucc98", + valueSpecifiers[16], + ), + "\uc800\ub141\uc5f0\ub77d\ucc98 \uc9c0\uc5ed \ubc88\ud638": new MapEntry( + 11, + "\uc800\ub141\uc5f0\ub77d\ucc98 \uc9c0\uc5ed \ubc88\ud638", + valueSpecifiers[16], + ), + "\uc800\ub141\uc5f0\ub77d\ucc98 \uc9c0\uc5ed\ubc88\ud638": new MapEntry( + 10, + "\uc800\ub141\uc5f0\ub77d\ucc98 \uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[16], + ), + "\uc800\ub141\uc5f0\ub77d\ucc98\uc9c0\uc5ed\ubc88\ud638": new MapEntry( + 9, + "\uc800\ub141\uc5f0\ub77d\ucc98\uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[16], + ), + "\uc804\uccb4 \uc774\ub984": new MapEntry( + 5, + "\uc804\uccb4 \uc774\ub984", + valueSpecifiers[0], + ), + "\uc804\ud654": new MapEntry(2, "\uc804\ud654", valueSpecifiers[13]), + "\uc804\ud654 \ubc88\ud638": new MapEntry( + 5, + "\uc804\ud654 \ubc88\ud638", + valueSpecifiers[13], + ), + "\uc804\ud654\ubc88\ud638": new MapEntry( + 4, + "\uc804\ud654\ubc88\ud638", + valueSpecifiers[13], + ), + "\uc870\uc9c1": new MapEntry(2, "\uc870\uc9c1", valueSpecifiers[14]), + "\uc8fc": new MapEntry(1, "\uc8fc", valueSpecifiers[9]), + "\uc8fc\uc18c": new MapEntry(2, "\uc8fc\uc18c", valueSpecifiers[7]), + "\uc8fc\uc18c 1": new MapEntry(4, "\uc8fc\uc18c 1", valueSpecifiers[7]), + "\uc8fc\uc18c1": new MapEntry(3, "\uc8fc\uc18c1", valueSpecifiers[7]), + "\uc911\uac04 \uc774\ub984": new MapEntry( + 5, + "\uc911\uac04 \uc774\ub984", + valueSpecifiers[2], + ), + "\uc911\uac04 \uc774\ub984 \uccab\uc790": new MapEntry( + 8, + "\uc911\uac04 \uc774\ub984 \uccab\uc790", + valueSpecifiers[2], + ), + "\uc911\uac04\uc774\ub984": new MapEntry( + 4, + "\uc911\uac04\uc774\ub984", + valueSpecifiers[2], + ), + "\uc911\uac04\uc774\ub984 \uccab\uc790": new MapEntry( + 7, + "\uc911\uac04\uc774\ub984 \uccab\uc790", + valueSpecifiers[2], + ), + "\uc9c0\uc5ed \ubc88\ud638": new MapEntry( + 5, + "\uc9c0\uc5ed \ubc88\ud638", + valueSpecifiers[12], + ), + "\uc9c0\uc5ed\ubc88\ud638": new MapEntry( + 4, + "\uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[12], + ), + "\uc9c1\uc704": new MapEntry(2, "\uc9c1\uc704", valueSpecifiers[5]), + "\uc9c1\uc7a5 \uc804\ud654": new MapEntry( + 5, + "\uc9c1\uc7a5 \uc804\ud654", + valueSpecifiers[17], + ), + "\uc9c1\uc7a5 \uc9c0\uc5ed \ubc88\ud638": new MapEntry( + 8, + "\uc9c1\uc7a5 \uc9c0\uc5ed \ubc88\ud638", + valueSpecifiers[17], + ), + "\uc9c1\uc7a5\uc804\ud654": new MapEntry( + 4, + "\uc9c1\uc7a5\uc804\ud654", + valueSpecifiers[17], + ), + "\uc9c1\uc7a5\uc9c0\uc5ed\ubc88\ud638": new MapEntry( + 6, + "\uc9c1\uc7a5\uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[17], + ), + "\uc9c1\ucc45": new MapEntry(2, "\uc9c1\ucc45", valueSpecifiers[5]), + "\uc9c1\ud568": new MapEntry(2, "\uc9c1\ud568", valueSpecifiers[5]), + "\uc9d1 \uc804\ud654": new MapEntry( + 4, + "\uc9d1 \uc804\ud654", + valueSpecifiers[16], + ), + "\uc9d1 \uc9c0\uc5ed \ubc88\ud638": new MapEntry( + 7, + "\uc9d1 \uc9c0\uc5ed \ubc88\ud638", + valueSpecifiers[16], + ), + "\uc9d1 \uc9c0\uc5ed\ubc88\ud638": new MapEntry( + 6, + "\uc9d1 \uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[16], + ), + "\uc9d1\uc804\ud654": new MapEntry( + 3, + "\uc9d1\uc804\ud654", + valueSpecifiers[16], + ), + "\uc9d1\uc9c0\uc5ed\ubc88\ud638": new MapEntry( + 5, + "\uc9d1\uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[16], + ), + "\uc9d5\uc7a5 \uc9c0\uc5ed\ubc88\ud638": new MapEntry( + 7, + "\uc9d5\uc7a5 \uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[17], + ), + "\ucd9c\uc0dd\uc77c": new MapEntry( + 3, + "\ucd9c\uc0dd\uc77c", + valueSpecifiers[4], + ), + "\ud0dc\uc5b4\ub09c \ub0a0": new MapEntry( + 5, + "\ud0dc\uc5b4\ub09c \ub0a0", + valueSpecifiers[4], + ), + "\ud0dc\uc5b4\ub09c \ub0a0\uc9dc": new MapEntry( + 6, + "\ud0dc\uc5b4\ub09c \ub0a0\uc9dc", + valueSpecifiers[4], + ), + "\ud329\uc2a4": new MapEntry(2, "\ud329\uc2a4", valueSpecifiers[20]), + "\ud638\ucd9c \ubc88\ud638": new MapEntry( + 5, + "\ud638\ucd9c \ubc88\ud638", + valueSpecifiers[19], + ), + "\ud638\ucd9c\uae30": new MapEntry( + 3, + "\ud638\ucd9c\uae30", + valueSpecifiers[19], + ), + "\ud638\ucd9c\uae30 \ubc88\ud638": new MapEntry( + 6, + "\ud638\ucd9c\uae30 \ubc88\ud638", + valueSpecifiers[19], + ), + "\ud638\ucd9c\uae30 \uc9c0\uc5ed \ubc88\ud638": new MapEntry( + 9, + "\ud638\ucd9c\uae30 \uc9c0\uc5ed \ubc88\ud638", + valueSpecifiers[19], + ), + "\ud638\ucd9c\uae30 \uc9c0\uc5ed\ubc88\ud638": new MapEntry( + 8, + "\ud638\ucd9c\uae30 \uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[19], + ), + "\ud638\ucd9c\uae30\uc9c0\uc5ed\ubc88\ud638": new MapEntry( + 7, + "\ud638\ucd9c\uae30\uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[19], + ), + "\ud68c\uc0ac": new MapEntry(2, "\ud68c\uc0ac", valueSpecifiers[14]), + "\ud68c\uc0ac \uc804\ud654": new MapEntry( + 5, + "\ud68c\uc0ac \uc804\ud654", + valueSpecifiers[17], + ), + "\ud68c\uc0ac \uc9c0\uc5ed \ubc88\ud638": new MapEntry( + 8, + "\ud68c\uc0ac \uc9c0\uc5ed \ubc88\ud638", + valueSpecifiers[17], + ), + "\ud68c\uc0ac \uc9c0\uc5ed\ubc88\ud638": new MapEntry( + 7, + "\ud68c\uc0ac \uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[17], + ), + "\ud68c\uc0ac\uc804\ud654": new MapEntry( + 4, + "\ud68c\uc0ac\uc804\ud654", + valueSpecifiers[17], + ), + "\ud68c\uc0ac\uc9c0\uc5ed\ubc88\ud638": new MapEntry( + 6, + "\ud68c\uc0ac\uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[17], + ), + "\ud734\ub300 \uc804\ud654": new MapEntry( + 5, + "\ud734\ub300 \uc804\ud654", + valueSpecifiers[18], + ), + "\ud734\ub300 \uc804\ud654 \uc9c0\uc5ed \ubc88\ud638": new MapEntry( + 11, + "\ud734\ub300 \uc804\ud654 \uc9c0\uc5ed \ubc88\ud638", + valueSpecifiers[18], + ), + "\ud734\ub300 \uc804\ud654 \uc9c0\uc5ed\ubc88\ud638": new MapEntry( + 10, + "\ud734\ub300 \uc804\ud654 \uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[18], + ), + "\ud734\ub300\uc804\ud654": new MapEntry( + 4, + "\ud734\ub300\uc804\ud654", + valueSpecifiers[18], + ), + "\ud734\ub300\uc804\ud654 \uc9c0\uc5ed \ubc88\ud638": new MapEntry( + 10, + "\ud734\ub300\uc804\ud654 \uc9c0\uc5ed \ubc88\ud638", + valueSpecifiers[18], + ), + "\ud734\ub300\uc804\ud654 \uc9c0\uc5ed\ubc88\ud638": new MapEntry( + 9, + "\ud734\ub300\uc804\ud654 \uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[18], + ), + "\ud734\ub300\uc804\ud654\uc9c0\uc5ed\ubc88\ud638": new MapEntry( + 8, + "\ud734\ub300\uc804\ud654\uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[18], + ), + "\ud734\ub300\ud3f0": new MapEntry( + 3, + "\ud734\ub300\ud3f0", + valueSpecifiers[18], + ), + "\ud734\ub300\ud3f0 \uc9c0\uc5ed \ubc88\ud638": new MapEntry( + 9, + "\ud734\ub300\ud3f0 \uc9c0\uc5ed \ubc88\ud638", + valueSpecifiers[18], + ), + "\ud734\ub300\ud3f0 \uc9c0\uc5ed\ubc88\ud638": new MapEntry( + 8, + "\ud734\ub300\ud3f0 \uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[18], + ), + "\ud734\ub300\ud3f0\uc9c0\uc5ed\ubc88\ud638": new MapEntry( + 7, + "\ud734\ub300\ud3f0\uc9c0\uc5ed\ubc88\ud638", + valueSpecifiers[18], + ), + }, + FormAutoFillKeywords = { + LoginFormTypeKeywords: { + "@me": 1, + "welcome back": 1, + "log on": 1, + "\u767b\u5f55": 1, + "iniciar sesi\xf3n": 1, + login: 1, + "log in": 1, + "sign in": 1, + "forgot user": 1, + "enter your password": 2, + "\u767b\u5165": 1, + signon: 1, + reauth: 2, + anmelden: 1, + signin: 1, + log_on: 1, + "sign on": 1, + connexion: 1, + absenden: 1, + "logg inn": 1, + }, + ForgotEmailAffordanceRegularExpressions: ["^forgot.*email", "email\\?$"], + ForgotUserNameAffordanceRegularExpressions: ["^forgot.*user.*name"], + NonAccountPasswordSecureTextEntryFieldLabels: [ + "debit", + "answer", + "account number", + "routing number", + "date of birth", + "zip code", + "SecurID Passcode", + ], + ChangePasswordFormTypeKeywords: { + forgotpassword: 1, + "forgot password": 1, + reset: 1, + update: 1, + change: 1, + "\u518d\u8a2d\u5b9a": 1, + }, + NewAccountFormTypeKeywords: { + "set up": 1, + signup: 1, + create: 1, + "create an account": 1, + "create account": 1, + setup: 1, + "sign up": 1, + enrollment: 1, + reg: 1, + activate: 1, + "\u6ce8\u518c": 1, + }, + IgnoredDataTypeFieldLabels: [ + "search", + "social security", + "socialsecurity", + "tax id number", + "ssn", + "ssno", + "ssnum", + "airport", + "gate code", + "relationship", + ], + NonAutoFillableFormTypeRegularExpressions: ["[\\b-]import[\\b-]"], + OldPasswordFieldLabels: ["current", "old", "original"], + ConfirmEmailFieldLabels: ["confirm"], + ConfirmPasswordFieldLabels: [ + "repeat", + "retype", + "confirm", + "verify", + "new", + ], + ShowHideButtonLabels: ["show", "hide"], + SearchFieldLabels: ["search"], + NonUsernameFieldLabels: [ + "login code", + "otpcode", + "password", + "captcha", + "recaptcha", + "sound", + "answer", + "confirmation code", + "verification code", + "zip code", + "stock symbol", + "chart", + "table", + "certificate", + "cash card number", + "you can add friends with their", + ], + PasswordFieldLabels: [ + "password", + "passwd", + "\u8bbe\u7f6e\u5bc6\u7801", + "passwort", + ], + ForgotPasswordAffordanceRegularExpressions: [ + "^forgot.*password", + "^log.*in.*email", + "request.*password", + ], + FederatedSignInAffordanceLabels: [ + "continue with apple", + "continue with google", + "continue with microsoft", + ], + NonEmailFieldLabels: ["\u78ba\u8a8d\u30b3\u30fc\u30c9"], + UsernameFieldLabels: [ + "username", + "user name", + "screenname", + "screen name", + "loginname", + "login name", + "account name", + "userID", + "user ID", + "loginID", + "accountID", + "Online ID", + "GmailAddress", + "Gmail Address", + "usuario", + "Library Card Number", + "E-Mail-Adresse", + ], + OneTimeCodeFieldLabels: [ + "security code", + "login code", + "enter the code", + "enter code", + "otp", + "onetimecode", + "onetimepasscode", + "one time password", + "one time passcode", + "verification code", + "verificationCode", + "confirmation code", + "identification code", + "identificationCode", + "activation code", + "authorization code", + "access code", + "SMS", + "digit code", + "2fa", + "twofactor", + "two-factor", + "two factor", + "authentication code", + "two step sign in", + "two-step sign in", + "MFA code", + "sign-in code", + "passcode texted", + "passcode expires", + "multifactor", + "\u9a8c\u8bc1\u7801", + "\u6821\u9a8c\u7801", + "\u9a57\u8b49\u78bc", + "\u9a57\u8a3c\u78bc", + "\u78ba\u8a8d\u78bc", + "\u8a8d\u8b49\u78bc", + "\u78ba\u8a8d\u30b3\u30fc\u30c9", + "\u8a8d\u8a3c\u30b3\u30fc\u30c9", + "\uc778\uc99d\ubc88\ud638", + "\ud655\uc778\ucf54\ub4dc", + "code de s\xe9curit\xe9", + "code de v\xe9rification", + "code de validation", + "code d'identification", + "code d'authentification", + "code d'autorisation", + "code de confirmation", + "code SMS de v\xe9rification", + "code de connexion", + "saisissez le code", + "Authorisierungscode", + "Sicherheitscode", + "\xdcberpr\xfcfungscode", + "Best\xe4tigungscode", + "Bestatigungscode", + "Verifizierungscode", + "Aktivierungscode", + "Codice di sicurezza", + "Codice attivazione", + "codice di attivazione", + "codice di conferma", + "codice di verifica", + "Kod bezpiecze\u0144stwa", + "Kod autoryzacyjny", + "Kod weryfikacyjny", + "c\xf3digo de seguridad", + "c\xf3digo de confirmaci\xf3n", + "introducir c\xf3digo", + "c\xf3digo de seguranca", + "digite o codigo", + "c\xf3digo de verificaci\xf3n", + "c\xf3digo de verifica\xe7\xe3o", + "c\xf3digo de confirmacao", + "\u041a\u043e\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438", + "\u043a\u043e\u0434 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438", + "\u043a\u043e\u0434 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f", + "\u041a\u043e\u0434 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438", + "\u043a\u043e\u0434 \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043d\u043d\u044f", + "dogrulama kodu", + "m\xe3 b\u1ea3o m\u1eadt", + "M\xe3 X\xe1c Minh", + "m\xe3 k\xedch ho\u1ea1t", + "\u0e23\u0e2b\u0e31\u0e2a\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22", + "\u0e23\u0e2b\u0e31\u0e2a\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19", + "\u0e23\u0e2b\u0e31\u0e2aOTP", + "\u0e23\u0e2b\u0e31\u0e2a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19", + "\u0e23\u0e2b\u0e31\u0e2a\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19", + "Kode keamanan", + "Kode konfirmasi", + "Kode verifikasi", + "\u0938\u0924\u094d\u092f\u093e\u092a\u0928 \u0915\u094b\u0921", + "Kod pengesahan", + "Masukkan Kod", + "Codul de confirmare", + ], + WeakOneTimeCodeFieldLabels: [ + "code", + "passcode", + "PIN", + "token", + "\u4ee3\u7801", + "\u7a0b\u5f0f\u78bc", + "\u30b3\u30fc\u30c9", + "\u043a\u043e\u0434", + "\u0915\u094b\u0921", + "c\xf3digo", + "m\xe3 s\u1ed1", + "\ucf54\ub4dc", + ], + CodeButNotOneTimeCodeFieldLabels: [ + "discount", + "promo", + "zip", + "postal", + "\u6298\u6263", + "\u4fc3\u9500", + "\u90ae\u653f", + "\u4fc3\u92b7", + "\u90f5\u653f", + "\u5272\u5f15", + "\u30d7\u30ed\u30e2\u30fc\u30b7\u30e7\u30f3", + "\u90f5\u4fbf", + "Rabattcode", + "Aktionscode", + "r\xe9duction", + "promotionnel", + "\u043a\u043e\u0434 \u0441\u043a\u0438\u0434\u043a\u0438", + "\u043f\u0440\u043e\u043c\u043e-\u043a\u043e\u0434", + "\u0921\u093f\u0938\u094d\u0915\u093e\u0909\u0902\u091f \u0915\u094b\u0921", + "\u092a\u094d\u0930\u091a\u093e\u0930 \u0915\u094b\u0921", + "\u0921\u093e\u0915 \u0915\u094b\u0921", + "desconto", + "promocional", + "gi\u1ea3m gi\xe1", + "khuy\u1ebfn m\xe3i", + "descuento", + "promocional", + ], + DayFieldLabels: ["day", "jour"], + MonthFieldLabels: ["month", "date m", "date mo", "mois"], + YearFieldLabels: ["year", "date y", "date yr", "ann\xe9e"], + creditCardAutoFill: { + americanExpressSynonyms: ["American Express", "AMEX"], + carteBlancheSynonyms: ["Carte Blanche", "CarteBlanche"], + dinersClubSynonyms: [ + "Diners Club", + "Diner's Club", + "Diners Club International", + "Diner's Club International", + ], + discoverSynonyms: ["Discover", "Discover Card"], + enRouteSynonyms: ["EnRoute", "En Route"], + jcbSynonyms: ["JCB"], + masterCardSynonyms: ["MasterCard", "Master Card"], + visaSynonyms: ["Visa"], + chinaUnionPaySynonyms: ["ChinaUnionPay", "China UnionPay"], + maestroSynonyms: ["Maestro", "Switch"], + instaPaymentSynonyms: ["InstaPayment"], + numberFieldLabels: [ + "card number", + "cardnumber", + "cardnum", + "ccnum", + "ccnumber", + "cc num", + "creditcardnumber", + "credit card number", + "newcreditcardnumber", + "creditcardno", + "credit card no", + "card#", + "card #", + "kartennummer", + "kreditkartennummer", + "num\xe9ro de carte", + "num\xe9ro de la carte", + "n\xfamero de la tarjeta", + "n\xfamero de tarjeta", + "numero carta di credito", + "numero della carta di credito", + "\u30ab\u30fc\u30c9\u756a\u53f7", + "n\xfamero do cart\xe3o de cr\xe9dito", + "\u041d\u043e\u043c\u0435\u0440 \u043a\u0430\u0440\u0442\u044b", + "\u043d\u043e\u043c\u0435\u0440 \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b", + "\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e1a\u0e31\u0e15\u0e23\u0e40\u0e04\u0e23\u0e14\u0e34\u0e15", + "s\u1ed1 th\u1ebb", + "pan", + ], + securityCodeFieldLabels: [ + "cvv", + "cvc", + "cvc2", + "cvv2", + "ccv2", + "cid", + "cvn", + "security code", + "card verification", + "kartenpr\xfcfnummer", + "sicherheitscode", + "cvvx", + "code de s\xe9curit\xe9", + "c\xf3digo de seguridad", + "codice di sicurezza", + "\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b3\u30fc\u30c9", + "\ubcf4\uc548 \ucf54\ub4dc", + "n\xfamero do cart\xe3o", + "c\xf3digo de seguran\xe7a", + "\u0e23\u0e2b\u0e31\u0e2a\u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e1a\u0e31\u0e15\u0e23", + "m\xe3 s\u1ed1 b\u1ea3o m\u1eadt th\u1ebb", + ], + cardholderLabels: [ + "name on credit card", + "name on card", + "nameoncard", + "cardholder", + "card holder", + "name des karteninhabers", + "nom du titulaire de la carte", + "Nom du d\xe9tenteur", + "titular de la tarjeta", + "nombre en la tarjeta", + "titolare della carta di credito", + "titolare della carta", + "titolare carta", + "nome sulla carta", + "\u30ab\u30fc\u30c9\u540d\u7fa9\u4eba", + "\u30af\u30ec\u30b8\u30c3\u30c8\u30ab\u30fc\u30c9\u540d\u7fa9\u4eba", + "nome no cart\xe3o de cr\xe9dito", + "\u0e1c\u0e39\u0e49\u0e16\u0e37\u0e2d\u0e1a\u0e31\u0e15\u0e23", + ], + cardTypeLabels: [ + "card type", + "cardtype", + "cc type", + "cctype", + "payment type", + "kartenmarke", + "type de carte de cr\xe9dit", + ], + compositeExpirationDateLabels: [ + "expiration date", + "expirationdate", + "expdate", + "expiration", + "expiry", + "expires", + "expire", + "g\xfcltig bis", + "date de fin de validit\xe9", + "date d'expiration", + "caducidad", + "caduca", + "expira", + "fecha de expiraci\xf3n", + "expiraci\xf3n", + "scadenza", + "\u6709\u52b9\u671f\u9650", + "\ub9cc\ub8cc\uc77c", + "\ub9cc\ub8cc \ub0a0\uc9dc", + "data de validade", + "expira\xe7\xe3o", + "\u0441\u0440\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b", + "\u0e27\u0e31\u0e19\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38", + "ng\xe0y h\u1ebft h\u1ea1n th\u1ebb", + ], + nonCreditCardNumberLabels: [ + "gift card", + "giftcard", + "gift code", + "giftcode", + "rewards card", + "rewardscard", + "loyalty card", + "loyaltycard", + "health card", + "library card", + "user profile", + "service card", + ], + }, + }; diff --git a/26.2/js/forms/FormMetadataJSController.js b/26.2/js/forms/FormMetadataJSController.js new file mode 100644 index 0000000..4957758 --- /dev/null +++ b/26.2/js/forms/FormMetadataJSController.js @@ -0,0 +1,617 @@ +//# sourceURL=__InjectedScript_FormMetadataJSController.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +"use strict"; +function addGlobalEventHandler(e, t) { + function* a(e) { + const t = document.createTreeWalker( + e, + NodeFilter.SHOW_ELEMENT, + function (e) { + return e.shadowRoot + ? "user-agent" === e.shadowRoot.mode + ? NodeFilter.FILTER_REJECT + : NodeFilter.FILTER_ACCEPT + : NodeFilter.FILTER_SKIP; + }, + ); + for (; t.nextNode(); ) { + const e = t.currentNode; + (yield* a(e.shadowRoot), yield e); + } + } + const o = "focus" === e || "blur" === e, + r = (() => { + switch (e) { + case "focus": + case "blur": + case "input": + return !0; + case "submit": + case "webkitassociateformcontrols": + return !1; + default: + throw new Error(`uncategorized event ${e}. Please categorize it`); + } + })(); + let l = t; + if ( + (o && + (l = function (e) { + e.target === e.composedPath()[0] && t(e); + }), + window.addEventListener(e, t, { capture: !0 }), + !r || o) + ) { + for (const t of a(document.documentElement)) + t.shadowRoot.addEventListener(e, l, { capture: !0 }); + window.addEventListener("webkitshadowrootattached", function (t) { + t.composedPath()[0].shadowRoot.addEventListener(e, l, { capture: !0 }); + }); + } +} +const WBSMinimumLogicalWidthToShowManualAutoFillButton = 100; +class FormMetadataFieldPatternMatcher { + searchRegularExpression; + constructor(e, t = !1) { + const a = (Array.isArray(e) ? e : Object.keys(e)) + .toSorted((e, t) => t.length - e.length) + .map(RegExp.escape), + o = "(?=(\\W|$))", + r = "(?<=(\\W|^))"; + this.searchRegularExpression = t + ? new RegExp("(?:" + a.join("|") + ")" + o, "ig") + : new RegExp(r + "(?:" + a.join("|") + ")" + o, "ig"); + } + longestMatch(e) { + const t = e.match(this.searchRegularExpression); + if (!t) return null; + let a = ""; + for (const e of t) e.length > a.length && (a = e); + if (!a) return null; + const o = fieldLabelMap[a.toLowerCase()]; + if (!o) return [a, "", "", ""]; + const r = o.valueSpecifier; + return [a, r.property, r.category, r.parentProperty]; + } + searchReverse(e) { + const t = e.match(this.searchRegularExpression); + if (!t) return null; + const a = t.at(-1); + if (!a) return null; + const o = fieldLabelMap[a.toLowerCase()]; + if (!o) return [a, "", "", ""]; + const r = o.valueSpecifier; + return [a, r.property, r.category, r.parentProperty]; + } +} +class FormMetadataJSController { + static isDebugConsoleLoggingEnabled = + AutoFillControllerConfig.isDebugConsoleLoggingEnabled; + static _nextControlUniqueID = 1; + static get nextControlUniqueID() { + return this._nextControlUniqueID++; + } + static _nextFormUniqueID = 1; + static get nextFormUniqueID() { + return this._nextFormUniqueID++; + } + static regularExpressionsIndicatingNonAutoFillableFormType = + FormAutoFillKeywords.NonAutoFillableFormTypeRegularExpressions; + static loginFormTypePatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.LoginFormTypeKeywords, + ), + ]; + static oneTimeCodeFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.OneTimeCodeFieldLabels, + ), + ]; + static nonAccountPasswordSecureTextEntryFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.NonAccountPasswordSecureTextEntryFieldLabels, + ), + ]; + static ignoredDataTypeFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.IgnoredDataTypeFieldLabels, + !0, + ), + ]; + static oldPasswordFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.OldPasswordFieldLabels, + ), + ]; + static confirmPasswordFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.ConfirmPasswordFieldLabels, + ), + ]; + static confirmEmailFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.ConfirmEmailFieldLabels, + ), + ]; + static showHideButtonLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.ShowHideButtonLabels, + ), + ]; + static searchFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher(FormAutoFillKeywords.SearchFieldLabels), + ]; + static nonUsernameFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.NonUsernameFieldLabels, + ), + ]; + static passwordFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.PasswordFieldLabels, + ), + ]; + static usernameFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.UsernameFieldLabels, + ), + ]; + static nonEmailFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.NonEmailFieldLabels, + ), + ]; + static weakOneTimeCodeFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.WeakOneTimeCodeFieldLabels, + !0, + ), + ]; + static codeButNotOneTimeCodeFieldLabelsPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.CodeButNotOneTimeCodeFieldLabels, + !0, + ), + ]; + static dayFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.DayFieldLabels, + !0, + ), + ]; + static monthFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.MonthFieldLabels, + !0, + ), + ]; + static yearFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.YearFieldLabels, + !0, + ), + ]; + static addressBookFieldLabelPatternMatchers = + newAddressBookFieldLabelPatternMatchers(); + static emailFieldLabelPatternMatchers = newEmailFieldLabelPatternMatchers(); + static creditCardNumberFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.creditCardAutoFill.numberFieldLabels, + ), + ]; + static creditCardSecurityCodeFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.creditCardAutoFill.securityCodeFieldLabels, + ), + ]; + static creditCardCardholderFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.creditCardAutoFill.cardholderLabels, + ), + ]; + static creditCardTypeFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.creditCardAutoFill.cardTypeLabels, + ), + ]; + static nonCreditCardCardNumberFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.creditCardAutoFill.nonCreditCardNumberLabels, + ), + ]; + static creditCardCompositeExpirationDateFieldLabelPatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.creditCardAutoFill.compositeExpirationDateLabels, + ), + ]; + static newAccountFormTypePatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.NewAccountFormTypeKeywords, + ), + ]; + static federatedSignInAffordancePatternMatchers = [ + new FormMetadataFieldPatternMatcher( + FormAutoFillKeywords.FederatedSignInAffordanceLabels, + ), + ]; + static mapOfKeywordsIndicatingLoginFormTypeToScoreForMatching = + FormAutoFillKeywords.LoginFormTypeKeywords; + static mapOfKeywordsIndicatingNewAccountFormTypeToScoreForMatching = + FormAutoFillKeywords.NewAccountFormTypeKeywords; + static mapOfKeywordsIndicatingChangePasswordFormTypeToScoreForMatching = + FormAutoFillKeywords.ChangePasswordFormTypeKeywords; + static regularExpressionsForForgotPasswordAffordance = + FormAutoFillKeywords.ForgotPasswordAffordanceRegularExpressions; + static regularExpressionsForForgotUserNameAffordance = + FormAutoFillKeywords.ForgotUserNameAffordanceRegularExpressions; + static regularExpressionsForForgotEmailAffordance = + FormAutoFillKeywords.ForgotEmailAffordanceRegularExpressions; + static specifierForAutocompleteTokensAndAddressBookLabel(e, t) { + if (e) { + if (!Array.isArray(e)) + throw new Error("Expected an array of autocomplete tokens"); + for (let t of e) { + const e = autocompleteTokenMap[t]?.valueSpecifier; + if (e) return e; + } + } + if (t) { + const e = fieldLabelMap[t]?.valueSpecifier; + if (e) return e; + } + return null; + } + autoFillButtonManager; + focusManager; + didAssociateFormControlsTimeout; + constructor() { + ((this.focusManager = new FocusManager(this)), + this.focusManager.addEventListeners(), + (this.autoFillButtonManager = new AutoFillButtonManager(this)), + this.autoFillButtonManager.addEventListeners(), + (this.didAssociateFormControlsTimeout = null), + addGlobalEventHandler( + "webkitassociateformcontrols", + this.didAssociateFormControls.bind(this), + ), + (this.shouldNotifyOnFormChanges = !1), + window.addEventListener("pagehide", () => { + window.webkit.messageHandlers.controller.postMessage({ + name: "pageHide", + }); + })); + } + didAssociateFormControls(e) { + if (!this.shouldNotifyOnFormChanges) return; + if (this.didAssociateFormControlsTimeout) return; + const t = e.composedPath()[0]; + if ("hidden" === t.type || "button" === t.type) return; + const [a, o] = FormMetadataJS.formsAndMetadata( + WBSFormMetadataRequestPreFill, + ); + this.didAssociateFormControlsTimeout = setTimeout( + this.sendDidAssociateFormControlsMessage.bind(this), + 0, + ); + } + sendDidAssociateFormControlsMessage() { + ((this.didAssociateFormControlsTimeout = null), + window.webkit.messageHandlers.controller.postMessage({ + name: "didAssociateFormControls", + })); + } + reset() { + FormMetadataJS.clearTextFieldOrSelectElementMetadataCache(); + } + textEditingStatus() { + const [e, t] = FormMetadataJS.visibleNonEmptyFormTextControls(), + a = e.filter((e) => e.lastChangeWasUserEdit), + o = t.filter((e) => e.lastChangeWasUserEdit), + r = document.body.onbeforeunload, + l = null != r; + return { + numberOfTextInputElements: a.length, + numberOfTextAreaElements: o.length, + hasOnBeforeUnloadEventHandler: l, + }; + } + async fillFormWithPassword(e, t, a, o) { + const r = await FormMetadataJS.fillFormWithPassword(e, a, t); + for (let e of r) e.autofillVisibility = o ? "hidden" : "visible"; + o && AutomaticPasswords.blurControlWithID(t); + } + static #e(e) { + const t = getComputedStyle(e).writingMode, + a = !("horizontal-tb" === t || "horizontal-bt" === t), + o = e.getBoundingClientRect(); + return ( + (a ? o.height : o.width) >= + WBSMinimumLogicalWidthToShowManualAutoFillButton + ); + } + static #t(e) { + return !!FormMetadataJSController.#e(e) && e === innermostActiveElement(); + } + showAutoFillButtonInControl(e, t) { + const a = FormMetadataJS.formControlWithUniqueID(e); + (FormMetadataJSController.#t(a) || "none" === t) && + a._setAutofillButtonType(t); + } + setAutofillAvailable(e, t) { + const a = FormMetadataJS.formControlWithUniqueID(e); + a && (a.autofillAvailable = t); + } + setControlsAsAutoFilled(e, t) { + this.#a(e).forEach((e) => { + FormMetadataJSController.setInputElementAutofilled(e, t); + }); + } + blurControls(e) { + this.#a.forEach((e) => e.blur()); + } + clearControls(e) { + this.#a.forEach(FormMetadataJS.clearField); + } + annotateForm(e, t) { + FormMetadataJS.annotateFormWithID(e, t); + } + formsMetadata(e) { + (e !== WBSFormMetadataRequestPreFill && + e !== WBSFormMetadataRequestTesting) || + (this.shouldNotifyOnFormChanges = !0); + let [t, a] = FormMetadataJS.formsAndMetadata(e); + for (const e of a) + for (const t of e.FormControls) { + const e = FormMetadataJS.formControlWithUniqueID(t.ControlUniqueID); + this.populateRectFieldsInFormElementMetadata(t, e); + } + return a; + } + getMetadataForControl(e, t = WBSFormMetadataRequestNormal) { + const a = FormMetadataJS.formControlWithUniqueID(e); + return a ? this._getMetadataForControl(a, t) : [null, null]; + } + getMetadataForForm(e) { + const [t, a] = FormMetadataJS.formsAndMetadata( + WBSFormMetadataRequestNormal, + ); + for (let o = 0; o < t.length; o++) if (t[o] === e) return a[o]; + return null; + } + _getMetadataForControl(e, t) { + let [a, o] = FormMetadataJS.textFieldOrSelectElementMetadata(e, t, !1); + return ( + this.populateRectFieldsInFormElementMetadata(a, e), + FormMetadataJS.clearTextFieldOrSelectElementMetadataCache(), + [a, o] + ); + } + focusControl(e, t = !1) { + const a = FormMetadataJS.formControlWithUniqueID(e); + a && (t ? FormMetadataJS._focusControlForStreamlinedLogin(a) : a.focus()); + } + replaceRangeInControl(e, t, a, o, r) { + FormMetadataJS.replaceFormFieldRangeAndSelectTail(e, t, a, o, r); + const l = FormMetadataJS.formControlWithUniqueID(e); + if (l) + return FormMetadataJS.textFieldOrSelectElementMetadata( + l, + WBSFormMetadataRequestNormal, + !0, + ); + } + selectRangeInControl(e, t, a) { + FormMetadataJS.setFormFieldSelection(e, t, a); + } + static setInputElementSpellCheckEnabled(e, t) { + e.autofillSpellcheck = !!t; + } + static setInputElementAutofilled(e, t) { + ((e.autofilled = t), + t && FormMetadataJSController.autoFilledFieldWithMetadata(e)); + } + static setInputElementAutoFilledAndViewable(e, t) { + e.autofilledAndViewable = t; + } + static setInputElementAutofilledAndObscured(e, t) { + ((e.autofilledAndObscured = t), + t && FormMetadataJSController.autoFilledFieldWithMetadata(e)); + } + populateRectFieldsInFormElementMetadata(e, t) { + const a = t.getBoundingClientRect(); + ((e.ControlRectLeft = a.left), + (e.ControlRectTop = a.top), + (e.ControlRectWidth = a.width), + (e.ControlRectHeight = a.height)); + } + #a(e) { + return e.flatMap(FormMetadataJS.formControlWithUniqueID); + } + static autoFilledFieldWithMetadata(e) { + let [t, a] = FormMetadataJS.textFieldOrSelectElementMetadata( + e, + WBSFormMetadataRequestNormal, + !1, + ); + window.webkit.messageHandlers.controller.postMessage({ + name: "autoFilledFieldWithMetadata", + controlMetadata: t, + formMetadata: a, + }); + } + static logicalFormObservedChangeIndicatingFormSubmission(e, t) { + window.webkit.messageHandlers.controller.postMessage({ + name: "formObservedChangeIndicatingFormSubmission", + formMetadata: e, + removedControlsMetadata: t, + }); + } +} +class FieldMovementChecker { + textField; + textFieldMetadata; + formMetadata; + numberOfTimesFieldMovementTimerHasFired; + checkForFieldMovementTimeout; + pollingIntervals; + onFieldMoved; + constructor(e) { + ((this.textField = null), + (this.textFieldMetadata = null), + (this.numberOfTimesFieldMovementTimerHasFired = 0), + (this.checkForFieldMovementTimeout = null), + (this.pollingIntervals = [10, 50, 100, 850]), + (this.onFieldMoved = e)); + } + setTextFieldToMonitor(e, t, a) { + ((this.textField = e), + (this.textFieldMetadata = t), + (this.formMetadata = a)); + } + performNextCheckForFieldMovement() { + if ( + ((this.checkForFieldMovementTimeout = null), + !this.textField || !this.textFieldMetadata) + ) + return void this.reset(); + const e = this.textField.getBoundingClientRect(); + (this.textFieldMetadata.ControlRectLeft != e.left || + this.textFieldMetadata.ControlRectTop != e.top || + this.textFieldMetadata.ControlRectWidth != e.width || + this.textFieldMetadata.ControlRectHeight != e.height + ? (this.onFieldMoved( + this.textField, + this.textFieldMetadata, + this.formMetadata, + ), + (this.numberOfTimesFieldMovementTimerHasFired = 0)) + : (this.numberOfTimesFieldMovementTimerHasFired += 1), + this.numberOfTimesFieldMovementTimerHasFired >= + this.pollingIntervals.length + ? this.reset() + : this.scheduleNextCheckForFieldMovement()); + } + reset() { + (this.checkForFieldMovementTimeout && + window.clearTimeout(this.checkForFieldMovementTimeout), + (this.checkForFieldMovementTimeout = null)); + } + scheduleNextCheckForFieldMovement() { + this.reset(); + const e = + this.pollingIntervals[this.numberOfTimesFieldMovementTimerHasFired]; + this.checkForFieldMovementTimeout = window.setTimeout( + this.performNextCheckForFieldMovement.bind(this), + e, + ); + } +} +class FocusManager { + jsController; + fieldMovementChecker; + constructor(e) { + ((this.jsController = e), + (this.fieldMovementChecker = new FieldMovementChecker( + this.handleElementFocused.bind(this), + ))); + } + addEventListeners() { + (addGlobalEventHandler("submit", this.submitEventHandler.bind(this)), + addGlobalEventHandler("focus", this.focusInEventHandler.bind(this)), + addGlobalEventHandler("blur", this.focusOutEventHandler.bind(this)), + addGlobalEventHandler("input", this.inputEventHandler.bind(this))); + } + static #o(e) { + for (const t of e.composedPath()) { + if (FormMetadataJS._isTextField(t)) return t; + if (t instanceof HTMLSelectElement) return t; + } + return null; + } + focusInEventHandler(e) { + this.fieldMovementChecker.reset(); + const t = FocusManager.#o(e); + if (!t) return; + let [a, o] = FormMetadataJS.textFieldOrSelectElementMetadata( + t, + WBSFormMetadataRequestNormal, + !0, + ); + a && + (t.setUserInfo({ form: o, textField: a }), + this.fieldMovementChecker.setTextFieldToMonitor(t, a, o), + this.fieldMovementChecker.scheduleNextCheckForFieldMovement(), + this.handleElementFocused(t, a, o)); + } + handleElementFocused(e, t, a) { + (this.jsController.populateRectFieldsInFormElementMetadata(t, e), + window.webkit.messageHandlers.controller.postMessage({ + name: "elementFocused", + focusedElementMetadata: t, + formMetadata: a, + })); + } + focusOutEventHandler(e) { + this.fieldMovementChecker.reset(); + const t = FocusManager.#o(e); + if (!t) return; + let [a, o] = FormMetadataJS.textFieldOrSelectElementMetadata( + t, + WBSFormMetadataRequestNormal, + !0, + ); + a && + window.webkit.messageHandlers.controller.postMessage({ + name: "elementBlurred", + focusedElementMetadata: a, + formMetadata: o, + }); + } + inputEventHandler(e) { + const t = FocusManager.#o(e); + if (!t) return; + let [a, o] = FormMetadataJS.textFieldOrSelectElementMetadata( + t, + WBSFormMetadataRequestTextChange, + !0, + ); + a && + (this.jsController.populateRectFieldsInFormElementMetadata(a, t), + window.webkit.messageHandlers.controller.postMessage({ + name: "elementInput", + focusedElementMetadata: a, + formMetadata: o, + })); + } + submitEventHandler(e) { + const t = e.target, + a = this.jsController.getMetadataForForm(t); + t.setUserInfo(a); + } +} +class AutoFillButtonManager { + jsController; + constructor(e) { + this.jsController = e; + } + addEventListeners() { + document.addEventListener( + "webkitautofillrequest", + this.webKitAutofillRequestEventHandler.bind(this), + { capture: !0 }, + ); + } + webKitAutofillRequestEventHandler(e) { + const t = e.target; + let [a, o] = this.jsController._getMetadataForControl( + t, + WBSFormMetadataRequestNormal, + ); + window.webkit.messageHandlers.controller.postMessage({ + name: "manualAutoFillRequest", + focusedElementMetadata: a, + formMetadata: o, + }); + } +} +let formMetadataJSController = new FormMetadataJSController(); diff --git a/26.2/js/forms/FormMetadataUtilities.js b/26.2/js/forms/FormMetadataUtilities.js new file mode 100644 index 0000000..1344bd9 --- /dev/null +++ b/26.2/js/forms/FormMetadataUtilities.js @@ -0,0 +1,42 @@ +//# sourceURL=__InjectedScript_FormMetadataUtilities.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +// Copyright (c) 2025 Apple Inc. All rights reserved. +"use strict"; +globalThis.FormMetadataUtilitiesJS = class { + static #t(t, e) { + const n = /([A-Za-z0-9])/; + let o = null, + s = -1, + i = -1; + const l = t.replaceAll(".", "").toLowerCase(); + for (let t = 0; t < e.length; t++) { + const r = e[t].replaceAll(".", "").toLowerCase(), + a = r.indexOf(l); + if (-1 === a) continue; + if (a > 0 && n.test(r.charAt(a - 1))) continue; + let c = a + l.length; + (c < r.length && n.test(r.charAt(c))) || + ((!o || r.length < o.length) && ((o = r), (s = t), (i = a))); + } + return { index: s, startPosition: i }; + } + static bestIndexToFillSelectControl(t, e) { + const n = t.length, + o = []; + for (let e = 0; e < n; e++) { + const n = t[e][1]; + o.push(n); + } + let s = -1, + i = Number.MAX_SAFE_INTEGER; + for (let t = e.length - 1; t >= 0; t--) { + const n = e[t]; + Number.MAX_SAFE_INTEGER; + const l = this.#t(n, o); + -1 !== l.index && + l.startPosition < i && + ((i = l.startPosition), (s = l.index)); + } + return -1 === s ? -1 : t[s][0]; + } +}; diff --git a/26.2/js/forms/PasswordRulesParserJS.js b/26.2/js/forms/PasswordRulesParserJS.js new file mode 100644 index 0000000..1b40d8b --- /dev/null +++ b/26.2/js/forms/PasswordRulesParserJS.js @@ -0,0 +1,374 @@ +//# sourceURL=__InjectedScript_PasswordRulesParserJS.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +// Copyright (c) 2019 - 2022 Apple Inc. Licensed under MIT License. +"use strict"; +function _isIdentifierCharacter(e) { + return (e >= "a" && e <= "z") || (e >= "A" && e <= "Z") || "-" === e; +} +function _isASCIIDigit(e) { + return e >= "0" && e <= "9"; +} +function _isASCIIPrintableCharacter(e) { + return e >= " " && e <= "~"; +} +function _isASCIIWhitespace(e) { + return " " === e || "\f" === e || "\n" === e || "\r" === e || "\t" === e; +} +function _bitSetIndexForCharacter(e) { + return e.codePointAt(0) - SPACE_CODE_POINT; +} +function _characterAtBitSetIndex(e) { + return String.fromCodePoint(e + SPACE_CODE_POINT); +} +function _markBitsForNamedCharacterClass(e, r) { + r.name === Identifier.UPPER + ? e.fill( + !0, + _bitSetIndexForCharacter("A"), + _bitSetIndexForCharacter("Z") + 1, + ) + : r.name === Identifier.LOWER + ? e.fill( + !0, + _bitSetIndexForCharacter("a"), + _bitSetIndexForCharacter("z") + 1, + ) + : r.name === Identifier.DIGIT + ? e.fill( + !0, + _bitSetIndexForCharacter("0"), + _bitSetIndexForCharacter("9") + 1, + ) + : r.name === Identifier.SPECIAL && + (e.fill( + !0, + _bitSetIndexForCharacter(" "), + _bitSetIndexForCharacter("/") + 1, + ), + e.fill( + !0, + _bitSetIndexForCharacter(":"), + _bitSetIndexForCharacter("@") + 1, + ), + e.fill( + !0, + _bitSetIndexForCharacter("["), + _bitSetIndexForCharacter("`") + 1, + ), + e.fill( + !0, + _bitSetIndexForCharacter("{"), + _bitSetIndexForCharacter("~") + 1, + )); +} +function _markBitsForCustomCharacterClass(e, r) { + for (let t of r.characters) e[_bitSetIndexForCharacter(t)] = !0; +} +function _canonicalizedPropertyValues(e, r) { + function t(e, r) { + let t = []; + for ( + let n = _bitSetIndexForCharacter(e); + n <= _bitSetIndexForCharacter(r); + ++n + ) + a[n] && t.push(_characterAtBitSetIndex(n)); + let i = + t.length === + _bitSetIndexForCharacter(r) - _bitSetIndexForCharacter(e) + 1; + return (i || (n = n.concat(t)), i); + } + let a = new Array("~".codePointAt(0) - " ".codePointAt(0) + 1); + for (let r of e) + if (r instanceof NamedCharacterClass) { + if (r.name === Identifier.UNICODE) + return [new NamedCharacterClass(Identifier.UNICODE)]; + if (r.name === Identifier.ASCII_PRINTABLE) + return [new NamedCharacterClass(Identifier.ASCII_PRINTABLE)]; + _markBitsForNamedCharacterClass(a, r); + } else + r instanceof CustomCharacterClass && + _markBitsForCustomCharacterClass(a, r); + let n = [], + i = t("A", "Z"), + l = t("a", "z"), + s = t("0", "9"), + u = !1, + c = !1, + o = !1, + _ = []; + for ( + let e = _bitSetIndexForCharacter(" "); + e <= _bitSetIndexForCharacter("/"); + ++e + ) { + if (!a[e]) continue; + let t = _characterAtBitSetIndex(e); + r && "-" === t ? (c = !0) : _.push(t); + } + for ( + let e = _bitSetIndexForCharacter(":"); + e <= _bitSetIndexForCharacter("@"); + ++e + ) + a[e] && _.push(_characterAtBitSetIndex(e)); + for ( + let e = _bitSetIndexForCharacter("["); + e <= _bitSetIndexForCharacter("`"); + ++e + ) { + if (!a[e]) continue; + let t = _characterAtBitSetIndex(e); + r && "]" === t ? (o = !0) : _.push(t); + } + for ( + let e = _bitSetIndexForCharacter("{"); + e <= _bitSetIndexForCharacter("~"); + ++e + ) + a[e] && _.push(_characterAtBitSetIndex(e)); + (c && _.unshift("-"), o && _.push("]")); + let C = + _bitSetIndexForCharacter("/") - + _bitSetIndexForCharacter(" ") + + 1 + + (_bitSetIndexForCharacter("@") - _bitSetIndexForCharacter(":") + 1) + + (_bitSetIndexForCharacter("`") - _bitSetIndexForCharacter("[") + 1) + + (_bitSetIndexForCharacter("~") - _bitSetIndexForCharacter("{") + 1); + ((u = _.length === C), u || (n = n.concat(_))); + let h = []; + return i && l && s && u + ? [new NamedCharacterClass(Identifier.ASCII_PRINTABLE)] + : (i && h.push(new NamedCharacterClass(Identifier.UPPER)), + l && h.push(new NamedCharacterClass(Identifier.LOWER)), + s && h.push(new NamedCharacterClass(Identifier.DIGIT)), + u && h.push(new NamedCharacterClass(Identifier.SPECIAL)), + n.length && h.push(new CustomCharacterClass(n)), + h); +} +function _indexOfNonWhitespaceCharacter(e, r = 0) { + let t = e.length; + for (; r < t && _isASCIIWhitespace(e[r]); ) ++r; + return r; +} +function _parseIdentifier(e, r) { + let t = e.length, + a = []; + do { + let t = e[r]; + if (!_isIdentifierCharacter(t)) break; + (a.push(t), ++r); + } while (r < t); + return [a.join(""), r]; +} +function _isValidRequiredOrAllowedPropertyValueIdentifier(e) { + return e && Object.values(Identifier).includes(e.toLowerCase()); +} +function _parseCustomCharacterClass(e, r) { + let t = e.length; + if (++r >= t) return [null, r]; + let a = r, + n = []; + do { + let t = e[r]; + if (_isASCIIPrintableCharacter(t)) { + if ("-" === t && r - a > 0) ++r; + else if ((n.push(t), ++r, t === CHARACTER_CLASS_END_SENTINEL)) break; + } else ++r; + } while (r < t); + return (r < t && e[r] !== CHARACTER_CLASS_END_SENTINEL) || + (r == t && e[r - 1] == CHARACTER_CLASS_END_SENTINEL) + ? (n.pop(), [n, r]) + : r < t && e[r] == CHARACTER_CLASS_END_SENTINEL + ? [n, r + 1] + : [null, r]; +} +function _parsePasswordRequiredOrAllowedPropertyValue(e, r) { + let t = e.length, + a = []; + for (;;) { + if (_isIdentifierCharacter(e[r])) { + let t = r; + var [n, r] = _parseIdentifier(e, r); + if (!_isValidRequiredOrAllowedPropertyValueIdentifier(n)) + return [null, t]; + a.push(new NamedCharacterClass(n)); + } else { + if (e[r] != CHARACTER_CLASS_START_SENTINEL) return [null, r]; + var [n, r] = _parseCustomCharacterClass(e, r); + n && n.length && a.push(new CustomCharacterClass(n)); + } + if ( + (r = _indexOfNonWhitespaceCharacter(e, r)) >= t || + e[r] === PROPERTY_SEPARATOR + ) + break; + if (e[r] !== PROPERTY_VALUE_SEPARATOR) return [null, r]; + if ((r = _indexOfNonWhitespaceCharacter(e, r + 1)) >= t) return [null, r]; + } + return [a, r]; +} +function _parsePasswordRule(e, r) { + let t = e.length; + var a = r, + [n, r] = _parseIdentifier(e, r); + if (!Object.values(RuleName).includes(n)) return [null, a]; + if (r >= t) return [null, r]; + if (e[r] !== PROPERTY_VALUE_START_SENTINEL) return [null, r]; + let i = { name: n, value: null }; + if ( + (r = _indexOfNonWhitespaceCharacter(e, r + 1)) >= t || + e[r] === PROPERTY_SEPARATOR + ) + return [new Rule(i.name, i.value), r]; + switch (n) { + case RuleName.ALLOWED: + case RuleName.REQUIRED: + var [l, r] = _parsePasswordRequiredOrAllowedPropertyValue(e, r); + return (l && (i.value = l), [new Rule(i.name, i.value), r]); + case RuleName.MAX_CONSECUTIVE: + var [l, r] = _parseMaxConsecutivePropertyValue(e, r); + return (l && (i.value = l), [new Rule(i.name, i.value), r]); + case RuleName.MIN_LENGTH: + case RuleName.MAX_LENGTH: + var [l, r] = _parseMinLengthMaxLengthPropertyValue(e, r); + return (l && (i.value = l), [new Rule(i.name, i.value), r]); + } +} +function _parseMinLengthMaxLengthPropertyValue(e, r) { + return _parseInteger(e, r); +} +function _parseMaxConsecutivePropertyValue(e, r) { + return _parseInteger(e, r); +} +function _parseInteger(e, r) { + if (!_isASCIIDigit(e[r])) return [null, r]; + let t = e.length, + a = 0; + do { + ((a = 10 * a + parseInt(e[r], 10)), ++r); + } while (r < t && e[r] !== PROPERTY_SEPARATOR && _isASCIIDigit(e[r])); + return r >= t || e[r] === PROPERTY_SEPARATOR ? [a, r] : [null, r]; +} +function _parsePasswordRulesInternal(e) { + let r = [], + t = e.length; + for (var a = _indexOfNonWhitespaceCharacter(e); a < t; ) { + if (!_isIdentifierCharacter(e[a])) return r; + var [n, a] = _parsePasswordRule(e, a); + if ( + (n && n.value && r.push(n), + (a = _indexOfNonWhitespaceCharacter(e, a)) >= t) + ) + break; + if (e[a] !== PROPERTY_SEPARATOR) return null; + if ((a = _indexOfNonWhitespaceCharacter(e, a + 1)) >= t) return r; + } + return r; +} +function parsePasswordRules(e, r) { + let t = _parsePasswordRulesInternal(e) || [], + a = r, + n = [], + i = [], + l = null, + s = 0, + u = null; + for (let e of t) + switch (e.name) { + case RuleName.MAX_CONSECUTIVE: + l = l ? Math.min(e.value, l) : e.value; + break; + case RuleName.MIN_LENGTH: + s = Math.max(e.value, s); + break; + case RuleName.MAX_LENGTH: + u = u ? Math.min(e.value, u) : e.value; + break; + case RuleName.REQUIRED: + ((e.value = _canonicalizedPropertyValues(e.value, r)), + n.push(e), + a || (i = i.concat(e.value))); + break; + case RuleName.ALLOWED: + i = i.concat(e.value); + } + return ( + (i = _canonicalizedPropertyValues(i, a)), + a || + i.length || + (i = [new NamedCharacterClass(Identifier.ASCII_PRINTABLE)]), + i.length && n.push(new Rule(RuleName.ALLOWED, i)), + null !== l && n.push(new Rule(RuleName.MAX_CONSECUTIVE, l)), + s > 0 && n.push(new Rule(RuleName.MIN_LENGTH, s)), + null !== u && n.push(new Rule(RuleName.MAX_LENGTH, u)), + n + ); +} +console || + (console = { + assert: function () {}, + error: function () {}, + warn: function () {}, + }); +const Identifier = { + ASCII_PRINTABLE: "ascii-printable", + DIGIT: "digit", + LOWER: "lower", + SPECIAL: "special", + UNICODE: "unicode", + UPPER: "upper", + }, + RuleName = { + ALLOWED: "allowed", + MAX_CONSECUTIVE: "max-consecutive", + REQUIRED: "required", + MIN_LENGTH: "minlength", + MAX_LENGTH: "maxlength", + }, + CHARACTER_CLASS_START_SENTINEL = "[", + CHARACTER_CLASS_END_SENTINEL = "]", + PROPERTY_VALUE_SEPARATOR = ",", + PROPERTY_SEPARATOR = ";", + PROPERTY_VALUE_START_SENTINEL = ":", + SPACE_CODE_POINT = " ".codePointAt(0), + SHOULD_NOT_BE_REACHED = "Should not be reached"; +class Rule { + constructor(e, r) { + ((this._name = e), (this.value = r)); + } + get name() { + return this._name; + } + toString() { + return JSON.stringify(this); + } +} +class NamedCharacterClass { + constructor(e) { + this._name = e; + } + get name() { + return this._name.toLowerCase(); + } + toString() { + return this._name; + } + toHTMLString() { + return this._name; + } +} +class CustomCharacterClass { + constructor(e) { + this._characters = e; + } + get characters() { + return this._characters; + } + toString() { + return `[${this._characters.join("")}]`; + } + toHTMLString() { + return `[${this._characters.join("").replace(/"/g, """)}]`; + } +} diff --git a/26.2/js/layout/WebContentLayoutAnalyzer.js b/26.2/js/layout/WebContentLayoutAnalyzer.js new file mode 100644 index 0000000..f8ad96a --- /dev/null +++ b/26.2/js/layout/WebContentLayoutAnalyzer.js @@ -0,0 +1,71 @@ +//# sourceURL=__InjectedScript_WebContentLayoutAnalyzer.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +// Copyright (c) 2013 Apple Inc. All rights reserved. +function elementAppearsCentered(e, t) { + var n = window.innerWidth - t.right - t.left; + return Math.abs(n) <= 1; +} +function centeredElementIsNotAContainer(e, t) { + if (e === document.documentElement || e === document.body) return !0; + if (0 === t.left && t.width === window.innerWidth) return !0; + if (!t.height) return !0; + var n = e.innerText; + return !n || !n.trim(); +} +var WebContentLayoutAnalyzer = function () { + ((this.centeredContainerElement = null), + (this.rectOfCenteredContainerElementBeforeResize = null), + (this.rectOfCenteredContainerElementAfterResize = null)); +}; +WebContentLayoutAnalyzer.prototype = { + findCenteredContainerElement: function () { + for ( + var e = null, + t = null, + n = document.getElementsByTagName("*"), + r = n.length, + i = 0; + i < r; + ++i + ) { + var o = n[i], + l = o.getBoundingClientRect(); + elementAppearsCentered(o, l) && + (centeredElementIsNotAContainer(o, l) || + ((!t || l.width > t.width) && ((e = o), (t = l)))); + } + return e; + }, + collectInformationBeforeResize: function () { + ((this.centeredContainerElement = this.findCenteredContainerElement()), + this.centeredContainerElement && + (this.rectOfCenteredContainerElementBeforeResize = + this.centeredContainerElement.getBoundingClientRect())); + }, + collectInformationAfterResize: function () { + this.centeredContainerElement && + document.contains(this.centeredContainerElement) && + (this.rectOfCenteredContainerElementAfterResize = + this.centeredContainerElement.getBoundingClientRect()); + }, + layoutInformation: function () { + var e = !1, + t = null; + return ( + this.rectOfCenteredContainerElementBeforeResize && + this.rectOfCenteredContainerElementAfterResize && + ((e = + this.rectOfCenteredContainerElementBeforeResize.width === + this.rectOfCenteredContainerElementAfterResize.width), + (t = + this.rectOfCenteredContainerElementBeforeResize.left - + this.rectOfCenteredContainerElementAfterResize.left)), + { + FoundCenteredContainer: !!this.centeredContainerElement, + CenteredContainerIsFixedWidth: e, + DistanceContainerMoved: t, + } + ); + }, +}; +var WebContentLayoutAnalyzerJS = new WebContentLayoutAnalyzer(); diff --git a/26.2/js/metadata/MetadataExtractor.js b/26.2/js/metadata/MetadataExtractor.js new file mode 100644 index 0000000..41d1351 --- /dev/null +++ b/26.2/js/metadata/MetadataExtractor.js @@ -0,0 +1,104 @@ +//# sourceURL=__InjectedScript_MetadataExtractor.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +function getIconType(e) { + var o = e.getAttribute("rel"); + return "apple-touch-icon" === o + ? IconTypeAppleTouchIcon + : "apple-touch-icon-precomposed" === o + ? IconTypeAppleTouchIconPrecomposed + : IconTypeFavicon; +} +function compareIconsDescending(e, o) { + var c = getIconType(e), + t = getIconType(o); + if (c === IconTypeFavicon && t !== IconTypeFavicon) return 1; + if (t === IconTypeFavicon && c !== IconTypeFavicon) return -1; + var n = e.getAttribute("sizes"), + r = o.getAttribute("sizes"), + p = 0, + a = 0; + return ( + n + ? (p = parseInt(n)) + : n || + (c !== IconTypeAppleTouchIcon && + c !== IconTypeAppleTouchIconPrecomposed) || + (p = AppleTouchIconDefaultWidth), + r + ? (a = parseInt(r)) + : r || + (t !== IconTypeAppleTouchIcon && + t !== IconTypeAppleTouchIconPrecomposed) || + (a = AppleTouchIconDefaultWidth), + a > p + ? 1 + : a < p + ? -1 + : c !== IconTypeAppleTouchIconPrecomposed && + t === IconTypeAppleTouchIconPrecomposed + ? 1 + : t !== IconTypeAppleTouchIconPrecomposed && + c === IconTypeAppleTouchIconPrecomposed + ? -1 + : 0 + ); +} +function colorComponentsFromString(e) { + var o = document.createElement("canvas"); + ((o.width = 1), (o.height = 1)); + var c = o.getContext("2d"); + ((c.fillStyle = e), c.fillRect(0, 0, 1, 1)); + var t = c.getImageData(0, 0, 1, 1); + return [t.data[0], t.data[1], t.data[2]]; +} +var MetadataExtractor = function () {}; +const IconTypeFavicon = 0, + IconTypeAppleTouchIcon = 1, + IconTypeAppleTouchIconPrecomposed = 2, + AppleTouchIconDefaultWidth = 60; +MetadataExtractor.prototype = { + extractAndSortIconsWithSelector: function (e) { + var o = document.head.querySelectorAll(e); + return o.length + ? Array.prototype.slice.call(o).sort(compareIconsDescending) + : []; + }, + extractAppleTouchIconURLs: function () { + for ( + var e = this.extractAndSortIconsWithSelector( + "link[rel=apple-touch-icon], link[rel=apple-touch-icon-precomposed]", + ), + o = [], + c = 0; + c < e.length; + ++c + ) { + var t = e[c].href; + t && o.push(t); + } + return o; + }, + extractFaviconURLs: function () { + for ( + var e = this.extractAndSortIconsWithSelector( + "link[rel='shortcut icon'], link[rel=icon]", + ), + o = [], + c = e.length, + t = 0; + t < c; + ++t + ) + o.push(e[t].href); + return o; + }, + extractTemplateIconURLAndColor: function () { + var e = document.head.querySelector("link[rel=mask-icon]"); + if (!e) return null; + var o = e.getAttribute("color"); + return o && e.href + ? { url: e.href, color: colorComponentsFromString(o) } + : null; + }, +}; +var MetadataExtractorJS = new MetadataExtractor(); diff --git a/26.2/js/reader/Reader.js b/26.2/js/reader/Reader.js new file mode 100644 index 0000000..d28249d --- /dev/null +++ b/26.2/js/reader/Reader.js @@ -0,0 +1,23 @@ +//# sourceURL=__InjectedScript_Reader.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +/* + * Copyright (c) 2010 Apple Inc. All rights reserved. + */ +function setScrollTop(e) { + document.documentElement.scrollTop = e; +} +function readerWillBecomeVisible() { + setReaderIsActive(!0); +} +function readerWillEnterBackground() { + setReaderIsActive(!1); +} +((ReaderJS._clickingOutsideOfPaperRectangleDismissesReader = !0), + (ReaderJS._isJavaScriptEnabled = function () { + return !!(ReaderJSController.initialConfiguration() || {})[ + ReaderConfigurationJavaScriptEnabledKey + ]; + }), + (ReaderAppearanceJS._tryApplyStaticConfiguration = function () { + return (document.body.classList.add("mac"), !1); + })); diff --git a/26.2/js/reader/ReaderArticleFinder.js b/26.2/js/reader/ReaderArticleFinder.js new file mode 100644 index 0000000..052cbfe --- /dev/null +++ b/26.2/js/reader/ReaderArticleFinder.js @@ -0,0 +1,5092 @@ +//# sourceURL=__InjectedScript_ReaderArticleFinder.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +/* + * Copyright (c) 2010 Apple Inc. All rights reserved. + * + * Portions Copyright (c) 2009 Arc90 Inc + * Readability. An Arc90 Lab Experiment. + * Website: http://lab.arc90.com/experiments/readability + * Source: http://code.google.com/p/arc90labs-readability + * Readability is licensed under the Apache License, Version 2.0. + */ +function hostnameMatchesHostKnownToContainEmbeddableMedia(e) { + return /^(.+\.)?(youtube(-nocookie)?\.com|vimeo\.com|dailymotion\.com|soundcloud\.com|mixcloud\.com|embedly\.com|embed\.ly)\.?$/.test( + e, + ); +} +function lazyLoadingImageURLForElement(e, t) { + function n(e) { + const t = /\.(jpe?g|png|gif|bmp)$/i; + if (t.test(e)) return !0; + let n = urlFromString(e); + return !!n && t.test(n.pathname); + } + function r(e) { + let t = attributesForElement(e); + for (let r of t) { + let t = r.name; + if (a.has(t.toLowerCase())) return e.getAttribute(t); + let i = n(r.value); + if (o.has(t.toLowerCase()) && i) return e.getAttribute(t); + if (s && /^data.*(src|source)$/i.test(t) && i) return e.getAttribute(t); + if ( + e instanceof HTMLImageElement && + /^data-/.test(t) && + i && + 1 === e.naturalWidth && + 1 === e.naturalHeight + ) + return e.getAttribute(t); + } + } + const i = + /(data:image\/)?gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==/, + a = new Set([ + "data-lazy-src", + "data-original", + "datasrc", + "data-src", + "original-src", + "rel:bf_image_src", + "deferred-src", + "data-mediaviewer-src", + "data-hi-res-src", + "data-native-src", + ]), + o = new Set(["original"]); + let l = e.getAttribute("src"), + s = /transparent|empty/i.test(l) || i.test(l); + const c = 2; + for (let t = e, n = 0; t && n < c; t = t.parentElement, ++n) { + let e = r(t); + if (e) return e; + } + let u = e.closest("*[itemscope]"); + if ( + u && + /^https?:\/\/schema\.org\/ImageObject\/?$/.test(u.getAttribute("itemtype")) + ) { + let e = u.getAttribute("itemid"); + if (n(e) && !u.querySelector("img")) return e; + } + if (LazyLoadRegex.test(t) && "function" == typeof URL) { + var m; + try { + m = new URL(e.src); + } catch (e) {} + if (m && m.search) { + var d, h; + const t = ["w", "width"]; + for (var g = t.length, f = 0; f < g; ++f) { + var p = t[f], + E = m.searchParams.get(p); + if (E && !isNaN(parseInt(E))) { + d = p; + break; + } + } + const n = ["h", "height"]; + var v = n.length; + for (f = 0; f < v; ++f) { + var N = n[f], + C = m.searchParams.get(N); + if (C && !isNaN(parseInt(C))) { + h = N; + break; + } + } + if (d && h) { + var A = e.getAttribute("width"), + S = e.getAttribute("height"); + if (!isNaN(parseInt(A)) && !isNaN(parseInt(S))) + return (m.searchParams.set(d, A), m.searchParams.set(h, S), m.href); + } + } + } + return null; +} +function sanitizeElementByRemovingAttributes(e) { + elementLooksLikeEmbeddedIframeTweetWithSrc(e) && + (e.setAttribute("height", e.style.height), + e.setAttribute("width", e.style.width)); + const t = /^on|^id$|^class$|^style$|^autofocus$/; + for (var n = attributesForElement(e), r = 0; r < n.length; ++r) { + var i = n[r].nodeName; + t.test(i) && (e.removeAttribute(i), r--); + } +} +function characterAppearsToBeCJK(e) { + if (!e || 0 === e.length) return !1; + var t = e.charCodeAt(0); + return ( + (t > 11904 && t < 12031) || + (t > 12352 && t < 12543) || + (t > 12736 && t < 19903) || + (t > 19968 && t < 40959) || + (t > 44032 && t < 55215) || + (t > 63744 && t < 64255) || + (t > 65072 && t < 65103) || + (t > 131072 && t < 173791) || + (t > 194560 && t < 195103) + ); +} +function domDistance(e, t, n) { + for (var r = [], i = e; i; ) (r.unshift(i), (i = i.parentNode)); + var a = []; + for (i = t; i; ) (a.unshift(i), (i = i.parentNode)); + for ( + var o = Math.min(r.length, a.length), + l = Math.abs(r.length - a.length), + s = o; + s >= 0 && r[s] !== a[s]; + --s + ) + if (((l += 2), n && l >= n)) return n; + return l; +} +function fontSizeFromComputedStyle(e, t) { + var n = parseInt(e.fontSize); + return (isNaN(n) && (n = t || BaseFontSize), n); +} +function contentTextStyleForNode(e, t) { + function n(e) { + if (isNodeWhitespace(e)) return null; + var t = getComputedStyle(e.parentNode); + return "none" !== t.float ? null : t; + } + for ( + var r = + "descendant::text()[not(parent::h1) and not(parent::h2) and not(parent::h3) and not(parent::h4) and not(parent::h5) and not(parent::h6)]", + i = e.evaluate(r, t, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null), + a = i.snapshotLength, + o = 0; + o < a; + ++o + ) { + for ( + var l = i.snapshotItem(o), s = !1, c = l.parentElement; + c !== t; + c = c.parentElement + ) + if (NegativeRegEx.test(c.className)) { + s = !0; + break; + } + if (!s) { + var u = n(l); + if (u) return u; + } + } + return null; +} +function isNodeWhitespace(e) { + return !(!e || e.nodeType !== Node.TEXT_NODE) && !/\S/.test(e.data); +} +function removeWhitespace(e) { + return e.replace(/\s+/g, ""); +} +function isElementNode(e) { + return !(!e || e.nodeType !== Node.ELEMENT_NODE); +} +function computedStyleIndicatesElementIsInvisibleDueToClipping(e) { + if ("absolute" !== e.position) return !1; + var t = e.clip.match( + /^rect\((\d+px|auto), (\d+px|auto), (\d+px|auto), (\d+px|auto)\)$/, + ); + if (!t || 5 !== t.length) return !1; + var n = t.map(function (e) { + return parseInt(e); + }), + r = n[1]; + isNaN(r) && (r = 0); + var i = n[2], + a = n[3], + o = n[4]; + return (isNaN(o) && (o = 0), r >= a || i >= o); +} +function isElementVisible(e) { + var t = getComputedStyle(e); + if ("visible" !== t.visibility || "none" === t.display) return !1; + if (cachedElementBoundingRect(e).height) return !0; + var n = document.createRange(); + return (n.selectNode(e), !!n.getBoundingClientRect().height); +} +function isElementPositionedOffScreen(e) { + var t = cachedElementBoundingRect(e); + return !(!t.height || !t.width) && (t.bottom <= 0 || t.right <= 0); +} +function elementDepth(e) { + for (var t = 0; e; e = e.parentElement) t++; + return t; +} +function depthOfElementWithinElement(e, t) { + for (var n = 0; e !== t; e = e.parentElement) { + if (!e) return NaN; + n++; + } + return n; +} +function nearestAncestorElementWithTagName(e, t, n) { + var r = {}; + if (n) for (var i = 0; i < n.length; ++i) r[n[i]] = !0; + if (r[normalizedElementTagName(e)]) return null; + for (; (e = e.parentElement); ) { + var a = normalizedElementTagName(e); + if (r[a]) break; + if (a === t) return e; + } + return null; +} +function elementDescendsFromElementMatchingSelector(e, t) { + do { + if (e.matches(t)) return !0; + } while ((e = e.parentElement)); + return !1; +} +function elementDescendsFromElementInSet(e, t) { + do { + if (t.has(e)) return !0; + } while ((e = e.parentElement)); + return !1; +} +function elementIsHidingContentDueToContentVisibilityAuto(e) { + return ( + !!window.ContentVisibilityAutoStateChangeEvent && + "auto" === getComputedStyle(e).contentVisibility && + !!e.children.length && + !e.children[0].checkVisibility({ contentVisibilityAuto: !0 }) + ); +} +function cachedElementBoundingRect(e) { + if (e._cachedElementBoundingRect) return e._cachedElementBoundingRect; + if ( + ReaderArticleFinderJS.shouldSuppressBoundingRectCalculationForSkippedElements() && + elementIsHidingContentDueToContentVisibilityAuto(e) + ) { + let n = e.previousElementSibling; + return n && !elementIsHidingContentDueToContentVisibilityAuto(n) + ? (((t = cachedElementBoundingRect(n)).top += t.height), + (t.bottom += t.height), + t) + : { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 }; + } + var t = e.getBoundingClientRect(); + return ( + ReaderArticleFinderJS._elementsWithCachedBoundingRects.push(e), + ReaderArticleFinderJS._cachedScrollX || ReaderArticleFinderJS._cachedScrollY + ? ((e._cachedElementBoundingRect = { + top: t.top + ReaderArticleFinderJS._cachedScrollY, + right: t.right + ReaderArticleFinderJS._cachedScrollX, + bottom: t.bottom + ReaderArticleFinderJS._cachedScrollY, + left: t.left + ReaderArticleFinderJS._cachedScrollX, + width: t.width, + height: t.height, + }), + e._cachedElementBoundingRect) + : ((e._cachedElementBoundingRect = t), e._cachedElementBoundingRect) + ); +} +function clearCachedElementBoundingRects() { + for ( + var e = ReaderArticleFinderJS._elementsWithCachedBoundingRects, + t = e.length, + n = 0; + n < t; + ++n + ) + e[n]._cachedElementBoundingRect = null; + ReaderArticleFinderJS._elementsWithCachedBoundingRects = []; +} +function trimmedInnerTextIgnoringTextTransform(e) { + var t = e.innerText; + if (!/\S/.test(t)) return e.textContent.trim(); + var n = getComputedStyle(e).textTransform; + return "uppercase" === n || "lowercase" === n + ? e.textContent.trim() + : t + ? t.trim() + : ""; +} +function levenshteinDistance(e, t) { + for ( + var n = e.length, r = t.length, i = new Array(n + 1), a = 0; + a < n + 1; + ++a + ) + ((i[a] = new Array(r + 1)), (i[a][0] = a)); + for (var o = 0; o < r + 1; ++o) i[0][o] = o; + for (o = 1; o < r + 1; ++o) + for (a = 1; a < n + 1; ++a) + if (e[a - 1] === t[o - 1]) i[a][o] = i[a - 1][o - 1]; + else { + var l = i[a - 1][o] + 1, + s = i[a][o - 1] + 1, + c = i[a - 1][o - 1] + 1; + i[a][o] = Math.min(l, s, c); + } + return i[n][r]; +} +function stringSimilarity(e, t) { + var n = Math.max(e.length, t.length); + return n ? (n - levenshteinDistance(e, t)) / n : 0; +} +function stringsAreNearlyIdentical(e, t) { + return ( + e === t || + stringSimilarity(e, t) > StringSimilarityToDeclareStringsNearlyIdentical + ); +} +function elementIsCommentBlock(e) { + if (/(^|\s)comment/.test(e.className)) return !0; + var t = e.getAttribute("id"); + return !(!t || (0 !== t.indexOf("comment") && 0 !== t.indexOf("Comment"))); +} +function elementLooksLikeEmbeddedTweet(e) { + var t = null; + if ("iframe" === normalizedElementTagName(e)) { + if (!e.contentDocument) + return elementLooksLikeEmbeddedIframeTweetWithSrc(e); + t = e.contentDocument.documentElement; + } else "twitter-widget" === normalizedElementTagName(e) && (t = e.shadowRoot); + if (!t) return !1; + if (e.closest(".twitter-video") && t.querySelector("[data-tweet-id]")) + return !0; + let n = 0, + r = t.querySelector("blockquote"); + r && TweetURLRegex.test(r.getAttribute("cite")) && ++n; + let i = t.querySelector("[data-iframe-title]"); + return ( + i && TweetIframeTitleRegex.test(i.getAttribute("data-iframe-title")) && ++n, + e.classList.contains("twitter-tweet") && ++n, + t.querySelector("[data-tweet-id]") && ++n, + n > 2 + ); +} +function elementLooksLikeEmbeddedIframeTweetWithSrc(e) { + if (!EmbeddedTwitterIframeSrcRegEx.test(e.getAttribute("src"))) return !1; + const t = e.getAttribute("title"); + return "X Post" === t || "Twitter Tweet" === t; +} +function elementLooksLikeACarousel(e) { + const t = /carousel-|carousel_|-carousel|_carousel|swiper-/; + return t.test(e.className) || t.test(e.getAttribute("data-analytics")); +} +function elementLooksLikePartOfACarousel(e) { + const t = 3; + for (var n = e, r = 0; r < t; ++r) { + if (!n) return !1; + if (elementLooksLikeACarousel(n)) return !0; + n = n.parentElement; + } + return !1; +} +function urlIsHTTPFamilyProtocol(e) { + let t = e.protocol; + return "http:" === t || "https:" === t; +} +function shouldPruneIframe(e) { + if (e.srcdoc) return !0; + let t = urlFromString(e.src); + if (t) { + if (!urlIsHTTPFamilyProtocol(t)) return !0; + if (hostnameMatchesHostKnownToContainEmbeddableMedia(t.hostname)) return !1; + } + return !elementLooksLikeEmbeddedTweet(e.originalElement); +} +function textContentAppearsToBeCJK(e, t) { + if (!e || !e.length) return !1; + let n = e.length; + t && !isNaN(t) && (n = Math.min(n, t)); + let r = 0; + for (let t = 0; t < n; t++) characterAppearsToBeCJK(e[t]) && r++; + return r >= n * MinimumRatioOfCharactersForLanguageMultiplier; +} +function languageScoreMultiplierForTextNodes(e) { + if (!e || !e.length) return 1; + for ( + var t = Math.min( + e.length, + DefaultNumberOfTextNodesToCheckForLanguageMultiplier, + ), + n = 0, + r = 0, + i = 0; + i < t; + i++ + ) { + for ( + var a = e[i].nodeValue.trim(), + o = Math.min( + a.length, + NumberOfCharactersPerTextNodeToEvaluateForLanguageMultiplier, + ), + l = 0; + l < o; + l++ + ) + characterAppearsToBeCJK(a[l]) && n++; + r += o; + } + return n >= r * MinimumRatioOfCharactersForLanguageMultiplier + ? ScoreMultiplierForChineseJapaneseKorean + : 1; +} +function scoreMultiplierForElementTagNameAndAttributes(e) { + for (var t = 1, n = e; n; n = n.parentElement) { + var r = n.getAttribute("id"); + r && + (ArticleRegEx.test(r) && (t += ArticleMatchBonus), + CommentRegEx.test(r) && (t -= CommentMatchPenalty), + CarouselRegEx.test(r) && (t -= CarouselMatchPenalty)); + var i = n.className; + (i && + (ArticleRegEx.test(i) && (t += ArticleMatchBonus), + CommentRegEx.test(i) && (t -= CommentMatchPenalty), + CarouselRegEx.test(i) && (t -= CarouselMatchPenalty)), + "article" === normalizedElementTagName(n) && (t += ArticleMatchBonus)); + } + return t < 0 ? 0 : t; +} +function elementAtPoint(e, t, n) { + if ( + "undefined" != typeof ReaderArticleFinderJSController && + ReaderArticleFinderJSController.nodeAtPoint + ) { + var r = ReaderArticleFinderJSController.nodeAtPoint(e, t); + return (r && r.nodeType !== Node.ELEMENT_NODE && (r = r.parentElement), r); + } + return n.elementFromPoint(e, t); +} +function userVisibleURLString(e) { + return "undefined" != typeof ReaderArticleFinderJSController && + ReaderArticleFinderJSController.userVisibleURLString + ? ReaderArticleFinderJSController.userVisibleURLString(e) + : e; +} +function urlFromString(e, t) { + try { + return null != t ? new URL(e, t) : new URL(e); + } catch (e) { + return null; + } +} +function urlStringShouldHaveItsAnchorMadeNonFunctional(e, t) { + if (!e) return !0; + var n = urlFromString(e); + if ((n || (n = urlFromString(e, t)), !n || !n.href || !n.href.length)) + return !0; + let r = n.href; + return ( + "javascript:" === r.trim().substring(0, 11).toLowerCase() || + "data:" === r.trim().substring(0, 5).toLowerCase() + ); +} +function anchorLinksToAttachment(e) { + return /\battachment\b/i.test(e.getAttribute("rel")); +} +function anchorLinksToTagOrCategoryPage(e) { + return /\bcategory|tag\b/i.test(e.getAttribute("rel")); +} +function anchorLooksLikeDownloadFlashLink(e) { + return /^https?:\/\/(www\.|get\.)(adobe|macromedia)\.com\/(((products|[a-zA-Z]{1,2}|)\/flashplayer|flashplayer|go\/getflash(player)?)|(shockwave\/download\/(index|download)\.cgi\?P1_Prod_Version=ShockwaveFlash)\/?$)/i.test( + e.href, + ); +} +function elementsHaveSameTagAndClassNames(e, t) { + return ( + normalizedElementTagName(e) === normalizedElementTagName(t) && + e.className === t.className + ); +} +function selectorForElement(e) { + let t = normalizedElementTagName(e); + for (var n = e.classList, r = n.length, i = 0; i < r; i++) t += "." + n[i]; + return t; +} +function elementFingerprintForDepth(e, t) { + function n(e, t) { + if (!e) return ""; + var o = []; + o.push(selectorForElement(e)); + var l = e.children, + s = l.length; + if (s && t > 0) { + o.push(r); + for (var c = 0; c < s; ++c) + (o.push(n(l[c], t - 1)), c !== s - 1 && o.push(a)); + o.push(i); + } + return o.join(""); + } + const r = " / ", + i = " \\", + a = " | "; + return n(e, t); +} +function childrenOfParentElement(e) { + var t = e.parentElement; + return t ? t.children : []; +} +function arrayOfKeysAndValuesOfObjectSortedByValueDescending(e) { + var t = []; + for (var n in e) e.hasOwnProperty(n) && t.push({ key: n, value: e[n] }); + return ( + t.sort(function (e, t) { + return t.value - e.value; + }), + t + ); +} +function walkElementSubtree(e, t, n) { + if (!(t < 0)) { + for (var r = e.children, i = r.length, a = t - 1, o = 0; o < i; ++o) + walkElementSubtree(r[o], a, n); + n(e, t); + } +} +function elementIndicatesItIsASchemaDotOrgArticleContainer(e) { + var t = e.getAttribute("itemtype"); + return /^https?:\/\/schema\.org\/((News)?Article|APIReference)$/.test(t); +} +function elementIndicatesItIsASchemaDotOrgImageObject(e) { + var t = e.getAttribute("itemtype"); + return ( + "https://schema.org/ImageObject" === t || + "http://schema.org/ImageObject" === t + ); +} +function elementWouldAppearBetterAsFigureOrAuxiliary(e, t) { + const n = /caption/i; + if (!e) return !1; + if (t.closest("figure, .auxiliary")) return !1; + if ( + elementIndicatesItIsASchemaDotOrgImageObject(e) && + !t.querySelector("figure, .auxiliary") + ) + return !0; + var r = t.ownerDocument.createTreeWalker( + t, + NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, + { + acceptNode: function () { + return NodeFilter.FILTER_ACCEPT; + }, + }, + ); + r.currentNode = t; + for (var i = !1, a = !1; r.nextNode(); ) { + var o = r.currentNode; + if (o.nodeType === Node.TEXT_NODE) { + if (!i && /\S/.test(o.nodeValue)) return !1; + continue; + } + if (o.nodeType !== Node.ELEMENT_NODE) return !1; + let e = normalizedElementTagName(o); + if ("figure" === e || "table" === e) return !1; + if (o.classList.contains("auxiliary")) return !1; + if ("img" === e) { + if (i) return !1; + i = !0; + } + var l = o.originalElement; + a || + (l && !hasClassMatchingRegexp(o.originalElement, n)) || + !/\S/.test(o.innerText) || + (a = !0); + } + return i && a; +} +function cleanStyleAndClassList(e) { + (e.classList.length || e.removeAttribute("class"), + e.getAttribute("style") || e.removeAttribute("style")); +} +function getVisibleNonWhitespaceTextNodes(e, t, n, r, i) { + function a(e) { + var t = e.children[0]; + if (t) + for (var n = t.children, r = n.length, i = 0; i < r; ++i) + if ("none" !== getComputedStyle(n[i]).float) return !1; + return !0; + } + function o(e, r) { + if (e.nodeType === Node.TEXT_NODE) + return void (/\S/.test(e.nodeValue) && s.push(e)); + if (e.nodeType !== Node.ELEMENT_NODE) return; + if (!isElementVisible(e)) return; + if (n && ++l > n) return; + if (i && i.has(e)) return; + let u = normalizedElementTagName(e); + if ("iframe" !== u && "form" !== u) { + if (c.has(u)) r--; + else if (("ul" !== u && "ol" !== u) || !a(e)) { + var m = e.parentElement; + if (m) + "section" !== normalizedElementTagName(m) || + e.previousElementSibling || + e.nextElementSibling || + r--; + } else r--; + var d = r + 1; + if (d < t) + for (var h = e.childNodes, g = h.length, f = 0; f < g; ++f) o(h[f], d); + } + } + var l = 0, + s = []; + let c = new Set(["p", "strong", "b", "em", "i", "span", "section"]); + return (r && (c.add("center"), c.add("font")), o(e, 0), s); +} +function mapOfVisibleTextNodeComputedStyleReductionToNumberOfMatchingCharacters( + e, + t, +) { + for ( + var n = {}, + r = getVisibleNonWhitespaceTextNodes(e, 100), + i = r.length, + a = 0; + a < i; + ++a + ) { + var o = r[a], + l = o.length, + s = o.parentElement, + c = t(getComputedStyle(s)); + n[c] ? (n[c] += l) : (n[c] = l); + } + return n; +} +function keyOfMaximumValueInDictionary(e) { + var t, n; + for (var r in e) { + var i = e[r]; + (!n || i > n) && ((t = r), (n = i)); + } + return t; +} +function elementIsProtected(e) { + return e.classList.contains("protected") || e.querySelector(".protected"); +} +function dominantFontFamilyAndSizeForElement(e) { + return keyOfMaximumValueInDictionary( + mapOfVisibleTextNodeComputedStyleReductionToNumberOfMatchingCharacters( + e, + function (e) { + return e.fontFamily + "|" + e.fontSize; + }, + ), + ); +} +function dominantFontSizeInPointsFromFontFamilyAndSizeString(e) { + return e ? parseInt(e.split("|")[1]) : null; +} +function canvasElementHasNoUserVisibleContent(e) { + if (!e.width || !e.height) return !0; + for ( + var t = e.getContext("2d").getImageData(0, 0, e.width, e.height).data, + n = 0, + r = t.length; + n < r; + n += 4 + ) { + if (t[n + 3]) return !1; + } + return !0; +} +function findArticleNodeSelectorsInQuirksListForHostname(e, t) { + const n = [ + [AppleDotComAndSubdomainsRegex, "*[itemprop='articleBody']"], + [/^(.+\.)?buzzfeed\.com\.?$/, "article #buzz_sub_buzz"], + [/^(.+\.)?mashable\.com\.?$/, ".parsec-body .parsec-container"], + [/^(.+\.)?cnet\.com\.?$/, "#rbContent.container"], + [/^(.+\.)?engadget\.com\.?$/, "main article #page_body"], + [/^(.*\.)?m\.wikipedia\.org\.?$/, "#content #bodyContent"], + [/^(.*\.)?theintercept\.com\.?$/, ".PostContent"], + [/^(.*\.)?tools\.ietf\.org\.?$/, "div.content"], + [/^(.*\.)?cntraveler\.com\.?$/, "article.gallery"], + [/^(.+\.)?meteoinfo\.ru\.?$/, "#jm-content-bottom"], + [/^(.*\.)?tmd\.go\.th\.?$/, "#sidebar"], + ]; + for (var r = n.length, i = 0; i < r; ++i) { + var a = n[i]; + if (a[0].test(e.toLowerCase())) if (t(a[1])) return; + } +} +function functionToPreventPruningDueToInvisibilityInQuirksListForHostname(e) { + const t = [ + [ + /^mobile\.nytimes\.com\.?$/, + function (e, t) { + var n = e; + if (!t) return !1; + for (; n && n !== t; ) { + if (n.classList.contains("hidden")) return !0; + n = n.parentElement; + } + return !1; + }, + ], + ]; + for (var n = t.length, r = 0; r < n; ++r) { + var i = t[r]; + if (i[0].test(e.toLowerCase())) return i[1]; + } + return null; +} +function elementIsAHeader(e) { + return !!{ h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1 }[ + normalizedElementTagName(e) + ]; +} +function leafElementForElementAndDirection(e, t) { + var n = e.ownerDocument, + r = n.createTreeWalker(n.body, NodeFilter.SHOW_ELEMENT, { + acceptNode: function (e) { + return 0 === e.children.length + ? NodeFilter.FILTER_ACCEPT + : NodeFilter.FILTER_SKIP; + }, + }); + return ((r.currentNode = e), r[t]()); +} +function previousLeafElementForElement(e) { + return leafElementForElementAndDirection(e, "previousNode"); +} +function nextLeafElementForElement(e) { + return leafElementForElementAndDirection(e, "nextNode"); +} +function nextNonFloatingVisibleElementSibling(e) { + for (var t = e; (t = t.nextElementSibling); ) + if (isElementVisible(t) && "none" === getComputedStyle(t).float) return t; + return null; +} +function elementWithLargestAreaFromElements(e) { + var t, + n = e.length; + if (!n) return null; + for (var r = 0, i = 0; i < n; ++i) { + var a = e[i], + o = cachedElementBoundingRect(a), + l = o.width * o.height; + l > r && ((t = a), (r = l)); + } + return t; +} +function unwrappedArticleContentElement(e) { + for (var t = e; ; ) { + for (var n = t.childNodes, r = n.length, i = null, a = 0; a < r; ++a) { + var o = n[a], + l = o.nodeType; + if ( + l === Node.ELEMENT_NODE || + (l === Node.TEXT_NODE && !isNodeWhitespace(o)) + ) { + if (i) return t; + var s = normalizedElementTagName(o); + if ("div" !== s && "article" !== s && "section" !== s) return t; + i = o; + } + } + if (!i) break; + t = i; + } + return t; +} +function elementsMatchingClassesInClassList(e, t) { + return elementsOfSameClassIgnoringClassNamesMatchingRegexp(e, t); +} +function elementsMatchingClassesInClassListIgnoringCommonLayoutClassNames( + e, + t, +) { + return elementsOfSameClassIgnoringClassNamesMatchingRegexp(e, t, /clearfix/i); +} +function elementsMatchingClassesInClassListIgnoringClassesWithNumericSuffix( + e, + t, +) { + return elementsOfSameClassIgnoringClassNamesMatchingRegexp(e, t, /\d+$/); +} +function elementsOfSameClassIgnoringClassNamesMatchingRegexp(e, t, n) { + for (var r = "", i = e.length, a = 0; a < i; ++a) { + var o = e[a]; + (n && n.test(o)) || (r += "." + o); + } + try { + return t.querySelectorAll(r); + } catch (e) { + return []; + } +} +function imageIsContainedByContainerWithImageAsBackgroundImage(e) { + var t = e.parentElement; + if (!t || !t.style || !t.style.backgroundImage) return !1; + var n = /url\((.*)\)/.exec(t.style.backgroundImage); + return !(!n || 2 !== n.length) && n[1] === e.src; +} +function pseudoElementContent(e, t) { + var n = getComputedStyle(e, t).content, + r = /^\"(.*)\"$/.exec(n); + return r && 2 == r.length ? r[1] : null; +} +function hasClassMatchingRegexp(e, t) { + for (var n = e.classList, r = n.length, i = 0; i < r; ++i) + if (t.test(n[i])) return !0; + return !1; +} +function elementLooksLikeDropCap(e) { + return hasClassMatchingRegexp(e, DropCapRegex) && 1 === e.innerText.length; +} +function changeElementType(e, t) { + for ( + var n = e.ownerDocument.createElement(t), + r = attributesForElement(e), + i = r.length, + a = 0; + a < i; + ++a + ) { + var o = r.item(a); + n.setAttribute(o.nodeName, o.nodeValue); + } + for (; e.firstChild; ) n.appendChild(e.firstChild); + return (e.replaceWith(n), n); +} +function pathComponentsForAnchor(e) { + var t = e.pathname.substring(1).split("/"); + return (t[t.length - 1] || t.pop(), t); +} +function lastPathComponentFromAnchor(e) { + var t = pathComponentsForAnchor(e); + return t.length ? t[t.length - 1] : null; +} +function clamp(e, t, n) { + return Math.min(Math.max(e, t), n); +} +function childrenWithParallelStructure(e) { + var t = e.children; + if (!t) return []; + var n = t.length; + if (!n) return []; + for (var r = {}, i = 0; i < n; ++i) { + var a = t[i]; + if ( + !SetOfCandidateTagNamesToIgnore.has(normalizedElementTagName(a)) && + a.className + ) + for (var o = a.classList, l = o.length, s = 0; s < l; ++s) { + (m = r[(u = o[s])]) ? m.push(a) : (r[u] = [a]); + } + } + var c = Math.floor(n / 2); + for (var u in r) { + var m; + if ((m = r[u]).length > c) return m; + } + return []; +} +function elementAppearsToBeCollapsed(e) { + return ( + !( + !ReaderArticleFinderJS.isMediaWikiPage() || !/collaps/.test(e.className) + ) || + ("false" === e.getAttribute("aria-expanded") && !isElementVisible(e)) + ); +} +const ReaderMinimumScore = 1600, + ReaderMinimumAdvantage = 15, + ArticleMinimumScoreDensity = 4.25, + CandidateMinimumWidthPortionForIndicatorElements = 0.5, + CandidateMinumumListItemLineCount = 4, + SetOfCandidateTagNamesToIgnore = new Set([ + "a", + "embed", + "form", + "html", + "iframe", + "object", + "ol", + "option", + "script", + "style", + "svg", + "ul", + ]), + PrependedArticleCandidateMinimumHeight = 50, + AppendedArticleCandidateMinimumHeight = 200, + AppendedArticleCandidateMaximumVerticalDistanceFromArticle = 150, + StylisticClassNames = { justfy: 1, justify: 1, left: 1, right: 1, small: 1 }, + CommentRegEx = /[Cc]omment|meta|footer|footnote|talkback/, + CommentMatchPenalty = 0.75, + ArticleRegEx = + /(?:(?:^|\s)(?:(post|hentry|entry)[-_]{0,2}(?:content|text|body)?|article[-_]{0,2}(?:content|text|body|page|copy)?)(?:\s|$))/i, + ArticleMatchBonus = 0.5, + CarouselRegEx = /carousel/i, + CarouselMatchPenalty = 0.75, + SectionRegex = /section|content.*component/i, + DropCapRegex = /first.*letter|drop.*cap/i, + ProgressiveLoadingRegex = /progressive/i, + DensityExcludedElementSelector = "#disqus_thread, #comments, .userComments", + PositiveRegEx = + /article|body|content|entry|hentry|page|pagination|post|related-asset|text/i, + NegativeRegEx = + /advertisement|breadcrumb|combx|comment|contact|disqus|footer|link|meta|mod-conversations|promo|related|scroll|share|shoutbox|sidebar|social|sponsor|spotim|subscribe|talkback|tags|toolbox|widget|[-_]ad$|zoom-(in|out)/i, + VeryPositiveClassNameRegEx = /instapaper_body/, + VeryNegativeClassNameRegEx = /instapaper_ignore/, + SharingRegex = + /email|print|rss|digg|slashdot|delicious|reddit|share|twitter|facebook|pinterest|whatsapp/i, + VeryLiberalCommentRegex = /comment/i, + AdvertisementHostRegex = /^adserver\.|doubleclick.net$/i, + SidebarRegex = /sidebar/i, + MinimumAverageDistanceBetweenHRElements = 400, + MinimumAverageDistanceBetweenHeaderElements = 400, + PortionOfCandidateHeightToIgnoreForHeaderCheck = 0.1, + DefaultNumberOfTextNodesToCheckForLanguageMultiplier = 3, + NumberOfCharactersPerTextNodeToEvaluateForLanguageMultiplier = 12, + MinimumRatioOfCharactersForLanguageMultiplier = 0.5, + ScoreMultiplierForChineseJapaneseKorean = 3, + MinimumContentMediaHeight = 150, + MinimumContentMediaWidthToArticleWidthRatio = 0.25, + MaximumContentMediaAreaToArticleAreaRatio = 0.2, + LinkContinueMatchRegEx = /continue/gi, + LinkNextMatchRegEx = /next/gi, + LinkPageMatchRegEx = /page/gi, + LinkListItemBonus = 5, + LinkPageMatchBonus = 10, + LinkNextMatchBonus = 15, + LinkContinueMatchBonus = 15, + LinkNextOrdinalValueBase = 3, + LinkMismatchValueBase = 2, + LinkMatchWeight = 200, + LinkMaxVerticalDistanceFromArticle = 200, + LinkVerticalDistanceFromArticleWeight = 150, + LinkCandidateXPathQuery = + "descendant-or-self::*[(not(@id) or (@id!='disqus_thread' and @id!='comments')) and (not(@class) or @class!='userComments')]/a", + LinkDateRegex = + /\D(?:\d\d(?:\d\d)?[\-\/](?:10|11|12|0?[1-9])[\-\/](?:30|31|[12][0-9]|0?[1-9])|\d\d(?:\d\d)?\/(?:10|11|12|0[1-9])|(?:10|11|12|0?[1-9])\-(?:30|31|[12][0-9]|0?[1-9])\-\d\d(?:\d\d)?|(?:30|31|[12][0-9]|0?[1-9])\-(?:10|11|12|0?[1-9])\-\d\d(?:\d\d)?)\D/, + LinkURLSearchParameterKeyMatchRegex = /(page|^p$|^pg$)/i, + LinkURLPageSlashNumberMatchRegex = /\/.*page.*\/\d+/i, + LinkURLSlashDigitEndMatchRegex = /\/\d+\/?$/, + LinkURLArchiveSlashDigitEndMatchRegex = /archives?\/\d+\/?$/, + LinkURLBadSearchParameterKeyMatchRegex = + /author|comment|feed|id|nonce|related/i, + LinkURLSemanticMatchBonus = 100, + LinkMinimumURLSimilarityRatio = 0.75, + SubheadRegex = /sub(head|title)|description|dec?k|abstract/i, + HeaderMinimumDistanceFromArticleTop = 200, + HeaderLevenshteinDistanceToLengthRatio = 0.75, + MinimumRatioOfListItemsBeingRelatedToSharingToPruneEntireList = 0.5, + FloatMinimumHeight = 130, + ImageSizeTiny = 32, + ToleranceForLeadingMediaWidthToArticleWidthForFullWidthPresentation = 80, + MaximumFloatWidth = 325, + AnchorImageMinimumWidth = 100, + AnchorImageMinimumHeight = 100, + MinimumHeightForImagesAboveTheArticleTitle = 50, + MainImageMinimumWidthAndHeight = 83, + BaseFontSize = 16, + BaseLineHeightRatio = 1.125, + MaximumExactIntegralValue = 9007199254740992, + TitleCandidateDepthScoreMultiplier = 0.1, + TextNodeLengthPower = 1.25, + LazyLoadRegex = /lazy/i, + HeaderElementsSelector = "h1, h2, h3, h4, h5, h6", + StringSimilarityToDeclareStringsNearlyIdentical = 0.97, + FindArticleMode = { Element: !1, ExistenceOfElement: !0 }, + AppleDotComAndSubdomainsRegex = /.*\.apple\.com\.?$/, + SchemaDotOrgArticleContainerSelector = + "*[itemtype='https://schema.org/Article'], *[itemtype='https://schema.org/NewsArticle'], *[itemtype='https://schema.org/APIReference'], *[itemtype='http://schema.org/Article'], *[itemtype='http://schema.org/NewsArticle'], *[itemtype='http://schema.org/APIReference']", + CleaningType = { MainArticleContent: 0, MetadataContent: 1, LeadingMedia: 2 }, + MaximumWidthOrHeightOfImageInMetadataSection = 20; +var attributesForElement = (function () { + var e = Element.prototype.__lookupGetter__("attributes"); + return function (t) { + return e.call(t); + }; +})(); +const TweetURLRegex = + /^https?:\/\/(.+\.)?twitter\.com\/.*\/status\/(.*\/)*[0-9]+\/?$/i, + TweetIframeTitleRegex = /tweet/i, + EmbeddedTwitterIframeSrcRegEx = + /^https?:\/\/platform\.twitter\.com\/embed\/Tweet\.html/i; +((CandidateElement = function (e, t) { + ((this.element = e), + (this.contentDocument = t), + (this.textNodes = this.usableTextNodesInElement(this.element)), + (this.rawScore = this.calculateRawScore()), + (this.tagNameAndAttributesScoreMultiplier = + this.calculateElementTagNameAndAttributesScoreMultiplier()), + (this.languageScoreMultiplier = 0), + (this.depthInDocument = 0)); +}), + (CandidateElement.extraArticleCandidateIfElementIsViable = function ( + e, + t, + n, + r, + ) { + const i = "a, b, strong, i, em, u, span"; + var a = cachedElementBoundingRect(e), + o = cachedElementBoundingRect(t.element); + if ( + ((r && a.height < PrependedArticleCandidateMinimumHeight) || + (!r && a.height < AppendedArticleCandidateMinimumHeight)) && + e.childElementCount && + e.querySelectorAll("*").length !== e.querySelectorAll(i).length + ) + return null; + if (r) { + if (a.bottom > o.top) return null; + } else if (a.top < o.bottom) return null; + if ( + !r && + a.top - o.bottom > + AppendedArticleCandidateMaximumVerticalDistanceFromArticle + ) + return null; + if (a.left > o.right || a.right < o.left) return null; + if (elementLooksLikePartOfACarousel(e)) return null; + var l = new CandidateElement(e, n); + return ((l.isPrepended = r), l); + }), + (CandidateElement.candidateIfElementIsViable = function (e, t, n) { + var r = cachedElementBoundingRect(e), + i = ReaderArticleFinderJS.candidateElementFilter; + return r.width < i.minimumWidth || + r.height < i.minimumHeight || + r.width * r.height < i.minimumArea || + (!n && r.top > i.maximumTop) || + CandidateElement.candidateElementAdjustedHeight(e) < i.minimumHeight + ? null + : new CandidateElement(e, t); + }), + (CandidateElement.candidateElementAdjustedHeight = function (e) { + for ( + var t = cachedElementBoundingRect(e), + n = t.height, + r = e.getElementsByTagName("form"), + i = r.length, + a = 0; + a < i; + ++a + ) { + var o = cachedElementBoundingRect(r[a]); + o.width > t.width * CandidateMinimumWidthPortionForIndicatorElements && + (n -= o.height); + } + var l = e.querySelectorAll("ol, ul"), + s = l.length, + c = null; + for (a = 0; a < s; ++a) { + var u = l[a]; + if ( + !( + c && + c.compareDocumentPosition(u) & Node.DOCUMENT_POSITION_CONTAINED_BY + ) + ) { + var m = u.getElementsByTagName("li"), + d = m.length, + h = cachedElementBoundingRect(u); + if (d) { + var g = h.height / d, + f = getComputedStyle(m[0]), + p = parseInt(f.lineHeight); + if (isNaN(p)) p = fontSizeFromComputedStyle(f) * BaseLineHeightRatio; + h.width > + t.width * CandidateMinimumWidthPortionForIndicatorElements && + g / p < CandidateMinumumListItemLineCount && + ((n -= h.height), (c = u)); + } else n -= h.height; + } + } + return n; + }), + (CandidateElement.prototype = { + calculateRawScore: function () { + for (var e = 0, t = this.textNodes, n = t.length, r = 0; r < n; ++r) + e += this.rawScoreForTextNode(t[r]); + return e; + }, + calculateElementTagNameAndAttributesScoreMultiplier: function () { + return scoreMultiplierForElementTagNameAndAttributes(this.element); + }, + calculateLanguageScoreMultiplier: function () { + 0 === this.languageScoreMultiplier && + (this.languageScoreMultiplier = languageScoreMultiplierForTextNodes( + this.textNodes, + )); + }, + depth: function () { + return ( + this.depthInDocument || + (this.depthInDocument = elementDepth(this.element)), + this.depthInDocument + ); + }, + finalScore: function () { + return ( + this.calculateLanguageScoreMultiplier(), + this.basicScore() * this.languageScoreMultiplier + ); + }, + basicScore: function () { + return this.rawScore * this.tagNameAndAttributesScoreMultiplier; + }, + scoreDensity: function () { + var e = 0, + t = this.element.querySelector(DensityExcludedElementSelector); + t && (e = t.clientWidth * t.clientHeight); + for ( + var n = this.element.children || [], r = n.length, i = 0; + i < r; + ++i + ) { + var a = n[i]; + elementIsCommentBlock(a) && (e += a.clientWidth * a.clientHeight); + } + var o = + cachedElementBoundingRect(this.element).width * + cachedElementBoundingRect(this.element).height, + l = o * MaximumContentMediaAreaToArticleAreaRatio, + s = + cachedElementBoundingRect(this.element).width * + MinimumContentMediaWidthToArticleWidthRatio, + c = this.element.querySelectorAll("img, video"), + u = c.length; + for (i = 0; i < u; ++i) { + var m = cachedElementBoundingRect(c[i]); + if (m.width >= s && m.height > MinimumContentMediaHeight) { + var d = m.width * m.height; + d < l && (e += d); + } + } + var h = this.basicScore(), + g = o - e, + f = this.textNodes.length, + p = 0, + E = 0; + for (i = 0; i < f; ++i) { + var v = this.textNodes[i].parentNode; + v && ((E += fontSizeFromComputedStyle(getComputedStyle(v))), p++); + } + var N = BaseFontSize; + return ( + p && (N = E /= p), + this.calculateLanguageScoreMultiplier(), + (h / g) * 1e3 * (N / BaseFontSize) * this.languageScoreMultiplier + ); + }, + usableTextNodesInElement: function (e) { + var t = []; + if (!e) return t; + const n = new Set([ + "a", + "dd", + "dt", + "noscript", + "ol", + "option", + "pre", + "script", + "style", + "td", + "ul", + "iframe", + ]); + var r = this.contentDocument, + i = function (e) { + const i = + "text()|*/text()|*/a/text()|*/li/text()|*/li/p/text()|*/span/text()|*/em/text()|*/i/text()|*/strong/text()|*/b/text()|*/font/text()|blockquote/*/text()|div[count(./p)=count(./*)]/p/text()|div[count(*)=1]/div/p/text()|div[count(*)=1]/div/p/*/text()|div/div/text()"; + for ( + var a = r.evaluate( + i, + e, + null, + XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, + null, + ), + o = a.snapshotLength, + l = 0; + l < o; + ++l + ) { + var s = a.snapshotItem(l); + n.has(normalizedElementTagName(s.parentNode)) || + s._countedTextNode || + isNodeWhitespace(s) || + ((s._countedTextNode = !0), t.push(s)); + } + }; + i(e); + for ( + var a = childrenWithParallelStructure(e), o = a.length, l = 0; + l < o; + ++l + ) { + i(a[l]); + } + var s = t.length; + for (l = 0; l < s; ++l) delete t[l]._countedTextNode; + return t; + }, + addTextNodesFromCandidateElement: function (e) { + for (var t = this.textNodes.length, n = 0; n < t; ++n) + this.textNodes[n].alreadyCounted = !0; + var r = e.textNodes, + i = r.length; + for (n = 0; n < i; ++n) r[n].alreadyCounted || this.textNodes.push(r[n]); + for (t = this.textNodes.length, n = 0; n < t; ++n) + this.textNodes[n].alreadyCounted = null; + this.rawScore = this.calculateRawScore(); + }, + rawScoreForTextNode: function (e) { + const t = 20; + if (!e) return 0; + var n = e.length; + if (n < t) return 0; + var r = e.parentNode; + if (!isElementVisible(r)) return 0; + for (var i = 1; r && r !== this.element; ) + ((i -= 0.1), (r = r.parentNode)); + return Math.pow(n * i, TextNodeLengthPower); + }, + shouldDisqualifyDueToScoreDensity: function () { + return this.scoreDensity() < ArticleMinimumScoreDensity; + }, + shouldDisqualifyDueToHorizontalRuleDensity: function () { + for ( + var e = this.element.getElementsByTagName("hr"), + t = e.length, + n = 0, + r = cachedElementBoundingRect(this.element), + i = 0.7 * r.width, + a = 0; + a < t; + ++a + ) + e[a].clientWidth > i && n++; + if (n && r.height / n < MinimumAverageDistanceBetweenHRElements) + return !0; + return !1; + }, + shouldDisqualifyDueToHeaderDensity: function () { + var e = "(h1|h2|h3|h4|h5|h6|*/h1|*/h2|*/h3|*/h4|*/h5|*/h6)[a[@href]]", + t = this.contentDocument.evaluate( + e, + this.element, + null, + XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, + null, + ), + n = t.snapshotLength; + if (n > 2) { + for ( + var r = 0, + i = cachedElementBoundingRect(this.element), + a = i.height * PortionOfCandidateHeightToIgnoreForHeaderCheck, + o = 0; + o < n; + ++o + ) { + var l = t.snapshotItem(o); + if ( + "#" !== + l.querySelector("a[href]").getAttribute("href").substring(0, 1) + ) { + var s = cachedElementBoundingRect(l); + s.top - i.top > a && i.bottom - s.bottom > a && r++; + } + } + if (i.height / r < MinimumAverageDistanceBetweenHeaderElements) + return !0; + } + return !1; + }, + shouldDisqualifyDueToSimilarElements: function (e) { + function t(e, t) { + if (!e || !t) return !1; + var n = 1; + return e.className + ? e.className === t.className + : elementFingerprintForDepth(e, n) === + elementFingerprintForDepth(t, n); + } + var n = function (e) { + const t = /related-posts/i; + for ( + var n = e.parentElement; + n && n !== this.contentDocument.body; + n = n.parentElement + ) + if (t.test(n.className)) return !0; + return !1; + }.bind(this), + r = this.element; + if ("article" === normalizedElementTagName(r.parentElement)) return !1; + let i = normalizedElementTagName(r); + if ("li" === i || "dd" === i) + for (var a = r.parentNode, o = a.children.length, l = 0; l < o; ++l) { + var s = a.children[l]; + if ( + normalizedElementTagName(s) === i && + s.className === r.className && + s !== r + ) + return !0; + } + var c = r.classList; + if ( + (c.length || + ((r = r.parentElement) && + ((c = r.classList).length || + ((r = r.parentElement) && (c = r.classList)))), + c.length) + ) { + e || (e = []); + var u = e.length; + for (l = 0; l < u; ++l) e[l].element.candidateElement = e[l]; + var m = + elementsMatchingClassesInClassListIgnoringCommonLayoutClassNames( + c, + this.contentDocument, + ), + d = !1, + h = elementDepth(r), + g = n(r), + f = m.length; + for (l = 0; l < f; ++l) { + if ( + (s = m[l]) !== r && + s.parentElement !== r && + r.parentElement !== s && + isElementVisible(s) + ) { + var p = s.candidateElement; + if ( + (p || (p = new CandidateElement(s, this.contentDocument))) && + p.basicScore() * ReaderMinimumAdvantage > this.basicScore() + ) { + if (s.closest("section") && r.closest("section")) return !1; + if ( + SectionRegex.test(s.className) && + SectionRegex.test(r.className) + ) + return !1; + if (n(s) && !g) return !1; + if ( + !d && + cachedElementBoundingRect(s).bottom < + cachedElementBoundingRect(this.element).top + ) { + d = !0; + continue; + } + if ( + t(r.previousElementSibling, s.previousElementSibling) || + t(r.nextElementSibling, s.nextElementSibling) + ) { + var E = r.querySelector(HeaderElementsSelector), + v = s.querySelector(HeaderElementsSelector); + if (E && v && elementsHaveSameTagAndClassNames(E, v)) return !0; + if ( + ((E = r.previousElementSibling), + (v = s.previousElementSibling), + E && + v && + elementIsAHeader(E) && + elementIsAHeader(v) && + elementsHaveSameTagAndClassNames(E, v)) + ) + return !0; + } + if (elementDepth(s) === h) + for ( + ; + s.parentElement && + r.parentElement && + s.parentElement !== r.parentElement; + ) + ((s = s.parentElement), (r = r.parentElement)); + for (; r.childElementCount <= 1; ) { + if (!r.childElementCount || !s.childElementCount) return !1; + if (s.childElementCount > 1) return !1; + if ( + normalizedElementTagName(r.firstElementChild) !== + normalizedElementTagName(s.firstElementChild) + ) + return !1; + ((r = r.firstElementChild), (s = s.firstElementChild)); + } + if (s.childElementCount <= 1) return !1; + v = s.firstElementChild; + var N = s.lastElementChild, + C = ((E = r.firstElementChild), r.lastElementChild); + if (normalizedElementTagName(v) !== normalizedElementTagName(E)) + return !1; + if (normalizedElementTagName(N) !== normalizedElementTagName(C)) + return !1; + var A = v.className, + S = N.className, + b = E.className, + y = N.className, + T = y === b ? 2 : 1; + if (A.length || b.length) { + if (!A.length || !b.length) return !1; + if ( + A === b && + elementsMatchingClassesInClassList(E.classList, r).length <= T + ) + return !0; + } + if (S.length || y.length) { + if (!S.length || !y.length) return !1; + if ( + S === y && + elementsMatchingClassesInClassList(N.classList, r).length <= T + ) + return !0; + } + var x = E.clientHeight, + R = C.clientHeight; + return ( + !(!x || !v.clientHeight) && + !(!R || !N.clientHeight) && + (x === v.clientHeight || R === N.clientHeight) + ); + } + } + } + for (l = 0; l < u; ++l) e[l].element.candidateElement = null; + } + return !1; + }, + shouldDisqualifyForDeepLinking: function () { + const e = 5; + for ( + var t = this.element, + n = this.contentDocument.location, + r = pathComponentsForAnchor(n).length, + i = [], + a = t.getElementsByTagName("a"), + o = a.length, + l = 0; + l < o; + l++ + ) { + var s = a[l]; + if ( + n.host === s.host && + !( + pathComponentsForAnchor(s).length <= r || + 0 !== (s.host + s.pathname).indexOf(n.host + n.pathname) || + anchorLinksToAttachment(s) || + (i.push(s), i.length < e) + ) + ) { + var c = t.offsetTop + t.offsetHeight / e; + return i[0].offsetTop < c; + } + } + return !1; + }, + }), + (String.prototype.lastInteger = function () { + const e = /[0-9]+/g; + var t = this.match(e); + return t ? parseInt(t[t.length - 1]) : NaN; + })); +((ReaderArticleFinder = function (e) { + ((this.contentDocument = e), + (this.didSearchForArticleNode = !1), + (this.didChangeContentDocumentToFrameOnPage = !1), + (this.article = null), + (this.didSearchForExtraArticleNode = !1), + (this.extraArticle = null), + (this._leadingMediaElement = null), + (this._isMediaWikiPage = void 0), + (this._cachedScrollY = 0), + (this._cachedScrollX = 0), + (this._elementsWithCachedBoundingRects = []), + (this._cachedContentTextStyle = null), + (this.pageNumber = 1), + (this.prefixWithDateForNextPageURL = null), + (this.previouslyDiscoveredPageURLStrings = []), + (this.candidateElementFilter = { + minimumWidth: 280, + minimumHeight: 295, + minimumArea: 17e4, + maxTop: 1300, + })); + let t = 0; + ((this._nextUniqueID = function () { + return t++ + ""; + }), + (this._mapOfUniqueIDToOriginalElement = new Map()), + (this._weakMapOfOriginalElementToUniqueID = new WeakMap())); +}), + (ReaderArticleFinder.prototype = { + setConfigurationForTesting: function (e) { + this.configurationForTesting = e; + }, + setCandidateElementFilter: function (e) { + let [t, n] = this._validityAndValidCandidateElementFilterFromFilter(e); + t && (this.candidateElementFilter = n); + }, + _validityAndValidCandidateElementFilterFromFilter: function (e) { + let t = {}, + n = !1; + for (let i of [ + "minimumWidth", + "minimumHeight", + "minimumArea", + "maxTop", + ]) { + let r = (e || {})[i]; + if (void 0 === r || "number" != typeof r || r < 0) { + ((t = {}), (n = !1)); + break; + } + ((t[i] = r), (n = !0)); + } + return [n, t]; + }, + pointsForDominantIframeHitTest: function () { + const e = 60; + return [ + [e, e], + [window.innerWidth - e, e], + [e, window.innerHeight - e], + [window.innerWidth - e, window.innerHeight - e], + ]; + }, + dominantContentIframe: function () { + let e, + t = this.pointsForDominantIframeHitTest(), + n = t.length; + for (let i = 0; i < n; i++) { + if ( + ((cornerElement = document.elementFromPoint(t[i][0], t[i][1])), + !cornerElement || "IFRAME" !== cornerElement.tagName) + ) + return null; + if (e) { + if (e !== cornerElement) return null; + } else e = cornerElement; + } + return e; + }, + checkForIframeCoveringMostOfWebpage: function () { + let e = this.dominantContentIframe(); + e && + !this.didChangeContentDocumentToFrameOnPage && + ((this.contentDocument = e.contentDocument), + this.resetArticleInformation(), + (this.didChangeContentDocumentToFrameOnPage = !0)); + }, + isReaderModeAvailable: function () { + return ( + this.setSuppressBoundingRectCalculationForSkippedElements(!0), + this.checkForIframeCoveringMostOfWebpage(), + !!this.findArticleBySearchingQuirksList() || + (this.cacheWindowScrollPosition(), + !!this.findArticleFromMetadata(FindArticleMode.ExistenceOfElement) || + ((this.article = this.findArticleByVisualExamination()), + this.article && this.articleIsLTR(), + !!this.article)) + ); + }, + hasDominantContentIframe: function () { + return document !== this.contentDocument; + }, + previewReaderImageURL: function () { + const e = this.adoptableArticle(!0); + if (!e) return null; + const t = e.querySelectorAll("img"); + if (!t.length) return null; + const n = window.innerWidth / 2, + i = window.innerHeight / 2, + r = this.contentDocument + .elementsFromPoint(n, i) + .find((e) => "IMG" === e.tagName), + a = t[0].currentSrc; + if (!r) return a; + const l = [...t].find((e) => e.currentSrc === r.currentSrc); + return l ? l.currentSrc : a; + }, + resetArticleInformation: function () { + ((this.didSearchForArticleNode = !1), + (this.didSearchForExtraArticleNode = !1), + delete this.article, + delete this.extraArticle, + delete this._articleTitleInformation, + delete this._articleTitleElement, + delete this._leadingMediaElement, + delete this._cachedContentTextStyle, + delete this._adoptableArticle, + delete this._articleIsLTR, + delete this._nextPageURL, + delete this._cachedScrollY, + delete this._cachedScrollX, + clearCachedElementBoundingRects()); + }, + reset: function () { + (this.resetArticleInformation(), this.prepareToTransitionToReader()); + }, + prepareToTransitionToReader: function () { + (this.adoptableArticle(!0), this.nextPageURL(), this.articleIsLTR()); + }, + nextPageURL: function () { + if (!this._nextPageURL) { + var e = this.nextPageURLString(); + ("undefined" != typeof ReaderArticleFinderJSController && + e && + (e = ReaderArticleFinderJSController.substituteURLForNextPageURL(e)), + (this._nextPageURL = e)); + } + return this._nextPageURL; + }, + containerElementsForMultiPageContent: function () { + const e = /(.*page[^0-9]*|.*article.*item[^0-9]*)(\d{1,2})(.*)/i, + t = 3; + for ( + var n, i = [], r = this.articleNode(), a = 0; + !(n = e.exec(r.getAttribute("id"))); + ) + if (!(r = r.parentElement) || a++ === t) return []; + for ( + var l = childrenOfParentElement(r), o = l.length, s = 0; + s < o; + ++s + ) { + var c = l[s]; + if (c !== r) { + var m = e.exec(c.getAttribute("id")); + m && + m[1] === n[1] && + m[3] === n[3] && + ((isElementVisible(c) && !isElementPositionedOffScreen(c)) || + i.push(c)); + } + } + return i; + }, + adoptableMultiPageContentElements: function () { + return this.containerElementsForMultiPageContent().map(function (e) { + return this.cleanArticleNode( + e, + e.cloneNode(!0), + CleaningType.MainArticleContent, + !1, + ); + }, this); + }, + classNameIsSignificantInRouteComputation: function (e) { + return !!e && !(e.toLowerCase() in StylisticClassNames); + }, + shouldIgnoreInRouteComputation: function (e) { + let t = normalizedElementTagName(e); + return ( + "script" === t || + "link" === t || + "style" === t || + ("tr" === t && !e.offsetHeight) + ); + }, + routeToArticleNode: function () { + for (var e = [], t = this.articleNode(); t; ) { + var n = {}; + n.tagName = normalizedElementTagName(t); + var i = t.getAttribute("id"); + (i && (n.id = i), + this.classNameIsSignificantInRouteComputation(t.className) && + (n.className = t.className), + (n.index = 1)); + for (var r = t.previousElementSibling; r; r = r.previousElementSibling) + this.shouldIgnoreInRouteComputation(r) || n.index++; + (e.unshift(n), (t = t.parentElement)); + } + return e; + }, + adjustArticleNodeUpwardIfNecessary: function () { + if (!this.article) return; + var e = this.article.element; + if (!e.parentElement) return; + for (var t = e; t; t = t.parentElement) + if (VeryPositiveClassNameRegEx.test(t.className)) + return void (this.article.element = t); + if ( + "header" === normalizedElementTagName(e) && + "article" === normalizedElementTagName(e.parentElement) + ) + return void (this.article.element = e.parentElement); + var n = e.previousElementSibling; + if ( + n && + "figure" === normalizedElementTagName(n) && + "article" === normalizedElementTagName(e.parentElement) + ) + return void (this.article.element = e.parentElement); + var i = + "section" === normalizedElementTagName(e) + ? e + : nearestAncestorElementWithTagName(e, "section", ["article"]); + if (i) { + var r = i.parentElement, + a = (function () { + for (var e = r.children, t = e.length, n = 0; n < t; ++n) { + var a = e[n], + l = normalizedElementTagName(a); + if (a !== i && ("section" === l || "header" === l)) return !0; + } + return !1; + })(); + if ( + a && + (/\barticleBody\b/.test(r.getAttribute("itemprop")) || + "main" === normalizedElementTagName(r) || + "main" === r.getAttribute("role") || + "article" === normalizedElementTagName(r) || + r === this.contentDocument.body || + r.classList.contains("entry-content")) + ) + return void (this.article.element = r); + } + const l = /intro/i, + o = /body|content/i; + if ( + ((e = this.article.element), + (l.test(e.className) && + e.nextElementSibling && + o.test(e.nextElementSibling.className)) || + (o.test(e.className) && + e.previousElementSibling && + l.test(e.previousElementSibling.className))) + ) + return void (this.article.element = e.parentElement); + if ("article" !== normalizedElementTagName(e)) { + var s = e.parentElement.closest("*[itemprop='articleBody']"); + if (s && s.parentElement.closest(SchemaDotOrgArticleContainerSelector)) + return void (this.article.element = s); + } + var c = e.closest("article"); + if (c) { + e = unwrappedArticleContentElement(e); + var m, + d = elementDepth(e); + ("p" !== normalizedElementTagName(e) || + e.className || + ((e = e.parentElement), d--), + e.classList.length + ? 1 === + (m = + elementsMatchingClassesInClassListIgnoringCommonLayoutClassNames( + e.classList, + this.contentDocument, + )).length && + (m = + elementsMatchingClassesInClassListIgnoringClassesWithNumericSuffix( + e.classList, + this.contentDocument, + )) + : (m = e.parentElement.children)); + for (var h = m.length, u = 0; u < h; ++u) { + var g = m[u]; + if ( + e !== g && + d === elementDepth(g) && + isElementVisible(g) && + !g.querySelector("article") && + Object.keys(e.dataset).join() === Object.keys(g.dataset).join() && + dominantFontFamilyAndSizeForElement(e) === + dominantFontFamilyAndSizeForElement(g) + ) + return void (this.article.element = c); + } + } + let f = this.findExtraArticle(), + p = f ? f.element : null; + if ( + p && + p.parentElement && + e.parentElement === p.parentElement && + ArticleRegEx.test(e.parentElement.className) + ) { + if ( + dominantFontFamilyAndSizeForElement(e) === + dominantFontFamilyAndSizeForElement(p) + ) + return void (this.article.element = e.parentElement); + } + let E = e.parentElement; + if ( + elementIsCommentBlock(e) && + !elementIsCommentBlock(E) && + ArticleRegEx.test(E.className) + ) { + let e = CandidateElement.candidateIfElementIsViable( + E, + this.contentDocument, + !0, + ); + if (e && e.finalScore() >= ReaderMinimumScore) + return void (this.article.element = E); + } + if (!(e = this.article.element).getAttribute("id") && e.className) { + var v = normalizedElementTagName(e), + T = e.className, + S = e.parentElement; + if (S) + for (var A = S.children, N = ((u = 0), A.length); u < N; ++u) { + var y = A[u]; + if ( + y !== e && + normalizedElementTagName(y) === v && + y.className === T + ) { + var b = CandidateElement.candidateIfElementIsViable( + y, + this.contentDocument, + !0, + ); + if (b && !(b.finalScore() < ReaderMinimumScore)) + return void (this.article.element = S); + } + } + } + }, + findArticleBySearchingQuirksList: function () { + var e, + t = this.contentDocument; + return ( + findArticleNodeSelectorsInQuirksListForHostname( + t.location.hostname, + function (n) { + var i = t.querySelectorAll(n); + if (1 === i.length) + return ((e = new CandidateElement(i[0], t)), !0); + }, + ), + e + ); + }, + articleNode: function (e) { + return ( + this.checkForIframeCoveringMostOfWebpage(), + this.didSearchForArticleNode || + ((this.article = this.findArticleBySearchingQuirksList()), + this.article || + (this.article = this.findArticleBySearchingAllElements()), + this.article || + (this.article = this.findArticleByVisualExamination()), + this.article || (this.article = this.findArticleFromMetadata()), + !this.article && + e && + (this.article = this.findArticleBySearchingAllElements(!0)), + (this.didSearchForArticleNode = !0), + this.adjustArticleNodeUpwardIfNecessary(), + this.article && + (this.article.element = unwrappedArticleContentElement( + this.article.element, + )), + this.article && this.articleIsLTR()), + this.article ? this.article.element : null + ); + }, + extraArticleNode: function () { + return ( + this.didSearchForArticleNode || this.articleNode(), + this.didSearchForExtraArticleNode || + ((this.extraArticle = this.findExtraArticle()), + (this.didSearchForExtraArticleNode = !0)), + this.extraArticle ? this.extraArticle.element : null + ); + }, + cacheWindowScrollPosition: function () { + ((this._cachedScrollY = window.scrollY), + (this._cachedScrollX = window.scrollX)); + }, + contentTextStyle: function () { + return ( + this._cachedContentTextStyle || + ((this._cachedContentTextStyle = contentTextStyleForNode( + this.contentDocument, + this.articleNode(), + )), + this._cachedContentTextStyle || + (this._cachedContentTextStyle = getComputedStyle( + this.articleNode(), + ))), + this._cachedContentTextStyle + ); + }, + commaCountIsLessThan: function (e, t) { + for ( + var n = 0, i = e.textContent, r = -1; + n < t && (r = i.indexOf(",", r + 1)) >= 0; + ) + n++; + return n < t; + }, + calculateLinkDensityForPruningElement: function (e, t) { + var n = removeWhitespace(e.textContent).length; + if (!n) return 0; + for ( + var i = this.article.element, + r = (function () { + for (var t = e.originalElement; t && t !== i; t = t.parentElement) + if ("none" !== getComputedStyle(t).float) return t; + return null; + })(), + a = e.getElementsByTagName("a"), + l = 0, + o = a.length, + s = 0; + s < o; + ++s + ) { + var c = a[s]; + (!r && + c.href && + t && + t === dominantFontFamilyAndSizeForElement(c.originalElement)) || + (l += removeWhitespace(c.textContent).length); + } + return l / n; + }, + shouldPruneElement: function (e, t, n) { + const i = 0.33, + r = 0.5, + a = 0.2, + l = 25, + o = 4e4; + let s = normalizedElementTagName(e); + if (!e.parentElement) return !1; + if (t.classList.contains("footnotes")) return !1; + if (e.querySelector(".tweet-wrapper")) return !1; + if ( + "figure" === normalizedElementTagName(e.parentElement) && + e.querySelector("img") + ) + return !1; + if ("iframe" === s) return shouldPruneIframe(e); + if ("canvas" !== s) { + for (var c = !1, m = e.childNodes.length, d = 0; d < m; ++d) { + var h = e.childNodes[d], + u = h.nodeType; + if ( + u === Node.ELEMENT_NODE || + (u === Node.TEXT_NODE && !isNodeWhitespace(h)) + ) { + c = !0; + break; + } + } + if (!c) { + if ("p" === s) { + var g = e.previousSibling, + f = e.nextSibling; + if ( + g && + g.nodeType === Node.TEXT_NODE && + !isNodeWhitespace(g) && + f && + f.nodeType === Node.TEXT_NODE && + !isNodeWhitespace(f) + ) + return !1; + } + return !0; + } + if ("p" === s) return !1; + } + if ("canvas" === s) + return ( + (window.innerWidth === t.width && window.innerHeight === t.height) || + !( + !ProgressiveLoadingRegex.test(t.className) || + "img" !== normalizedElementTagName(t.nextElementSibling) + ) || + !!canvasElementHasNoUserVisibleContent(t) || + "cufon" === normalizedElementTagName(e.parentNode) + ); + if (e.closest("figure") && e.querySelector("picture")) return !1; + var p = 0; + if (t) { + if (VeryNegativeClassNameRegEx.test(t.className)) return !0; + var E = t.className, + v = t.getAttribute("id"); + (PositiveRegEx.test(E) && p++, + PositiveRegEx.test(v) && p++, + NegativeRegEx.test(E) && p--, + NegativeRegEx.test(v) && p--); + } + let T = this.isMediaWikiPage(); + if (p < 0 && !T) return !0; + if (elementIsProtected(e)) return !1; + if ("ul" === s || "ol" === s) { + if (t.querySelector("iframe") && t.querySelector("script")) return !0; + var S = t.children, + A = S.length; + if (!A && !/\S/.test(e.innerText)) return !0; + var N = 0, + y = 0; + for (d = 0; d < A; ++d) { + var b = S[d]; + if (SharingRegex.test(b.className)) N++; + else { + var x = b.children; + 1 === x.length && SharingRegex.test(x[0].className) && N++; + } + NegativeRegEx.test(S[d].className) && y++; + } + return ( + N / A >= + MinimumRatioOfListItemsBeingRelatedToSharingToPruneEntireList || + y / A >= MinimumRatioOfListItemsBeingRelatedToSharingToPruneEntireList + ); + } + if (1 === e.childElementCount) { + var I = e.firstElementChild; + if ("a" === normalizedElementTagName(I)) return !1; + if ( + "span" === normalizedElementTagName(I) && + "converted-anchor" === I.className && + nearestAncestorElementWithTagName(I, "table") + ) + return !1; + } + var D = e.getElementsByTagName("img"), + C = D.length; + if (C) { + var R = 0; + for (d = 0; d < C; ++d) { + var L = D[d].originalElement; + if (isElementVisible(L)) { + var M = cachedElementBoundingRect(L); + R += (M.width / C) * (M.height / C); + } + } + if (R > o) return !1; + } + if (!this.commaCountIsLessThan(e, 10)) return !1; + var _ = e.getElementsByTagName("p").length, + w = e.getElementsByTagName("br").length, + F = _ + Math.floor(w / 2); + if (C > F && "table" !== s) return !0; + if ( + !e.closest("table") && + !e._originalElementDepthInCollapsedArea && + !T + ) { + if ( + e.getElementsByTagName("li").length > F && + dominantFontFamilyAndSizeForElement(t.querySelector("li")) !== n + ) + return !0; + if (e.textContent.length < l && 1 !== C) return !0; + let i = this.calculateLinkDensityForPruningElement(e, n); + if (p >= 1 && i > r) return !0; + if (p < 1 && i > a) return !0; + } + if (e.getElementsByTagName("input").length / F > i) return !0; + if ("table" === s) { + if ( + removeWhitespace(e.innerText).length <= + 0.5 * removeWhitespace(t.innerText).length + ) + return !0; + if (T && t.classList.contains("toc")) return !0; + } + return !1; + }, + wordCountIsLessThan: function (e, t) { + for ( + var n = 0, i = e.textContent, r = -1; + (r = i.indexOf(" ", r + 1)) >= 0 && n < t; + ) + n++; + return n < t; + }, + leadingMediaIsAppropriateWidth: function (e) { + return ( + !(!this.article || !e) && + e.getBoundingClientRect().width >= + this.article.element.getBoundingClientRect().width - + ToleranceForLeadingMediaWidthToArticleWidthForFullWidthPresentation + ); + }, + newDivFromNode: function (e) { + var t = this.contentDocument.createElement("div"); + return (e && (t.innerHTML = e.innerHTML), t); + }, + headerElement: function () { + if (!this.article) return null; + var e = this.article.element.previousElementSibling; + if (e && "header" === normalizedElementTagName(e)) return e; + var t = this._articleTitleElement; + if (!t) return null; + var n = t.parentElement; + if ( + n && + "header" === normalizedElementTagName(n) && + !this.article.element.contains(n) + ) + for ( + var i = n.querySelectorAll("img"), r = i.length, a = 0; + a < r; + ++a + ) { + var l = i[a], + o = cachedElementBoundingRect(l); + if ( + o.width >= MainImageMinimumWidthAndHeight && + o.height >= MainImageMinimumWidthAndHeight + ) + return n; + } + return null; + }, + adoptableLeadingMedia: function () { + if (!this.article || !this._leadingMediaElement) return null; + var e = this._leadingMediaElement.closest("figure"); + if (e) + return this.cleanArticleNode( + e, + e.cloneNode(!0), + CleaningType.LeadingMedia, + !0, + ); + if (!this.leadingMediaIsAppropriateWidth(this._leadingMediaElement)) + return null; + if ("img" !== normalizedElementTagName(this._leadingMediaElement)) + return this.cleanArticleNode( + this._leadingMediaElement, + this._leadingMediaElement.cloneNode(!0), + CleaningType.LeadingMedia, + !0, + ); + const t = 5, + n = /credit/, + i = /caption/, + r = /src|alt/; + var a = this._leadingMediaElement.parentNode, + l = null, + o = null, + s = a.children.length; + if ("div" === normalizedElementTagName(a) && s > 1 && s < t) + for ( + var c = a.cloneNode(!0).querySelectorAll("p, div"), + m = c.length, + d = 0; + d < m; + ++d + ) { + var h = c[d]; + n.test(h.className) + ? (l = h.cloneNode(!0)) + : i.test(h.className) && (o = h.cloneNode(!0)); + } + var u = this._leadingMediaElement.cloneNode(!1), + g = lazyLoadingImageURLForElement(u, u.className); + (g && u.setAttribute("src", g), + (!g && u.hasAttribute("src")) || + !u.hasAttribute("data-srcset") || + u.setAttribute("srcset", u.getAttribute("data-srcset"))); + var f = attributesForElement(u); + for (d = 0; d < f.length; ++d) { + var p = f[d].nodeName; + r.test(p) || (u.removeAttribute(p), d--); + } + var E = this.contentDocument.createElement("div"); + if (((E.className = "leading-image"), E.appendChild(u), l)) { + var v = this.newDivFromNode(l); + ((v.className = "credit"), E.appendChild(v)); + } + if (o) { + var T = this.newDivFromNode(o); + ((T.className = "caption"), E.appendChild(T)); + } + return E; + }, + articleBoundingRect: function () { + return ( + this._articleBoundingRect || + (this._articleBoundingRect = cachedElementBoundingRect( + this.article.element, + )), + this._articleBoundingRect + ); + }, + updatePageInformation: function (e) { + ((this.pageNumber = e.pageNumber), + (this.suggestedRouteToArticle = e.suggestedRouteToArticle), + (this.previouslyDiscoveredPageURLStrings = + e.previouslyDiscoveredPageURLStrings)); + }, + hasArticle: function () { + return !!this.article; + }, + serializableArticle: function () { + const e = this.adoptableArticle(!0); + if (!e) return null; + let t; + const n = this.adoptableMetadataBlock(); + return ( + n && (t = webkit.serializeNode(n, { deep: !0 })), + { + articleIsLTR: this.articleIsLTR(), + articleNode: webkit.serializeNode(e, { deep: !0 }), + articleTitle: this.articleTitle(), + articleTitleInformation: this.articleTitleInformation(), + articleSubhead: this.articleSubhead(), + baseURI: this.contentDocument.baseURI, + documentURLString: this.documentURLString(), + heightOfArticle: this.articleNode().getBoundingClientRect().height, + metadataBlock: t, + multiPageContentElements: + this.adoptableMultiPageContentElements().map(() => + webkit.serializeNode(multiPageContentElements, { deep: !0 }), + ), + nextPageURL: this.nextPageURL(), + routeToArticleNode: this.routeToArticleNode(), + } + ); + }, + updatePageInformation: function (e) { + ((this.pageNumber = e.pageNumber), + (this.suggestedRouteToArticle = e.suggestedRouteToArticle), + (this.previouslyDiscoveredPageURLStrings = + e.previouslyDiscoveredPageURLStrings)); + }, + adoptableArticle: function (e) { + if (this._adoptableArticle) return this._adoptableArticle.cloneNode(!0); + (this.setSuppressBoundingRectCalculationForSkippedElements(!1), + clearCachedElementBoundingRects(), + this.cacheWindowScrollPosition()); + var t = this.articleNode(e); + if ( + ((this._adoptableArticle = t ? t.cloneNode(!0) : null), + !this._adoptableArticle) + ) + return this._adoptableArticle; + if ( + ((this._adoptableArticle = this.cleanArticleNode( + t, + this._adoptableArticle, + CleaningType.MainArticleContent, + !1, + )), + "p" === normalizedElementTagName(this._adoptableArticle)) + ) { + var n = document.createElement("div"); + (n.appendChild(this._adoptableArticle), (this._adoptableArticle = n)); + } + var i = this.extraArticleNode(); + if (i) { + var r = this.cleanArticleNode( + i, + i.cloneNode(!0), + CleaningType.MainArticleContent, + !0, + ); + r + ? this.extraArticle.isPrepended + ? this._adoptableArticle.insertBefore( + r, + this._adoptableArticle.firstChild, + ) + : this._adoptableArticle.appendChild(r) + : (i = null); + var a = cachedElementBoundingRect(this.article.element), + l = cachedElementBoundingRect(this.extraArticle.element), + o = { + top: Math.min(a.top, l.top), + right: Math.max(a.right, l.right), + bottom: Math.max(a.bottom, l.bottom), + left: Math.min(a.left, l.left), + }; + ((o.width = o.right - o.left), + (o.height = o.bottom - o.top), + (this._articleBoundingRect = o)); + } + this._articleTextContent = this._adoptableArticle.innerText; + var s = this.headerElement(); + if ( + this._leadingMediaElement && + (!s || !s.contains(this._leadingMediaElement)) + ) { + var c = this.adoptableLeadingMedia(); + c && + this._adoptableArticle.insertBefore( + c, + this._adoptableArticle.firstChild, + ); + } + var m = !!s; + if (m && i && (i === s && (m = !1), m)) { + var d = i.compareDocumentPosition(s); + (d & Node.DOCUMENT_POSITION_CONTAINS || + d & Node.DOCUMENT_POSITION_CONTAINED_BY) && + (m = !1); + } + if (m) { + var h = this.cleanArticleNode( + s, + s.cloneNode(!0), + CleaningType.MainArticleContent, + !0, + ); + h && + this._adoptableArticle.insertBefore( + h, + this._adoptableArticle.firstChild, + ); + } + return this._adoptableArticle; + }, + dominantContentSelectorAndDepth: function (e) { + var t, + n = {}, + i = {}; + walkElementSubtree(e, 2, function (e, t) { + if (isElementVisible(e)) { + var r = selectorForElement(e) + " | " + t; + i[r] ? (i[r] += 1) : ((i[r] = 1), (n[r] = e)); + } + }); + var r = arrayOfKeysAndValuesOfObjectSortedByValueDescending(i); + switch (r.length) { + case 0: + break; + case 1: + t = r[0].key; + break; + default: + var a = r[0]; + a.value > r[1].value && (t = a.key); + } + if (!t) return null; + var l = n[t]; + return { + selector: selectorForElement(l), + depth: depthOfElementWithinElement(l, e), + }; + }, + functionToPreventPruningElementDueToInvisibility: function () { + return ( + functionToPreventPruningDueToInvisibilityInQuirksListForHostname( + this.contentDocument.location.hostname, + ) || + function () { + return !1; + } + ); + }, + cleanArticleNode: function (e, t, n, i) { + function r(e) { + ((v += e), + T && (T += e), + S && (S += e), + A && (A += e), + N && (N += e), + y && (y += e)); + } + function a() { + (1 === T && (T = 0), + 1 === S && (S = 0), + 1 === A && (A = 0), + 1 === N && (N = 0), + 1 === y && (y = 0)); + } + function l() { + const t = 0.8; + var n = cachedElementBoundingRect(e); + if (0 === n.width || 0 === n.height) return !0; + var i, + r = childrenWithParallelStructure(e), + a = r.length; + if (a) { + i = []; + for (var l = 0; l < a; ++l) { + var o = r[l]; + if ("none" === getComputedStyle(o).float) + for (var s = o.children, c = s.length, m = 0; m < c; ++m) + i.push(s[m]); + else i.push(o); + } + } else i = e.children; + var d = i.length, + h = 0; + for (l = 0; l < d; ++l) { + var u = i[l]; + "none" !== getComputedStyle(u).float && (h += u.innerText.length); + } + return h / e.innerText.length > t; + } + function o(t) { + const n = 50; + if (cachedElementBoundingRect(t).height > n) return !1; + return ( + !!new Set(["ul", "li", "nav"]).has(normalizedElementTagName(t)) || + (t.parentElement === e && !t.nextElementSibling) + ); + } + function s(e, t) { + const n = 0.9; + return !( + cachedElementBoundingRect(e).height > + n * cachedElementBoundingRect(t).height + ); + } + function c(e, t) { + const n = 1.1, + i = 1.4; + t && + H && + (e.matches(HeaderElementsSelector) || + ((t > i * H || (V.test(b.className) && t > n * H)) && + !e.closest(".pullquote") && + (e.classList.add("pullquote"), + e.classList.contains("float") || + ((e.style.width = null), cleanStyleAndClassList(e))))); + } + function m(e, t) { + for (var n = e[t]; n; n = n[t]) + if (!isNodeWhitespace(n) && n.nodeType !== Node.COMMENT_NODE) + return !1; + return !0; + } + const d = new Set([ + "form", + "script", + "style", + "link", + "button", + "object", + "embed", + "applet", + ]), + h = new Set([ + "div", + "table", + "ul", + "canvas", + "p", + "iframe", + "aside", + "section", + "footer", + "nav", + "ol", + "menu", + "svg", + ]), + u = new Set(["i", "em"]), + g = new Set(["b", "strong", "h1", "h2", "h3", "h4", "h5", "h6"]), + f = new Set(["i-amphtml-sizer"]), + p = /lightbox/i; + var E = [], + v = 0, + T = 0, + S = 0, + A = 0, + N = 0, + y = 0, + b = e, + x = b.ownerDocument.defaultView, + I = t, + D = this.articleTitle(), + C = this._articleTitleElement, + R = (this.articleSubhead(), this._articleSubheadElement), + L = + C && + cachedElementBoundingRect(C).top > + cachedElementBoundingRect(e).bottom, + M = isElementVisible(e), + _ = new Set([C, R]), + w = new Set(); + if (n === CleaningType.MainArticleContent) { + this.updateArticleBylineAndDateElementsIfNecessary(); + var F = this.articleBylineElement(); + F && w.add(F); + var O = this.articleDateElement(); + O && w.add(O); + } + var B = this.dominantContentSelectorAndDepth(e), + P = l(), + k = new Set(); + this.previouslyDiscoveredPageURLStrings.forEach(function (e) { + k.add(e); + }); + var q = this.nextPageURL(); + q && k.add(q); + var U = null; + this._articleTitleElement && + (U = cachedElementBoundingRect(this._articleTitleElement)); + var z = this.functionToPreventPruningElementDueToInvisibility(), + W = dominantFontFamilyAndSizeForElement(e), + H = dominantFontSizeInPointsFromFontFamilyAndSizeString(W); + const V = /pull(ed)?quote/i; + for (var j = [], Y = [], G = [], Q = [], X = []; b; ) { + try { + var J, + K = null, + $ = normalizedElementTagName(I), + Z = !1, + ee = elementLooksLikeDropCap(b); + if ( + ((I.originalElement = b), + !y && elementAppearsToBeCollapsed(b) && (y = 1), + (d.has($) || (this.isAMPPage() && f.has($))) && (K = I), + !K && b !== e && _.has(b) + ? (K = I) + : !K && b !== e && w.has(b) + ? ((I.parentElementBeforePruning = I.parentElement), + (K = I), + j.push(I)) + : elementIsAHeader(I) && + previousLeafElementForElement(b) === C && + I.classList.add("protected"), + "twitter-widget" === $ && I.classList.add("protected"), + !K && ("h1" === $ || "h2" === $)) + ) + if ( + b.offsetTop - e.offsetTop < + HeaderMinimumDistanceFromArticleTop + ) { + var te = trimmedInnerTextIgnoringTextTransform(b), + ne = te.length * HeaderLevenshteinDistanceToLengthRatio; + levenshteinDistance(D, te) <= ne && (K = I); + } + if ( + (K || + (this.isMediaWikiPage() && + /editsection|icon-edit|edit-page|mw-empty-elt/.test( + b.className, + ) && + (K = I)), + "video" === $) + ) + if (I.getAttribute("src")) { + I.classList.add("protected"); + var ie = cachedElementBoundingRect(b); + (I.setAttribute("width", ie.width), + I.setAttribute("height", ie.height), + I.removeAttribute("style")); + b.hasAttribute("autoplay") && + b.hasAttribute("muted") && + b.hasAttribute("loop") + ? I.setAttribute("data-reader-silent-looped-animation", "") + : (I.setAttribute("controls", !0), + I.removeAttribute("autoplay"), + I.removeAttribute("preload")); + } else K = I; + K || (J = getComputedStyle(b)); + let t = (function () { + if ("div" !== $ && "span" !== $) return !1; + if (LazyLoadRegex.test(b.className)) return !0; + for (let e of attributesForElement(b)) + if ( + /^data-/.test(e.name) && + LazyLoadRegex.test(e.value) && + cachedElementBoundingRect(b).height + ) + return !0; + return !1; + })(); + if ( + !K && + t && + (!b.innerText || + (b.previousElementSibling && + "noscript" === + normalizedElementTagName(b.previousElementSibling))) + ) + if ((Ce = lazyLoadingImageURLForElement(I, b.className))) { + var re = this.contentDocument.createElement("img"); + (re.setAttribute("src", Ce), + I.parentNode.replaceChild(re, I), + ((I = re).originalElement = b), + ($ = normalizedElementTagName(I)), + (K = I), + I.classList.add("protected")); + } + if (!K && "img" !== $ && /img/.test($)) { + lazyLoadingImageURLForElement(I, b.className) && + (((I = changeElementType(I, "img")).originalElement = b), + ($ = "img")); + } + if (!K && "div" === $ && I.parentNode) { + var ae = b.querySelectorAll( + "a, blockquote, dl, div, img, ol, p, pre, table, ul", + ), + le = T || "none" !== J.float, + oe = null; + if ( + (le || ae.length + ? elementIndicatesItIsASchemaDotOrgImageObject(b) && + !I.querySelector("figure, .auxiliary") + ? (oe = "figure") + : ee && (oe = "span") + : (oe = "p"), + oe) + ) { + for ( + var se = I.parentNode, + ce = this.contentDocument.createElement(oe); + I.firstChild; + ) { + var me = I.firstChild; + ce.appendChild(me); + } + (se.replaceChild(ce, I), + ((I = ce).originalElement = b), + ($ = normalizedElementTagName(I))); + } + } + if ( + (b.dataset && + b.dataset.mathml && + b.querySelector("math") && + G.push(I), + !K && + I.parentNode && + h.has($) && + ((I._originalElementDepthInCollapsedArea = y), E.push(I)), + K || + (isElementPositionedOffScreen(b) + ? (K = I) + : b === e || + T || + "none" === J.float || + P || + !( + cachedElementBoundingRect(b).height >= FloatMinimumHeight || + b.childElementCount > 1 + ) || + (T = 1)), + !K) + ) { + if ( + (sanitizeElementByRemovingAttributes(I), + n === CleaningType.MetadataContent) + ) + if ("|" === I.innerText) + ((I.innerText = ""), I.classList.add("delimiter")); + else if ("time" === normalizedElementTagName(I)) { + var de = I.previousElementSibling; + if ( + de && + "span" === normalizedElementTagName(de) && + !de.classList.contains("delimiter") + ) { + var he = this.contentDocument.createElement("span"); + (he.classList.add("delimiter"), I.before(he)); + } + } else "figure" === $ && (K = I); + if ( + ("both" === J.clear && I.classList.add("clear"), + "ul" === $ || "ol" === $ || "menu" === $) + ) { + if (U && !y && cachedElementBoundingRect(b).top < U.top) K = I; + else if ( + "none" === J["list-style-type"] && + "none" === J["background-image"] + ) { + for ( + var ue = b.children, ge = ue.length, fe = !0, pe = 0; + pe < ge; + ++pe + ) { + var Ee = ue[pe], + ve = getComputedStyle(Ee); + if ( + "none" !== ve["list-style-type"] || + 0 !== parseInt(ve["-webkit-padding-start"]) + ) { + fe = !1; + break; + } + var Te = getComputedStyle(Ee, ":before").content; + if (/\u2022|\u25e6|\u2023|\u2219|counter/.test(Te)) { + fe = !1; + break; + } + } + fe && I.classList.add("list-style-type-none"); + } + if (b.querySelector("code")) { + const e = /monospace|menlo|courier/i; + var Se = dominantFontFamilyAndSizeForElement(b); + e.test(Se) && + (I.classList.add("code-block"), I.classList.add("protected")); + } + } + if ( + (A || + "normal" === J.fontStyle || + (u.has($) || (I.style && (I.style.fontStyle = J.fontStyle)), + (A = 1)), + !N && "normal" !== J.fontWeight) + ) { + if (!g.has($)) { + var Ae = parseInt(J.fontWeight), + Ne = null; + (isNaN(Ae) + ? (Ne = J.fontWeight) + : Ae <= 400 || (Ae >= 500 && (Ne = "bold")), + Ne && I.style && (I.style.fontWeight = Ne)); + } + N = 1; + } + if ((T && "section" !== $ && s(b, e)) || "aside" === $) { + Se = dominantFontFamilyAndSizeForElement(b); + var ye = dominantFontSizeInPointsFromFontFamilyAndSizeString(Se), + be = Se && Se === W; + if ( + (1 !== T || + ee || + (cachedElementBoundingRect(b).width <= MaximumFloatWidth + ? I.setAttribute("class", "auxiliary float " + J.float) + : be || I.classList.add("auxiliary")), + I.closest(".auxiliary") && b.style) + ) { + var xe = b.style.getPropertyValue("width"); + if ("table" === J.display && /%/.test(xe) && parseInt(xe) < 2) + I.style.width = J.width; + else if (xe) I.style.width = xe; + else { + var Ie = x.getMatchedCSSRules(b, "", !0); + if (Ie) + for (pe = Ie.length - 1; pe >= 0; --pe) { + xe = Ie[pe].style.getPropertyValue("width"); + var De = parseInt(xe); + if (xe && (isNaN(De) || De > 0)) { + I.style.width = xe; + break; + } + } + } + 1 !== T || + xe || + (I.style.width = cachedElementBoundingRect(b).width + "px"); + } + ee || c(I, ye); + } + if ("table" === $) S || (S = 1); + else if ("img" === $) { + var Ce; + if ((Ce = lazyLoadingImageURLForElement(I, b.className))) { + I.setAttribute("src", Ce); + var Re = !!I.closest("figure"); + if (!Re) { + var Le = attributesForElement(b), + Me = Le.length; + for (pe = 0; pe < Me; ++pe) + if (p.test(Le[pe].nodeName)) { + Re = !0; + break; + } + } + (Re && I.classList.add("protected"), (Z = !0)); + } + ((!Ce && I.hasAttribute("src")) || + !b.hasAttribute("data-srcset") || + I.setAttribute("srcset", b.getAttribute("data-srcset")), + I.removeAttribute("border"), + I.removeAttribute("hspace"), + I.removeAttribute("vspace")); + var _e = I.getAttribute("align"); + if ( + (I.removeAttribute("align"), + ("left" !== _e && "right" !== _e) || + (I.classList.add("float"), I.classList.add(_e)), + !T && !Z) + ) { + var we, + Fe = (we = cachedElementBoundingRect(b)).width, + Oe = we.height; + hasClassMatchingRegexp(b, ProgressiveLoadingRegex) && + b.nextElementSibling && + "img" === normalizedElementTagName(b.nextElementSibling) + ? (K = I) + : imageIsContainedByContainerWithImageAsBackgroundImage(b) + ? I.classList.add("protected") + : (1 === Fe && 1 === Oe) || + (U && + Oe < MinimumHeightForImagesAboveTheArticleTitle && + we.bottom < U.top) + ? (K = I) + : Fe < ImageSizeTiny && + Oe < ImageSizeTiny && + I.setAttribute("class", "reader-image-tiny"); + } + if (n === CleaningType.MetadataContent) + ((we = cachedElementBoundingRect(b)).width > + MaximumWidthOrHeightOfImageInMetadataSection || + we.height > MaximumWidthOrHeightOfImageInMetadataSection) && + (K = I); + if (b.classList.contains("emoji")) { + let e = urlFromString(I.src); + if ( + e && + "s.w.org" === e.hostname && + e.pathname.startsWith("/images/core/emoji/") + ) { + let e = this.replaceImageWithAltText(I); + e && + (((I = e).originalElement = b), + ($ = normalizedElementTagName(I)), + (K = I), + I.classList.add("protected")); + } + } + } else if ("font" === $) + (I.removeAttribute("size"), + I.removeAttribute("face"), + I.removeAttribute("color")); + else if ("a" === $ && I.parentNode) { + let e, t; + I instanceof HTMLAnchorElement + ? ((e = I.getAttribute("href")), (t = HTMLAnchorElement)) + : I instanceof SVGAElement && + ((e = I.getAttribute("xlink:href")), (t = SVGAElement)); + let i = I.originalElement.ownerDocument.location, + r = urlStringShouldHaveItsAnchorMadeNonFunctional(e, i); + if ( + t === HTMLAnchorElement && + "author" === b.getAttribute("itemprop") + ) + I.classList.add("protected"); + else if (e && e.length && ("#" === e[0] || r)) { + const e = new Set(["li", "sup"]); + if ( + !S && + !I.childElementCount && + 1 === I.parentElement.childElementCount && + !e.has(normalizedElementTagName(I.parentElement)) + ) + this.contentDocument.evaluate( + "text()", + I.parentElement, + null, + XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, + null, + ).snapshotLength || (K = I); + if (!K) { + ce = this.contentDocument.createElement("span"); + if ( + 1 === I.childElementCount && + "img" === normalizedElementTagName(I.firstElementChild) + ) { + var Be = I.firstElementChild; + Be.width > AnchorImageMinimumWidth && + Be.height > AnchorImageMinimumHeight && + ce.setAttribute("class", "converted-image-anchor"); + } + for ( + ce.className || + ce.setAttribute("class", "converted-anchor"); + I.firstChild; + ) + ce.appendChild(I.firstChild); + (I.parentNode.replaceChild(ce, I), + ((I = ce).originalElement = b)); + } + } else if (AdvertisementHostRegex.test(I.host) && !I.innerText) + K = I; + else if ( + n !== CleaningType.MetadataContent && + C && + !L && + C.compareDocumentPosition(b) & + document.DOCUMENT_POSITION_PRECEDING && + cachedElementBoundingRect(b).top < + cachedElementBoundingRect(C).top + ) + Y.push(I); + else { + var Pe = b.children; + 1 === Pe.length && + "img" === normalizedElementTagName(Pe[0]) && + !b.innerText && + anchorLooksLikeDownloadFlashLink(b) && + (K = I); + } + r && (I.removeAttribute("xlink:href"), I.removeAttribute("href")); + } else if ( + "aside" === $ || + "blockquote" === $ || + "q" === $ || + ("div" === $ && V.test(b.className)) + ) { + ((Se = dominantFontFamilyAndSizeForElement(b)), + (ye = dominantFontSizeInPointsFromFontFamilyAndSizeString(Se))); + ee || c(I, ye); + } else if ("cite" === $) { + var ke = pseudoElementContent(b, ":after") ?? "", + qe = document.createElement("span"); + ((qe.innerText = ke), I.after(qe)); + } else + "pre" === $ + ? (I.style.whiteSpace = J.whiteSpace) + : "source" === $ && b.hasAttribute("data-srcset") + ? (I.setAttribute("srcset", b.getAttribute("data-srcset")), + I.classList.add("protected")) + : I instanceof SVGAnimateElement && + "xlink:href" === I.attributes.attributeName.value && + (K = I); + } + if (J && M && !Z) { + var Ue = + "none" === J.display || + "visible" !== J.visibility || + computedStyleIndicatesElementIsInvisibleDueToClipping(J); + if ( + (Ue || + "img" === $ || + (Ue = + "0" === J.opacity && + "absolute" === J.position && + !I.closest("figure")), + Ue && !y) + ) + (!!B && v === B.depth && selectorForElement(b) === B.selector) || + z(b, e) || + (K = I); + } + if ( + (!K && elementIsCommentBlock(b) && (K = I), + !K && + U && + cachedElementBoundingRect(b).top < U.top && + VeryLiberalCommentRegex.test(b.className) && + I.parentElement && + (K = I), + !K && "a" === $ && k.has(b.href)) + ) { + for ( + var ze, We, He = b, Ve = I; + (He = He.parentElement) && (Ve = Ve.parentElement); + ) { + const t = 10; + if ( + cachedElementBoundingRect(He).top - + cachedElementBoundingRect(b).top > + t + ) + break; + if (He === e) break; + o(He) && ((ze = He), (We = Ve)); + } + (ze && + ((K = We), + (b = ze), + ((I = We).originalElement = b), + ($ = normalizedElementTagName(I))), + (He = null), + (Ve = null), + (ze = null), + (We = null)); + } + } catch (e) { + K = I; + } + if ( + (!K || K.parentElement || i || (K = null), + "div" === $ ? Q.push(I) : "aside" === $ && X.push(I), + !K) + ) { + let e = this._weakMapOfOriginalElementToUniqueID.get( + I.originalElement, + ); + (e || (e = this._nextUniqueID()), + this._mapOfUniqueIDToOriginalElement.set(e, I.originalElement), + I.setAttribute(READER_UNIQUE_ID_ATTRIBUTE_KEY, e), + this._weakMapOfOriginalElementToUniqueID.set(I.originalElement, e)); + } + var je = K ? null : b.firstElementChild; + if (je) ((b = je), (I = I.firstElementChild), r(1)); + else { + for (var Ye; b !== e && !(Ye = b.nextElementSibling); ) + ((b = b.parentElement), (I = I.parentElement), r(-1)); + if (b === e) { + if (K && !elementIsProtected(K)) + if (K.parentElement) K.remove(); + else if (i) return null; + break; + } + ((b = Ye), (I = I.nextElementSibling), a()); + } + if (K && !elementIsProtected(K)) + if (K.parentElement) K.remove(); + else if (i) return null; + } + for (let e of t.querySelectorAll("iframe")) { + if (elementLooksLikeEmbeddedTweet(e.originalElement)) + (Ge = this.adoptableSimpleTweetFromTwitterElement(e)) && + e.parentElement.replaceChild(Ge, e); + (e.classList.add("protected"), + e.setAttribute("sandbox", "allow-scripts allow-same-origin")); + } + for (let e of t.querySelectorAll("twitter-widget")) { + var Ge; + if (elementLooksLikeEmbeddedTweet(e.originalElement)) + (Ge = this.adoptableSimpleTweetFromTwitterElement(e)) && + e.parentElement.replaceChild(Ge, e); + e.classList.add("protected"); + } + const Qe = t.querySelectorAll("blockquote"), + Xe = Qe.length; + for (pe = 0; pe < Xe; ++pe) { + const e = Qe[pe], + t = e.originalElement; + t && this.convertBlockquoteTweetToSimpleTweetIfAppropriate(e, t); + } + for (pe = E.length - 1; pe >= 0; --pe) { + ((vt = E[pe]).parentNode && + this.shouldPruneElement(vt, vt.originalElement, W) && + vt.remove(), + delete vt._originalElementDepthInCollapsedArea); + } + var Je = Y.length; + for (pe = 0; pe < Je; ++pe) Y[pe].remove(); + var Ke = t.querySelectorAll(".float"); + for (pe = 0; pe < Ke.length; ++pe) { + var $e = !1, + Ze = Ke[pe]; + if (!$e) { + var et = Ze.querySelectorAll("a, span.converted-image-anchor"), + tt = Ze.querySelectorAll("span.converted-anchor"); + $e = Ze.parentNode && tt.length > et.length; + } + if (!$e) { + var nt = Ze.querySelectorAll("embed, object").length, + it = Ze.originalElement.querySelectorAll("embed, object").length; + !nt && it && ($e = !0); + } + if (!$e) { + for ( + var rt = Ze.originalElement.getElementsByTagName("img"), + at = rt.length, + lt = 0, + ot = 0; + ot < at && (M && isElementVisible(rt[ot]) && lt++, !(lt > 1)); + ++ot + ); + if (1 === lt) Ze.getElementsByTagName("img").length || ($e = !0); + } + if (!$e) { + const e = "img, video, embed, iframe, object, svg"; + /\S/.test(Ze.innerText) || + Ze.matches(e) || + Ze.querySelector(e) || + ($e = !0); + } + $e && !elementIsProtected(Ze) && Ze.remove(); + } + var st = t.querySelectorAll("br"); + for (pe = st.length - 1; pe >= 0; --pe) { + var ct = st[pe]; + ct.originalElement && + "block" === + getComputedStyle(ct.originalElement.parentElement).display && + (m(ct, "nextSibling") || m(ct, "previousSibling")) && + ct.remove(); + } + if ( + i && + !removeWhitespace(t.innerText).length && + (n !== CleaningType.LeadingMedia || + !t.querySelector("video, iframe, img")) + ) + return null; + var mt = {}, + dt = (et = t.querySelectorAll("a")).length; + for (pe = 0; pe < dt; ++pe) { + (mt[(ht = (ft = et[pe]).style.fontWeight)] || (mt[ht] = []), + mt[ht].push(ft)); + } + for (var ht in mt) { + var ut = mt[ht], + gt = ut.length; + if (gt > 0.7 * dt) + for (pe = 0; pe < gt; ++pe) { + var ft; + (((ft = ut[pe]).style.fontWeight = null), + ft.getAttribute("style") || ft.removeAttribute("style")); + } + } + var pt = t.querySelectorAll(".protected"), + Et = pt.length; + for (pe = 0; pe < Et; ++pe) { + var vt; + ((vt = pt[pe]).classList.remove("protected"), + vt.classList.length || vt.removeAttribute("class")); + } + var Tt = t.querySelectorAll("p.auxiliary"), + St = Tt.length; + for (pe = 0; pe < St; ++pe) { + for ( + var At = Tt[pe], Nt = [At], yt = At.nextElementSibling; + yt && + "p" === normalizedElementTagName(yt) && + yt.classList.contains("auxiliary"); + ) + (Nt.push(yt), (yt = yt.nextElementSibling)); + var bt = Nt.length; + if (bt > 1) { + for (ot = 0; ot < bt; ++ot) { + var xt = Nt[ot]; + (xt.classList.remove("auxiliary"), + xt.style && (xt.style.width = null), + cleanStyleAndClassList(xt)); + } + pe += bt - 1; + } + } + for (pe = Q.length - 1; pe >= 0; --pe) { + var It = Q[pe]; + It !== t && + elementWouldAppearBetterAsFigureOrAuxiliary(It.originalElement, It) && + changeElementType(It, "figure"); + } + for (pe = X.length - 1; pe >= 0; --pe) { + var Dt = X[pe]; + Dt !== t && + elementWouldAppearBetterAsFigureOrAuxiliary(Dt.originalElement, Dt) && + Dt.classList.add("auxiliary"); + } + var Ct = j.length; + for (pe = 0; pe < Ct; ++pe) { + var Rt = j[pe], + Lt = Rt.parentElementBeforePruning, + Mt = null, + _t = null; + if (Lt) + ((Mt = depthOfElementWithinElement(Lt, t)), + (_t = selectorForElement(Lt))); + var wt = Lt ? Lt.closest("ul") : null; + if (wt) wt.remove(); + else { + const e = 40; + Lt && + cachedElementBoundingRect(Lt.originalElement).height < e && + (!B || B.selector !== _t || B.depth !== Mt) + ? Lt.remove() + : Rt.remove(); + } + } + var Ft = G.length; + for (pe = 0; pe < Ft; ++pe) { + var Ot = G[pe], + Bt = this.contentDocument.createElement("div"); + ((Bt.innerHTML = Ot.dataset ? Ot.dataset.mathml : ""), + Ot.parentNode.replaceChild(Bt, Ot)); + } + return t; + }, + convertBlockquoteTweetToSimpleTweetIfAppropriate: function (e, t) { + const n = t.classList; + if (!n.contains("twitter-tweet") && !n.contains("twitter-video")) return; + const i = t.getElementsByTagName("a"), + r = i.length; + if (r < 1) return; + const a = i[r - 1]; + if ("twitter.com" !== a.host) return; + const l = lastPathComponentFromAnchor(a); + if (isNaN(parseInt(l))) return; + const o = this.contentDocument.createElement("div"); + (o.setAttribute("data-reader-tweet-id", l), + o.classList.add("tweet-wrapper"), + e.parentElement.replaceChild(o, e), + e.classList.add("simple-tweet"), + o.appendChild(e)); + }, + adoptableSimpleTweetFromTwitterElement: function (e) { + var t = function (e) { + var t = this.contentDocument.createElement("div"), + n = this.contentDocument.createTextNode(e); + return (t.appendChild(n), t.innerHTML); + }.bind(this); + let n = null, + i = e.originalElement; + if ( + ("iframe" === normalizedElementTagName(e) + ? (n = i.contentDocument ? i.contentDocument.documentElement : null) + : "twitter-widget" === normalizedElementTagName(e) && + (n = i.shadowRoot), + !n) + ) + return null; + var r = + n.querySelector("[data-tweet-id].expanded") || + n.querySelector("[data-tweet-id]"); + if (!r) return null; + var a = this.contentDocument.createElement("div"); + a.classList.add("tweet-wrapper"); + var l = this.contentDocument.createElement("blockquote"); + (l.classList.add("simple-tweet"), a.appendChild(l)); + var o = r.getAttribute("data-tweet-id"); + a.setAttribute("data-reader-tweet-id", o); + var s = r.querySelector(".dateline"), + c = r.querySelector('[data-scribe="element:screen_name"]'), + m = r.querySelector('[data-scribe="element:name"]'), + d = r.querySelector(".e-entry-title"); + if (!(s && c && m && d)) return a; + var h = "— " + t(m.innerText) + " (" + t(c.innerText) + ")", + u = this.contentDocument.createElement("p"); + ((u.innerHTML = d.innerHTML), + l.appendChild(u), + l.insertAdjacentHTML("beforeend", h)); + var g = this.contentDocument.createElement("span"); + ((g.innerHTML = s.innerHTML), l.appendChild(g)); + for (let e of l.querySelectorAll("img.twitter-emoji")) + this.replaceImageWithAltText(e); + for ( + var f = l.getElementsByTagName("*"), p = f.length, E = 0; + E < p; + ++E + ) { + e = f[E]; + "script" === normalizedElementTagName(e) + ? e.remove() + : sanitizeElementByRemovingAttributes(e); + } + return a; + }, + replaceImageWithAltText: function (e) { + var t = e.getAttribute("alt"); + if (!t || t.length < 1) return null; + let n = this.contentDocument.createElement("span"); + return ((n.innerText = t), e.parentNode.replaceChild(n, e), n); + }, + leadingVideoNode: function () { + var e = this.leadingContentNodeWithSelector("video, iframe"); + return e && + e.parentElement && + !e.previousElementSibling && + !e.nextElementSibling + ? e.parentElement + : null; + }, + leadingImageNode: function () { + return this.leadingContentNodeWithSelector("figure img, img"); + }, + ancestorsOfElement: function (e) { + let t = [], + n = e.parentNode; + for (; n; ) (t.push(n), (n = n.parentNode)); + return t; + }, + leadingContentNodeWithSelector: function (e) { + const t = 250, + n = 0.5, + i = 0.9, + r = 3; + if (!this.article || !this.article.element) return null; + let a = 0; + if (this._articleTitleElement) { + let e, + t = this.ancestorsOfElement(this.article.element); + for (let n of t) + if (n.contains(this._articleTitleElement)) { + e = n; + break; + } + a = t.length - this.ancestorsOfElement(e).length + 2; + } + let l = Math.max(r, a); + for (var o = this.article.element, s = 0; s < l && o.parentNode; ++s) { + var c = (o = o.parentNode).querySelectorAll(e); + for (var m of c) + if (m && isElementVisible(m)) { + var d = cachedElementBoundingRect(m); + if (!(d.width >= window.innerWidth * i) && d.height < t) continue; + if (d.width < this._articleWidth * n) continue; + var h = this.article.element.compareDocumentPosition(m); + if ( + !(h & Node.DOCUMENT_POSITION_PRECEDING) || + h & Node.DOCUMENT_POSITION_CONTAINED_BY + ) + continue; + var u = this.extraArticle ? this.extraArticle.element : null; + if ( + u && + this.article.element.compareDocumentPosition(u) & + Node.DOCUMENT_POSITION_FOLLOWING && + (h = u.compareDocumentPosition(m)) && + (!(h & Node.DOCUMENT_POSITION_PRECEDING) || + h & Node.DOCUMENT_POSITION_CONTAINED_BY) + ) + continue; + return m; + } + } + return null; + }, + pageImageURLFromMetadata: function (e) { + var t = e["property:og:image"]; + if ( + (t || (t = e["property:twitter:image"]), + t || (t = e["property:twitter:image:src"]), + t) + ) { + let e = urlFromString(t); + if (e) { + let n = e.href; + n && urlIsHTTPFamilyProtocol(e) && (t = n); + } + } + return t; + }, + mainImageNode: function () { + var e = this.leadingImageNode(); + if (e) return e; + if (this.article && this.article.element) + for ( + var t = this.article.element.querySelectorAll("img"), + n = t.length, + i = 0; + i < n; + ++i + ) { + var r = t[i], + a = r._cachedElementBoundingRect; + if ( + (a || (a = r.getBoundingClientRect()), + a.width >= MainImageMinimumWidthAndHeight && + a.height >= MainImageMinimumWidthAndHeight) + ) + return r; + } + return null; + }, + schemaDotOrgMetadataObjectForArticle: function () { + if (this._schemaDotOrgMetadataObjectForArticle) + return this._schemaDotOrgMetadataObjectForArticle; + const e = new Set([ + "Article", + "NewsArticle", + "Report", + "ScholarlyArticle", + "SocialMediaPosting", + "BlogPosting", + "LiveBlogPosting", + "DiscussionForumPosting", + "TechArticle", + "APIReference", + ]); + var t = this.contentDocument.querySelectorAll( + "script[type='application/ld+json']", + ), + n = t.length; + try { + for (var i = 0; i < n; ++i) { + var r = t[i], + a = JSON.parse(r.textContent), + l = a["@context"]; + if ("https://schema.org" === l || "http://schema.org" === l) { + var o = a["@type"]; + if (e.has(o)) + return ((this._schemaDotOrgMetadataObjectForArticle = a), a); + } + } + return null; + } catch (e) { + return null; + } + }, + articleTitle: function () { + var e = this.articleTitleInformation(); + return e ? e.titleText : ""; + }, + articleTitleInformation: function () { + function e(e, t) { + var n = e ? t.indexOf(e) : -1; + return -1 !== n && (0 === n || n + e.length === t.length); + } + function t(e, t) { + return ( + e.host === t.host && e.pathname === t.pathname && e.hash === t.hash + ); + } + function n(e) { + let t = + nearestAncestorElementWithTagName(e, "a") || e.querySelector("a"); + return t + ? urlStringShouldHaveItsAnchorMadeNonFunctional( + t.href, + t.ownerDocument.location, + ) + ? null + : t + : null; + } + if (!this.articleNode()) return; + if (this._articleTitleInformation) return this._articleTitleInformation; + const i = + /((article|post).*title|headline|instapaper_title|inside-head)/i, + r = 600, + a = 20, + l = 8, + o = 1.1, + s = 1.25, + c = /header|title|headline|instapaper_title/i, + m = 1.5, + d = 1.8, + h = 1.5, + u = 0.6, + g = 3, + f = 1.5, + p = 0.8, + E = 0.8, + v = 9, + T = 1.5, + S = /byline|author/i; + var A = function (e, t) { + var n = this.contentFromUniqueMetadataSelector(e, t); + if (n) { + var i = this.articleTitleAndSiteNameFromTitleString(n); + i && (n = i.articleTitle); + } + return n; + }.bind(this), + N = function () { + for (var e = this.articleNode(); e; e = e.parentElement) + if (elementIndicatesItIsASchemaDotOrgArticleContainer(e)) return e; + return null; + }.bind(this)(), + y = N + ? this.contentFromUniqueMetadataSelector(N, "meta[itemprop=headline]") + : "", + b = N + ? this.contentFromUniqueMetadataSelector( + N, + "meta[itemprop=alternativeHeadline]", + ) + : "", + x = this.contentDocument, + I = x.location, + D = x.title, + C = A(x, "meta[property='og:title']"), + R = this.contentFromUniqueMetadataSelector( + x, + "meta[property='og:site_name']", + ), + L = A(x, "meta[name='twitter:title']"), + M = A(x, "meta[name='sailthru.headline']"), + _ = this.schemaDotOrgMetadataObjectForArticle(), + w = _ ? _.headline : null, + F = this.articleNode(), + O = cachedElementBoundingRect(F); + this.extraArticleNode() && + this.extraArticle.isPrepended && + (O = cachedElementBoundingRect(this.extraArticleNode())); + var B = O.left + O.width / 2, + P = O.top, + k = P; + ((this._articleWidth = O.width), + (this._leadingMediaElement = this.leadingImageNode()), + this._leadingMediaElement || + (this._leadingMediaElement = this.leadingVideoNode()), + this._leadingMediaElement) && + (k = + (cachedElementBoundingRect(this._leadingMediaElement).top + P) / 2); + var q = "h1, h2, h3, h4, h5, a:not(svg a), p, div, span", + U = normalizedElementTagName(this.article.element); + ("dl" !== U && "dd" !== U) || (q += ", dt"); + for ( + var z = [], W = x.querySelectorAll(q), H = W.length, V = 0; + V < H; + ++V + ) { + var j = W[V], + Y = normalizedElementTagName(j); + if ("a" === Y) + j.innerText === C && + t(j, I) && + (j.previousElementSibling || j.nextElementSibling + ? z.push(j) + : z.push(j.parentElement)); + else if ("div" === Y || "span" === Y || "p" === Y) { + if (hasClassMatchingRegexp(j, i) || i.test(j.getAttribute("id"))) { + var G = j.parentElement; + elementIsAHeader(G) || z.push(j); + } + } else z.push(j); + } + z = Array.prototype.slice.call(z, 0); + const Q = 2; + var X = this.article.element; + for (V = 0; V < Q; ++V) X.parentElement && (X = X.parentElement); + for ( + var J, K = X.querySelectorAll("a:not(svg a)"), $ = ((V = 0), K.length); + V < $; + ++V + ) { + var Z = K[V]; + if (Z.offsetTop > F.offsetTop + a) break; + if (t(Z, I) && "#" !== Z.getAttribute("href")) { + z.push(Z); + break; + } + } + var ee = z.map(trimmedInnerTextIgnoringTextTransform), + te = z.length, + ne = 0, + ie = [], + re = [], + ae = [], + le = [], + oe = [], + se = [], + ce = []; + const me = {}, + de = (e) => { + const t = me[e]; + if (t) return t; + const n = stringSimilarity(D, e); + return ((me[e] = n), n); + }; + for (V = 0; V < te; ++V) { + var he = z[V], + ue = ee[V]; + const e = {}, + t = (t) => { + const n = e[t]; + if (n) return n; + const i = stringSimilarity(ue, t); + return ((e[t] = i), i); + }; + let n = de(ue); + if (C) { + const e = t(C); + ((n += e), + e > StringSimilarityToDeclareStringsNearlyIdentical && re.push(he)); + } + if (L) { + const e = t(L); + ((n += e), + e > StringSimilarityToDeclareStringsNearlyIdentical && ae.push(he)); + } + if (y) { + const e = t(y); + ((n += e), + e > StringSimilarityToDeclareStringsNearlyIdentical && le.push(he)); + } + if (b) { + const e = t(b); + ((n += e), + e > StringSimilarityToDeclareStringsNearlyIdentical && oe.push(he)); + } + if (M) { + const e = t(M); + ((n += e), + e > StringSimilarityToDeclareStringsNearlyIdentical && se.push(he)); + } + if (w) { + const e = t(w); + ((n += e), + e > StringSimilarityToDeclareStringsNearlyIdentical && ce.push(he)); + } + n === ne ? ie.push(he) : n > ne && ((ne = n), (ie = [he])); + } + let ge = []; + for (let e of z) { + let t = e.nextElementSibling; + t && SubheadRegex.test(t.className) && ge.push(e); + } + if ( + (1 === re.length + ? ((J = re[0]).headerText = trimmedInnerTextIgnoringTextTransform(J)) + : 1 === ae.length + ? ((J = ae[0]).headerText = + trimmedInnerTextIgnoringTextTransform(J)) + : 1 === le.length + ? ((J = le[0]).headerText = + trimmedInnerTextIgnoringTextTransform(J)) + : 1 === se.length + ? ((J = se[0]).headerText = + trimmedInnerTextIgnoringTextTransform(J)) + : 1 === ce.length && + ((J = ce[0]).headerText = + trimmedInnerTextIgnoringTextTransform(J)), + !J) + ) + for (V = 0; V < te; ++V) { + he = z[V]; + if (!isElementVisible(he)) continue; + var fe = cachedElementBoundingRect(he), + pe = fe.left + fe.width / 2, + Ee = pe - B, + ve = fe.top + fe.height / 2 - k, + Te = -1 !== re.indexOf(he), + Se = -1 !== ae.indexOf(he), + Ae = he.classList.contains("instapaper_title"), + Ne = /\bheadline\b/.test(he.getAttribute("itemprop")), + ye = -1 !== le.indexOf(he), + be = -1 !== oe.indexOf(he), + xe = -1 !== se.indexOf(he), + Ie = -1 !== ce.indexOf(he); + let t = ge.includes(he) && ve < 0; + var De = Te || Se || Ae || Ne || ye || be || xe || Ie || t, + Ce = Math.sqrt(Ee * Ee + ve * ve), + Re = De ? r : Math.max(r - Ce, 0), + Le = ((ue = ee[V]), he.getAttribute("property")); + if (Le) { + var Me = /dc.title/i.exec(Le); + if (Me && Me[0]) + if ( + 1 === + this.contentDocument.querySelectorAll( + '*[property~="' + Me[0] + '"]', + ).length + ) { + (J = he).headerText = ue; + break; + } + } + if (!S.test(he.className)) { + if (!De) { + if (Ce > r) continue; + if (pe < O.left || pe > O.right) continue; + } + if (D && stringsAreNearlyIdentical(ue, D)) Re *= g; + else if (e(ue, D)) Re *= f; + else if (ue.length < l) continue; + if (ue !== R || !C) { + var _e = !1; + if ((ze = n(he))) { + if ("author" === ze.getAttribute("rel")) continue; + var we = ze.host === I.host, + Fe = ze.pathname === I.pathname; + if (we && Fe) Re *= h; + else { + if (we && nearestAncestorElementWithTagName(he, "li")) + continue; + ((Re *= u), (_e = !0)); + } + } + var Oe = fontSizeFromComputedStyle(getComputedStyle(he)); + (_e || (Re *= Oe / BaseFontSize), + (Re *= + 1 + TitleCandidateDepthScoreMultiplier * elementDepth(he))); + var Be = parseInt(this.contentTextStyle().fontSize); + (parseInt(Oe) > Be * o && (Re *= s), + (c.test(he.className) || c.test(he.getAttribute("id"))) && + (Re *= m)); + var Pe = he.parentElement; + (Pe && + (c.test(Pe.className) || c.test(Pe.getAttribute("id"))) && + (Re *= m), + -1 !== ie.indexOf(he) && (Re *= d)); + F = this.article.element; + for (var ke = he; ke && ke !== F; ke = ke.parentElement) + if (SidebarRegex.test(ke.className)) { + Re *= p; + break; + } + (he.closest("li") && (Re *= E), + (!J || Re > J.headerScore) && + (((J = he).headerScore = Re), (J.headerText = ue))); + } + } + } + var qe; + if ( + (J && + domDistance(J, F, v + 1) > v && + parseInt(getComputedStyle(J).fontSize) < T * Be && + (J = null), + J) + ) { + this._articleTitleElement = J; + var Ue = J.headerText.trim(); + qe = C && e(C, Ue) ? C : D && e(D, Ue) ? D : Ue; + } + (this._leadingMediaElement || + (this._leadingMediaElement = this.leadingImageNode()), + this._leadingMediaElement || + (this._leadingMediaElement = this.leadingVideoNode()), + qe || (qe = C && e(C, D) ? C : D)); + var ze, + We = null, + He = !1, + Ve = !1; + J && + (ze = n(J)) && + ((We = ze.href), + (He = "_blank" === ze.getAttribute("target")), + (Ve = ze.host !== I.host || ze.pathname !== I.pathname)); + let je = { + titleText: qe, + linkURL: We, + linkIsTargetBlank: He, + linkIsForExternalPage: Ve, + }; + return ( + this._articleTitleElement && + (this._mapOfUniqueIDToOriginalElement.set(READER_UNIQUE_ID_TITLE, J), + this._weakMapOfOriginalElementToUniqueID.set( + J, + READER_UNIQUE_ID_TITLE, + )), + (this._articleTitleInformation = je), + je + ); + }, + contentFromUniqueMetadataSelector: function (e, t) { + var n = e.querySelectorAll(t); + if (1 !== n.length) return null; + var i = n[0]; + return i + ? this.elementAttributesContainImproperQuote(i) + ? null + : i.content + : null; + }, + elementAttributesContainImproperQuote: function (e) { + for (var t = attributesForElement(e), n = t.length, i = 0; i < n; ++i) + if (/['"]/.test(t[i].name)) return !0; + return !1; + }, + articleSubhead: function () { + function e(e) { + return elementIsAHeader(e) + ? parseInt(/h(\d)?/.exec(normalizedElementTagName(e))[1]) + : NaN; + } + function t(e) { + if (!e) return null; + var t = e.content; + return t ? t.trim() : null; + } + const n = /author|kicker/i; + if (this._articleSubhead) return this._articleSubhead; + var i = this.articleNode(); + if (!i) return; + var r = this._articleTitleElement; + if (!r) return; + var a = this.contentDocument, + l = a.location, + o = e(r), + s = cachedElementBoundingRect(r), + c = new Set(), + m = t(a.querySelector("meta[property='og:description']")); + m && c.add(m); + var d = t(a.querySelector("meta[name=description]")); + d && c.add(d); + var h, + u = this.schemaDotOrgMetadataObjectForArticle(); + if (u) { + var g = u.description; + g && "string" == typeof g && c.add(g.trim()); + } + var f = this.contentFromUniqueMetadataSelector( + a, + "head meta.swiftype[name=dek]", + ); + f && (h = f); + let p = [], + E = nextNonFloatingVisibleElementSibling(r); + E && p.push(E); + let v = nextLeafElementForElement(r); + if ( + (v && + r && + r.contains(v) && + v.innerText && + v.innerText.trim() === r.innerText.trim() && + (v = nextLeafElementForElement(v)), + v && p.push(v), + c.size) + ) + for ( + var T = a.querySelectorAll( + HeaderElementsSelector + ", *[itemprop=description]", + ), + S = T.length, + A = 0; + A < S; + ++A + ) { + var N = T[A]; + c.has(N.innerText.trim()) && p.push(N); + } + var y = p.length; + for (A = 0; A < y; ++A) { + var b = p[A]; + if (b && b !== i) { + var x = b.className; + if (!n.test(x)) { + var I = b.closest("a"); + if (I) { + var D = I.host === l.host, + C = I.pathname === l.pathname; + if (!D || !C) continue; + } + var R = !1; + if (elementIsAHeader(b)) + if (isNaN(o)) R = !0; + else e(b) - 1 === o && (R = !0); + if ((!R && SubheadRegex.test(x) && (R = !0), !R)) { + const e = b.getAttribute("itemprop"); + /\bdescription\b/.test(e) && + !/\barticleBody\b/.test(e) && + (R = !0); + } + if ( + (!R && c.has(b.innerText) && (R = !0), + !R && h && h === b.innerText && (R = !0), + R || "summary" !== b.getAttribute("itemprop") || (R = !0), + R) + ) { + var L; + if ("meta" === normalizedElementTagName(b)) { + var M = b.getAttribute("content"); + L = M ? M.trim() : ""; + var _ = b.nextElementSibling; + if (!_ || trimmedInnerTextIgnoringTextTransform(_) !== L) + continue; + b = _; + } else { + if (cachedElementBoundingRect(b).top < (s.bottom + s.top) / 2) + continue; + L = trimmedInnerTextIgnoringTextTransform(b).trim(); + } + if (L.length) { + ((this._articleSubheadElement = b), + this._mapOfUniqueIDToOriginalElement.set( + READER_UNIQUE_ID_SUBHEAD, + b, + ), + this._weakMapOfOriginalElementToUniqueID.set( + b, + READER_UNIQUE_ID_SUBHEAD, + ), + (this._articleSubhead = L)); + break; + } + } + } + } + } + return this._articleSubhead; + }, + adoptableMetadataBlock: function () { + function e(e) { + function t(e, i) { + if (e.nodeType !== Node.TEXT_NODE) { + if (e.nodeType === Node.ELEMENT_NODE) { + var r = e.childNodes, + a = r.length; + 0 !== a && + (1 !== a + ? (i !== n.Right && t(r[0], n.Left), + i !== n.Left && t(r[a - 1], n.Right)) + : t(r[0], i)); + } + } else + i === n.Left + ? (e.textContent = e.textContent.trimLeft()) + : i === n.Right + ? (e.textContent = e.textContent.trimRight()) + : (e.textContent = e.textContent.trim()); + } + const n = { Left: 1, Right: 2, Both: 3 }; + t(e); + } + this.updateArticleBylineAndDateElementsIfNecessary(); + var t = this.articleBylineElement(), + n = this.articleDateElement(); + if (!t && !n) return null; + if (t && n) { + var i = t.compareDocumentPosition(n); + (i & Node.DOCUMENT_POSITION_CONTAINS && (t = null), + i & Node.DOCUMENT_POSITION_CONTAINED_BY && (n = null), + t === n && (n = null)); + } + var r, + a = this.contentDocument.createElement("div"), + l = !1, + o = !1; + t && + (e( + (r = this.cleanArticleNode( + t, + t.cloneNode(!0), + CleaningType.MetadataContent, + !1, + )), + ), + r.innerText.trim() && ((l = !0), r.classList.add("byline"))); + if (n) { + var s = this.cleanArticleNode( + n, + n.cloneNode(!0), + CleaningType.MetadataContent, + !1, + ); + (e(s), s.innerText.trim() && ((o = !0), s.classList.add("date"))); + } + if ((l && a.appendChild(r), l && o)) { + var c = document.createElement("span"); + (c.classList.add("delimiter"), a.appendChild(c)); + } + return (o && a.appendChild(s), a); + }, + articleBylineElement: function () { + return this._articleBylineElement; + }, + findArticleBylineElement: function () { + var e = this.findArticleBylineElementWithoutRejection(); + return e && + ("footer" === normalizedElementTagName(e) || e.closest("figure")) + ? null + : e; + }, + findArticleBylineElementWithoutRejection: function () { + function e(e) { + if (!e.length) return null; + e = e.filter(isElementVisible); + for ( + var t = new Set(), n = new Set(), r = e.length, o = 0; + o < r - 1; + ++o + ) { + var s = e[o], + c = e[o + 1]; + if (isElementVisible(s) && isElementVisible(c)) { + var m = s.parentElement; + m === c.parentElement && + (m.contains(i) || (n.add(s.parentElement), t.add(s), t.add(c))); + } + } + var d = new Set(e); + (n.forEach(function (e) { + d.add(e); + }), + t.forEach(function (e) { + d.delete(e); + }), + (e = []), + d.forEach(function (t) { + e.push(t); + })); + var h, + u = null; + r = e.length; + for (o = 0; o < r; ++o) { + s = e[o]; + if (isElementVisible(s)) { + var g = cachedElementBoundingRect(s), + f = g.left + g.width / 2, + p = g.top + g.height / 2, + E = a - f, + v = l - p, + T = Math.sqrt(E * E + v * v); + (!u || T < h) && ((u = s), (h = T)); + } + } + return u; + } + const t = "[itemprop~=author], a[rel='author']:not(svg a)", + n = + "#byline, .byline, .article-byline, .byline__author, .entry-meta, .author-name, .byline-dateline, .article-author, [itemprop~=author], a[rel='author']:not(svg a)"; + var i = this._articleSubheadElement || this._articleTitleElement; + if (i) + var r, + a = (r = i ? cachedElementBoundingRect(i) : null).left + r.width / 2, + l = r.top + r.height / 2; + var o = this.contentFromUniqueMetadataSelector( + this.contentDocument, + "head meta[name=author]", + ); + if ( + (o || + (o = this.contentFromUniqueMetadataSelector( + this.contentDocument, + "head meta[property=author]", + )), + !o) + ) { + var s = this.schemaDotOrgMetadataObjectForArticle(); + if (s) { + var c = s.author; + c && "object" == typeof c && (o = c.name); + } + } + var m = this.article.element, + d = m.querySelectorAll(n); + if (1 === d.length) return d[0]; + var h = i ? i.nextElementSibling : null; + if (h) { + if ((h.matches(n) || h.innerText === o || (h = h.querySelector(n)), h)) + if (h.querySelector("li")) { + var u = h.querySelector(n); + u && (h = u); + } + if (h) return h; + } + for ( + var g = this.contentDocument.getElementsByTagName("a"), + f = 0, + p = g.length; + f < p; + ++f + ) { + var E = g[f]; + if (trimmedInnerTextIgnoringTextTransform(E) === o) return E; + } + var v = m.closest("article"); + if (i && v) { + if ((S = e(Array.from(v.querySelectorAll(t))))) return S; + if ((S = e(Array.from(v.querySelectorAll(n))))) return S; + } + var T = m.previousElementSibling; + if (T) { + var S; + if ((S = e(Array.from(T.querySelectorAll(t))))) return S; + if ((S = e(Array.from(T.querySelectorAll(n))))) return S; + } + return null; + }, + articleDateElement: function () { + return this._articleDateElement; + }, + findArticleDateElement: function () { + function e(e) { + for (var t = e; t && t !== l; t = t.parentElement) + if (elementIsCommentBlock(t) || elementLooksLikeACarousel(t)) + return !0; + return !1; + } + function t(t) { + for (var n, i = null, r = t.length, a = 0; a < r; ++a) { + var l = t[a]; + if (isElementVisible(l) && !e(l)) { + var o = cachedElementBoundingRect(l), + s = o.left + o.width / 2, + d = o.top + o.height / 2, + h = c - s, + u = m - d, + g = Math.sqrt(h * h + u * u); + (!i || g < n) && ((i = l), (n = g)); + } + } + return i; + } + const n = /date/i, + i = "time, .dateline, .entry-date"; + var r, + a = this._articleSubheadElement || this._articleTitleElement, + l = this.article.element, + o = a ? a.nextElementSibling : null; + if ( + (o && 1 === (r = o.querySelectorAll(i)).length && (o = r[0]), + !o || + o.matches(i) || + hasClassMatchingRegexp(o, n) || + o.querySelector(i) || + (o = null), + o && o.contains(l) && (o = null), + o) + ) + return o; + if (a) + var s, + c = (s = a ? cachedElementBoundingRect(a) : null).left + s.width / 2, + m = s.top + s.height / 2; + if ((r = l.querySelectorAll(i)).length) return t(r); + if ((l = l.closest("article")) && (r = l.querySelectorAll(i)).length) + return t(r); + return null; + }, + articleDateElementWithBylineElementHint: function (e) { + function t(e) { + return ( + /date/.test(e.className) || + /\bdatePublished\b/.test(e.getAttribute("itemprop")) + ); + } + var n = e.nextElementSibling; + if (n && t(n)) return n; + var i = nextLeafElementForElement(e); + return i && t(i) ? i : null; + }, + updateArticleBylineAndDateElementsIfNecessary: function () { + this.article && + (this._didArticleBylineAndDateElementDetection || + (this.updateArticleBylineAndDateElements(), + (this._didArticleBylineAndDateElementDetection = !0))); + }, + updateArticleBylineAndDateElements: function () { + var e = this.findArticleBylineElement(), + t = this.findArticleDateElement(); + (!t && e && (t = this.articleDateElementWithBylineElementHint(e)), + (this._articleDateElement = t), + (this._articleBylineElement = e)); + }, + articleIsLTR: function () { + if (!this._articleIsLTR) { + var e = getComputedStyle(this.article.element); + this._articleIsLTR = !e || "ltr" === e.direction; + } + return this._articleIsLTR; + }, + findSuggestedCandidate: function () { + var e, + t, + n = this.suggestedRouteToArticle; + if (!n || !n.length) return null; + for ( + t = n.length - 1; + t >= 0 && + (!n[t].id || !(e = this.contentDocument.getElementById(n[t].id))); + --t + ); + for (t++, e || (e = this.contentDocument); t < n.length; ) { + for ( + var i = n[t], + r = + e.nodeType === Node.DOCUMENT_NODE + ? e.documentElement + : e.firstElementChild, + a = 1; + r && a < i.index; + r = r.nextElementSibling + ) + this.shouldIgnoreInRouteComputation(r) || a++; + if (!r) return null; + if (normalizedElementTagName(r) !== normalizedElementTagName(i)) + return null; + if (i.className && r.className !== i.className) return null; + ((e = r), t++); + } + return isElementVisible(e) + ? new CandidateElement(e, this.contentDocument) + : null; + }, + findArticleBySearchingAllElements: function (e) { + var t = this.findSuggestedCandidate(), + n = this.findCandidateElements(); + if (!n || !n.length) return t; + if (t && t.basicScore() >= ReaderMinimumScore) return t; + for ( + var i = this.highestScoringCandidateFromCandidates(n), r = i.element; + r !== this.contentDocument; + r = r.parentNode + ) + if ("blockquote" === normalizedElementTagName(r)) { + for (var a = r.parentNode, l = n.length, o = 0; o < l; ++o) { + var s = n[o]; + if (s.element === a) { + i = s; + break; + } + } + break; + } + if (t && i.finalScore() < ReaderMinimumScore) return t; + if (!e) { + if (i.shouldDisqualifyDueToScoreDensity()) return null; + if (i.shouldDisqualifyDueToHorizontalRuleDensity()) return null; + if (i.shouldDisqualifyDueToHeaderDensity()) return null; + if (i.shouldDisqualifyDueToSimilarElements(n)) return null; + } + return i; + }, + findExtraArticle: function () { + if (!this.article) return null; + for ( + var e = 0, t = this.article.element; + e < 3 && t; + ++e, t = t.parentNode + ) { + var n = this.findExtraArticleCandidateElements(t); + if (n && n.length) + for ( + var i, + r = this.sortCandidateElementsInDescendingScoreOrder(n), + a = 0; + a < r.length && (i = r[a]) && i.basicScore(); + a++ + ) + if ( + !i.shouldDisqualifyDueToScoreDensity() && + !i.shouldDisqualifyDueToHorizontalRuleDensity() && + !( + i.shouldDisqualifyDueToHeaderDensity() || + (cachedElementBoundingRect(i.element).height < + PrependedArticleCandidateMinimumHeight && + cachedElementBoundingRect(this.article.element).width !== + cachedElementBoundingRect(i.element).width) + ) + ) { + var l = contentTextStyleForNode(this.contentDocument, i.element); + if ( + l && + l.fontFamily === this.contentTextStyle().fontFamily && + l.fontSize === this.contentTextStyle().fontSize && + i + ) + return i; + } + } + return null; + }, + highestScoringCandidateFromCandidates: function (e) { + for (var t = 0, n = null, i = e.length, r = 0; r < i; ++r) { + var a = e[r], + l = a.basicScore(); + l >= t && ((t = l), (n = a)); + } + return n; + }, + sortCandidateElementsInDescendingScoreOrder: function (e) { + function t(e, t) { + return e.basicScore() !== t.basicScore() + ? t.basicScore() - e.basicScore() + : t.depth() - e.depth(); + } + return e.sort(t); + }, + findCandidateElements: function () { + const e = 1e3; + for ( + var t = Date.now() + e, + n = this.contentDocument.getElementsByTagName("*"), + i = n.length, + r = [], + a = 0; + a < i; + ++a + ) { + var l = n[a]; + if (!SetOfCandidateTagNamesToIgnore.has(normalizedElementTagName(l))) { + var o = CandidateElement.candidateIfElementIsViable( + l, + this.contentDocument, + ); + if ((o && r.push(o), Date.now() > t)) { + r = []; + break; + } + } + } + var s = r.length; + for (a = 0; a < s; ++a) r[a].element.candidateElement = r[a]; + for (a = 0; a < s; ++a) { + var c = r[a]; + if ("blockquote" === normalizedElementTagName(c.element)) { + var m = c.element.parentElement.candidateElement; + m && m.addTextNodesFromCandidateElement(c); + } + } + for (a = 0; a < s; ++a) r[a].element.candidateElement = null; + return r; + }, + findExtraArticleCandidateElements: function (e) { + if (!this.article) return []; + e || (e = this.article.element); + for ( + var t = "preceding-sibling::*/descendant-or-self::*", + n = this.contentDocument.evaluate( + t, + e, + null, + XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, + null, + ), + i = n.snapshotLength, + r = [], + a = 0; + a < i; + ++a + ) { + var l = n.snapshotItem(a); + if (!SetOfCandidateTagNamesToIgnore.has(normalizedElementTagName(l))) + (o = CandidateElement.extraArticleCandidateIfElementIsViable( + l, + this.article, + this.contentDocument, + !0, + )) && r.push(o); + } + ((t = "following-sibling::*/descendant-or-self::*"), + (i = (n = this.contentDocument.evaluate( + t, + e, + null, + XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, + null, + )).snapshotLength)); + for (a = 0; a < i; ++a) { + var o; + l = n.snapshotItem(a); + if (!SetOfCandidateTagNamesToIgnore.has(normalizedElementTagName(l))) + (o = CandidateElement.extraArticleCandidateIfElementIsViable( + l, + this.article, + this.contentDocument, + !1, + )) && r.push(o); + } + return r; + }, + isGeneratedBy: function (e) { + var t = this.contentDocument.head + ? this.contentDocument.head.querySelector("meta[name=generator]") + : null; + if (!t) return !1; + var n = t.content; + return !!n && e.test(n); + }, + isMediaWikiPage: function () { + return ( + void 0 === this._isMediaWikiPage && + (this._isMediaWikiPage = this.isGeneratedBy(/^MediaWiki /)), + this._isMediaWikiPage + ); + }, + isWordPressSite: function () { + return this.isGeneratedBy(/^WordPress/); + }, + isAMPPage: function () { + return this.contentDocument.documentElement.hasAttribute("amp-version"); + }, + nextPageURLString: function () { + if (!this.article) return null; + if (this.isMediaWikiPage()) return null; + var e, + t = 0, + n = this.article.element; + n.parentNode && + "inline" === getComputedStyle(n).display && + (n = n.parentNode); + for ( + var i = n, + r = + cachedElementBoundingRect(n).bottom + + LinkMaxVerticalDistanceFromArticle; + isElementNode(i) && cachedElementBoundingRect(i).bottom <= r; + ) + i = i.parentNode; + i === n || (i !== this.contentDocument && !isElementNode(i)) || (n = i); + var a = this.contentDocument.evaluate( + LinkCandidateXPathQuery, + n, + null, + XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, + null, + ), + l = a.snapshotLength; + if (this.pageNumber <= 2 && !this.prefixWithDateForNextPageURL) { + var o = this.contentDocument.location.pathname, + s = o.match(LinkDateRegex); + s && + ((s = s[0]), + (this.prefixWithDateForNextPageURL = o.substring( + 0, + o.indexOf(s) + s.length, + ))); + } + for (var c = 0; c < l; ++c) { + var m = a.snapshotItem(c), + d = this.scoreNextPageLinkCandidate(m); + d > t && ((e = m), (t = d)); + } + return e ? e.href : null; + }, + scoreNextPageLinkCandidate: function (e) { + function t(e, t, n, i) { + t.substring(0, e.length) === e && + ((t = t.substring(e.length)), (e = "")); + var r = t.lastInteger(); + if (isNaN(r)) return !1; + var a = e ? e.lastInteger() : NaN; + return ( + (isNaN(a) || a >= MaximumExactIntegralValue) && (a = i), + r === a ? n.lastInteger() === a + 1 : r === a + 1 + ); + } + function n(e) { + for ( + var t = {}, n = e.substring(1).split("&"), i = n.length, r = 0; + r < i; + ++r + ) { + var a = n[r], + l = a.indexOf("="); + -1 === l + ? (t[a] = null) + : (t[a.substring(0, l)] = a.substring(l + 1)); + } + return t; + } + var i = this.contentDocument.location; + if (e.host !== i.host) return 0; + if (e.pathname === i.pathname && e.search === i.search) return 0; + if (-1 !== e.toString().indexOf("#")) return 0; + if (anchorLinksToAttachment(e) || anchorLinksToTagOrCategoryPage(e)) + return 0; + if (!isElementVisible(e)) return 0; + var r = cachedElementBoundingRect(e), + a = this.articleBoundingRect(), + l = Math.max( + 0, + Math.max(a.top - (r.top + r.height), r.top - (a.top + a.height)), + ); + if (r.top < a.top) return 0; + if (l > LinkMaxVerticalDistanceFromArticle) return 0; + if ( + Math.max( + 0, + Math.max(a.left - (r.left + r.width), r.left - (a.left + a.width)), + ) > 0 + ) + return 0; + var o = i.pathname, + s = e.pathname; + if (this.prefixWithDateForNextPageURL) { + if (-1 === e.pathname.indexOf(this.prefixWithDateForNextPageURL)) + return 0; + ((o = o.substring(this.prefixWithDateForNextPageURL.length)), + (s = s.substring(this.prefixWithDateForNextPageURL.length))); + } + var c = s.substring(1).split("/"); + c[c.length - 1] || c.pop(); + var m = c.length, + d = o.substring(1).split("/"), + h = !1; + d[d.length - 1] || ((h = !0), d.pop()); + var u = d.length; + if (m < u) return 0; + for (var g = 0, f = 0, p = e.textContent, E = 0; E < m; ++E) { + var v = c[E], + T = E < u ? d[E] : ""; + if (T !== v) { + if (E < u - 2) return 0; + if (v.length >= T.length) { + for (var S = 0; v[v.length - 1 - S] === T[T.length - 1 - S]; ) S++; + S && + ((v = v.substring(0, v.length - S)), + (T = T.substring(0, T.length - S))); + var A = v.indexOf(T); + -1 !== A && (v = v.substring(A)); + } + t(T, v, p, this.pageNumber) + ? (f = Math.pow(LinkNextOrdinalValueBase, E - m + 1)) + : g++; + } + if (g > 1) return 0; + } + var N = !1; + if (e.search) + for (var y in ((linkParameters = n(e.search)), + (referenceParameters = n(i.search)), + linkParameters)) { + var b = linkParameters[y], + x = y in referenceParameters ? referenceParameters[y] : null; + if (x !== b) + if ( + (null === x && (x = ""), + null === b && (b = ""), + b.length < x.length) + ) + g++; + else if (t(x, b, p, this.pageNumber)) { + if (LinkURLSearchParameterKeyMatchRegex.test(y)) { + if (o.toLowerCase() !== s.toLowerCase()) return 0; + if (this.isWordPressSite() && h) return 0; + N = !0; + } + if (LinkURLBadSearchParameterKeyMatchRegex.test(y)) { + g++; + continue; + } + f = Math.max(f, 1 / LinkNextOrdinalValueBase); + } else g++; + } + if (!f) return 0; + if ( + ((LinkURLPageSlashNumberMatchRegex.test(e.href) || + LinkURLSlashDigitEndMatchRegex.test(e.href)) && + (N = !0), + !N && m === u && stringSimilarity(o, s) < LinkMinimumURLSimilarityRatio) + ) + return 0; + if (LinkURLArchiveSlashDigitEndMatchRegex.test(e)) return 0; + var I = + LinkMatchWeight * (Math.pow(LinkMismatchValueBase, -g) + f) + + (LinkVerticalDistanceFromArticleWeight * l) / + LinkMaxVerticalDistanceFromArticle; + (N && (I += LinkURLSemanticMatchBonus), + "li" === normalizedElementTagName(e.parentNode) && + (I += LinkListItemBonus)); + p = e.innerText; + return ( + LinkNextMatchRegEx.test(p) && (I += LinkNextMatchBonus), + LinkPageMatchRegEx.test(p) && (I += LinkPageMatchBonus), + LinkContinueMatchRegEx.test(p) && (I += LinkContinueMatchBonus), + I + ); + }, + elementContainsEnoughTextOfSameStyle: function (e, t, n) { + const i = 110; + var r = "body" === normalizedElementTagName(e), + a = getVisibleNonWhitespaceTextNodes(e, r ? 2 : 3, i, r, t); + const l = 0.2, + o = + n / + clamp(scoreMultiplierForElementTagNameAndAttributes(e), l, 1 / 0) / + languageScoreMultiplierForTextNodes(a); + for (var s = {}, c = a.length, m = 0; m < c; ++m) { + var d = a[m], + h = d.length, + u = d.parentElement, + g = window.getComputedStyle(u), + f = g.fontFamily + "|" + g.fontSize, + p = Math.pow(h, TextNodeLengthPower); + if (s[f]) { + if ((s[f] += p) > o) break; + } else s[f] = p; + } + for (var f in s) if (s[f] > o) return !0; + return !1; + }, + openGraphMetadataClaimsPageTypeIsArticle: function () { + if (!this._openGraphMetadataClaimsPageTypeIsArticle) { + var e = this.contentDocument.querySelector( + "head meta[property='og:type']", + ); + this._openGraphMetadataClaimsPageTypeIsArticle = + e && "article" === e.content; + } + return this._openGraphMetadataClaimsPageTypeIsArticle; + }, + prismGenreClaimsPageIsHomepage: function () { + return ( + "homePage" === + this.contentFromUniqueMetadataSelector( + this.contentDocument, + "head meta[name='prism.genre']", + ) + ); + }, + pointsToUseForHitTesting: function () { + const e = window.innerWidth, + t = e / 4, + n = e / 2, + i = 128, + r = 320; + var a = [ + [n, 800], + [n, 600], + [t, 800], + [n, 400], + [n - i, 1100], + [r, 700], + [3 * t, 800], + [e - r, 700], + ]; + return ( + this.openGraphMetadataClaimsPageTypeIsArticle() && + a.push([n - i, 1400]), + a + ); + }, + findArticleByVisualExamination: function () { + for ( + var e = new Set(), + t = this.pointsToUseForHitTesting(), + n = t.length, + i = AppleDotComAndSubdomainsRegex.test( + this.contentDocument.location.hostname.toLowerCase(), + ) + ? 7200 + : 1800, + r = this.candidateElementFilter, + a = 0; + a < n; + a++ + ) + for ( + var l = t[a][0], + o = t[a][1], + s = elementAtPoint(l, o, this.contentDocument); + s && !e.has(s); + s = s.parentElement + ) { + if (VeryPositiveClassNameRegEx.test(s.className)) + return new CandidateElement(s, this.contentDocument); + if ( + !SetOfCandidateTagNamesToIgnore.has(normalizedElementTagName(s)) + ) { + var c = s.offsetWidth, + m = s.offsetHeight; + if (!c && !m) { + var d = cachedElementBoundingRect(s); + ((c = d.width), (m = d.height)); + } + if ( + !( + c < r.minimumWidth || + m < r.minimumHeight || + c * m < r.minimumArea + ) + ) { + var h = this.elementContainsEnoughTextOfSameStyle(s, e, i); + if ( + (e.add(s), + h && + !( + CandidateElement.candidateElementAdjustedHeight(s) < + r.minimumHeight + )) + ) { + var u = new CandidateElement(s, this.contentDocument); + if (!u.shouldDisqualifyDueToSimilarElements()) { + if (u.shouldDisqualifyDueToHorizontalRuleDensity()) + return null; + if (u.shouldDisqualifyDueToHeaderDensity()) return null; + if (!u.shouldDisqualifyForDeepLinking()) return u; + } + } + } + } + } + return null; + }, + findTextSamplesByVisualExamination: function () { + function e(e) { + if (!e || !e.innerText) return null; + let n = t(e.innerText.trim()); + return (n && a.add(e), n); + } + function t(e) { + const t = 10; + let i = textContentAppearsToBeCJK(e, d) ? d : m, + r = e.length; + if (r < i) return null; + if (r > f * c) return null; + let a = n(e); + return (a.match(/\n/g) || []).length > t ? null : a; + } + function n(e) { + return e.substring(0, h); + } + function i(t, n) { + let i = [], + r = s.querySelectorAll(t); + for (let t of r) { + if (i.length >= n) break; + if (elementDescendsFromElementInSet(t, l)) continue; + let r = e(t); + r && i.push([t, r]); + } + return i; + } + function r(e) { + const n = document.querySelectorAll("div"), + i = new Set(); + for (let r of n) { + if (r.firstElementChild) continue; + let n = t(r.textContent); + if (n && (i.add(n), i.size >= e)) break; + } + return i; + } + this.setSuppressBoundingRectCalculationForSkippedElements(!0); + var a = new Set(), + l = new Set(), + o = new Set(), + s = this.contentDocument, + c = s.body.innerText.length; + const m = 20, + d = 10, + h = 200, + u = 5, + g = 5, + f = 0.8; + let p = s.title, + E = t(p); + E && (o.add(E), l.add(p)); + let v = this.pointsToUseForHitTesting(), + T = v.length; + for (var S = 0; S < T; S++) { + let t = v[S][0], + n = v[S][1], + i = 0; + for ( + let r = elementAtPoint(t, n, this.contentDocument); + r && !a.has(r) && !(i > u); + r = r.parentElement, i++ + ) { + let t = e(r); + if (t) { + if (elementDescendsFromElementMatchingSelector(r, "code, form")) + break; + (o.add(t), l.add(r)); + break; + } + } + } + let A = { p: 3, h1: 2, h2: 2, h3: 1 }; + for (let [e, t] of Object.entries(A)) { + let n = i(e, t); + for (let [e, t] of n) e && t && (o.add(t), l.add(e)); + } + if (o.size < g) { + let e = ["article", "header", "a", "footer", "body"]; + for (let t of e) { + let e = i(t, 1) || [], + [n, r] = e.length > 0 ? e[0] : [null, null]; + if (n && r) { + (o.add(r), l.add(n)); + break; + } + } + } + if (o.size < g) { + const e = r(g - o.size); + o = o.union(e); + } + return Array.from(o); + }, + findArticleFromMetadata: function (e) { + var t = this.contentDocument.querySelectorAll( + SchemaDotOrgArticleContainerSelector, + ); + if (1 === t.length) { + var n = t[0]; + if (n.matches("article, *[itemprop=articleBody]")) + if ( + (o = CandidateElement.candidateIfElementIsViable( + n, + this.contentDocument, + !0, + )) + ) + return e === FindArticleMode.ExistenceOfElement || o; + var i = n.querySelectorAll("article, *[itemprop=articleBody]"), + r = elementWithLargestAreaFromElements(i); + if (r) + if ( + (o = CandidateElement.candidateIfElementIsViable( + r, + this.contentDocument, + !0, + )) + ) + return e === FindArticleMode.ExistenceOfElement || o; + return new CandidateElement(n, this.contentDocument); + } + if ( + this.openGraphMetadataClaimsPageTypeIsArticle() && + !this.prismGenreClaimsPageIsHomepage() + ) { + var a = this.contentDocument.querySelectorAll("main article"), + l = elementWithLargestAreaFromElements(a); + if (l) + if ( + (o = CandidateElement.candidateIfElementIsViable( + l, + this.contentDocument, + !0, + )) + ) + return e === FindArticleMode.ExistenceOfElement || o; + var o, + s = this.contentDocument.querySelectorAll("article"); + if (1 === s.length) + if ( + (o = CandidateElement.candidateIfElementIsViable( + s[0], + this.contentDocument, + !0, + )) + ) + return e === FindArticleMode.ExistenceOfElement || o; + } + return null; + }, + articleTextContent: function () { + return ( + this._articleTextContent || this.adoptableArticle(), + this._articleTextContent + ); + }, + unformattedArticleTextContentIncludingMetadata: function (e) { + this.setSuppressBoundingRectCalculationForSkippedElements(!0); + var t = this.articleNode(); + if (t) { + if (!e) return t.innerText; + var n = "", + i = this.articleTitle(); + i && (n += i + "\n"); + var r = this.articleSubhead(); + r && (n += r + "\n"); + var a = this.adoptableMetadataBlock(); + return ( + a && + (n += + plaintextVersionOfNodeAppendingNewlinesBetweenBlockElements(a) + + "\n"), + n + t.innerText + ); + } + }, + pageDescription: function (e) { + var t = e["name:description"] || e["property:og:description"]; + return t && (t = t.trim()).length ? t : null; + }, + articleTitleAndSiteNameFromTitleString: function (e) { + const t = [" - ", " \u2013 ", " \u2014 ", ": ", " | ", " \xbb "], + n = t.length, + i = 0.6; + for ( + var r, + a, + l = this.contentDocument.location.host.replace( + /^(www|m|secure)\./, + "", + ), + o = l.replace(/\.(com|info|net|org|edu|gov)$/, "").toLowerCase(), + s = 0; + s < n; + ++s + ) { + var c = e.split(t[s]); + if (2 === c.length) { + var m = c[0].trim(), + d = c[1].trim(), + h = m.toLowerCase(), + u = d.toLowerCase(), + g = Math.max(stringSimilarity(h, l), stringSimilarity(h, o)), + f = Math.max(stringSimilarity(u, l), stringSimilarity(u, o)), + p = Math.max(g, f); + (!a || p > a) && + ((a = p), + (r = + g > f + ? { siteName: m, articleTitle: d } + : { siteName: d, articleTitle: m })); + } + } + return r && a >= i ? r : null; + }, + pageInformation: function (e, t) { + var n, + i = this.buildMapOfMetaTags(), + r = this.pageDescription(i), + a = !1; + this.adoptableArticle() + ? ((n = this.articleTitle()), + (r = r || this.articleTextContent()), + (a = !0)) + : ((n = this.contentDocument.title), + this.contentDocument.body && + (r = r || this.contentDocument.body.innerText)); + var l = "", + o = this.pageImageURLFromMetadata(i); + if (o) l = o; + else { + var s = this.mainImageNode(); + s && (l = s.src); + } + (n || (n = userVisibleURLString(this.contentDocument.location.href)), + (n = n.trim()), + e && (n = n.substring(0, e))); + var c = this.contentFromUniqueMetadataSelector( + this.contentDocument, + "head meta[property='og:site_name']", + ); + if (!c) { + var m = this.articleTitleAndSiteNameFromTitleString( + this.contentDocument.title, + ); + m && m.articleTitle === n && (c = m.siteName); + } + return ( + c || (c = ""), + (r = r ? r.trim() : ""), + t && (r = r.substring(0, t)), + { + title: n, + previewText: (r = r.replace(/[\s]+/g, " ")), + siteName: c, + mainImageURL: l, + isReaderAvailable: a, + } + ); + }, + readingListItemInformation: function () { + const e = 220, + t = 220; + return this.pageInformation(e, t); + }, + buildMapOfMetaTags: function () { + var e = {}; + const t = this.contentDocument.head.getElementsByTagName("meta"), + n = t.length; + for (var i = 0; i < n; ++i) { + const n = t[i], + r = n.content; + if (!r) continue; + if (this.elementAttributesContainImproperQuote(n)) continue; + n.name && (e["name:" + n.name.toLowerCase()] = r); + const a = n.getAttribute("property"); + a && (e["property:" + a.toLowerCase()] = r); + } + return e; + }, + pageTitleForTextAnalysis: function (e) { + const t = this.contentDocument; + var n = e["property:og:title"]; + return ( + n || (n = e["name:twitter:title"]), + n || (n = e["name:sailthru.headline"]), + n || (n = t.title), + n + ); + }, + pageAuthorForTextAnalysis: function (e) { + return e["name:author"] || e["property:author"]; + }, + pageMetadataCommonToTextAnalysisAndArticleContent: function () { + var e = {}; + const t = this.buildMapOfMetaTags(), + n = this.pageTitleForTextAnalysis(t); + n && (e.title = n); + const i = this.pageAuthorForTextAnalysis(t); + i && (e.author = i); + const r = this.pageImageURLFromMetadata(t); + return (r && (e.imageURL = r), e); + }, + extractedArticleContent: function () { + try { + const e = this.adoptableArticle(!0); + for (let t of e.getElementsByTagName("*")) + t.removeAttribute(READER_UNIQUE_ID_ATTRIBUTE_KEY); + let t = this.pageMetadataCommonToTextAnalysisAndArticleContent(); + if (e) { + const n = e.innerHTML; + t.body = n; + } + this.updateArticleBylineAndDateElementsIfNecessary(); + const n = this.articleDateElement(); + n && (t.publishedDate = trimmedInnerTextIgnoringTextTransform(n)); + const i = this.articleBylineElement(); + return ( + !t.author && + i && + (t.author = trimmedInnerTextIgnoringTextTransform(i)), + t + ); + } catch (e) { + let t = {}; + const n = e.message, + i = e.stack; + return (n && (t.error = n), i && (t.stack = i), t); + } + }, + readerUniqueIDOfElementPinnedToTopOfViewport: function () { + const e = 120; + if (window.scrollY < e) return null; + const t = this.articleNode(); + if (!t) return null; + const n = t.getBoundingClientRect(), + i = (n.left + n.right) / 2; + for (const e of [0, 15, 35, 50, 80, 110]) { + const n = t.ownerDocument.elementFromPoint(i, e); + if ( + n !== t && + (t.contains(n) || + n === this._articleTitleElement || + n === this._articleSubheadElement) + ) { + const e = this._weakMapOfOriginalElementToUniqueID.get(n); + if (e) return e; + } + } + return null; + }, + scrollToElementWithUniqueID: function (e, t) { + const n = this._rectOfElementWithReaderUniqueID(e); + if (!n || !n.top || isNaN(n.top) || !n.height || isNaN(n.height)) return; + const i = -t * n.height; + this.scrollToOffset(n.top + i); + }, + uniqueIDAndScrollRatioOfElementPinnedToTop: function () { + const e = this.readerUniqueIDOfElementPinnedToTopOfViewport(); + if (!e) return [null, null]; + const t = this._rectOfElementWithReaderUniqueID(e); + if (!t || !t.top || isNaN(t.top) || !t.height || isNaN(t.height)) + return [null, null]; + return [e, (t.top - this.scrollY()) / t.height]; + }, + _rectOfElementWithReaderUniqueID: function (e) { + function t(e) { + return { + top: e.top + window.scrollY, + right: e.right + window.scrollX, + bottom: e.bottom + window.scrollY, + left: e.left + window.scrollX, + width: e.width, + height: e.height, + }; + } + if (!this._mapOfUniqueIDToOriginalElement) return null; + let n = this._mapOfUniqueIDToOriginalElement.get(e); + return n && n.parentElement ? t(n.getBoundingClientRect()) : null; + }, + scrollY: function () { + return window.scrollY; + }, + scrollToOffset: function (e) { + if ("number" == typeof e) + try { + (clearCachedElementBoundingRects(), + this.cacheWindowScrollPosition(), + (this.contentDocument.scrollingElement.scrollTop = e)); + } catch (e) {} + }, + documentURLString: function () { + return this.contentDocument.location.href; + }, + baseURI: function () { + return this.contentDocument.baseURI; + }, + usesSearchEngineOptimizationMetadata: function () { + return !!document.head.querySelector('meta[property^="og:"]'); + }, + extractCanonicalLink: function () { + var e = document.head.querySelector("link[rel='canonical']"); + if (!e) return null; + var t = e.getAttribute("href"); + if (!t) return null; + var n = document.baseURI, + i = urlFromString(t, n); + return ("/" !== document.location.pathname && "/" === i.pathname) || + ("localhost" === i.hostname && + "localhost" !== document.location.hostname) + ? null + : i.href; + }, + setSuppressBoundingRectCalculationForSkippedElements: function (e) { + this._shouldSuppressBoundingRectCalculationForSkippedElements = e; + }, + shouldSuppressBoundingRectCalculationForSkippedElements: function () { + return !!this._shouldSuppressBoundingRectCalculationForSkippedElements; + }, + handleNavigation: function (e) { + e.hashChange || this.resetArticleInformation(); + }, + })); +var ReaderArticleFinderJS = new ReaderArticleFinder(document); +navigation.addEventListener("navigate", (e) => { + ReaderArticleFinderJS.handleNavigation(e); +}); diff --git a/26.2/js/reader/ReaderShared.js b/26.2/js/reader/ReaderShared.js new file mode 100644 index 0000000..f73612a --- /dev/null +++ b/26.2/js/reader/ReaderShared.js @@ -0,0 +1,28 @@ +//# sourceURL=__InjectedScript_ReaderShared.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +// Copyright (c) 2025 Apple Inc. All rights reserved. +"use strict"; +function normalizedElementTagName(e) { + return e.localName; +} +function plaintextVersionOfNodeAppendingNewlinesBetweenBlockElements(e) { + const n = (e.ownerDocument ?? document).createTreeWalker( + e, + NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, + null, + ); + let t = ""; + for (n.currentNode = e; n.nextNode(); ) { + const e = n.currentNode; + if (e.nodeType === Node.TEXT_NODE) { + t += e.textContent; + continue; + } + let o = normalizedElementTagName(e); + ("p" !== o && "div" !== o) || (t += "\n"); + } + return t; +} +const READER_UNIQUE_ID_ATTRIBUTE_KEY = "data-reader-unique-id", + READER_UNIQUE_ID_TITLE = "titleElement", + READER_UNIQUE_ID_SUBHEAD = "subheadElement"; diff --git a/26.2/js/reader/ReaderSharedUI.js b/26.2/js/reader/ReaderSharedUI.js new file mode 100644 index 0000000..26503b8 --- /dev/null +++ b/26.2/js/reader/ReaderSharedUI.js @@ -0,0 +1,2678 @@ +//# sourceURL=__InjectedScript_ReaderSharedUI.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +// Copyright (c) 2013-2024 Apple Inc. All rights reserved. +function articleHeight() { + return ( + document.getElementById("article").offsetHeight + + 2 * + parseFloat(getComputedStyle(document.getElementById("article")).marginTop) + ); +} +function smoothScroll(e, t, n, i) { + function o(t, n) { + ((scrollEventIsSmoothScroll = !0), + (e.scrollTop = n), + setTimeout(function () { + scrollEventIsSmoothScroll = !1; + }, 0)); + } + const l = 1e3 / 60; + let r = e.scrollTop, + a = r + t, + s = 0, + d = articleHeight() - window.innerHeight; + if ((a < s && (a = s), a > d && (a = d), r == a)) return; + let c = Math.abs(a - r); + if ( + (c < Math.abs(t) && (n = (n * c) / Math.abs(t)), smoothScrollingAnimator) + ) { + let e = smoothScrollingAnimator.animations[0].progress, + t = e > 0.5 ? 1 - e : e, + s = n / (1 - t), + d = -t * s, + c = Math.sin((Math.PI / 2) * t), + m = c * c, + u = (r - a * m) / (1 - m); + return ( + abortSmoothScroll(), + (smoothScrollingAnimator = new AppleAnimator(s, l, i)), + (smoothScrollingAnimation = new AppleAnimation(u, a, o)), + smoothScrollingAnimator.addAnimation(smoothScrollingAnimation), + void smoothScrollingAnimator.start(d) + ); + } + ((smoothScrollingAnimator = new AppleAnimator(n, l, i)), + (smoothScrollingAnimation = new AppleAnimation(r, a, o)), + smoothScrollingAnimator.addAnimation(smoothScrollingAnimation), + smoothScrollingAnimator.start()); +} +function abortSmoothScroll() { + (smoothScrollingAnimator.stop(AnimationTerminationCondition.Interrupted), + (smoothScrollingAnimator = null), + (smoothScrollingAnimation = null)); +} +function articleScrolled() { + (!scrollEventIsSmoothScroll && smoothScrollingAnimator && abortSmoothScroll(), + ReaderJSController.articleScrolled()); +} +function traverseReaderContent(e, t) { + if (!e) return; + let n = e.offsetTop, + i = document.createTreeWalker( + document.getElementById("article"), + NodeFilter.SHOW_ELEMENT, + { + acceptNode: function (e) { + let t = e.classList; + return t.contains("page-number") || + t.contains("float") || + t.contains("page") || + t.contains("scrollable") || + "HR" === e.tagName || + 0 === e.offsetHeight || + "inline" === getComputedStyle(e).display || + n === e.offsetTop + ? NodeFilter.FILTER_SKIP + : NodeFilter.FILTER_ACCEPT; + }, + }, + ); + return ((i.currentNode = e), i[t]()); +} +function nextReaderContentElement(e) { + return traverseReaderContent(e, "nextNode"); +} +function previousReaderContentElement(e) { + return traverseReaderContent(e, "previousNode"); +} +function articleTitleElement() { + return document.querySelector("#article .page .title"); +} +function articleTitleContainer() { + return document.querySelector('[data-reader-unique-id="titleElement"]'); +} +function mediaElementIsPlaying(e) { + return !!(e.currentTime > 0 && !e.paused && !e.ended && e.readyState > 2); +} +function keyDown(e) { + let t = !(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey), + n = !e.metaKey && !e.altKey && !e.ctrlKey && e.shiftKey; + switch (e.keyCode) { + case 8: + (n ? ReaderJSController.goForward() : t && ReaderJSController.goBack(), + e.preventDefault()); + break; + case 74: + ContentAwareScrollerJS.scroll(ContentAwareNavigationDirection.Down); + break; + case 75: + ContentAwareScrollerJS.scroll(ContentAwareNavigationDirection.Up); + break; + case 82: + t && ReaderJS.reloadArticlePreservingScrollPosition(); + } +} +function getArticleScrollPosition() { + ((scrollInfo = {}), (scrollInfo.version = 1)); + let e = document.getElementsByClassName("page"), + t = e.length; + if (!t) return ((scrollInfo.pageIndex = 0), scrollInfo); + scrollInfo.pageIndex = e.length - 1; + let n = window.scrollY; + for (let i = 0; i < t; i++) { + let t = e[i]; + if (t.offsetTop + t.offsetHeight >= n) { + scrollInfo.pageIndex = i; + break; + } + } + return scrollInfo; +} +function restoreInitialArticleScrollPosition() { + let e = + document.getElementsByClassName("page")[initialScrollPosition.pageIndex]; + e && (document.scrollingElement.scrollTop = e.offsetTop); +} +function restoreInitialArticleScrollPositionIfPossible() { + if (didRestoreInitialScrollPosition) return; + if ( + !initialScrollPosition && + ((initialScrollPosition = + ReaderJSController.initialArticleScrollPosition()), + !initialScrollPosition || !initialScrollPosition.pageIndex) + ) + return void (didRestoreInitialScrollPosition = !0); + let e = document.getElementsByClassName("page-number").length; + initialScrollPosition.pageIndex >= e || + (setTimeout( + restoreInitialArticleScrollPosition, + DelayBeforeRestoringScrollPositionInMs, + ), + (didRestoreInitialScrollPosition = !0)); +} +function makeWideElementsScrollable() { + let e = document.querySelectorAll("table, pre"); + for (let t of e) { + if (t.classList.contains("float")) continue; + if (t.parentElement.classList.contains("scrollable")) continue; + let e = document.createElement("div"); + (t.parentElement.insertBefore(e, t), + t.remove(), + e.appendChild(t), + e.classList.add("scrollable")); + } +} +function fontSettings(e) { + function t(e) { + return e.replace(/\W/g, "").toLowerCase(); + } + const n = [15, 16, 17, 18, 19, 20, 21, 23, 26, 28, 37, 46], + i = [ + "25px", + "26px", + "27px", + "28px", + "29px", + "30px", + "31px", + "33px", + "37px", + "39px", + "51px", + "62px", + ]; + let o = { + System: { + lineHeights: [ + "25px", + "26px", + "27px", + "29px", + "30px", + "31px", + "32px", + "33px", + "38px", + "39px", + "51px", + "62px", + ], + usesSystemFont: !0, + }, + Charter: { + lineHeights: [ + "25px", + "26px", + "27px", + "28px", + "29px", + "30px", + "32px", + "34px", + "38px", + "39px", + "51px", + "62px", + ], + }, + Georgia: { + lineHeights: [ + "25px", + "26px", + "27px", + "28px", + "29px", + "30px", + "32px", + "34px", + "38px", + "41px", + "51px", + "62px", + ], + }, + "Iowan Old Style": { + lineHeights: [ + "25px", + "26px", + "27px", + "28px", + "29px", + "30px", + "32px", + "34px", + "38px", + "39px", + "51px", + "62px", + ], + }, + Palatino: { + lineHeights: [ + "25px", + "26px", + "27px", + "28px", + "29px", + "30px", + "31px", + "34px", + "37px", + "40px", + "51px", + "62px", + ], + }, + Seravek: { + lineHeights: [ + "25px", + "26px", + "27px", + "28px", + "28px", + "30px", + "31px", + "34px", + "37px", + "39px", + "51px", + "62px", + ], + }, + "Hiragino Sans W3": { + lineHeights: [ + "1.85em", + "1.78em", + "1.74em", + "1.71em", + "1.72em", + "1.73em", + "1.75em", + "1.76em", + "1.78em", + "1.9em", + "1.92em", + "2em", + ], + }, + "Hiragino Kaku Gothic ProN": { + lineHeights: [ + "1.85em", + "1.78em", + "1.74em", + "1.7em", + "1.69em", + "1.68em", + "1.69em", + "1.7em", + "1.74em", + "1.85em", + "1.9em", + "2em", + ], + }, + "Hiragino Mincho ProN": { + lineHeights: [ + "1.75em", + "1.72em", + "1.69em", + "1.66em", + "1.64em", + "1.56em", + "1.53em", + "1.56em", + "1.6em", + "1.65em", + "1.69em", + "1.72em", + ], + }, + "Hiragino Maru Gothic ProN": { + lineHeights: [ + "1.85em", + "1.78em", + "1.74em", + "1.7em", + "1.69em", + "1.68em", + "1.69em", + "1.7em", + "1.74em", + "1.85em", + "1.9em", + "2em", + ], + }, + "PingFang SC": { + lineHeights: [ + "1.85em", + "1.78em", + "1.74em", + "1.7em", + "1.69em", + "1.68em", + "1.69em", + "1.7em", + "1.74em", + "1.85em", + "1.9em", + "2em", + ], + usesSystemFont: !0, + }, + "Heiti SC": { + lineHeights: [ + "1.85em", + "1.78em", + "1.74em", + "1.7em", + "1.7em", + "1.71em", + "1.72em", + "1.75em", + "1.8em", + "1.9em", + "1.95em", + "2em", + ], + }, + "Songti SC": { + lineHeights: [ + "1.8em", + "1.78em", + "1.74em", + "1.72em", + "1.71em", + "1.72em", + "1.73em", + "1.75em", + "1.8em", + "1.9em", + "1.95em", + "1.96em", + ], + }, + "Kaiti SC": { + lineHeights: [ + "1.75em", + "1.72em", + "1.69em", + "1.66em", + "1.64em", + "1.56em", + "1.53em", + "1.56em", + "1.6em", + "1.65em", + "1.69em", + "1.72em", + ], + }, + "Yuanti SC": { + lineHeights: [ + "1.95em", + "1.93em", + "1.9em", + "1.87em", + "1.85em", + "1.8em", + "1.83em", + "1.85em", + "1.88em", + "1.9em", + "1.91em", + "1.92em", + ], + }, + "Libian SC": { + fontSizes: [27, 28, 29, 30, 31, 32, 33, 35, 37, 40, 42, 46], + lineHeights: [ + "1.65em", + "1.63em", + "1.62em", + "1.61em", + "1.6em", + "1.6em", + "1.61em", + "1.62em", + "1.63em", + "1.64em", + "1.64em", + "1.65em", + ], + }, + "Weibei SC": { + fontSizes: [21, 22, 23, 24, 25, 26, 27, 29, 32, 34, 39, 43], + lineHeights: [ + "1.65em", + "1.63em", + "1.62em", + "1.61em", + "1.6em", + "1.6em", + "1.61em", + "1.62em", + "1.63em", + "1.64em", + "1.64em", + "1.65em", + ], + }, + "Yuppy SC": { + lineHeights: [ + "1.75em", + "1.73em", + "1.7em", + "1.67em", + "1.65em", + "1.6em", + "1.63em", + "1.65em", + "1.68em", + "1.7em", + "1.71em", + "1.72em", + ], + }, + "PingFang TC": { + lineHeights: [ + "1.85em", + "1.78em", + "1.75em", + "1.72em", + "1.7em", + "1.7em", + "1.7em", + "1.72em", + "1.75em", + "1.82em", + "1.85em", + "1.9em", + ], + usesSystemFont: !0, + }, + "Heiti TC": { + lineHeights: [ + "1.85em", + "1.78em", + "1.75em", + "1.72em", + "1.71em", + "1.71em", + "1.72em", + "1.75em", + "1.78em", + "1.82em", + "1.86em", + "1.9em", + ], + }, + "Songti TC": { + lineHeights: [ + "1.8em", + "1.78em", + "1.74em", + "1.73em", + "1.72em", + "1.72em", + "1.73em", + "1.75em", + "1.8em", + "1.9em", + "1.95em", + "1.96em", + ], + }, + "Kaiti TC": { + fontSizes: [20, 21, 22, 23, 24, 25, 26, 28, 31, 33, 38, 43], + lineHeights: [ + "1.63em", + "1.62em", + "1.62em", + "1.6em", + "1.56em", + "1.53em", + "1.5em", + "1.53em", + "1.56em", + "1.6em", + "1.62em", + "1.63em", + ], + }, + "Yuanti TC": { + lineHeights: [ + "1.95em", + "1.93em", + "1.9em", + "1.87em", + "1.85em", + "1.8em", + "1.83em", + "1.85em", + "1.88em", + "1.9em", + "1.91em", + "1.92em", + ], + }, + "Libian TC": { + fontSizes: [27, 28, 29, 30, 31, 32, 33, 35, 37, 40, 42, 46], + lineHeights: [ + "1.65em", + "1.63em", + "1.62em", + "1.61em", + "1.6em", + "1.6em", + "1.61em", + "1.62em", + "1.63em", + "1.64em", + "1.64em", + "1.65em", + ], + }, + "Weibei TC": { + fontSizes: [21, 22, 23, 24, 25, 26, 27, 29, 32, 34, 39, 43], + lineHeights: [ + "1.65em", + "1.63em", + "1.62em", + "1.61em", + "1.6em", + "1.6em", + "1.61em", + "1.62em", + "1.63em", + "1.64em", + "1.64em", + "1.65em", + ], + }, + "Yuppy TC": { + lineHeights: [ + "1.75em", + "1.73em", + "1.7em", + "1.67em", + "1.65em", + "1.6em", + "1.63em", + "1.65em", + "1.68em", + "1.7em", + "1.71em", + "1.72em", + ], + }, + "Noto Nastaliq Urdu": { + lineHeights: [ + "2.6em", + "2.7em", + "2.8em", + "2.8em", + "2.8em", + "2.8em", + "2.8em", + "2.6em", + "2.5em", + "2.5em", + "2.5em", + "2.6em", + ], + }, + }[e]; + return ( + o || (o = {}), + (o.cssClassName = t(e)), + o.usesSystemFont || (o.fontFamilyName = e), + o.fontSizes || (o.fontSizes = n), + o.lineHeights || (o.lineHeights = i), + o + ); +} +function prepareTweetsInPrintingMailingFrame(e) { + let t = e.querySelectorAll(".tweet-wrapper"); + for (let e of t) { + let t = e.querySelector("iframe"); + t && t.remove(); + let n = e.querySelector(".simple-tweet"); + n && n.classList.remove("hidden"); + } +} +function urlFromString(e) { + try { + return new URL(e); + } catch (e) { + return null; + } +} +function stopExtendingElementBeyondTextColumn(e) { + (e.classList.remove("extendsBeyondTextColumn"), + e.style && + (e.style.removeProperty("width"), + e.style.removeProperty("-webkit-margin-start"))); +} +function leadingMarginAndPaddingAppliedToElementFromAncestors(e) { + let t = 0, + n = e.parentElement; + for (; n && !n.classList.contains("page"); ) { + let e = getComputedStyle(n); + ((t += + parseFloat(e["-webkit-padding-start"]) + + parseFloat(e["-webkit-margin-start"])), + (n = n.parentElement)); + } + return t; +} +function extendElementBeyondTextColumn(e, t, n) { + (e.classList.add("extendsBeyondTextColumn"), + e.style && + (e.style.setProperty("width", t + "px"), + e.style.setProperty( + "-webkit-margin-start", + (n - t) / 2 - + leadingMarginAndPaddingAppliedToElementFromAncestors(e) + + "px", + ))); +} +function removeAllZeroWidthSpace() { + document.querySelectorAll("*").forEach((e) => { + e.childNodes.forEach((e) => { + e.nodeType === Node.TEXT_NODE && + (e.textContent = e.textContent.replace(/\u200B/g, "")); + }); + }); +} +function markWithZeroWidthSpaceDelimiterIfNeeded(e) { + if (!e) return; + let t = "\u200b", + n = document.createElement("p"); + ((n.innerText = t), + (n.style.height = "0px"), + (n.style.width = "0px"), + (n.style.margin = "0px")); + let i = document.createElement("p"); + ((i.innerText = t), + (i.style.height = "0px"), + (i.style.width = "0px"), + (i.style.margin = "0px")); + let o = e.firstChild, + l = e.lastChild; + (o && "\u200b" != o.innerText && e.insertBefore(n, o), + l && "\u200b" != l.innerText && e.appendChild(i)); +} +function containsAssistantContent() { + return ReaderController.hasAssistantContent; +} +function shouldShowAssistantSidebar() { + let e = window.innerWidth, + t = e - document.getElementById("article").offsetWidth, + n = document.getElementById("assistant-container").offsetWidth; + return ReaderJS._canShowAssistantSidebar() && e > 1e3 && t > n + 100; +} +function layoutAssistantContent() { + let e = document.getElementById("sidebarButton"), + t = document.getElementById("assistant-container"), + n = window.innerWidth, + i = document.getElementById("article"), + o = document.getElementById("summary-collapsible"), + l = document.getElementById("summary-collapsedContent"), + r = document.getElementById("tableOfContentsInsideArticleHeader"), + a = document.getElementById("tableOfContentsInsideArticle-list"), + s = document.getElementById("tableOfContents-container"), + d = document.getElementById("summary-container"), + c = document.getElementById("innerAssistantContainer"), + m = null != o, + u = null != a, + g = document.getElementById("onDeviceSummaryButton"), + h = null != g && null != g, + p = ReaderController.isShowingOnDeviceSummary; + if ( + ((t.style.display = "inline-block"), + (t.style.height = "100%"), + (t.style.padding = "50 px"), + (t.style.minWidth = "300px"), + (t.style.overflowY = "auto"), + (t.style.overflowX = "hidden"), + (t.style.position = "fixed"), + (t.style.zIndex = "1"), + (i.style.zIndex = "2"), + h && m && "none" != g.style.display && (g.style.display = "none"), + markWithZeroWidthSpaceDelimiterIfNeeded(t), + markWithZeroWidthSpaceDelimiterIfNeeded(c), + shouldShowAssistantSidebar() && (u || (m && !p))) + ) { + if ( + ((e.style.display = "block"), + (e.style.right = "0px"), + (e.style.top = "0px"), + (e.style.zIndex = "3"), + (e.style.position = "fixed"), + (e.style.display = "block"), + (e.style.paddingLeft = "1.25em"), + (e.style.paddingRight = "1em"), + m && !p && ((o.style.display = "none"), (l.style.display = "none")), + u && ((a.style.display = "none"), (r.style.display = "none")), + (c.style.display = "none"), + "true" === e.getAttribute("data-isHidingSidebar")) + ) + return ( + (t.style.right = "-400px"), + void (i.style.left = (n - i.offsetWidth) / 2 + "px") + ); + ((i.style.position = "absolute"), + (i.style.left = (n - t.offsetWidth - i.offsetWidth) / 2 + "px"), + (t.style.right = "0px"), + (t.style.display = "inline-block"), + m && !p && (d.style.display = "block"), + u && (s.style.display = "block"), + m && !p + ? (d.style.paddingTop = "0.75em") + : u && (s.style.paddingTop = "0.75em")); + } else + (e && (e.style.display = "none"), + (i.style.position = "static"), + (i.style.left = (n - i.offsetWidth) / 2 + "px"), + (t.style.display = "none"), + c && (c.style.display = "block"), + m && + ((o.style.display = "block"), + (l.style.display = "block"), + ReaderController.summaryNeedsLayout && + (document + .getElementById("summary-collapsible") + .classList.toggle("expandedContent"), + (l.style.maxHeight = l.scrollHeight + "px"), + (l.style.paddingBottom = "1.125em"), + (ReaderController.summaryNeedsLayout = !1)), + l.style.maxHeight && (l.style.maxHeight = l.scrollHeight + "px")), + u && + ((r.style.display = "block"), + (a.style.display = "block"), + a.style.maxHeight && (a.style.maxHeight = a.scrollHeight + "px")), + (s.style.display = "none"), + (d.style.display = "none")); +} +function monitorMouseDownForPotentialDeactivation(e) { + lastMouseDownWasOutsideOfPaper = + e && + ReaderAppearanceJS.usesPaperAppearance() && + !document.getElementById("article").contains(e.target) && + !document.getElementById("assistant-container").contains(e.target); +} +function deactivateIfEventIsOutsideOfPaperContainer(e) { + let t = !1, + n = document.getElementById("sidebarButton"); + (n && (t = n.contains(e.target)), + lastMouseDownWasOutsideOfPaper && + e && + ReaderAppearanceJS.usesPaperAppearance() && + !document.getElementById("article").contains(e.target) && + !document.getElementById("assistant-container").contains(e.target) && + !t && + ReaderJSController.requestDeactivationFromUserAction()); +} +function makePromiseCancellable(e) { + const t = Promise.withResolvers(); + return { + promise: Promise.race([t.promise, e]), + cancel: function () { + t.reject(new Error("Cancelled")); + }, + }; +} +function updatePageNumbers() { + let e = document.getElementsByClassName("page-number"), + t = e.length, + n = ReaderJS.isLoadingNextPage(); + for (let i = 0; i < t; ++i) + e[i].textContent = n + ? getLocalizedString("Page %@").format(i + 1) + : getLocalizedString("Page %@ of %@").format(i + 1, t); +} +function incomingPagePlaceholder() { + return document.getElementById("incoming-page-placeholder"); +} +function addIncomingPagePlaceholder(e) { + let t = document.createElement("div"); + ((t.className = "page"), (t.id = "incoming-page-placeholder")); + let n = document.createElement("div"); + n.id = "incoming-page-corner"; + let i = document.createElement("div"); + ((i.id = "incoming-page-text"), + (i.innerText = getLocalizedString( + e + ? "Loading Next Page\u2026" + : "Connect to the internet to view remaining pages.", + )), + n.appendChild(i), + t.appendChild(n), + document.getElementById("article").appendChild(t)); +} +function removeIncomingPagePlaceholder() { + let e = incomingPagePlaceholder(); + e.parentNode.removeChild(e); +} +function nextPageContainer() { + return document.getElementById("next-page-container"); +} +function getLocalizedString(e) { + let t = localizedStrings[e]; + return t || e; +} +function nextPageLoadComplete(e) { + if ( + (isReaderViewInSeparateProcess || + nextPageContainer().removeEventListener("load", nextPageLoadComplete, !1), + ReaderJS.pageNumber++, + ReaderJS.readerOperationMode == ReaderOperationMode.OffscreenFetching) + ) { + let e = ReaderJS.pageURLs[ReaderJS.pageURLs.length - 1]; + ReaderJSController.nextPageLoadComplete( + ReaderJS.pageNumber, + e, + "next-page-container", + ); + } + let t; + isReaderViewInSeparateProcess + ? (t = new Article(e)) + : (ReaderJSController.prepareNextPageFrame("next-page-container"), + (t = ReaderJSController.nextPageArticleFinder()), + (t.pageNumber = ReaderJS.pageNumber), + (t.suggestedRouteToArticle = ReaderJS.routeToArticle), + (t.previouslyDiscoveredPageURLStrings = ReaderJS.pageURLs)); + let n = t.adoptableArticle(); + (n && + (ReaderJS.createPageFromNode(n), + (ReaderJS.routeToArticle = t.routeToArticleNode())), + isReaderViewInSeparateProcess + ? (fetchNextPageArticlePromiseWithCanceller = null) + : (nextPageContainer().removeAttribute("src"), + ReaderJSController.clearNextPageArticleFinder()), + ReaderJS.canLoadNextPage() + ? ReaderJS.setNextPageURL(t.nextPageURL()) + : ReaderJS.setCachedNextPageURL(t.nextPageURL()), + updatePageNumbers(), + restoreInitialArticleScrollPositionIfPossible(), + ReaderJS.isLoadingNextPage() || ReaderJS.doneLoadingAllPages()); +} +function firstContentElementAfterTopOfViewport() { + let e, + t = Number.MAX_VALUE; + const n = window.innerWidth / 2; + for (let i = 0; i <= 10; ++i) { + const o = document + .elementFromPoint(n, 4 * i) + .closest("[data-reader-unique-id]"); + if (!o) continue; + const l = o.offsetHeight; + l < t && ((e = o), (t = l)); + } + if (e) return e; + let i = articleTitleElement(); + if (!i) return null; + do { + if (i.getBoundingClientRect().bottom >= 0) return i; + } while ((i = nextReaderContentElement(i))); + return null; +} +function setConfiguration(e) { + ReaderAppearanceJS.applyConfiguration(e); +} +function setReaderIsActive(e) { + ReaderJS.setReaderIsActive(e); +} +function setArticleLocale(e) { + ((document.getElementById("article").style.webkitLocale = `'${e}'`), + ReaderAppearanceJS.applyConfiguration(ReaderAppearanceJS.configuration)); +} +function cleanUpTableOfContents(e, t, n, i) { + if (0 == e) return null; + t.length; + for (var o = t.length - 1; o >= 0; --o) { + if (1 == e) { + const e = + decodeURIComponent(t[o]).replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + + "\\s*" + + decodeURIComponent(i[o]).replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + if (new RegExp(e).test(document.body.textContent)) continue; + } + (2 == e && document.body.textContent.includes(decodeURIComponent(i[o]))) || + (t.splice(o, 1), i.splice(o, 1), n.splice(o, 1)); + } + return t.length < 2 ? null : [t, n, i]; +} +function setTableOfContentsWith(e, t, n, i, o, l) { + const r = cleanUpTableOfContents(l, n, i, o); + if (!r) return; + [n, i, o] = r; + let a = document.createElement("button"); + ((a.id = "tableOfContentsInsideArticleHeader"), + a.classList.toggle("collapsible"), + a.classList.toggle("vision", isPlatformVision), + a.classList.toggle("eligible-for-border-corner", isPlatformVision)); + articleTitleContainer(); + document.getElementById("innerAssistantContainer").appendChild(a); + let s = + ' ', + d = document.createElement("ol"); + ((d.id = "tableOfContentsInsideArticle-list"), + d.classList.toggle("collapsedContent"), + (a.innerHTML = s + " " + e), + a.parentNode.insertBefore(d, a.nextSibling), + (d.style.display = "none"), + isPlatformVision && (a.style.backgroundColor = "#00000001")); + let c = 1.4 + 0.45 * Math.floor(Math.log10(n.length)) + "em"; + for (var m = 0; m < n.length; ++m) { + let e = document.createElement("li"); + (e.classList.toggle("innerTableOfContents-listItem"), + (e.id = "item" + n[m]), + e.setAttribute("toc-item-index", m), + e.addEventListener("click", function () { + ReaderJSController.reportReaderEvent( + ReaderEventType.ClickOnTableOfContentsLink, + { + index: parseInt(e.getAttribute("toc-item-index")), + length: n.length, + }, + ); + })); + var u = document.createElement("a"); + (1 == l + ? (u.href = t + "#:~:text=" + n[m] + ",-" + o[m]) + : 2 == l && (u.href = t + "#:~:text=" + o[m]), + (u.textContent = decodeURIComponent(n[m])), + (e.style.marginLeft = c), + e.appendChild(u), + document + .getElementById("tableOfContentsInsideArticle-list") + .appendChild(e)); + } + (a.addEventListener("click", function () { + const e = a.classList.toggle("expandedContent"); + (d.style.maxHeight + ? ((d.style.maxHeight = null), + (d.style.marginBottom = "0px"), + d.classList.toggle("eligible-for-border-corner", !1), + isPlatformVision && + setTimeout(() => { + ((d.style.borderTop = null), (d.style.paddingTop = null)); + }, 200)) + : ((d.style.maxHeight = d.scrollHeight + "px"), + (d.style.marginBottom = "0.75em"), + d.classList.toggle("eligible-for-border-corner", isPlatformVision), + isPlatformVision && + ((d.style.borderTop = "0.1em solid var(--separator-color)"), + (d.style.paddingTop = "1em"))), + ReaderJSController.reportReaderEvent( + ReaderEventType.ClickOnTableOfContentsHeader, + { expanded: e }, + )); + }), + (tableOfContentslistItemMarginLeft = + 1.4 + 0.45 * Math.floor(Math.log10(n.length)) + "em"), + (document.getElementById("tableOfContents-header").innerHTML = + s + " " + e)); + for (m = 0; m < n.length; ++m) { + let e = document.createElement("li"); + e.id = "ToCItem" + n[m]; + var g = document.createElement("a"); + (1 == l + ? (g.href = t + "#:~:text=" + n[m] + ",-" + o[m]) + : 2 == l && (g.href = t + "#:~:text=" + o[m]), + (g.textContent = decodeURIComponent(n[m])), + (e.style.marginLeft = tableOfContentslistItemMarginLeft), + e.appendChild(g), + e.setAttribute("toc-item-index", m), + e.addEventListener("click", function () { + ReaderJSController.reportReaderEvent( + ReaderEventType.ClickOnTableOfContentsLink, + { + index: parseInt(e.getAttribute("toc-item-index")), + length: n.length, + }, + ); + }), + document.getElementById("tableOfContents-list").appendChild(e)); + } + ReaderJSController.reportReaderEvent(ReaderEventType.SetTableOfContents, { + length: n.length, + }); +} +function setSummaryTextWith(e, t, n, i) { + let o = + '', + l = document.getElementById("innerAssistantContainer"), + r = document.getElementById("summary-collapsible"), + a = document.getElementById("summary-collapsible-text-id-1"); + (a || + ((a = document.createElement("p")), + (a.id = "summary-collapsible-text-id-1"), + a.classList.toggle("vision", isPlatformVision)), + n + ? ((a.style.opacity = "0.5"), + (a.style.visibility = "hidden"), + a.classList.add("system")) + : a.classList.remove("system"), + (a.innerText = e)); + var s = "clock" === i, + d = "shield" === i, + c = s || d || "localized-error" === i; + if (s || d) { + document.createElement("attributionIcon"); + let e = s + ? '' + : ''; + a.innerHTML = e + a.innerHTML; + } + if ( + ((a.style.textAlign = c ? "initial" : "inherit"), + (a.tabIndex = -1), + (a.style.outline = "none"), + setTimeout(() => { + a.focus(); + }, 0), + !r) + ) { + ((r = document.createElement("button")), + r.classList.toggle("collapsible"), + r.classList.toggle("vision", isPlatformVision), + r.classList.toggle("eligible-for-border-corner", isPlatformVision), + (r.id = "summary-collapsible"), + (r.innerHTML = o + " " + t), + isPlatformVision && (r.style.backgroundColor = "#00000001"), + l.appendChild(r)); + let e = document.createElement("div"); + ((e.id = "summary-collapsedContent"), + e.appendChild(a), + e.classList.toggle("collapsedContent"), + e.classList.toggle("vision", isPlatformVision), + l.appendChild(e), + r.parentNode.insertBefore(e, r.nextSibling), + r.addEventListener("click", function (t) { + const n = r.classList.toggle("expandedContent"); + ((e.style.overflow = "auto"), + e.style.maxHeight + ? ((e.style.maxHeight = null), + (e.style.marginBottom = "0px"), + e.classList.toggle("eligible-for-border-corner", !1)) + : ((e.style.maxHeight = e.scrollHeight + "px"), + (e.style.marginBottom = "12px"), + e.classList.toggle( + "eligible-for-border-corner", + isPlatformVision, + )), + t.preventDefault(), + ReaderJSController.reportReaderEvent( + ReaderEventType.ClickOnSummaryHeader, + { expanded: n }, + )); + })); + } + let m = document.getElementById("summary-collapsedContent"); + m && m.appendChild(a); + let u = document.getElementById("summary-attribution"); + (u || + !i || + s || + d || + ((u = document.createElement("div")), + (u.id = "summary-attribution"), + (u.innerHTML = `${i}`), + m.appendChild(u)), + (document.getElementById("sidebar-summary-text-id-1").innerText = e), + (document.getElementById("summary-header").innerHTML = o + " " + t)); +} +function updateSummaryTextVisibility(e) { + document.getElementById("summary-collapsible-text-id-1").style.visibility = e + ? "visible" + : "hidden"; +} +function insertSummaryTextPlaceholder() { + const e = + (document.getElementById("summary-collapsible-text-id-1").clientWidth * + 2.5) / + 9; + (setSummaryTextWith( + "\udbc2\udfb7".repeat(e), + getLocalizedString("Summary"), + !0, + ), + layoutAssistantContent()); +} +function setArticleSummary(e, t, n, i, o, l, r, a, s) { + let d = null != e && e.length > 0, + c = null != o && o.length > 0; + if (!d && !c) return; + removeAllZeroWidthSpace(); + let m = document.getElementById("innerAssistantContainer"); + m || + ((m = document.createElement("div")), + (m.id = "innerAssistantContainer"), + (m.style.display = "none")); + let u = articleTitleContainer(); + u.parentNode.insertBefore(m, u.nextSibling); + let g = document.getElementById("article"); + ((g.style.left = (window.innerWidth - g.offsetWidth) / 2 + "px"), + (ReaderController.hasAssistantContent = !0)); + let h = document.getElementById("summary-collapsible-text-id-1"); + d && + (h && (h.style.opacity = "1"), + setSummaryTextWith(e, t, !1, s), + "true" != m.getAttribute("showedSummary") && + (ReaderJSController.reportReaderEvent(ReaderEventType.SetSummary, {}), + m.setAttribute("showedSummary", !0))); + let p = document.getElementById("tableOfContentsInsideArticle-list"), + f = document.getElementById("tableOfContents-list"), + C = f && f.children.length; + (!c || p || C || setTableOfContentsWith(n, i, o, l, r, a), + document.getElementById("sidebarButton") || setSidebarButton(), + layoutAssistantContent()); +} +function updateArticleLayout() { + ReaderAppearanceJS.layOutElements(); +} +function setSidebarButton() { + let e = document.getElementById("assistant-container"), + t = document.createElementNS("http://www.w3.org/2000/svg", "svg"); + (t.setAttribute("width", "1.5em"), + t.setAttribute("height", "1.5em"), + t.setAttribute("viewbox", "0 0 24 24"), + t.setAttribute("fill", "#000000"), + t.setAttribute("xmlns", "http://www.w3.org/2000/svg")); + let n = document.createElementNS("http://www.w3.org/2000/svg", "path"); + (n.setAttribute( + "d", + "M3.06641 17.998L19.9609 17.998C22.0117 17.998 23.0273 16.9824 23.0273 14.9707L23.0273 3.04688C23.0273 1.03516 22.0117 0.0195312 19.9609 0.0195312L3.06641 0.0195312C1.02539 0.0195312 0 1.02539 0 3.04688L0 14.9707C0 16.9922 1.02539 17.998 3.06641 17.998ZM3.08594 16.4258C2.10938 16.4258 1.57227 15.9082 1.57227 14.8926L1.57227 3.125C1.57227 2.10938 2.10938 1.5918 3.08594 1.5918L19.9414 1.5918C20.9082 1.5918 21.4551 2.10938 21.4551 3.125L21.4551 14.8926C21.4551 15.9082 20.9082 16.4258 19.9414 16.4258ZM14.082 16.7285L15.6152 16.7285L15.6152 1.29883L14.082 1.29883ZM17.4902 5.21484L19.5801 5.21484C19.8828 5.21484 20.1367 4.95117 20.1367 4.66797C20.1367 4.375 19.8828 4.12109 19.5801 4.12109L17.4902 4.12109C17.1973 4.12109 16.9336 4.375 16.9336 4.66797C16.9336 4.95117 17.1973 5.21484 17.4902 5.21484ZM17.4902 7.74414L19.5801 7.74414C19.8828 7.74414 20.1367 7.48047 20.1367 7.1875C20.1367 6.89453 19.8828 6.65039 19.5801 6.65039L17.4902 6.65039C17.1973 6.65039 16.9336 6.89453 16.9336 7.1875C16.9336 7.48047 17.1973 7.74414 17.4902 7.74414ZM17.4902 10.2637L19.5801 10.2637C19.8828 10.2637 20.1367 10.0195 20.1367 9.72656C20.1367 9.43359 19.8828 9.17969 19.5801 9.17969L17.4902 9.17969C17.1973 9.17969 16.9336 9.43359 16.9336 9.72656C16.9336 10.0195 17.1973 10.2637 17.4902 10.2637Z", + ), + n.setAttribute("fill", "var(--body-font-color)"), + t.appendChild(n)); + let i = t; + (isPlatformVision && + (t.setAttribute("width", "24px"), + t.setAttribute("height", "24px"), + (i = document.createElement("button")), + (i.style.borderStyle = "none"), + (i.style.borderRadius = "8px"), + (i.style.backgroundColor = "#00000001"), + (i.style.paddingTop = "0.8em"), + i.appendChild(t)), + (i.id = "sidebarButton"), + i.setAttribute("data-isHidingSidebar", "false"), + i.addEventListener("click", function () { + let e = "true" === i.getAttribute("data-isHidingSidebar"); + (i.setAttribute("data-isHidingSidebar", (!e).toString()), + ReaderJSController.reportReaderEvent( + ReaderEventType.ClickOnSideBarButton, + { expanded: e }, + ), + layoutAssistantContent()); + }), + e.parentNode.appendChild(i)); +} +function resetToSummarizeButton() { + let e = document.getElementById("onDeviceSummaryButton"), + t = document.getElementById("summary-collapsible"), + n = document.getElementById("summary-collapsedContent"); + (n.parentNode.removeChild(n), + t && t.parentNode.removeChild(t), + e && (e.classList.remove("hiddenButton"), (e.style.display = "block"))); + let i = document.getElementById("innerAssistantContainer"); + i && i.remove(); +} +function setOnDeviceSummaryButtonWithTitle(e) { + let t = document.getElementById("summary-collapsible"), + n = document.getElementById("summary-collapsible-text-id-1"), + i = n && n.innerText.includes("\udbc2\udfb7"), + o = n && n.innerText.length; + if (t && o && !i) return; + let l = document.getElementById("onDeviceSummaryButton"); + if (i || (!o && t)) return void resetToSummarizeButton(); + if (null != l && null != l) + return ( + l.classList.remove("hiddenButton"), + void (l.style.display = "block") + ); + ((l = document.createElement("button")), + removeAllZeroWidthSpace(), + (l.id = "onDeviceSummaryButton")); + let r = + ''; + l.innerHTML = r + " " + e; + let a = articleTitleContainer(); + a.parentNode.insertBefore(l, a.nextSibling); + let s = "\u200b", + d = document.createElement("p"); + ((d.innerText = s), + (d.style.height = "0px"), + (d.style.width = "0px"), + (d.style.margin = "0px")); + let c = document.createElement("p"); + ((c.innerText = s), + (c.style.height = "0px"), + (c.style.width = "0px"), + (c.style.margin = "0px"), + l.parentNode.insertBefore(d, l), + l.parentNode.insertBefore(c, l.nextSibling), + l.addEventListener("click", function (e) { + (l.classList.add("hiddenButton"), + showOnDeviceSummaryPlaceholderWithTitle(), + setSummaryTextWith(" ", getLocalizedString("Summary")), + layoutAssistantContent(), + ReaderJSController.requestOnDeviceSummary(), + e.preventDefault()); + })); +} +function showOnDeviceSummaryPlaceholderWithTitle() { + if (document.getElementById("first-placeholder-line")) + return void resetToSummarizeButton(); + let e = document.createElement("button"); + (e.classList.toggle("collapsible"), + e.classList.toggle("vision", isPlatformVision), + e.classList.toggle("eligible-for-border-corner", isPlatformVision), + (e.id = "summary-collapsible")); + let t = + ''; + ((e.innerHTML = t + " \u200b" + getLocalizedString("Summary") + "\u200b"), + isPlatformVision && (e.style.backgroundColor = "#00000001")); + let n = document.createElement("div"); + (n.classList.toggle("shimmer-container"), + (n.id = "summary-collapsedContent"), + n.classList.toggle("collapsedContent"), + n.classList.toggle("vision", isPlatformVision), + n.classList.toggle("eligible-for-border-corner", isPlatformVision), + (n.style.overflow = "visible")); + let i = document.getElementById("innerAssistantContainer"); + if (!i) { + ((i = document.createElement("div")), + (i.id = "innerAssistantContainer"), + (i.style.display = "none")); + let e = articleTitleContainer(); + e.parentNode.insertBefore(i, e.nextSibling); + } + (i.appendChild(e), + i.appendChild(n), + (i.style.display = "block"), + (i.style.opacity = "0"), + i.offsetWidth, + i.offsetHeight, + (i.style.opacity = "1"), + (ReaderController.isShowingOnDeviceSummary = !0), + e.addEventListener("click", function () { + const t = e.classList.toggle("expandedContent"); + ((n.style.overflow = "auto"), + n.style.maxHeight + ? ((n.style.maxHeight = null), + (n.style.marginBottom = "0px"), + n.classList.toggle("eligible-for-border-corner", !1)) + : ((n.style.maxHeight = n.scrollHeight + "px"), + (n.style.marginBottom = "0.75em"), + n.classList.toggle("eligible-for-border-corner", isPlatformVision)), + ReaderJSController.reportReaderEvent( + ReaderEventType.ClickOnSummaryHeader, + { expanded: t }, + )); + }), + e.classList.toggle("expandedContent"), + (n.style.maxHeight = n.scrollHeight + "px"), + (n.style.marginBottom = "0.75em")); +} +function handleVisibilityChange() { + ReaderJS.setDocumentIsVisible(!document.hidden); +} +const LoadNextPageDelay = 250, + MaxNumberOfNextPagesToLoad = 80, + ReaderOperationMode = { Normal: 0, OffscreenFetching: 1, ArchiveViewing: 2 }, + ReaderEventType = { + SetSummary: 0, + SetTableOfContents: 1, + ClickOnSummaryHeader: 2, + ClickOnTableOfContentsHeader: 3, + ClickOnTableOfContentsLink: 4, + ClickOnSideBarButton: 5, + }, + LoadingMode = { Normal: 0, Reload: 1 }, + DelayBeforeRestoringScrollPositionInMs = 1e3; +String.prototype.format = function () { + let e = this.split("%@"); + for (let t = 0, n = arguments.length; t < n; ++t) + e.splice(2 * t + 1, 0, arguments[t].toString()); + return e.join(""); +}; +const debounceTimeoutSymbol = Symbol("debounce-timeout"), + debounceSoonProxySymbol = Symbol("debounce-soon-proxy"); +(Object.defineProperty(Object.prototype, "debounce", { + value(e) { + return new Proxy(this, { + get: + (t, n) => + (...i) => { + let o = t[n]; + o[debounceTimeoutSymbol] && clearTimeout(o[debounceTimeoutSymbol]); + let l = () => { + ((o[debounceTimeoutSymbol] = void 0), o.apply(t, i)); + }; + o[debounceTimeoutSymbol] = setTimeout(l, e); + }, + }); + }, +}), + Object.defineProperty(Function.prototype, "cancelDebounce", { + value() { + this[debounceTimeoutSymbol] && + (clearTimeout(this[debounceTimeoutSymbol]), + (this[debounceTimeoutSymbol] = void 0)); + }, + })); +const AnimationTerminationCondition = { + Interrupted: 0, + CompletedSuccessfully: 1, +}; +((AppleAnimator = function (e, t, n) { + ((this.startTime = 0), + (this.duration = e), + (this.interval = t), + (this.animations = []), + (this.animationFinishedCallback = n), + (this.currentFrameRequestID = null), + (this._firstTime = !0)); + let i = this; + this.animate = function () { + function e(e, t, n) { + return e < t ? t : e > n ? n : e; + } + let t, + n, + o, + l = new Date().getTime(), + r = i.duration; + ((t = e(l - i.startTime, 0, r)), + (l = t / r), + (n = 0.5 - 0.5 * Math.cos(Math.PI * l)), + (o = t >= r)); + let a = i.animations, + s = a.length, + d = i._firstTime; + for (let e = 0; e < s; ++e) a[e].doFrame(i, n, d, o, l); + o + ? i.stop(AnimationTerminationCondition.CompletedSuccessfully) + : ((i._firstTime = !1), + (this.currentFrameRequestID = requestAnimationFrame(i.animate))); + }; +}), + (AppleAnimator.prototype = { + start: function (e) { + let t = new Date().getTime(), + n = this.interval; + ((this.startTime = t - n), + e && (this.startTime += e), + (this.currentFrameRequestID = requestAnimationFrame(this.animate))); + }, + stop: function (e) { + (this.animationFinishedCallback && this.animationFinishedCallback(e), + this.currentFrameRequestID && + cancelAnimationFrame(this.currentFrameRequestID)); + }, + addAnimation: function (e) { + this.animations[this.animations.length] = e; + }, + }), + (AppleAnimation = function (e, t, n) { + ((this.from = e), + (this.to = t), + (this.callback = n), + (this.now = e), + (this.ease = 0), + (this.progress = 0)); + }), + (AppleAnimation.prototype = { + doFrame: function (e, t, n, i, o) { + let l; + ((l = i ? this.to : this.from + (this.to - this.from) * t), + (this.now = l), + (this.ease = t), + (this.progress = o), + this.callback(e, l, n, i)); + }, + })); +let isPlatformVision = !1; +const readerViewMessageHandler = + window.webkit?.messageHandlers?.SafariReaderView, + isReaderViewInSeparateProcess = !!readerViewMessageHandler; +class Article { + #e; + #t; + #n; + #i; + #o; + #l; + #r; + #a; + #s; + #d; + #c; + #m; + constructor(e) { + ((this.#o = e.articleIsLTR), + (this.#e = e.articleNode), + (this.#t = e.articleSubhead), + (this.#n = e.articleTitle), + (this.#i = e.articleTitleInformation), + (this.#l = e.baseURI), + (this.#r = e.documentURLString), + (this.#a = e.heightOfArticle), + (this.#s = e.metadataBlock), + (this.#d = e.multiPageContentElements), + (this.#c = e.nextPageURL), + (this.#m = e.routeToArticleNode)); + } + articleIsLTR() { + return this.#o; + } + articleNode() { + return this.#e; + } + adoptableArticle() { + return this.#e; + } + adoptableMetadataBlock() { + return this.#s; + } + adoptableMultiPageContentElements() { + return this.#d; + } + hasArticle() { + return !!this.#e; + } + articleSubhead() { + return this.#t; + } + articleTitle() { + return this.#n; + } + articleTitleInformation() { + return this.#i; + } + baseURI() { + return this.#l; + } + documentURLString() { + return this.#r; + } + heightOfArticleNodeOnOriginalPage() { + return this.#a; + } + nextPageURL() { + return this.#c; + } + routeToArticleNode() { + return this.#m; + } + scrollToElementWithUniqueID(e, t) { + return readerViewMessageHandler.postMessage({ + command: "callArticleFinder", + method: "scrollToElementWithUniqueID", + arguments: [e, t], + }); + } + uniqueIDAndScrollRatioOfElementPinnedToTop() { + return readerViewMessageHandler.postMessage({ + command: "callArticleFinder", + method: "uniqueIDAndScrollRatioOfElementPinnedToTop", + }); + } +} +let smoothScrollingAnimator, + smoothScrollingAnimation, + scrollEventIsSmoothScroll = !1; +window.addEventListener("scroll", articleScrolled, { + capture: !1, + passive: !0, +}); +const ContentAwareNavigationMarker = "reader-content-aware-navigation-marker", + ContentAwareNavigationAnimationDuration = 200, + ContentAwareNavigationElementOffset = 8, + ContentAwareNavigationDirection = { Up: 0, Down: 1 }; +((ContentAwareScroller = function () { + this._numberOfContentAwareScrollAnimationsInProgress = 0; +}), + (ContentAwareScroller.prototype = { + _contentElementAtTopOfViewport: function () { + let e = articleTitleElement(); + do { + if ( + !(e.getBoundingClientRect().top < ContentAwareNavigationElementOffset) + ) + return e; + } while ((e = nextReaderContentElement(e))); + return null; + }, + _clearTargetOfContentAwareScrolling: function () { + let e = document.getElementById(ContentAwareNavigationMarker); + e && e.removeAttribute("id"); + }, + _contentAwareScrollFinished: function (e) { + e === AnimationTerminationCondition.CompletedSuccessfully && + (--this._numberOfContentAwareScrollAnimationsInProgress, + this._numberOfContentAwareScrollAnimationsInProgress || + ((smoothScrollingAnimator = null), + (smoothScrollingAnimation = null), + this._clearTargetOfContentAwareScrolling())); + }, + scroll: function (e) { + let t, + n, + i = document.getElementById(ContentAwareNavigationMarker), + o = i || this._contentElementAtTopOfViewport(); + if (e === ContentAwareNavigationDirection.Down) { + let e = + Math.abs( + o.getBoundingClientRect().top - ContentAwareNavigationElementOffset, + ) < 1; + t = i || e ? nextReaderContentElement(o) : o; + } else if (e === ContentAwareNavigationDirection.Up) + if (o === articleTitleElement()) { + if (0 === document.scrollingElement.scrollTop) return; + n = -1 * document.scrollingElement.scrollTop; + } else t = previousReaderContentElement(o); + (t && + (n = + t.getBoundingClientRect().top - ContentAwareNavigationElementOffset), + ++this._numberOfContentAwareScrollAnimationsInProgress, + smoothScroll( + document.scrollingElement, + n, + ContentAwareNavigationAnimationDuration, + this._contentAwareScrollFinished.bind(this), + ), + this._clearTargetOfContentAwareScrolling(), + t && (t.id = ContentAwareNavigationMarker)); + }, + }), + window.addEventListener("keydown", keyDown, !1)); +let initialScrollPosition, + didRestoreInitialScrollPosition = !1; +const ThemeSettings = { + White: { cssClassName: "white" }, + Gray: { cssClassName: "gray", tweetTheme: "dark" }, + Sepia: { cssClassName: "sepia" }, + Night: { cssClassName: "night", tweetTheme: "dark" }, + }, + ShouldRestoreReadingPosition = { No: !1, Yes: !0 }, + MinTextZoomIndex = 0, + MaxTextZoomIndex = 11, + MaximumWidthOfImageOrVideoExtendingBeyondTextContainer = 1050, + ReaderConfigurationJavaScriptEnabledKey = "javaScriptEnabled"; +((ReaderAppearanceController = function () { + ((this._shouldUsePaperAppearance = function () { + const e = 70; + return this.articleWidth() + 2 * e < this.documentElementWidth(); + }), + (this._isOLEDDisplay = function () { + return !1; + }), + (this._tryApplyStaticConfiguration = function () { + return !1; + }), + (this._defaultFontFamilyName = "System"), + (this._defaultThemeName = "White"), + (this.configuration = {}), + (this._textSizeIndex = null), + (this._fontFamilyName = this._defaultFontFamilyName), + (this._themeName = this._defaultThemeName)); +}), + (ReaderAppearanceController.prototype = { + initialize: function () { + (this.applyConfiguration(ReaderJSController.initialConfiguration()), + this._isOLEDDisplay() + ? document.body.classList.add("oled") + : isPlatformVision && document.body.classList.add("vision")); + }, + applyConfiguration: function (e) { + if (this._tryApplyStaticConfiguration()) return void this.layOutContent(); + let t = this._locale(); + this.setLocale(t); + for (let n of [ + e.fontFamilyNameForLanguageTag[t], + e.defaultFontFamilyNameForLanguage[t], + "System", + ]) + if (n && this.setFontFamily(n)) break; + for (let t of [e.themeName, "White"]) if (t && this.setTheme(t)) break; + (this.setCurrentTextSizeIndex(e.fontSizeIndex, e.defaultFontSizeIndex), + (this.configuration = e), + this.layOutContent(), + containsAssistantContent() && layoutAssistantContent(), + (isPlatformVision = !!e.isPlatformVision)); + }, + articleWidth: function () { + return document.getElementById("article").getBoundingClientRect().width; + }, + _textColumnWidthInPoints: function () { + return parseFloat( + getComputedStyle(document.querySelector("#article .page")).width, + ); + }, + documentElementWidth: function () { + return document.documentElement.clientWidth; + }, + setCurrentTextSizeIndex: function (e, t) { + ((this._textSizeIndex = e), + (this._defaultTextSizeIndex = t), + this._rebuildDynamicStyleSheet()); + }, + currentFontCSSClassName: function () { + return this._currentFontSettings().cssClassName; + }, + currentFontCSSFontFamilyName: function () { + return this._currentFontSettings().fontFamilyName; + }, + currentFontUsesSystemFont: function () { + return this._currentFontSettings().usesSystemFont; + }, + _currentFontSettings: function () { + return fontSettings(this._fontFamilyName); + }, + setLocale: function (e) { + if (e === this._lastSetLocale) return; + let t = document.body.classList; + const n = "locale-"; + (t.remove(n + this._lastSetLocale), + t.add(n + e), + (this._lastSetLocale = e)); + }, + setFontFamily: function (e) { + let t = document.body, + n = fontSettings(e); + if (!n) return !1; + if (this._fontFamilyName) { + let e = fontSettings(this._fontFamilyName); + (t.classList.remove(e.cssClassName), + (t.style.fontFamily = null), + e.usesSystemFont && t.classList.remove("system")); + } + return ( + "function" == typeof ReaderJSController.makeFontAvailableIfNecessary && + ReaderJSController.makeFontAvailableIfNecessary(e), + t.classList.add(n.cssClassName), + n.fontFamilyName && (t.style.fontFamily = n.fontFamilyName), + n.usesSystemFont && t.classList.add("system"), + (this._fontFamilyName = e), + !0 + ); + }, + _theme: function () { + return ThemeSettings[this._themeName]; + }, + setTheme: function (e) { + let t = document.body, + n = ThemeSettings[e]; + return ( + !!n && + (t.classList.contains(n.cssClassName) || + (this._theme() && t.classList.remove(this._theme().cssClassName), + t.classList.add(n.cssClassName), + (this._themeName = e)), + !0) + ); + }, + usesPaperAppearance: function () { + return document.documentElement.classList.contains("paper"); + }, + usesSpatialAppearance: function () { + return document.body.classList.contains("spatial"); + }, + layOutContent: function (e = ShouldRestoreReadingPosition.Yes) { + document.querySelector("#article .page") && + (this._shouldUsePaperAppearance() + ? document.documentElement.classList.add("paper") + : document.documentElement.classList.remove("paper"), + this.layOutElements(), + e === ShouldRestoreReadingPosition.Yes && + ReadingPositionStabilizerJS.restorePosition()); + }, + layOutElements: function () { + (makeWideElementsScrollable(), + this._layOutImagesAndVideoElementsBeyondTextColumn(), + this._layOutElementsContainingTextBeyondTextColumn(), + this._layOutVideos(), + this._layOutMetadataBlock()); + }, + _layOutMetadataBlock: function () { + let e = document.querySelector(".metadata"); + if (!e) return; + let t = e.querySelector(".byline"), + n = e.querySelector(".date"); + if (!t || !n) return void e.classList.add("singleline"); + let i = 0; + for (let e of t.getClientRects()) i += e.width; + for (let e of n.getClientRects()) i += e.width; + i + 25 > this._textColumnWidthInPoints() + ? e.classList.remove("singleline") + : e.classList.add("singleline"); + }, + _layOutImagesAndVideoElementsBeyondTextColumn: function () { + let e = this.canLayOutContentMaintainingAspectRatioBeyondTextColumn(), + t = document.getElementById("article").querySelectorAll("img, video"); + for (let n of t) + this.setImageOrVideoShouldLayOutBeyondTextColumnIfAppropriate(n, e); + }, + _layOutElementsContainingTextBeyondTextColumn: function () { + const e = { PRE: !0, TABLE: !1 }, + t = 22; + let n = document.querySelectorAll(".scrollable pre, .scrollable table"); + for (let i of n) { + let n = i.parentElement; + for (let e = n; e; e = e.parentElement) + "BLOCKQUOTE" === e.tagName && e.classList.add("simple"); + stopExtendingElementBeyondTextColumn(n); + let o = i.scrollWidth, + l = this._textColumnWidthInPoints(); + if (o <= l) continue; + let r = getComputedStyle(document.querySelector(".page")), + a = 0; + if (e[i.tagName]) { + let e = + parseFloat(r["-webkit-padding-start"]) + + parseFloat(r["-webkit-margin-start"]); + a = Math.min(e, t); + } + extendElementBeyondTextColumn( + n, + Math.min(o, this._widthAvailableForLayout() - 2 * a), + l, + ); + } + }, + _layOutVideos: function () { + function e(e) { + return ( + e.src && + /^(.+\.)?(youtube(-nocookie)?|vimeo)\.com\.?$/.test( + urlFromString(e.src).hostname, + ) + ); + } + const t = 16 / 9; + let n, + i, + o = + ReaderAppearanceJS.canLayOutContentMaintainingAspectRatioBeyondTextColumn(); + for (let l of document + .getElementById("article") + .querySelectorAll("iframe")) { + const r = l.parentElement.classList.contains("iframe-wrapper"); + if (!r && !e(l)) continue; + let a; + if ( + (r + ? (a = l.parentElement) + : ((a = document.createElement("div")), + (a.className = "iframe-wrapper"), + l.nextSibling + ? l.parentNode.insertBefore(a, l.nextSibling) + : l.parentNode.appendChild(a), + a.appendChild(l)), + n || + (n = Math.min( + MaximumWidthOfImageOrVideoExtendingBeyondTextContainer, + this._widthAvailableForLayout(), + )), + i || (i = this._textColumnWidthInPoints()), + o && n > i) + ) { + ((a.style.height = n / t + "px"), + extendElementBeyondTextColumn(a, n, i), + (l.style.height = "100%")); + let e = this.usesPaperAppearance() ? 2 : 0; + l.style.width = n - e + "px"; + } else + (stopExtendingElementBeyondTextColumn(a), + (a.style.width = "100%"), + (a.style.height = i / t + "px")); + } + }, + canLayOutContentMaintainingAspectRatioBeyondTextColumn: function () { + const e = 700; + if (window.innerHeight >= e) return !0; + const t = 1.25; + return window.innerWidth / window.innerHeight <= t; + }, + setImageOrVideoShouldLayOutBeyondTextColumnIfAppropriate: function (e, t) { + if (t && !e.closest("blockquote, table, .float")) { + let t, + n = this._textColumnWidthInPoints(), + i = parseFloat(e.getAttribute("width")); + t = isNaN(i) ? e.naturalWidth : i; + let o = Math.min( + t, + Math.min( + MaximumWidthOfImageOrVideoExtendingBeyondTextContainer, + this._widthAvailableForLayout(), + ), + ); + if (o > n) return void extendElementBeyondTextColumn(e, o, n); + } + stopExtendingElementBeyondTextColumn(e); + }, + _widthAvailableForLayout: function () { + return this.usesPaperAppearance() && !this.usesSpatialAppearance() + ? this.articleWidth() + : this.documentElementWidth(); + }, + _rebuildDynamicStyleSheet: function () { + let e = document.getElementById("dynamic-article-content").sheet; + for (; e.cssRules.length; ) e.removeRule(0); + let t = this._currentFontSettings().fontSizes[this._textSizeIndex] + "px", + n = + this._currentFontSettings().fontSizes[this._defaultTextSizeIndex] + + "px", + i = this._currentFontSettings().lineHeights[this._textSizeIndex], + o = this._currentFontSettings().lineHeights[this._defaultTextSizeIndex]; + (e.insertRule( + ":root { --scaled-font-size:" + + t + + "; --scaled-line-height:" + + i + + "; --scaled-font-size-multiplier:calc(" + + t + + "/" + + n + + "); --scaled-line-height-multiplier:calc(" + + i + + "/" + + o + + "); }", + ), + e.insertRule( + "#article { font-size: var(--scaled-font-size); line-height: var(--scaled-line-height); }", + ), + e.insertRule( + "#assistant-container { font-size: var(--scaled-font-size); line-height: var(--scaled-line-height); }", + )); + }, + _locale: function () { + let e = document.getElementById("article").style.webkitLocale; + return e && e.length ? ('"' != e[0] ? e : e.substr(1, e.length - 2)) : ""; + }, + })); +let lastMouseDownWasOutsideOfPaper = !1; +((ReaderController = function () { + ((this.pageNumber = 1), + (this.pageURLs = []), + (this.articleIsLTR = !0), + (this.loadingNextPage = !1), + (this.loadingNextPageManuallyStopped = !1), + (this.cachedNextPageURL = null), + (this.lastKnownDocumentElementWidth = 0), + (this.cachedIframeURLMap = new Map()), + (this._canShowAssistantSidebar = function () { + return !0; + }), + (this._distanceFromBottomOfArticleToStartLoadingNextPage = function () { + return NaN; + }), + (this._clickingOutsideOfPaperRectangleDismissesReader = !1), + (this._shouldSkipActivationWhenPageLoads = function () { + return !1; + }), + (this._shouldConvertRelativeURLsToAbsoluteURLsWhenPrintingOrMailing = !1), + (this._deferSendingContentIsReadyForDisplay = !1), + (this._isJavaScriptEnabled = function () { + return !0; + }), + (this._readerIsActive = !0), + (this._documentIsVisible = !document.hidden)); +}), + (ReaderController.prototype = { + setOriginalURL: function (e) { + ((this.originalURL = e), + this.pageURLs.push(e), + (document.head.getElementsByTagName("base")[0].href = this.originalURL), + ReaderJSController.setArticleBaseURLString(e)); + }, + setNextPageURL: function (e) { + if ( + !e || + -1 !== this.pageURLs.indexOf(e) || + this.pageNumber + 1 === MaxNumberOfNextPagesToLoad + ) + return void this.setLoadingNextPage(!1); + let t; + (this.setLoadingNextPage(!0), + this.pageURLs.push(e), + (t = isReaderViewInSeparateProcess + ? () => { + ((fetchNextPageArticlePromiseWithCanceller = + makePromiseCancellable( + readerViewMessageHandler.postMessage({ + command: "fetchArticle", + url: e, + pageInformation: { + pageNumber: this.pageNumber + 1, + suggestedRouteToArticle: this.routeToArticle, + previouslyDiscoveredPageURLStrings: this.pageURLs, + }, + }), + )), + fetchNextPageArticlePromiseWithCanceller.promise.then( + nextPageLoadComplete, + )); + } + : () => { + (nextPageContainer().addEventListener( + "load", + () => { + nextPageLoadComplete(null); + }, + !1, + ), + (nextPageContainer().src = e)); + }), + this.readerOperationMode == ReaderOperationMode.OffscreenFetching + ? t() + : (this.nextPageLoadTimer = setTimeout(t, LoadNextPageDelay))); + }, + pauseLoadingNextPage: function () { + this.readerOperationMode == ReaderOperationMode.Normal && + (isReaderViewInSeparateProcess + ? (fetchNextPageArticlePromiseWithCanceller.cancel(), + (fetchNextPageArticlePromiseWithCanceller = null)) + : (nextPageContainer().removeEventListener( + "load", + nextPageLoadComplete, + !1, + ), + (nextPageContainer().src = null)), + this.cachedNextPageURL || + (this.cachedNextPageURL = this.pageURLs.pop()), + this.nextPageLoadTimer && clearTimeout(this.nextPageLoadTimer), + ReaderJSController.didChangeNextPageLoadingState(!1)); + }, + stopLoadingNextPage: function () { + (isReaderViewInSeparateProcess + ? (fetchNextPageArticlePromiseWithCanceller.cancel(), + (fetchNextPageArticlePromiseWithCanceller = null)) + : (nextPageContainer().removeEventListener( + "load", + nextPageLoadComplete, + !1, + ), + (nextPageContainer().src = null)), + this.nextPageLoadTimer && clearTimeout(this.nextPageLoadTimer), + this.isLoadingNextPage() && + (this.setLoadingNextPage(!1), + (this.loadingNextPageManuallyStopped = !0))); + }, + isLoadingNextPage: function () { + return this.loadingNextPage; + }, + setLoadingNextPage: function (e) { + this.loadingNextPage != e && + (e + ? addIncomingPagePlaceholder(window.navigator.onLine) + : removeIncomingPagePlaceholder(), + (this.loadingNextPage = e), + ReaderJSController.didChangeNextPageLoadingState(this.loadingNextPage)); + }, + doneLoadingAllPages: function () { + ReaderJSController.doneLoadingReaderPage(); + }, + loadSerializedArticle: function (e) { + const t = new Article(e); + ((ReaderJSController.originalArticleFinder = function () { + return t; + }), + this.loaded()); + }, + loaded: function () { + this.readerOperationMode = ReaderJSController.readerOperationMode(); + const e = ReaderJSController.originalArticleFinder(); + if (!e || this._shouldSkipActivationWhenPageLoads()) + return void ReaderJSController.deactivateNow(); + this.loadArticle(); + let t = ReaderJSController.cachedTopScrollOffset(); + (t > 0 + ? (document.scrollingElement.scrollTop = t) + : requestAnimationFrame(function () { + ReadingPositionStabilizerJS.applyScrollPositionFromOriginalPage(); + }), + ReadingPositionStabilizerJS.initialize(), + this._clickingOutsideOfPaperRectangleDismissesReader && + (document.documentElement.addEventListener( + "mousedown", + monitorMouseDownForPotentialDeactivation, + ), + document.documentElement.addEventListener( + "click", + deactivateIfEventIsOutsideOfPaperContainer, + )), + window.addEventListener("resize", this.windowDidResize.bind(this), !1)); + var n = "", + i = e.articleTitle(); + i && (n += i + " \n"); + var o = e.articleSubhead(); + o && (n += o + " \n"); + let l = n + e.adoptableArticle().textContent; + l = l.toString().replace(/(<([^>]+)>)/gi, ""); + let r = function () { + ReaderJSController.contentIsReadyForDisplay(l); + }; + this._deferSendingContentIsReadyForDisplay ? setTimeout(r, 0) : r(); + }, + windowDidResize: function () { + let e = ReaderAppearanceJS.documentElementWidth(); + e !== this.lastKnownDocumentElementWidth && + ((this.lastKnownDocumentElementWidth = e), + ReaderAppearanceJS.layOutContent(), + ReadingPositionStabilizerJS.windowDidResize(), + layoutAssistantContent()); + }, + loadArticle: function (e = LoadingMode.Normal) { + const t = ReaderJSController.originalArticleFinder(); + if ( + (isReaderViewInSeparateProcess || t.hasArticle() || t.articleNode(!0), + !t.hasArticle()) + ) + return ( + this.setOriginalURL(t.baseURI()), + void this.doneLoadingAllPages() + ); + ((this.routeToArticle = t.routeToArticleNode()), + (this.displayTitleInformation = t.articleTitleInformation()), + (this._snapshotOfArticleTitle = t.articleTitle()), + (this.displaySubhead = t.articleSubhead()), + (this.metadataElement = t.adoptableMetadataBlock()), + (this.articleIsLTR = t.articleIsLTR())); + const n = t.articleNode(); + this._heightOfArticleNodeOnOriginalPage = + n.getBoundingClientRect().height; + let i = t.adoptableArticle(); + this._snapshotOfAdoptableArticle = i.cloneNode(!0); + let o, + l = i.ownerDocument; + if ( + ((document.title = l.title), + this.setOriginalURL(l.baseURI), + this.readerOperationMode != ReaderOperationMode.ArchiveViewing) + ) { + if (this._isJavaScriptEnabled()) + ((o = t.nextPageURL()), this.setNextPageURL(o)); + else { + for (let e of i.querySelectorAll("iframe")) e.remove(); + this.stopLoadingNextPage(); + } + (e !== LoadingMode.Reload && ReaderAppearanceJS.initialize(), + this.createAssistantElements(), + this.createPageFromNode(i), + o || + (t + .adoptableMultiPageContentElements() + .forEach(this.createPageFromNode, this), + updatePageNumbers()), + this.isLoadingNextPage() || this.doneLoadingAllPages(), + e === LoadingMode.Reload && + setTimeout(function () { + ReadingPositionStabilizerJS.contentWasReloaded(); + }, 0)); + } else ReaderAppearanceJS.layOutContent(); + }, + reloadArticlePreservingScrollPositionIfArticleNodeContentHasChanged: + function () { + const e = ReaderJSController.originalArticleFinder(); + if (!e) return; + const t = e.documentURLString(), + n = 30; + for (const e of document.querySelectorAll("audio, video")) + if (mediaElementIsPlaying(e)) return; + const i = e.articleNode(); + if (!i) return; + if ( + i.getBoundingClientRect().height < + this._heightOfArticleNodeOnOriginalPage - n + ) + return; + if (this.originalURL !== t) return; + e.reset(); + const o = e.articleNode(); + if (i !== o && !o.contains(i)) return; + const l = e.adoptableArticle(); + if ( + this._adoptableArticlesAreUserVisiblyEquivalent( + this._snapshotOfAdoptableArticle, + l, + ) + ) + return; + const r = e.articleTitle(); + this._snapshotOfArticleTitle === r && + this.reloadArticlePreservingScrollPosition(); + }, + _adoptableArticlesAreUserVisiblyEquivalent: function (e, t) { + function n(e, t) { + let i = e.nodeType; + if (i !== t.nodeType) return !1; + switch (i) { + case Node.ELEMENT_NODE: + if (e.tagName !== t.tagName) return !1; + let n = e.attributes; + if (n.length !== t.attributes.length) return !1; + let i = t.attributes; + for (let e of n) + if ( + e.name !== READER_UNIQUE_ID_ATTRIBUTE_KEY && + e.value !== i[e.name].value + ) + return !1; + break; + case Node.TEXT_NODE: + case Node.COMMENT_NODE: + if (e.data !== t.data) return !1; + break; + default: + return !1; + } + let o = e.firstChild, + l = t.firstChild; + for (; o; ) { + if (!n(o, l)) return !1; + ((o = o.nextSibling), (l = l.nextSibling)); + } + return !l; + } + return n(e, t); + }, + reloadArticlePreservingScrollPosition: function () { + this._reloadArticleAndPreserveScrollPosition(!0); + }, + loadNewArticle: function () { + this._reloadArticleAndPreserveScrollPosition(!1); + }, + _reloadArticleAndPreserveScrollPosition: function (e) { + if (!ReaderJSController.originalArticleFinder()) + return void ReaderJSController.deactivateNow(); + ReadingPositionStabilizerJS.setTrackPosition(!1); + const [t, n] = [scrollX, scrollY], + [i, o] = + ReadingPositionStabilizerJS.uniqueIDAndScrollRatioOfElementPinnedToTop(); + let l = document.getElementById("article"); + for ( + l.style.minHeight = l.getBoundingClientRect().height + "px"; + l.childNodes.length >= 1; + ) + l.removeChild(l.firstChild); + if ( + (this.reinitialize(), + e || (document.scrollingElement.scrollTop = 0), + this.loadArticle(LoadingMode.Reload), + e) + ) { + let e; + (i && + (e = ReadingPositionStabilizerJS.tryToScrollToUniqueIDAndRatio(i, o)), + e || scrollTo(t, n)); + } + (ReadingPositionStabilizerJS.setTrackPosition(!0), + setTimeout(function () { + l.style.minHeight = null; + }, 0)); + }, + reinitialize: function () { + ((this.pageNumber = 1), + (this.pageURLs = []), + (this.articleIsLTR = !0), + (this.loadingNextPage = !1), + (this.loadingNextPageManuallyStopped = !1), + (this.routeToArticle = void 0), + (this.displayTitleInformation = void 0), + (this.displaySubhead = void 0), + (this.originalURL = void 0), + (this.nextPageLoadTimer = void 0), + (this.readerOperationMode = ReaderJSController.readerOperationMode()), + (this.cachedNextPageURL = null)); + }, + createAssistantElements: function () { + let e = document.createElement("div"); + ((e.id = "assistant-container"), (e.style.display = "none")); + let t = document.createElement("div"); + ((t.id = "summary-container"), (t.style.display = "none")); + let n = document.createElement("H3"); + ((n.id = "summary-header"), t.appendChild(n)); + let i = document.createElement("p"); + ((i.id = "sidebar-summary-text-id-1"), t.appendChild(i)); + let o = document.createElement("div"); + ((o.id = "tableOfContents-container"), (o.style.display = "none")); + let l = document.createElement("H3"); + ((l.id = "tableOfContents-header"), o.appendChild(l)); + let r = document.createElement("ol"); + ((r.id = "tableOfContents-list"), + o.appendChild(r), + e.appendChild(t), + e.appendChild(o), + document.body.appendChild(e)); + }, + createPageFromNode: function (e) { + let t = document.createElement("div"); + ((t.className = "page"), this.articleIsLTR || t.classList.add("rtl")); + let n = document.createElement("div"); + ((n.className = "page-number"), t.appendChild(n)); + let i = this.displayTitleInformation, + o = document.createElement("h1"); + if ( + ((o.className = "title"), + (o.textContent = i.titleText), + i.linkURL && i.linkIsForExternalPage) + ) { + let e = document.createElement("a"); + ((e.href = i.linkURL), + i.linkIsTargetBlank && e.setAttribute("target", "_blank"), + e.appendChild(o), + (o = e)); + } + if ( + (o.setAttribute(READER_UNIQUE_ID_ATTRIBUTE_KEY, READER_UNIQUE_ID_TITLE), + t.appendChild(o), + this.displaySubhead) + ) { + let e = document.createElement("h2"); + ((e.className = "subhead"), + (e.textContent = this.displaySubhead), + e.setAttribute( + READER_UNIQUE_ID_ATTRIBUTE_KEY, + READER_UNIQUE_ID_SUBHEAD, + ), + t.appendChild(e)); + } + if (this.metadataElement && this.metadataElement.innerText) { + let e = document.createElement("div"); + for (e.className = "metadata"; this.metadataElement.firstChild; ) + e.appendChild(this.metadataElement.firstChild); + t.appendChild(e); + } + let l = e.tagName; + if ("PRE" === l || "CODE" === l) t.appendChild(e); + else for (; e.firstChild; ) t.appendChild(e.firstChild); + (document + .getElementById("article") + .insertBefore(t, incomingPagePlaceholder()), + ReaderJS._isJavaScriptEnabled() && + ReaderJSController.replaceSimpleTweetsWithRichTweets( + this.optionsForTweetCreation(), + ), + ReaderAppearanceJS.layOutContent(ShouldRestoreReadingPosition.No), + updatePageNumbers(), + restoreInitialArticleScrollPositionIfPossible()); + for (let e of t.querySelectorAll("img")) + e.onload = function (e) { + let t = e.target; + (ReaderAppearanceJS.setImageOrVideoShouldLayOutBeyondTextColumnIfAppropriate( + t, + ReaderAppearanceJS.canLayOutContentMaintainingAspectRatioBeyondTextColumn(), + ), + (t.onload = null)); + }; + this._fixImageElementsWithinPictureElements(); + }, + optionsForTweetCreation: function () { + let e = { dnt: !0 }, + t = ReaderAppearanceJS._theme(); + return (t && t.tweetTheme && (e.theme = t.tweetTheme), e); + }, + removeAttribute: function (e, t) { + let n = e.querySelectorAll("[" + t + "]"); + for (let e of n) e.removeAttribute(t); + }, + preparePrintingMailingFrame: function () { + let e = this.printingMailingFrameElementId(), + t = document.getElementById(e); + (t && document.body.removeChild(t), + (t = this.sanitizedFullArticleFrame()), + (t.id = e)); + }, + sanitizedFullArticleFrame: function () { + let e = document.createElement("iframe"); + ((e.style.display = "none"), + (e.style.position = "absolute"), + document.body.appendChild(e)); + let t = e.contentDocument, + n = document.createElement("base"); + ((n.href = this.originalURL), t.head.appendChild(n)); + let i = document.createElement("div"); + i.className = "original-url"; + let o = document.createElement("a"); + ((o.href = this.originalURL), + (o.textContent = this.originalURL), + i.appendChild(document.createElement("br")), + i.appendChild(o), + i.appendChild(document.createElement("br")), + i.appendChild(document.createElement("br")), + t.body.appendChild(i), + t.body.appendChild(this.sanitizedFullArticle()), + t.head.appendChild(document.getElementById("print").cloneNode(!0))); + let l = t.createElement("title"); + return ((l.innerText = document.title), t.head.appendChild(l), e); + }, + getArticleHeadingElements: function () { + const e = ReaderJSController.originalArticleFinder(); + var t = {}; + let n = e.articleSubhead(); + n && (t.subheadline = n); + let i = e.adoptableMetadataBlock(); + return ( + i && + (t.articleMetadata = + plaintextVersionOfNodeAppendingNewlinesBetweenBlockElements(i)), + t + ); + }, + sanitizedFullArticle: function () { + let e = document.getElementById("article").cloneNode(!0); + e.removeAttribute("tabindex"); + const t = e.querySelectorAll(".title"); + for (let e = 1, n = t.length; e < n; ++e) t[e].remove(); + for (let t of e.querySelectorAll( + ".page-number, #incoming-page-placeholder, #onDeviceSummaryButton", + )) + t.remove(); + if ( + (prepareTweetsInPrintingMailingFrame(e), + this._shouldConvertRelativeURLsToAbsoluteURLsWhenPrintingOrMailing) + ) { + const t = /^http:\/\/|^https:\/\/|^data:/i; + let n = e.querySelectorAll("img, video, audio, source"); + for (let e of n) { + let n = e.getAttribute("src"); + t.test(n) || e.setAttribute("src", e.src); + } + } + for (let t of e.querySelectorAll(".extendsBeyondTextColumn")) + stopExtendingElementBeyondTextColumn(t); + for (let t of e.querySelectorAll(".delimeter")) t.innerText = "\u2022"; + e.classList.add(ReaderAppearanceJS.currentFontCSSClassName()); + let n = ReaderAppearanceJS.currentFontCSSFontFamilyName(); + (n && (e.style.fontFamily = n), + ReaderAppearanceJS.currentFontUsesSystemFont() && + e.classList.add("system"), + e.classList.add("exported")); + ReaderJSController.originalArticleFinder(); + for (let t of e.getElementsByTagName("*")) + t.removeAttribute(READER_UNIQUE_ID_ATTRIBUTE_KEY); + let i = document.getElementById("article-content").sheet.cssRules, + o = i.length; + for (let t = 0; t < o; ++t) { + let n = i[t].selectorText, + o = i[t].style; + if (!o) continue; + let l = o.cssText; + e.matches(n) && e.style && (e.style.cssText += l); + for (let t of e.querySelectorAll(n)) t.style && (t.style.cssText += l); + } + return e; + }, + printingMailingFrameElementId: function () { + return "printing-mailing-frame"; + }, + canLoadNextPage: function () { + if (this.readerOperationMode != ReaderOperationMode.Normal) return !0; + let e = document.querySelectorAll(".page"), + t = e[e.length - 1].getBoundingClientRect(), + n = this._distanceFromBottomOfArticleToStartLoadingNextPage(); + return !!isNaN(n) || !(t.bottom - window.scrollY > n); + }, + setCachedNextPageURL: function (e) { + e + ? ((this.cachedNextPageURL = e), + ReaderJSController.didChangeNextPageLoadingState(!1)) + : this.setNextPageURL(e); + }, + loadNextPage: function () { + null != this.cachedNextPageURL && + (this.setNextPageURL(this.cachedNextPageURL), + (this.cachedNextPageURL = null), + ReaderJSController.didChangeNextPageLoadingState(!0)); + }, + resumeCachedNextPageLoadIfNecessary: function () { + ReaderJS.cachedNextPageURL && + ReaderJS.canLoadNextPage() && + ReaderJS.loadNextPage(); + }, + setDocumentIsVisible: function (e) { + ((this._documentIsVisible = e), + this._readerForegroundednessMayHaveChanged(), + e && ReaderAppearanceJS.layOutContent()); + }, + setReaderIsActive: function (e) { + ((this._readerIsActive = e), + this._readerForegroundednessMayHaveChanged()); + }, + readerIsForeground: function () { + return this._documentIsVisible && this._readerIsActive; + }, + _readerForegroundednessMayHaveChanged: function () { + let e = this.readerIsForeground(); + this._readerIsForeground !== e && + (e ? this.readerWillBecomeVisible() : this.readerWillEnterBackground(), + ReadingPositionStabilizerJS.setTrackPosition(e), + (this._readerIsForeground = e)); + }, + readerWillBecomeVisible: function () { + (document.body.classList.remove("cached"), + this.resumeCachedNextPageLoadIfNecessary()); + for (let e of document.querySelectorAll("iframe")) { + let t = this.cachedIframeURLMap.get(e); + t && ((e.src = t), this.cachedIframeURLMap.delete(e)); + } + this._readerIsActive && + requestAnimationFrame(function () { + ReadingPositionStabilizerJS.applyScrollPositionFromOriginalPage(); + }); + }, + readerWillEnterBackground: function () { + (ReaderJS.isLoadingNextPage() || + ReaderJS.loadingNextPageManuallyStopped) && + this.pauseLoadingNextPage(); + for (let e of document.querySelectorAll("audio")) e.pause(); + for (let e of document.querySelectorAll("video")) + e.hasAttribute("data-reader-silent-looped-animation") || e.pause(); + for (let e of document.querySelectorAll("iframe")) { + e.src && + (this.cachedIframeURLMap.set(e, e.src), e.removeAttribute("src")); + } + }, + _fixImageElementsWithinPictureElements: function () { + requestAnimationFrame(function () { + let e = !1, + t = document.querySelectorAll("#article picture img"); + for (let n of t) { + let t = n.previousElementSibling; + if (t) (n.remove(), t.after(n), (e = !0)); + else { + let t = n.parentElement; + (n.remove(), t.appendChild(n), (e = !0)); + } + } + e && ReaderAppearanceJS.layOutContent(); + }); + }, + serializedDocumentElementForPrintingOrMailing: async function (e) { + const t = Promise.withResolvers(); + ((globalThis.ReaderJSController = new (class { + readerOperationMode() { + return ReaderOperationMode.OffscreenFetching; + } + doneLoadingReaderPage() { + t.resolve(); + } + initialConfiguration() { + return e; + } + articleScrolled() {} + cachedTopScrollOffset() { + return 0; + } + clearNextPageArticleFinder() {} + contentIsReadyForDisplay() {} + didChangeNextPageLoadingState() {} + goBack() {} + goForward() {} + initialArticleScrollPosition() { + return null; + } + isInStickyMode() { + return !1; + } + log() {} + makeFontAvailableIfNecessary() {} + maxDistanceForLoadingNextPage() {} + nextPageArticleFinder() {} + nextPageLoadComplete() {} + prepareNextPageFrame() {} + setArticleBaseURLString(e) {} + replaceSimpleTweetsWithRichTweets() {} + requestDeactivationFromUserAction() {} + requestOnDeviceSummary() {} + reportReaderEvent() {} + })()), + ReaderJS.loadSerializedArticle( + await readerViewMessageHandler.postMessage({ + command: "callArticleFinder", + method: "serializableArticle", + }), + ), + await t.promise); + const n = ReaderJS.sanitizedFullArticleFrame(); + if (!n?.contentDocument?.documentElement) + throw new Error("Unable to render article"); + return webkit.serializeNode(n.contentDocument.documentElement, { + deep: !0, + }); + }, + })); +let fetchNextPageArticlePromiseWithCanceller = null; +((ReadingPositionStabilizer = function () { + ((this.elementTouchingTopOfViewport = null), + (this.elementTouchingTopOfViewportOffsetFromTopOfElementRatio = 0), + (this._trackingScrolling = !1), + (this._hasEverScrolled = !1)); +}), + (ReadingPositionStabilizer.prototype = { + initialize: function () { + this.setTrackPosition(!0); + const e = 250; + ((this._checkForUpdatedContentSoon = + this.debounce(e)._checkForUpdatedContentNow), + (this.windowDidResize = this.debounce(e)._windowDidResize)); + }, + setTrackPosition: function (e) { + if (e === this._trackingScrolling) return; + this._trackingScrolling = e; + const t = 250; + (this._debouncedDidScroll || + (this._debouncedDidScroll = this.debounce(t)._didScroll), + e + ? window.addEventListener("scroll", this._debouncedDidScroll, { + capture: !1, + passive: !0, + }) + : window.removeEventListener("scroll", this._debouncedDidScroll, { + capture: !1, + passive: !0, + })); + }, + _windowDidResize: function () { + this._hasEverScrolled && this._updatePosition(!1); + }, + contentWasReloaded: function () { + this._updatePosition(!1); + }, + _didScroll: function () { + this._trackingScrolling && + ((this._hasEverScrolled = !0), this._updatePosition(!1)); + }, + _updatePosition: function (e = !0) { + let t = firstContentElementAfterTopOfViewport(); + if (!t) return void (this.elementTouchingTopOfViewport = null); + this.elementTouchingTopOfViewport = t; + let n = this.elementTouchingTopOfViewport.getBoundingClientRect(); + ((this.elementTouchingTopOfViewportOffsetFromTopOfElementRatio = + n.height > 0 ? n.top / n.height : 0), + this._originalPageScrollSyncAndContentRefreshIsAllowed() && + ReaderJS.readerIsForeground() && + (this._pushScrollPositionToOriginalPage(), + e && this._checkForUpdatedContentSoon())); + }, + _pushScrollPositionToOriginalPage: function () { + const e = ReaderJSController.originalArticleFinder(), + [t, n] = this.uniqueIDAndScrollRatioOfElementPinnedToTop(); + t && e.scrollToElementWithUniqueID(t, n); + }, + applyScrollPositionFromOriginalPage: async function () { + let e = + ReaderJSController.originalArticleFinder().uniqueIDAndScrollRatioOfElementPinnedToTop(); + e instanceof Promise && (e = await e); + const [t, n] = e; + t && this.tryToScrollToUniqueIDAndRatio(t, n); + }, + _checkForUpdatedContentNow: function () { + ReaderJS.reloadArticlePreservingScrollPositionIfArticleNodeContentHasChanged(); + }, + restorePosition: function () { + if (!this.elementTouchingTopOfViewport) return; + let e = this.elementTouchingTopOfViewport.getBoundingClientRect(), + t = + document.scrollingElement.scrollTop + + e.top - + e.height * + this.elementTouchingTopOfViewportOffsetFromTopOfElementRatio; + (t > 0 && (document.scrollingElement.scrollTop = t), + this._updatePosition()); + }, + uniqueIDAndScrollRatioOfElementPinnedToTop: function () { + if (!this.elementTouchingTopOfViewport) return [null, null]; + return [ + this.elementTouchingTopOfViewport.getAttribute( + READER_UNIQUE_ID_ATTRIBUTE_KEY, + ), + this.elementTouchingTopOfViewportOffsetFromTopOfElementRatio, + ]; + }, + tryToScrollToUniqueIDAndRatio: function (e, t) { + const n = document.querySelector( + "[" + READER_UNIQUE_ID_ATTRIBUTE_KEY + "='" + e + "']", + ); + if (!n) return !1; + const i = n.getBoundingClientRect(); + return ( + !!i.height && + ((document.scrollingElement.scrollTop = + i.top - t * i.height + window.scrollY), + this._updatePosition(!1), + !0) + ); + }, + _originalPageScrollSyncAndContentRefreshIsAllowed: function () { + return !document.body.classList.contains("watch"); + }, + }), + document.addEventListener("visibilitychange", handleVisibilityChange, !1)); +var ContentAwareScrollerJS = new ContentAwareScroller(), + ReaderAppearanceJS = new ReaderAppearanceController(), + ReadingPositionStabilizerJS = new ReadingPositionStabilizer(), + ReaderJS = new ReaderController(); +window.addEventListener( + "load", + async function () { + isReaderViewInSeparateProcess + ? ReaderJS.loadSerializedArticle( + await readerViewMessageHandler.postMessage({ + command: "callArticleFinder", + method: "serializableArticle", + }), + ) + : ReaderJS.loaded(); + }, + !1, +); diff --git a/26.2/js/reader/ReaderSharedUINormalWorld.js b/26.2/js/reader/ReaderSharedUINormalWorld.js new file mode 100644 index 0000000..2c94a62 --- /dev/null +++ b/26.2/js/reader/ReaderSharedUINormalWorld.js @@ -0,0 +1,37 @@ +//# sourceURL=__InjectedScript_ReaderSharedUINormalWorld.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +function loadTwitterJavaScript() { + window.twttr || + (window.twttr = (function (e, t, r) { + var i, + a, + d = e.getElementsByTagName(t)[0]; + if (!e.getElementById(r)) + return ( + ((a = e.createElement(t)).id = r), + (a.src = "https://platform.twitter.com/widgets.js"), + d.parentNode.insertBefore(a, d), + window.twttr || + (i = { + _e: [], + ready: function (e) { + i._e.push(e); + }, + }) + ); + })(document, "script", "twitter-wjs")); +} +function richTweetWasCreatedFromSimpleTweet(e) { + e.parentNode.querySelector(".simple-tweet").classList.add("hidden"); +} +function replaceSimpleTweetsWithRichTweets(e) { + let t = document.querySelectorAll("[data-reader-tweet-id]"); + t.length && + (loadTwitterJavaScript(), + twttr.ready(function (r) { + for (let i of t) + r.widgets + .createTweet(i.getAttribute("data-reader-tweet-id"), i, e) + .then(richTweetWasCreatedFromSimpleTweet); + })); +} diff --git a/26.2/js/schema/SchemaDataExtractor.js b/26.2/js/schema/SchemaDataExtractor.js new file mode 100644 index 0000000..bf79490 --- /dev/null +++ b/26.2/js/schema/SchemaDataExtractor.js @@ -0,0 +1,249 @@ +//# sourceURL=__InjectedScript_SchemaDataExtractor.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +var SchemaDataExtractor = function () {}; +((SchemaDataExtractor.validAddressProperties = { + addressCountry: 1, + addressLocality: 1, + addressRegion: 1, + postOfficeBoxNumber: 1, + postalCode: 1, + streetAddress: 1, +}), + (SchemaDataExtractor.validParentSchemaTypes = { + "http://schema.org/Person": 1, + "https://schema.org/Person": 1, + "http://schema.org/LocalBusiness": 1, + "https://schema.org/LocalBusiness": 1, + "http://schema.org/Organization": 1, + "https://schema.org/Organization": 1, + "http://schema.org/Restaurant": 1, + "https://schema.org/Restaurant": 1, + "http://schema.org/Corporation": 1, + "https://schema.org/Corporation": 1, + "http://schema.org/EducationalOrganization": 1, + "https://schema.org/EducationalOrganization": 1, + "http://schema.org/GovernmentOrganization": 1, + "https://schema.org/GovernmentOrganization": 1, + "http://schema.org/MedicalOrganization": 1, + "https://schema.org/MedicalOrganization": 1, + "http://schema.org/AnimalShelter": 1, + "https://schema.org/AnimalShelter": 1, + "http://schema.org/AutomotiveBusiness": 1, + "https://schema.org/AutomotiveBusiness": 1, + "http://schema.org/ChildCare": 1, + "https://schema.org/ChildCare": 1, + "http://schema.org/DryCleaningOrLaundry": 1, + "https://schema.org/DryCleaningOrLaundry": 1, + "http://schema.org/EmergencyService": 1, + "https://schema.org/EmergencyService": 1, + "http://schema.org/EmploymentAgency": 1, + "https://schema.org/EmploymentAgency": 1, + "http://schema.org/EntertainmentBusiness": 1, + "https://schema.org/EntertainmentBusiness": 1, + "http://schema.org/FinancialService": 1, + "https://schema.org/FinancialService": 1, + "http://schema.org/FoodEstablishment": 1, + "https://schema.org/FoodEstablishment": 1, + "http://schema.org/GovernmentOffice": 1, + "https://schema.org/GovernmentOffice": 1, + "http://schema.org/HealthAndBeautyBusiness": 1, + "https://schema.org/HealthAndBeautyBusiness": 1, + "http://schema.org/HomeAndConstructionBusiness": 1, + "https://schema.org/HomeAndConstructionBusiness": 1, + "http://schema.org/InternetCafe": 1, + "https://schema.org/InternetCafe": 1, + "http://schema.org/LegalService": 1, + "https://schema.org/LegalService": 1, + "http://schema.org/Library": 1, + "https://schema.org/Library": 1, + "http://schema.org/LodgingBusiness": 1, + "https://schema.org/LodgingBusiness": 1, + "http://schema.org/ProfessionalService": 1, + "https://schema.org/ProfessionalService": 1, + "http://schema.org/RadioStation": 1, + "https://schema.org/RadioStation": 1, + "http://schema.org/RealEstateAgent": 1, + "https://schema.org/RealEstateAgent": 1, + "http://schema.org/RecyclingCenter": 1, + "https://schema.org/RecyclingCenter": 1, + "http://schema.org/SelfStorage": 1, + "https://schema.org/SelfStorage": 1, + "http://schema.org/ShoppingCenter": 1, + "https://schema.org/ShoppingCenter": 1, + "http://schema.org/SportsActivityLocation": 1, + "https://schema.org/SportsActivityLocation": 1, + "http://schema.org/Store": 1, + "https://schema.org/Store": 1, + "http://schema.org/TelevisionStation": 1, + "https://schema.org/TelevisionStation": 1, + "http://schema.org/TouristInformationCenter": 1, + "https://schema.org/TouristInformationCenter": 1, + "http://schema.org/TravelAgency": 1, + "https://schema.org/TravelAgency": 1, + }), + (SchemaDataExtractor.validBaseSchemaTypes = { + "http://schema.org/PostalAddress": 1, + "https://schema.org/PostalAddress": 1, + }), + (SchemaDataExtractor.containsSchemaOrgKey = "containsSchemaOrg"), + (SchemaDataExtractor.containsMicrodataKey = "containsMicrodata"), + (SchemaDataExtractor.schemaOrgTypeDomain = "schema.org"), + (SchemaDataExtractor.prototype = { + isValidParentSchemaType: function (t) { + return SchemaDataExtractor.validParentSchemaTypes[t]; + }, + isValidBaseSchemaType: function (t) { + return SchemaDataExtractor.validBaseSchemaTypes[t]; + }, + extractFilteredSchemaValuesFromMicroData: function () { + const t = document.querySelectorAll("[itemscope]"); + let e = [], + r = [], + a = !1; + for (let o of t) { + let t = o.getAttribute("itemType"); + t && + (this.isValidParentSchemaType(t) && e.push(o), + this.isValidBaseSchemaType(t) && r.push(o), + !a && + t.includes(SchemaDataExtractor.schemaOrgTypeDomain) && + (a = !0)); + } + let o = {}; + if (!a) return o; + if (((o[SchemaDataExtractor.containsSchemaOrgKey] = !0), 1 !== r.length)) + return o; + const s = r[0], + c = s.getAttribute("itemtype"); + if (!c || -1 === c.indexOf("PostalAddress")) return o; + const n = s.querySelectorAll("[itemprop]"); + for (let t of n) { + let e = t.getAttribute("itemprop"); + e && + SchemaDataExtractor.validAddressProperties[e] && + (o[e] = t.textContent ? t.textContent : t.getAttribute("content")); + } + let h = s.parentNode; + for (; null !== h && -1 === e.indexOf(h); ) h = h.parentNode; + const i = s.querySelectorAll("[itemprop='telephone']"); + if (null !== h) { + let t = h.querySelectorAll("[itemprop='name']"); + (t.length && (o.name = t[0].textContent), + 0 === i.length && (i = h.querySelectorAll("[itemprop='telephone']"))); + } + return (i.length && (o.telephone = i[0].textContent), o); + }, + extractAllSchemaValuesFromMicroData: function () { + const t = document.querySelectorAll("[itemscope]"); + let e = [], + r = !1; + for (let a of t) { + const t = a.getAttribute("itemType"); + t && + (e.push(a), + !r && + t.includes(SchemaDataExtractor.schemaOrgTypeDomain) && + (r = !0)); + } + let a = {}; + if (!r) return a; + if (((a[SchemaDataExtractor.containsSchemaOrgKey] = !0), 1 !== e.length)) + return a; + const o = e[0], + s = (o.getAttribute("itemtype"), o.querySelectorAll("[itemprop]")); + for (let t of s) { + let e = t.getAttribute("itemprop"); + e && (a[e] = t.textContent ? t.textContent : t.getAttribute("content")); + } + return a; + }, + extractFilteredSchemaValuesFromJSONLD: function () { + let t = {}; + const e = document.querySelector('script[type="application/ld+json"]'); + if (!e) return t; + let r; + try { + r = JSON.parse(e.text); + } catch (e) { + return t; + } + let a = r["@context"]; + if ("http://schema.org" !== a && "https://schema.org" !== a) return t; + t[SchemaDataExtractor.containsSchemaOrgKey] = !0; + let o = []; + for (o.unshift(r); o.length; ) { + let e = o.shift(); + if (null != e) { + if ( + (Object.prototype.hasOwnProperty.call(e, "telephone") && + (t.telephone = e.telephone), + "PostalAddress" === e["@type"]) + ) { + for (let r in e) + SchemaDataExtractor.validAddressProperties[r] && (t[r] = e[r]); + break; + } + for (let t in e) { + let r = e[t]; + "object" == typeof r && o.push(r); + } + } + } + return t; + }, + extractAllSchemaValuesFromJSONLD: function () { + let t = {}; + const e = document.querySelector('script[type="application/ld+json"]'); + if (!e) return t; + let r, a; + try { + r = JSON.parse(e.text); + } catch (e) { + return t; + } + if ( + ((a = Array.isArray(r) ? r[0]["@context"] : r["@context"]), + "http://schema.org" !== a && "https://schema.org" !== a) + ) + return t; + t[SchemaDataExtractor.containsSchemaOrgKey] = !0; + let o = []; + o.unshift(r); + const s = o.shift(); + for (let e in s) t[e] = s[e]; + return t; + }, + resultHasAddressOrTelephone: function (t) { + return ( + null != t && + (Object.prototype.hasOwnProperty.call(t, "streetAddress") || + Object.prototype.hasOwnProperty.call(t, "telephone")) + ); + }, + resultHasSchemaOrgInfo: function (t) { + return ( + null != t && + Object.prototype.hasOwnProperty.call( + t, + SchemaDataExtractor.containsSchemaOrgKey, + ) + ); + }, + extractSchemaValuesFromSchemaOrg: function () { + let t = this.extractAllSchemaValuesFromMicroData(), + e = this.extractFilteredSchemaValuesFromMicroData(); + return ( + this.resultHasAddressOrTelephone(e) || + (e = this.extractFilteredSchemaValuesFromJSONLD()), + this.resultHasAddressOrTelephone(t) || + (t = this.extractAllSchemaValuesFromJSONLD()), + (this.resultHasAddressOrTelephone(e) || + this.resultHasSchemaOrgInfo(e)) && + (e.url = location.href), + [e, t] + ); + }, + }), + "undefined" == typeof SchemaDataExtractorJS && + (SchemaDataExtractorJS = new SchemaDataExtractor()), + SchemaDataExtractorJS.extractSchemaValuesFromSchemaOrg()); diff --git a/26.2/js/schema/SchemaOrgMarkupChecker.js b/26.2/js/schema/SchemaOrgMarkupChecker.js new file mode 100644 index 0000000..1d436fb --- /dev/null +++ b/26.2/js/schema/SchemaOrgMarkupChecker.js @@ -0,0 +1,20 @@ +//# sourceURL=__InjectedScript_SchemaOrgMarkupChecker.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +(function () { + const e = "schema.org"; + var t = document.querySelectorAll('script[type="application/ld+json"]'); + for (let o of t) { + var r; + try { + r = JSON.parse(o.text); + } catch (e) { + continue; + } + if (r["@context"].toLowerCase().includes(e)) return !0; + } + var o = document.querySelectorAll("[itemscope]"); + for (let t of o) { + var c = t.getAttribute("itemType"); + if (c && c.toLowerCase().includes(e)) return !0; + } +})(); diff --git a/26.2/js/search/OpenSearchURLFinder.js b/26.2/js/search/OpenSearchURLFinder.js new file mode 100644 index 0000000..338f34e --- /dev/null +++ b/26.2/js/search/OpenSearchURLFinder.js @@ -0,0 +1,22 @@ +//# sourceURL=__InjectedScript_OpenSearchURLFinder.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +var OpenSearchURLFinder = function () {}; +OpenSearchURLFinder.prototype = { + firstOpenSearchURLString: function () { + if (!document.head) return null; + for ( + var e = document.head.getElementsByTagName("link"), r = e.length, n = 0; + n < r; + ++n + ) { + var t = e[n]; + if ( + "search" === t.getAttribute("rel") && + "application/opensearchdescription+xml" === t.getAttribute("type") + ) + return t.href; + } + return null; + }, +}; +var OpenSearchURLFinderJS = new OpenSearchURLFinder(); diff --git a/26.2/js/search/QuickWebsiteSearchURLDetector.js b/26.2/js/search/QuickWebsiteSearchURLDetector.js new file mode 100644 index 0000000..21d625a --- /dev/null +++ b/26.2/js/search/QuickWebsiteSearchURLDetector.js @@ -0,0 +1,189 @@ +//# sourceURL=__InjectedScript_QuickWebsiteSearchURLDetector.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +"use strict"; +function urlEncode(e) { + return encodeURIComponent(e).replace(/%20/g, "+"); +} +function regularExpressionForDomainMatching(e) { + return new RegExp("(^|.)" + e.replaceAll(".", "\\.") + "$"); +} +function userIsOnDomain(e) { + return regularExpressionForDomainMatching(e).test(document.location.hostname); +} +function isTextField(e) { + if (e instanceof HTMLTextAreaElement) return !0; + if (!(e instanceof HTMLInputElement)) return !1; + const t = { + date: !0, + "datetime-local": !0, + email: !0, + isindex: !0, + month: !0, + number: !0, + password: !0, + search: !0, + tel: !0, + telephone: !0, + text: !0, + time: !0, + url: !0, + week: !0, + }; + var n = e.type; + return !n || n in t; +} +function queryAllBySelector(e, t) { + try { + return window.collectMatchingElementsInFlatTree(e, t); + } catch (e) { + return []; + } +} +function elementsInFormPiercingShadowDOM(e) { + e.elements; + return queryAllBySelector( + e, + "button, fieldset, input:not([type='image']), object, output, select, textarea", + ); +} +function getLocalName(e) { + var t = e.localName; + return "string" == typeof t || "string" == typeof (t = e.nodeName) + ? t + : void 0; +} +function isSelectInDefaultState(e) { + let t = e.options, + n = t.length; + for (var r = 0; r < n; ++r) { + let n = t[r]; + if (n.selected !== n.defaultSelected) { + if (n.defaultSelected) return !1; + if (e.multiple || r) return !1; + } + } + return !0; +} +function isSubmitButton(e) { + return ( + (e instanceof HTMLButtonElement || e instanceof HTMLInputElement) && + e.type && + "submit" === e.type + ); +} +function isSecureTextField(e) { + if (!(e instanceof HTMLInputElement)) return !1; + try { + if (e.matches(":-webkit-autofill-strong-password")) return !0; + } catch (e) {} + const t = getComputedStyle(e, null).getPropertyValue("-webkit-text-security"), + n = e.type; + if ("none" !== t || "password" === n) return !0; + if (n && "text" !== n) return !1; + if (userIsOnDomain("ninehours.co.jp")) { + let t = e.name; + if ("guestPassword" === t || "guestPasswordConfirm" === t) return !0; + } + return !1; +} +function isCheckboxOrRadioButtonInDefaultState(e) { + return e.checked === e.defaultChecked; +} +function textAreaElementLookLikeItIsPartOfASearchForm(e) { + return ( + e instanceof HTMLTextAreaElement && + ("search" === e.getAttribute("type") || + "search" === e.inputMode || + "search" === e.getAttribute("enterkeyhint")) + ); +} +function isInputAllowedInSearchForm(e) { + const t = getLocalName(e).toLowerCase(); + if ("button" === t || "fieldset" === t) return !0; + if ("select" === t) return isSelectInDefaultState(e); + if ("input" !== t && !textAreaElementLookLikeItIsPartOfASearchForm(e)) + return !1; + const n = e.type; + return "radio" === n || "checkbox" === n + ? isCheckboxOrRadioButtonInDefaultState(e) + : "hidden" === n || + "reset" === n || + "submit" === n || + "button" === n || + "image" === n || + (isTextField(e) && !isSecureTextField(e)); +} +function isSearchForm(e) { + if ("get" !== e.method) return !1; + const t = elementsInFormPiercingShadowDOM(e), + n = t.length; + for (let e = 0; e < n; ++e) if (!isInputAllowedInSearchForm(t[e])) return !1; + return !0; +} +function visibleNonEmptyFormTextControlsInForm(e) { + let t = [], + n = elementsInFormPiercingShadowDOM(e), + r = n.length; + for (let e = 0; e < r; ++e) { + let r = n[e]; + r.checkVisibility() && + null != r.value && + r.value.length && + isTextField(r) && + t.push(r); + } + return t; +} +function shouldInputBeIncludedInSearchURLQuery(e) { + if (e.disabled) return !1; + if (!e.name.length) return !1; + if (!e.value.length) return !1; + if (e instanceof HTMLSelectElement) return !0; + var t = getLocalName(e).toLowerCase(), + n = e.type; + return "button" === t + ? "submit" === n + : "input" === t && + ("submit" === n || + ("checkbox" === n || "radio" === n + ? e.checked + : "hidden" === n || isTextField(e))); +} +function searchTextFieldFormSubmissionURLString(e) { + const t = e.form; + if (!t) return null; + let n = t.getAttribute("action"); + if (!n || !n.length) return null; + if (!/^https?:/i.test(t.action)) return null; + let r = null, + i = "", + o = elementsInFormPiercingShadowDOM(t), + u = o.length; + for (let t = 0; t < u; ++t) { + let n = o[t]; + if ( + (n === e || shouldInputBeIncludedInSearchURLQuery(n)) && + (!isSubmitButton(n) || (r || (r = n), n === r)) + ) { + i.length && (i += "&"); + var l = n === e ? "{searchTerms}" : urlEncode(n.value); + i += urlEncode(n.name) + "=" + l; + } + } + let s = document.createElement("a"); + return ((s.href = t.action), (s.search = i), s.href); +} +function handleFormSubmission(e) { + const t = e.target; + if (!isSearchForm(t)) return; + const n = visibleNonEmptyFormTextControlsInForm(t); + if (n.length > 1) return; + const r = n[0]; + if (!r) return; + const i = searchTextFieldFormSubmissionURLString(r); + i && + window.webkit.messageHandlers.quickWebsiteSearchDetectedSearchURL.postMessage( + i, + ); +} +window.addEventListener("submit", handleFormSubmission); diff --git a/26.2/js/translation/Translation.js b/26.2/js/translation/Translation.js new file mode 100644 index 0000000..000bce6 --- /dev/null +++ b/26.2/js/translation/Translation.js @@ -0,0 +1,5 @@ +//# sourceURL=__InjectedScript_Translation.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +function updateLanguageAttributesForTranslation(n) { + document.documentElement.lang && (document.documentElement.lang = n); +} diff --git a/26.2/js/utilities/NodePath.js b/26.2/js/utilities/NodePath.js new file mode 100644 index 0000000..0223d7e --- /dev/null +++ b/26.2/js/utilities/NodePath.js @@ -0,0 +1,749 @@ +//# sourceURL=__InjectedScript_NodePath.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +// Copyright (C) 2023-2024 Apple Inc. All rights reserved. +"use strict"; +(globalThis.WAS || (globalThis.WAS = {}), + (WAS.NodePath = class { + static { + function e(e, t) { + if (e === t) return 0; + for ( + var n = e.length, o = t.length, a = new Array(n + 1), i = 0; + i < n + 1; + ++i + ) + ((a[i] = new Array(o + 1)), (a[i][0] = i)); + for (var s = 0; s < o + 1; ++s) a[0][s] = s; + for (s = 1; s < o + 1; ++s) { + let o = t[s - 1]; + for (i = 1; i < n + 1; ++i) + if (e[i - 1] === o) a[i][s] = a[i - 1][s - 1]; + else { + var d = a[i - 1][s] + 1, + r = a[i][s - 1] + 1, + h = a[i - 1][s - 1] + 1; + a[i][s] = Math.min(d, r, h); + } + } + return a[n][o]; + } + ((WAS.Assert = + WAS.Assert || + class { + static isTrue(e, t, ...n) {} + static isType(e, ...t) {} + static optionalIsType(e, ...t) {} + static arrayContentIsType(e, ...t) {} + static optionalArrayContentIsType(e, ...t) {} + static isEnum(e, t) {} + static optionalIsEnum(e, t) {} + static isSubclass(e, t) {} + static notReached(e, ...t) {} + }), + Object.defineProperties(CharacterData, { + nodePath_isCharacterData: { + value(e) { + switch (Node.nodePath_nodeType(e)) { + case Node.TEXT_NODE: + case Node.CDATA_SECTION_NODE: + case Node.PROCESSING_INSTRUCTION_NODE: + case Node.COMMENT_NODE: + return !0; + default: + return !1; + } + }, + }, + nodePath_data: { + value: (e) => + CharacterData.nodePath_isCharacterData(e) + ? Object.nodePath_get(e, CharacterData, "data") + : null, + }, + }), + Object.defineProperties(Document, { + nodePath_isDocument: { + value: (e) => Node.nodePath_nodeType(e) === Node.DOCUMENT_NODE, + }, + nodePath_defaultView: { + value: (e) => + Document.nodePath_isDocument(e) + ? Object.nodePath_get(e, Document, "defaultView") + : null, + }, + }), + Object.defineProperties(Element, { + nodePath_isElement: { + value: (e) => Node.nodePath_nodeType(e) === Node.ELEMENT_NODE, + }, + nodePath_tagName: { + value: (e) => + Element.nodePath_isElement(e) + ? Object.nodePath_get(e, Element, "tagName") + : null, + }, + nodePath_id: { + value: (e) => + Element.nodePath_isElement(e) + ? Object.nodePath_get(e, Element, "id") + : null, + }, + nodePath_className: { + value: (e) => + Element.nodePath_isElement(e) + ? Object.nodePath_get(e, Element, "className") + : null, + }, + nodePath_shadowRoot: { + value: (e) => + Element.nodePath_isElement(e) + ? Object.nodePath_get(e, Element, "shadowRoot") + : null, + }, + nodePath_querySelectorAll: { + value: (e, t) => + Element.nodePath_isElement(e) + ? Element.prototype.querySelectorAll.call(e, t) + : null, + }, + }), + Object.defineProperties(HTMLIFrameElement, { + nodePath_isHTMLIFrameElement: { + value: (e) => + Node.nodePath_nodeType(e) === Node.ELEMENT_NODE && + "HTMLIFrameElement" === Object.getPrototypeOf(e).constructor.name, + }, + nodePath_contentWindowDocument: { + value(e) { + if (!HTMLIFrameElement.nodePath_isHTMLIFrameElement(e)) + return null; + try { + return Object.nodePath_get( + e, + HTMLIFrameElement, + "contentWindow", + ).document; + } catch (e) { + return null; + } + }, + }, + }), + Object.defineProperties(Node, { + nodePath_nodeType: { + value: (e) => ( + WAS.Assert.isType(e, Node), + Object.nodePath_get(e, Node, "nodeType") + ), + }, + nodePath_firstChild: { + value: (e) => ( + WAS.Assert.isType(e, Node), + Object.nodePath_get(e, Node, "firstChild") + ), + }, + nodePath_nextSibling: { + value: (e) => ( + WAS.Assert.isType(e, Node), + Object.nodePath_get(e, Node, "nextSibling") + ), + }, + nodePath_previousSibling: { + value: (e) => ( + WAS.Assert.isType(e, Node), + Object.nodePath_get(e, Node, "previousSibling") + ), + }, + nodePath_childNodes: { + value: (e) => ( + WAS.Assert.isType(e, Node), + Object.nodePath_get(e, Node, "childNodes") + ), + }, + nodePath_textContent: { + value: (e) => ( + WAS.Assert.isType(e, Node), + Object.nodePath_get(e, Node, "textContent") + ), + }, + nodePath_cloneNode: { + value: (e, { shouldIncludeSubtree: t }) => ( + WAS.Assert.isType(e, Node), + Node.prototype.cloneNode.call(e, t) + ), + }, + nodePath_isEmptyTextNode: { + value: (e) => + Text.nodePath_isText(e) && + CharacterData.nodePath_data(e) + .nodePath_isEmptyExcludingWhitespace, + }, + nodePath_siblingIndexOfNode: { + value(e) { + let t = 0; + for ( + let n = Node.nodePath_previousSibling(e); + n; + n = Node.nodePath_previousSibling(n) + ) + Node.nodePath_includeWhenComputingSiblingIndex(n) && ++t; + return t; + }, + }, + nodePath_includeWhenComputingSiblingIndex: { + value: (e) => + !( + Node.nodePath_isEmptyTextNode(e) || + (Element.nodePath_isElement(e) && + "SCRIPT" === Element.nodePath_tagName(e).toUpperCase()) + ), + }, + nodePath_immediateSourceMarkupOfNode: { + value: (e) => + Node.nodePath_nodeType(e) === Node.DOCUMENT_FRAGMENT_NODE + ? null + : Node.nodePath_cloneNode(e, { shouldIncludeSubtree: !1 }) + .outerHTML, + }, + nodePath_immediateInnerTextOfNode: { + value(e) { + if (!Node.prototype.hasChildNodes.call(e)) + return Node.nodePath_textContent(e)?.trim(); + let t = ""; + for (let n of Node.nodePath_childNodes(e)) + Text.nodePath_isText(n) && + (t += CharacterData.nodePath_data(n)); + return t.trim(); + }, + }, + nodePath_getBoundingClientRect: { + value(e) { + if ((WAS.Assert.isType(e, Node, Range), e instanceof Range)) + return e.getBoundingClientRect(); + if (Text.nodePath_isText(e)) { + let t = new Range(); + return ( + t.setStart(e, 0), + t.setEnd(e, CharacterData.nodePath_data(e).length), + t.getBoundingClientRect() + ); + } + return Element.nodePath_isElement(e) + ? Element.prototype.getBoundingClientRect.call(e) + : null; + }, + }, + }), + Object.defineProperties(Object, { + nodePath_get: { + value: (e, t, n) => + Object.getOwnPropertyDescriptor(t.prototype, n)?.get?.call?.(e), + }, + }), + Object.defineProperties(Range, { + nodePath_fromNode: { + value(e) { + let t = new Range(); + return (t.selectNode(e), t); + }, + }, + nodePath_isSingleElementRange: { + value: (e) => + e.startContainer === e.endContainer && + !Text.nodePath_isText(e.commonAncestorContainer) && + 1 === Math.abs(e.endOffset - e.startOffset), + }, + nodePath_singleElementFromRange: { + value: (e) => + Range.nodePath_isSingleElementRange(e) + ? Node.nodePath_childNodes(e.commonAncestorContainer)[ + e.startOffset + ] + : null, + }, + nodePath_startNodeFromRange: { + value: (e) => + Text.nodePath_isText(e.startContainer) + ? null + : Node.nodePath_childNodes(e.startContainer)[e.startOffset], + }, + nodePath_endNodeFromRange: { + value: (e) => + Text.nodePath_isText(e.endContainer) + ? Node.nodePath_childNodes(e.endContainer)[e.endOffset - 1] + : null, + }, + }), + Object.defineProperties(Range.prototype, { + nodePath_equals: { + value(e) { + return ( + this.commonAncestorContainer === e.commonAncestorContainer && + 0 === this.compareBoundaryPoints(Range.START_TO_START, e) && + 0 === this.compareBoundaryPoints(Range.END_TO_END, e) + ); + }, + }, + }), + Object.defineProperties(ShadowRoot, { + nodePath_isShadowRoot: { + value: (e) => + Node.nodePath_nodeType(e) === Node.DOCUMENT_FRAGMENT_NODE && + "ShadowRoot" === Object.getPrototypeOf(e).constructor.name, + }, + nodePath_host: { + value: (e) => + ShadowRoot.nodePath_isShadowRoot(e) + ? Object.nodePath_get(e, ShadowRoot, "host") + : null, + }, + }), + Object.defineProperties(String, { + _nodePath_matchAnyNonWhitespaceRegex: { value: /\S/ }, + }), + Object.defineProperties(String.prototype, { + nodePath_isEmptyExcludingWhitespace: { + get() { + return ( + !this.length || + !String._nodePath_matchAnyNonWhitespaceRegex.test(this) + ); + }, + }, + nodePath_similarityTo: { + value(t) { + if (!t) return this.length ? 0 : 1; + let n = Math.max(this.length, t.length); + return n ? (n - e(this, t)) / n : 0; + }, + }, + }), + Object.defineProperties(Text, { + nodePath_isText: { + value: (e) => Node.nodePath_nodeType(e) === Node.TEXT_NODE, + }, + })); + } + static ObjectRepresentationCodableInfo = { classPath: "WAS.NodePath" }; + static #e = class { + #t; + #n; + #o; + #a; + #i; + #s; + #d; + #r; + constructor( + e, + t, + { + tag: n, + id: o, + classes: a, + text: i, + sourceMarkup: s, + boundingClientRect: d, + } = {}, + ) { + (WAS.Assert.isType(e, Number), + WAS.Assert.isType(t, Number), + WAS.Assert.optionalIsType(n, String), + WAS.Assert.optionalIsType(o, String), + WAS.Assert.optionalIsType(a, String), + WAS.Assert.optionalIsType(i, String), + WAS.Assert.optionalIsType(s, String), + WAS.Assert.optionalIsType(d, Object), + (this.#t = e), + (this.#n = t), + (this.#d = s), + (this.#r = d), + e === Node.ELEMENT_NODE + ? (WAS.Assert.isTrue(n, "Tag must be present for ELEMENT_NODEs"), + (this.#o = n), + (this.#a = o?.length ? o : void 0), + (this.#i = a?.length ? a : void 0), + (this.#s = i)) + : e === Node.TEXT_NODE && (this.#s = i)); + } + static fromNode(e) { + WAS.Assert.isType(e, Node); + let t = Node.nodePath_nodeType(e), + n = Node.nodePath_siblingIndexOfNode(e), + o = {}; + if (Element.nodePath_isElement(e)) { + ((o.tag = Element.nodePath_tagName(e)), + (o.id = Element.nodePath_id(e)), + (o.classes = Element.nodePath_className(e))); + let t = Node.nodePath_immediateInnerTextOfNode(e); + t.length && (o.text = t); + } else + Text.nodePath_isText(e) && (o.text = CharacterData.nodePath_data(e)); + o.sourceMarkup = Node.nodePath_immediateSourceMarkupOfNode(e); + let a = Node.nodePath_getBoundingClientRect(e); + return ( + a && + (o.boundingClientRect = { + x: a.x, + y: a.y, + width: a.width, + height: a.height, + }), + new WAS.NodePath.#e(t, n, o) + ); + } + static fromObjectRepresentation(e) { + return ( + WAS.Assert.isType(e, Object), + new WAS.NodePath.#e(e.type, e.index, e) + ); + } + get objectRepresentation() { + return { + type: this.#t, + index: this.#n, + tag: this.#o, + id: this.#a, + classes: this.#i, + text: this.#s, + sourceMarkup: this.#d, + boundingClientRect: this.#r, + }; + } + get type() { + return this.#t; + } + get index() { + return this.#n; + } + get tag() { + return this.#o; + } + get id() { + return this.#a; + } + get classes() { + return this.#i; + } + get text() { + return this.#s; + } + toElementCSSSelector() { + if (this.type !== Node.ELEMENT_NODE) return null; + let e = CSS.escape(this.tag); + this.id && (e += `#${CSS.escape(this.id)}`); + for (let t of this.classes?.split(" ") ?? []) + t.length && (e += `.${CSS.escape(t)}`); + return e; + } + toString() { + return JSON.stringify(this.objectRepresentation); + } + equals(e) { + return ( + WAS.Assert.optionalIsType(e, WAS.NodePath.#e), + !!e && + this.#t === e.#t && + this.#n === e.#n && + this.#o === e.#o && + this.#a === e.#a && + this.#i === e.#i && + this.#s === e.#s + ); + } + }; + static #h = 1e3; + static #l = 500; + static #c = 200; + static #m = 200; + static #N = 100; + static #p = 10; + #u; + #C; + #_; + #P; + #A; + #f; + constructor( + e, + { + startContainerAdditionalComponents: t, + startContainerOffset: n, + endContainerAdditionalComponents: o, + endContainerOffset: a, + } = {}, + ) { + (WAS.Assert.arrayContentIsType(e, WAS.NodePath.#e), + WAS.Assert.isTrue( + e[0]?.type == Node.DOCUMENT_NODE, + "First path component should always be a document node.", + ), + (this.#u = e), + (this.#_ = t), + (this.#P = n), + (this.#A = o), + (this.#f = a)); + } + static #g(e, t) { + WAS.Assert.isType(e, Node); + let n = [], + o = e, + a = 0; + for (; o && (++a, !(a > 512)); ) { + let e; + for ( + ; + o && (n.push(WAS.NodePath.#e.fromNode(o)), (e = o), o !== t); + o = o.parentNode + ); + if (e === t) break; + let a = Document.nodePath_defaultView(e); + if (a) { + o = a.frameElement; + continue; + } + let i = ShadowRoot.nodePath_host(e); + i && (o = i); + } + return n.toReversed(); + } + static from(e, t) { + return e instanceof Range + ? WAS.NodePath.fromRange(e, t) + : WAS.NodePath.fromNode(e, t); + } + static fromNode(e, t) { + let n = new WAS.NodePath(WAS.NodePath.#g(e, t)); + return ((n.#C = new WeakRef(Range.nodePath_fromNode(e))), n); + } + static fromRange(e, t) { + let n = Range.nodePath_singleElementFromRange(e); + if (n) return WAS.NodePath.fromNode(n, t); + let o, + a, + i, + s, + d = WAS.NodePath.#g(e.commonAncestorContainer, t), + r = Range.nodePath_startNodeFromRange(e); + r + ? (o = WAS.NodePath.#g(r, e.commonAncestorContainer).toSpliced(0, 1)) + : e.startContainer !== e.commonAncestorContainer + ? ((o = WAS.NodePath.#g( + e.startContainer, + e.commonAncestorContainer, + ).toSpliced(0, 1)), + (a = e.startOffset)) + : (o = []); + let h = Range.nodePath_endNodeFromRange(e); + h + ? (i = WAS.NodePath.#g(h, e.commonAncestorContainer).toSpliced(0, 1)) + : e.endContainer !== e.commonAncestorContainer + ? ((i = WAS.NodePath.#g( + e.endContainer, + e.commonAncestorContainer, + ).toSpliced(0, 1)), + (s = e.endOffset)) + : (i = []); + let l = new WAS.NodePath(d, { + startContainerAdditionalComponents: o, + startContainerOffset: a, + endContainerAdditionalComponents: i, + endContainerOffset: s, + }); + return ((l.#C = new WeakRef(e)), l); + } + static fromObjectRepresentation(e) { + const t = (e) => ( + WAS.Assert.isType(e, Array), + e.map((e) => WAS.NodePath.#e.fromObjectRepresentation(e)) + ); + return Array.isArray(e) + ? new WAS.NodePath(t(e)) + : (WAS.Assert.isType(e, Object), + new WAS.NodePath(t(e.pathComponents), { + startContainerAdditionalComponents: + e.startContainerAdditionalComponents + ? t(e.startContainerAdditionalComponents) + : void 0, + startContainerOffset: e.startContainerOffset ?? void 0, + endContainerAdditionalComponents: e.endContainerAdditionalComponents + ? t(e.endContainerAdditionalComponents) + : void 0, + endContainerOffset: e.endContainerOffset ?? void 0, + })); + } + get objectRepresentation() { + const e = (e) => ( + WAS.Assert.isType(e, Array), + e.map((e) => e.objectRepresentation) + ); + return { + pathComponents: e(this.#u), + startContainerAdditionalComponents: this.#_ ? e(this.#_) : void 0, + startContainerOffset: this.#P, + endContainerAdditionalComponents: this.#A ? e(this.#A) : void 0, + endContainerOffset: this.#f, + }; + } + static nodePathIsKnownFormControlInputElement(e) { + let t = e?.pathComponents.at(-1)?.tag?.toUpperCase(); + switch (t) { + case "INPUT": + case "SELECT": + case "TEXTAREA": + return !0; + default: + return !1; + } + } + get pathComponents() { + return this.#u; + } + get userFriendlySummary() { + let e = this.#u.at(-1); + return e.type === Node.TEXT_NODE + ? e.text.trim() + : e.text + ? `${e.tag.toLowerCase()}: "${e.text.trim()}"` + : e.tag.toLowerCase(); + } + toString() { + return JSON.stringify(this.objectRepresentation); + } + equals(e) { + if ((WAS.Assert.optionalIsType(e, WAS.NodePath), !e)) return !1; + if (this.#u.length !== e.#u.length) return !1; + for (let t = 0; t < this.#u.length; ++t) + if (!this.#u[t].equals(e.#u[t])) return !1; + if (this.#_?.length !== e.#_?.length) return !1; + for (let t = 0; t < this.#_?.length; ++t) + if (!this.#_[t].equals(e.#_[t])) return !1; + if (this.#A?.length !== e.#A?.length) return !1; + for (let t = 0; t < this.#A?.length; ++t) + if (!this.#A[t].equals(e.#A[t])) return !1; + return this.#P === e.#P && this.#f === e.#f; + } + resolvedRangeInDocument(e) { + let t = this.#C?.deref(); + if (t?.intersectsNode(e)) return t; + if (this.#_ && this.#A) { + let t = WAS.NodePath.#E(e, [...this.#u, ...this.#_]), + n = WAS.NodePath.#E(e, [...this.#u, ...this.#A]); + if (!t || !n) return null; + let o = new Range(); + return ( + this.#P ? o.setStart(t, this.#P) : o.setStartBefore(t), + this.#f ? o.setEnd(n, this.#f) : o.setEndAfter(n), + (this.#C = new WeakRef(o)), + o + ); + } + let n = WAS.NodePath.#E(e, this.#u); + if (!n) return null; + let o = Range.nodePath_fromNode(n); + return ((this.#C = new WeakRef(o)), o); + } + static #E(e, t) { + (WAS.Assert.isType(e, Node), + WAS.Assert.isTrue( + Document.nodePath_isDocument(e), + "Must provide root document node in which to resolve this NodePath.", + )); + let n = e; + e: for (let e = 1; e < t.length && n; ++e) { + let o = t[e], + a = -1, + i = null; + const s = () => { + n = i; + let o = t.length > e ? t[e + 1] : null; + return n && + HTMLIFrameElement.nodePath_isHTMLIFrameElement(n) && + o?.type === Node.DOCUMENT_NODE + ? (++e, + void (n = HTMLIFrameElement.nodePath_contentWindowDocument(n))) + : n && o?.type === Node.DOCUMENT_FRAGMENT_NODE + ? (++e, void (n = Element.nodePath_shadowRoot(n))) + : void 0; + }; + if (Element.nodePath_isElement(n)) { + let o = [], + a = e; + for (; a < t.length; ++a) { + let e = t[a]; + if (e.type !== Node.ELEMENT_NODE) break; + o.push(e.toElementCSSSelector()); + } + if (o.length) { + const t = (e) => o.slice(0, o.length - e).join(" > "); + let d = null; + for (let r = 0; r < o.length; ++r) + if ( + ((d = Element.nodePath_querySelectorAll(n, t(r))), + 1 === d.length) + ) { + ((i = d.item(0)), (e = a - r - 1), s()); + continue e; + } + } + } + let d = 0; + for ( + let e = Node.nodePath_firstChild(n); + e; + e = Node.nodePath_nextSibling(e) + ) { + if (!Node.nodePath_includeWhenComputingSiblingIndex(e)) continue; + let t = Number.MIN_VALUE, + n = !0; + const s = (e, o) => { + e ? (t += o) : (n = !1); + }, + r = (e, o) => { + (1 !== e && (n = !1), (t += e * o)); + }, + h = (e) => { + e && ((n = !1), (t -= e)); + }; + if ( + (s(Node.nodePath_nodeType(e) === o.type, WAS.NodePath.#h), + Element.nodePath_isElement(e)) + ) { + (s(Element.nodePath_tagName(e) == o.tag, WAS.NodePath.#l), + s(Element.nodePath_id(e) == o.id, WAS.NodePath.#c)); + let t = Element.nodePath_className(e)?.split(" ") ?? [], + n = t.length, + a = o.classes?.split(" ") ?? [], + i = a.length; + for (let e = 0; e < a.length; ++e) { + let n = a[e], + o = t.indexOf(n); + -1 !== o && (t.splice(o, 1), a.splice(e, 1), --e); + } + (r( + (n ? (n - t.length) / n : 1) * (i ? (i - a.length) / i : 1), + WAS.NodePath.#N, + ), + r( + Node.nodePath_immediateInnerTextOfNode(e).nodePath_similarityTo( + o.text, + ), + WAS.NodePath.#m, + )); + } else if (Text.nodePath_isText(e)) { + let t = CharacterData.nodePath_data(e)?.nodePath_similarityTo( + o.text, + ); + r(t, WAS.NodePath.#m); + } + if ((h(Math.abs(d - o.index) * WAS.NodePath.#p), n)) { + ((a = Number.NaN), (i = e)); + break; + } + (t > a && ((a = t), (i = e)), ++d); + } + s(); + } + return n; + } + })); diff --git a/26.2/js/utilities/SavePageInliningOrDiscardingExternalResources.js b/26.2/js/utilities/SavePageInliningOrDiscardingExternalResources.js new file mode 100644 index 0000000..d945eaa --- /dev/null +++ b/26.2/js/utilities/SavePageInliningOrDiscardingExternalResources.js @@ -0,0 +1,145 @@ +//# sourceURL=__InjectedScript_SavePageInliningOrDiscardingExternalResources.js +/* Copyright (c) 2025 Apple Inc. All rights reserved. */ +function copyPage() { + function e(e) { + function t(e) { + var t = document.createElement("a"); + return ((t.href = e), t); + } + function r(e) { + var t = e.pathname.substring(1).split("/"); + return (t[t.length - 1] || t.pop(), t); + } + function n(e) { + var t = r(e); + return t.length ? t[t.length - 1] : null; + } + return n(t(e)); + } + function t(t) { + const r = /url\((.*?\/.*?)\)/gi; + for (;;) { + var n = r.exec(t); + if (!n) break; + t = t.replace(n[0], "url(" + e(n[1]) + ")"); + } + return t; + } + function r(e) { + function r(e, n) { + if (e) { + var i, o; + try { + i = e.rules; + } catch (e) { + i = null; + } + if (!i) { + var u = e.ownerNode; + if (!u) return; + var c = u.parentNode; + if (!c) return; + var l = u.nextSibling; + return (c.removeChild(u), r(e, n), void c.insertBefore(u, l)); + } + for (var d = i.length, s = 0; s < d; ++s) { + var m = i[s]; + m.type !== CSSRule.IMPORT_RULE + ? (o || + ((o = document.createElement("style")), + e.media && + e.media.length > 0 && + o.setAttribute("media", e.media.mediaText), + n && n.media && o.setAttribute("media", n.media.mediaText), + a.push(o)), + o.appendChild(document.createTextNode(t(m.cssText) + "\n"))) + : r(m.styleSheet, m); + } + } + } + for (var n = e.styleSheets, a = [], i = n.length, o = 0; o < i; ++o) + r(n[o]); + return a; + } + function n(e, r) { + for (var n = e.attributes, a = n.length, i = 0; i < a; ++i) { + var o = n[i], + u = o.name.toLowerCase(); + if ("on" !== u.substr(0, 2)) { + var c = o.value; + "style" === u && (c = t(c)); + try { + r.setAttribute(o.name, c); + } catch (e) {} + } + } + } + function a(e, t) { + for (var r = e.childNodes, n = r.length, a = 0; a < n; ++a) { + var o = i(r[a]); + o && t.appendChild(o); + } + } + function i(t) { + if (!t) return t; + if (t.nodeType === Node.TEXT_NODE) return document.createTextNode(t.data); + if (t.nodeType !== Node.ELEMENT_NODE) return null; + const c = new Set(["AUDIO", "OBJECT", "SCRIPT", "STYLE", "VIDEO"]); + var l = t.tagName.toUpperCase(); + if (c.has(l)) return null; + if ("LINK" === l && "STYLESHEET" === t.rel.toUpperCase()) return null; + if ("META" === l && "CONTENT-TYPE" === t.httpEquiv.toUpperCase()) + return null; + var d = document.createElement(t.tagName); + if ( + (n(t, d), + a(t, d), + "IMG" === l || ("INPUT" === l && "IMAGE" === t.type.toUpperCase())) + ) + return ( + (d.src = e(t.src)), + d.setAttribute("width", t.width), + d.setAttribute("height", t.height), + d + ); + if ("IFRAME" === l) { + try { + var s = i(t.contentDocument.documentElement); + if (s) { + var m = "iframe_" + u + ".html"; + ((d.src = m), + (s.dataset.originalSource = t.src), + (o[m] = s.outerHTML), + u++); + } + } catch (e) { + ((d.src = ""), + d.appendChild( + document.createTextNode( + "Failed to copy